summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/webui/sync_setup_browsertest.js
blob: d4967a7da6d2b3f52966a33c83df07a88a5ab7dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

/**
 * Test fixture for sync setup WebUI testing.
 * @constructor
 * @extends {testing.Test}
 */
function SyncSetupWebUITest() {}

SyncSetupWebUITest.prototype = {
  __proto__: testing.Test.prototype,

  /**
   * Browse to settings.
   */
  browsePreload: 'chrome://settings-frame',

  /** @inheritDoc */
  preLoad: function() {
    this.makeAndRegisterMockHandler(['stopSyncing',
                                     'SyncSetupDidClosePage',
                                     'SyncSetupSubmitAuth',
                                     'SyncSetupConfigure',
                                     'SyncSetupPassphrase',
                                     'SyncSetupPassphraseCancel',
                                     'SyncSetupShowErrorUI',
                                     'SyncSetupShowSetupUI',
                                    ]);
  },

  /**
   * Verifies starting point is not synced.
   */
  verifyUnsynced: function() {
  },

  /**
   * Clicks the "Sign in to Chrome" button.
   */
  startSyncing: function() {
    var startStopSyncButton = BrowserOptions.getStartStopSyncButton();
    assertNotEquals(null, startStopSyncButton);
    this.mockHandler.expects(once()).SyncSetupShowSetupUI().
        will(callFunction(function() {
                            OptionsPage.navigateToPage('syncSetup');
                          }));

    this.mockHandler.expects(once()).SyncSetupShowSetupUI().
        will(callFunction(function() {
                            SyncSetupOverlay.showSyncSetupPage(
                                'login', {
                                  user: '',
                                  error: 0,
                                  editable_user: true,
                                });
                          }));
    startStopSyncButton.click();
  },
};

/**
 * Async version of SyncSetupWebUITest.
 * @extends {SyncSetupWebUITest}
 * @constructor
 */
function SyncSetupWebUITestAsync() {}

SyncSetupWebUITestAsync.prototype = {
  __proto__: SyncSetupWebUITest.prototype,

  /** @inheritDoc */
  isAsync: true,
};

// Verify that initial state is unsynced, start syncing, then login.
// TODO(estade): this doesn't work. DidShowPage is called multiple times.
TEST_F('SyncSetupWebUITestAsync', 'DISABLED_VerifySignIn', function() {
  // Start syncing to pull up the sign in page.
  assertFalse(BrowserOptions.getInstance().syncSetupCompleted);
  this.startSyncing();

  // Verify the DOM objects on the page.
  var gaiaEmail = SyncSetupOverlay.getLoginEmail();
  assertNotEquals(null, gaiaEmail);
  var gaiaPasswd = SyncSetupOverlay.getLoginPasswd();
  assertNotEquals(null, gaiaPasswd);
  var signInButton = SyncSetupOverlay.getSignInButton();
  assertNotEquals(null, signInButton);

  // For testing, don't wait to execute timeouts.
  var oldSetTimeout = setTimeout;
  setTimeout = function(fn, timeout) {
    oldSetTimeout(fn, 0);
  };

  // Expect set up submission and close messages sent through chrome.send().
  this.mockHandler.expects(once()).SyncSetupSubmitAuth(NOT_NULL).
      will(callFunction(
          function() {
            var loginSuccess = localStrings.getString('loginSuccess');
            expectNotEquals(loginSuccess, signInButton.value);
            SyncSetupOverlay.showSuccessAndClose();
            expectEquals(loginSuccess, signInButton.value);
          }));
  // The test completes after the asynchronous close.
  this.mockHandler.expects(once()).SyncSetupDidClosePage().
      will(callFunction(testDone));

  // Set the email & password, then sign in.
  gaiaEmail.value = 'foo@bar.baz';
  gaiaPasswd.value = 'foo@bar.baz';
  signInButton.click();
});