OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // TODO(jhawkins): Rewrite these tests to handle the new inlined sync UI. | 5 // TODO(jhawkins): Rewrite these tests to handle the new inlined sync UI. |
6 | 6 |
7 #include "chrome/browser/sync/sync_setup_wizard.h" | 7 #include "chrome/browser/sync/sync_setup_wizard.h" |
8 | 8 |
9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "base/stl_util-inl.h" | 11 #include "base/stl_util-inl.h" |
12 #include "base/utf_string_conversions.h" | 12 #include "base/utf_string_conversions.h" |
13 #include "chrome/browser/prefs/pref_service.h" | 13 #include "chrome/browser/prefs/pref_service.h" |
14 #include "chrome/browser/sync/engine/syncapi.h" | 14 #include "chrome/browser/sync/engine/syncapi.h" |
15 #include "chrome/browser/sync/profile_sync_factory_mock.h" | 15 #include "chrome/browser/sync/profile_sync_factory_mock.h" |
16 #include "chrome/browser/sync/profile_sync_service.h" | 16 #include "chrome/browser/sync/profile_sync_service.h" |
17 #include "chrome/browser/sync/sync_setup_flow.h" | 17 #include "chrome/browser/sync/sync_setup_flow.h" |
18 #include "chrome/browser/sync/sync_setup_flow_handler.h" | |
19 #include "chrome/browser/ui/browser.h" | 18 #include "chrome/browser/ui/browser.h" |
20 #include "chrome/browser/ui/browser_list.h" | 19 #include "chrome/browser/ui/browser_list.h" |
| 20 #include "chrome/browser/ui/webui/options/sync_setup_handler.h" |
21 #include "chrome/common/net/gaia/google_service_auth_error.h" | 21 #include "chrome/common/net/gaia/google_service_auth_error.h" |
22 #include "chrome/common/pref_names.h" | 22 #include "chrome/common/pref_names.h" |
23 #include "chrome/test/browser_with_test_window_test.h" | 23 #include "chrome/test/browser_with_test_window_test.h" |
24 #include "chrome/test/test_browser_window.h" | 24 #include "chrome/test/test_browser_window.h" |
25 #include "chrome/test/testing_profile.h" | 25 #include "chrome/test/testing_profile.h" |
26 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
27 | 27 |
28 static const char kTestUser[] = "chrome.p13n.test@gmail.com"; | 28 static const char kTestUser[] = "chrome.p13n.test@gmail.com"; |
29 static const char kTestPassword[] = "passwd"; | 29 static const char kTestPassword[] = "passwd"; |
30 static const char kTestCaptcha[] = "pizzamyheart"; | 30 static const char kTestCaptcha[] = "pizzamyheart"; |
31 static const char kTestCaptchaUrl[] = "http://pizzamyheart/"; | 31 static const char kTestCaptchaUrl[] = "http://pizzamyheart/"; |
32 | 32 |
33 typedef GoogleServiceAuthError AuthError; | 33 typedef GoogleServiceAuthError AuthError; |
34 | 34 |
| 35 class MockSyncSetupHandler : public SyncSetupHandler { |
| 36 public: |
| 37 MockSyncSetupHandler() {} |
| 38 |
| 39 // SyncSetupFlowHandler implementation. |
| 40 virtual void ShowGaiaLogin(const DictionaryValue& args) {} |
| 41 virtual void ShowGaiaSuccessAndClose() {} |
| 42 virtual void ShowGaiaSuccessAndSettingUp() {} |
| 43 virtual void ShowConfigure(const DictionaryValue& args) {} |
| 44 virtual void ShowPassphraseEntry(const DictionaryValue& args) {} |
| 45 virtual void ShowSettingUp() {} |
| 46 virtual void ShowSetupDone(const std::wstring& user) { |
| 47 flow()->OnDialogClosed(""); |
| 48 } |
| 49 |
| 50 void CloseSetupUI() { |
| 51 ShowSetupDone(std::wstring()); |
| 52 } |
| 53 |
| 54 private: |
| 55 DISALLOW_COPY_AND_ASSIGN(MockSyncSetupHandler); |
| 56 }; |
| 57 |
35 // A PSS subtype to inject. | 58 // A PSS subtype to inject. |
36 class ProfileSyncServiceForWizardTest : public ProfileSyncService { | 59 class ProfileSyncServiceForWizardTest : public ProfileSyncService { |
37 public: | 60 public: |
38 ProfileSyncServiceForWizardTest(ProfileSyncFactory* factory, Profile* profile) | 61 ProfileSyncServiceForWizardTest(ProfileSyncFactory* factory, Profile* profile) |
39 : ProfileSyncService(factory, profile, ""), | 62 : ProfileSyncService(factory, profile, ""), |
40 user_cancelled_dialog_(false) { | 63 user_cancelled_dialog_(false), |
| 64 is_using_secondary_passphrase_(false) { |
41 RegisterPreferences(); | 65 RegisterPreferences(); |
42 ResetTestStats(); | 66 ResetTestStats(); |
43 } | 67 } |
44 | 68 |
45 virtual ~ProfileSyncServiceForWizardTest() { } | 69 virtual ~ProfileSyncServiceForWizardTest() {} |
46 | 70 |
47 virtual void OnUserSubmittedAuth(const std::string& username, | 71 virtual void OnUserSubmittedAuth(const std::string& username, |
48 const std::string& password, | 72 const std::string& password, |
49 const std::string& captcha, | 73 const std::string& captcha, |
50 const std::string& access_code) { | 74 const std::string& access_code) { |
51 username_ = username; | 75 username_ = username; |
52 password_ = password; | 76 password_ = password; |
53 captcha_ = captcha; | 77 captcha_ = captcha; |
54 } | 78 } |
55 | 79 |
(...skipping 10 matching lines...) Expand all Loading... |
66 virtual void SetPassphrase(const std::string& passphrase, | 90 virtual void SetPassphrase(const std::string& passphrase, |
67 bool is_explicit, | 91 bool is_explicit, |
68 bool is_creation) { | 92 bool is_creation) { |
69 passphrase_ = passphrase; | 93 passphrase_ = passphrase; |
70 } | 94 } |
71 | 95 |
72 virtual string16 GetAuthenticatedUsername() const { | 96 virtual string16 GetAuthenticatedUsername() const { |
73 return UTF8ToUTF16(username_); | 97 return UTF8ToUTF16(username_); |
74 } | 98 } |
75 | 99 |
| 100 virtual bool IsUsingSecondaryPassphrase() const { |
| 101 // The only value of |is_using_secondary_passphrase_| we current care about |
| 102 // is when it's true. |
| 103 if (!is_using_secondary_passphrase_) |
| 104 return ProfileSyncService::IsUsingSecondaryPassphrase(); |
| 105 else |
| 106 return is_using_secondary_passphrase_; |
| 107 } |
| 108 |
76 void set_auth_state(const std::string& last_email, | 109 void set_auth_state(const std::string& last_email, |
77 const AuthError& error) { | 110 const AuthError& error) { |
78 last_attempted_user_email_ = last_email; | 111 last_attempted_user_email_ = last_email; |
79 last_auth_error_ = error; | 112 last_auth_error_ = error; |
80 } | 113 } |
81 | 114 |
82 void SetPassphraseRequiredReason(sync_api::PassphraseRequiredReason reason) { | 115 void set_last_auth_error(const AuthError& error) { |
| 116 last_auth_error_ = error; |
| 117 } |
| 118 |
| 119 void set_is_using_secondary_passphrase(bool secondary) { |
| 120 is_using_secondary_passphrase_ = secondary; |
| 121 } |
| 122 |
| 123 void set_passphrase_required_reason( |
| 124 sync_api::PassphraseRequiredReason reason) { |
83 passphrase_required_reason_ = reason; | 125 passphrase_required_reason_ = reason; |
84 } | 126 } |
85 | 127 |
86 void ResetTestStats() { | 128 void ResetTestStats() { |
87 username_.clear(); | 129 username_.clear(); |
88 password_.clear(); | 130 password_.clear(); |
89 captcha_.clear(); | 131 captcha_.clear(); |
90 user_cancelled_dialog_ = false; | 132 user_cancelled_dialog_ = false; |
91 user_chose_data_types_ = false; | 133 user_chose_data_types_ = false; |
92 keep_everything_synced_ = false; | 134 keep_everything_synced_ = false; |
93 chosen_data_types_.clear(); | 135 chosen_data_types_.clear(); |
94 } | 136 } |
95 | 137 |
96 std::string username_; | 138 std::string username_; |
97 std::string password_; | 139 std::string password_; |
98 std::string captcha_; | 140 std::string captcha_; |
99 bool user_cancelled_dialog_; | 141 bool user_cancelled_dialog_; |
100 bool user_chose_data_types_; | 142 bool user_chose_data_types_; |
101 bool keep_everything_synced_; | 143 bool keep_everything_synced_; |
| 144 bool is_using_secondary_passphrase_; |
102 syncable::ModelTypeSet chosen_data_types_; | 145 syncable::ModelTypeSet chosen_data_types_; |
103 | 146 |
104 std::string passphrase_; | 147 std::string passphrase_; |
105 | 148 |
106 private: | 149 private: |
107 DISALLOW_COPY_AND_ASSIGN(ProfileSyncServiceForWizardTest); | 150 DISALLOW_COPY_AND_ASSIGN(ProfileSyncServiceForWizardTest); |
108 }; | 151 }; |
109 | 152 |
110 class TestingProfileWithSyncService : public TestingProfile { | 153 class TestingProfileWithSyncService : public TestingProfile { |
111 public: | 154 public: |
112 TestingProfileWithSyncService() { | 155 TestingProfileWithSyncService() { |
113 sync_service_.reset(new ProfileSyncServiceForWizardTest(&factory_, this)); | 156 sync_service_.reset(new ProfileSyncServiceForWizardTest(&factory_, this)); |
114 } | 157 } |
115 | 158 |
116 virtual ProfileSyncService* GetProfileSyncService() { | 159 virtual ProfileSyncService* GetProfileSyncService() { |
117 return sync_service_.get(); | 160 return sync_service_.get(); |
118 } | 161 } |
119 private: | 162 private: |
120 ProfileSyncFactoryMock factory_; | 163 ProfileSyncFactoryMock factory_; |
121 scoped_ptr<ProfileSyncService> sync_service_; | 164 scoped_ptr<ProfileSyncService> sync_service_; |
122 }; | 165 }; |
123 | 166 |
124 class TestBrowserWindowForWizardTest : public TestBrowserWindow { | 167 // TODO(jhawkins): Subclass Browser (specifically, ShowOptionsTab) and inject it |
125 public: | 168 // here to test the visibility of the Sync UI. |
126 explicit TestBrowserWindowForWizardTest(Browser* browser) | |
127 : TestBrowserWindow(browser), flow_(NULL), | |
128 was_show_html_dialog_called_(false) { | |
129 } | |
130 | |
131 virtual ~TestBrowserWindowForWizardTest() { | |
132 if (flow_.get()) { | |
133 // The handler contract is that they are valid for the lifetime of the | |
134 // sync login overlay, but are cleaned up after the dialog is closed | |
135 // and/or deleted. | |
136 flow_.reset(); | |
137 } | |
138 } | |
139 | |
140 bool TestAndResetWasShowHTMLDialogCalled() { | |
141 bool ret = was_show_html_dialog_called_; | |
142 was_show_html_dialog_called_ = false; | |
143 return ret; | |
144 } | |
145 | |
146 // Simulates the user (or browser view hierarchy) closing the html dialog. | |
147 // Handles cleaning up the delegate and associated handlers. | |
148 void CloseDialog() { | |
149 if (flow_.get()) { | |
150 // The flow deletes itself here. Don't use reset(). | |
151 flow_.release()->OnDialogClosed(""); | |
152 } | |
153 } | |
154 | |
155 SyncSetupFlow* flow() { return flow_.get(); } | |
156 | |
157 private: | |
158 // In real life, this is owned by the view that is opened by the browser. We | |
159 // mock all that out, so we need to take ownership so the flow doesn't leak. | |
160 scoped_ptr<SyncSetupFlow> flow_; | |
161 | |
162 bool was_show_html_dialog_called_; | |
163 }; | |
164 | |
165 class SyncSetupWizardTest : public BrowserWithTestWindowTest { | 169 class SyncSetupWizardTest : public BrowserWithTestWindowTest { |
166 public: | 170 public: |
167 SyncSetupWizardTest() | 171 SyncSetupWizardTest() |
168 : test_window_(NULL), | 172 : wizard_(NULL), |
169 wizard_(NULL) { } | 173 service_(NULL), |
170 virtual ~SyncSetupWizardTest() { } | 174 flow_(NULL) {} |
| 175 virtual ~SyncSetupWizardTest() {} |
171 virtual void SetUp() { | 176 virtual void SetUp() { |
172 set_profile(new TestingProfileWithSyncService()); | 177 set_profile(new TestingProfileWithSyncService()); |
173 profile()->CreateBookmarkModel(false); | 178 profile()->CreateBookmarkModel(false); |
174 // Wait for the bookmarks model to load. | 179 // Wait for the bookmarks model to load. |
175 profile()->BlockUntilBookmarkModelLoaded(); | 180 profile()->BlockUntilBookmarkModelLoaded(); |
176 set_browser(new Browser(Browser::TYPE_TABBED, profile())); | 181 set_browser(new Browser(Browser::TYPE_TABBED, profile())); |
177 test_window_ = new TestBrowserWindowForWizardTest(browser()); | |
178 set_window(test_window_); | |
179 browser()->set_window(window()); | 182 browser()->set_window(window()); |
180 BrowserList::SetLastActive(browser()); | 183 BrowserList::SetLastActive(browser()); |
181 service_ = static_cast<ProfileSyncServiceForWizardTest*>( | 184 service_ = static_cast<ProfileSyncServiceForWizardTest*>( |
182 profile()->GetProfileSyncService()); | 185 profile()->GetProfileSyncService()); |
183 wizard_.reset(new SyncSetupWizard(service_)); | 186 wizard_.reset(new SyncSetupWizard(service_)); |
184 } | 187 } |
185 | 188 |
186 virtual void TearDown() { | 189 virtual void TearDown() { |
187 test_window_ = NULL; | 190 wizard_.reset(); |
188 service_ = NULL; | 191 service_ = NULL; |
189 wizard_.reset(); | 192 flow_ = NULL; |
190 } | 193 } |
191 | 194 |
192 TestBrowserWindowForWizardTest* test_window_; | 195 protected: |
| 196 void AttachSyncSetupHandler() { |
| 197 flow_ = wizard_->AttachSyncSetupHandler(&handler_); |
| 198 } |
| 199 |
| 200 void CompleteSetup() { |
| 201 // For a discrete run, we need to have ran through setup once. |
| 202 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
| 203 AttachSyncSetupHandler(); |
| 204 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
| 205 wizard_->Step(SyncSetupWizard::SYNC_EVERYTHING); |
| 206 wizard_->Step(SyncSetupWizard::SETTING_UP); |
| 207 wizard_->Step(SyncSetupWizard::DONE); |
| 208 } |
| 209 |
| 210 void CloseSetupUI() { |
| 211 handler_.CloseSetupUI(); |
| 212 } |
| 213 |
193 scoped_ptr<SyncSetupWizard> wizard_; | 214 scoped_ptr<SyncSetupWizard> wizard_; |
194 ProfileSyncServiceForWizardTest* service_; | 215 ProfileSyncServiceForWizardTest* service_; |
| 216 SyncSetupFlow* flow_; |
| 217 MockSyncSetupHandler handler_; |
195 }; | 218 }; |
196 | 219 |
197 // See http://code.google.com/p/chromium/issues/detail?id=40715 for | 220 // See http://code.google.com/p/chromium/issues/detail?id=40715 for |
198 // why we skip the below tests on OS X. We don't use DISABLED_ as we | 221 // why we skip the below tests on OS X. We don't use DISABLED_ as we |
199 // would have to change the corresponding FRIEND_TEST() declarations. | 222 // would have to change the corresponding FRIEND_TEST() declarations. |
200 | 223 |
201 #if defined(OS_MACOSX) | 224 #if defined(OS_MACOSX) |
202 #define SKIP_TEST_ON_MACOSX() \ | 225 #define SKIP_TEST_ON_MACOSX() \ |
203 do { LOG(WARNING) << "Test skipped on OS X"; return; } while (0) | 226 do { LOG(WARNING) << "Test skipped on OS X"; return; } while (0) |
204 #else | 227 #else |
205 #define SKIP_TEST_ON_MACOSX() do {} while (0) | 228 #define SKIP_TEST_ON_MACOSX() do {} while (0) |
206 #endif | 229 #endif |
207 | 230 |
208 TEST_F(SyncSetupWizardTest, DISABLED_InitialStepLogin) { | 231 TEST_F(SyncSetupWizardTest, InitialStepLogin) { |
209 SKIP_TEST_ON_MACOSX(); | 232 SKIP_TEST_ON_MACOSX(); |
210 DictionaryValue dialog_args; | 233 DictionaryValue dialog_args; |
211 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); | 234 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); |
212 std::string json_start_args; | 235 std::string json_start_args; |
213 base::JSONWriter::Write(&dialog_args, false, &json_start_args); | 236 base::JSONWriter::Write(&dialog_args, false, &json_start_args); |
214 ListValue credentials; | 237 ListValue credentials; |
215 std::string auth = "{\"user\":\""; | 238 std::string auth = "{\"user\":\""; |
216 auth += std::string(kTestUser) + "\",\"pass\":\""; | 239 auth += std::string(kTestUser) + "\",\"pass\":\""; |
217 auth += std::string(kTestPassword) + "\",\"captcha\":\""; | 240 auth += std::string(kTestPassword) + "\",\"captcha\":\""; |
218 auth += std::string(kTestCaptcha) + "\",\"access_code\":\""; | 241 auth += std::string(kTestCaptcha) + "\",\"access_code\":\""; |
219 auth += std::string() + "\"}"; | 242 auth += std::string() + "\"}"; |
220 credentials.Append(new StringValue(auth)); | 243 credentials.Append(new StringValue(auth)); |
221 | 244 |
222 EXPECT_FALSE(wizard_->IsVisible()); | 245 EXPECT_FALSE(wizard_->IsVisible()); |
223 EXPECT_FALSE(test_window_->flow()); | 246 EXPECT_EQ(static_cast<SyncSetupFlow*>(NULL), flow_); |
224 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 247 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
| 248 AttachSyncSetupHandler(); |
225 | 249 |
226 EXPECT_TRUE(wizard_->IsVisible()); | 250 EXPECT_TRUE(wizard_->IsVisible()); |
227 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | 251 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, flow_->current_state_); |
228 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, test_window_->flow()->current_state_); | 252 EXPECT_EQ(SyncSetupWizard::DONE, flow_->end_state_); |
229 EXPECT_EQ(SyncSetupWizard::DONE, test_window_->flow()->end_state_); | 253 EXPECT_EQ(json_start_args, flow_->dialog_start_args_); |
230 EXPECT_EQ(json_start_args, test_window_->flow()->dialog_start_args_); | |
231 | 254 |
232 #if 0 | |
233 // Simulate the user submitting credentials. | 255 // Simulate the user submitting credentials. |
234 test_window_->flow()->flow_handler_->HandleSubmitAuth(&credentials); | 256 handler_.HandleSubmitAuth(&credentials); |
235 EXPECT_TRUE(wizard_->IsVisible()); | 257 EXPECT_TRUE(wizard_->IsVisible()); |
236 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, test_window_->flow()->current_state_); | 258 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, flow_->current_state_); |
237 EXPECT_EQ(kTestUser, service_->username_); | 259 EXPECT_EQ(kTestUser, service_->username_); |
238 EXPECT_EQ(kTestPassword, service_->password_); | 260 EXPECT_EQ(kTestPassword, service_->password_); |
239 EXPECT_EQ(kTestCaptcha, service_->captcha_); | 261 EXPECT_EQ(kTestCaptcha, service_->captcha_); |
240 EXPECT_FALSE(service_->user_cancelled_dialog_); | 262 EXPECT_FALSE(service_->user_cancelled_dialog_); |
241 service_->ResetTestStats(); | 263 service_->ResetTestStats(); |
242 #endif | |
243 | 264 |
244 // Simulate failed credentials. | 265 // Simulate failed credentials. |
245 AuthError invalid_gaia(AuthError::INVALID_GAIA_CREDENTIALS); | 266 AuthError invalid_gaia(AuthError::INVALID_GAIA_CREDENTIALS); |
246 service_->set_auth_state(kTestUser, invalid_gaia); | 267 service_->set_auth_state(kTestUser, invalid_gaia); |
247 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 268 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
| 269 AttachSyncSetupHandler(); |
248 EXPECT_TRUE(wizard_->IsVisible()); | 270 EXPECT_TRUE(wizard_->IsVisible()); |
249 EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | 271 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, flow_->current_state_); |
250 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, test_window_->flow()->current_state_); | |
251 dialog_args.Clear(); | 272 dialog_args.Clear(); |
252 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); | 273 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); |
253 EXPECT_EQ(5U, dialog_args.size()); | 274 EXPECT_EQ(4U, dialog_args.size()); |
254 std::string iframe_to_show; | |
255 dialog_args.GetString("iframeToShow", &iframe_to_show); | |
256 EXPECT_EQ("login", iframe_to_show); | |
257 std::string actual_user; | 275 std::string actual_user; |
258 dialog_args.GetString("user", &actual_user); | 276 dialog_args.GetString("user", &actual_user); |
259 EXPECT_EQ(kTestUser, actual_user); | 277 EXPECT_EQ(kTestUser, actual_user); |
260 int error = -1; | 278 int error = -1; |
261 dialog_args.GetInteger("error", &error); | 279 dialog_args.GetInteger("error", &error); |
262 EXPECT_EQ(static_cast<int>(AuthError::INVALID_GAIA_CREDENTIALS), error); | 280 EXPECT_EQ(static_cast<int>(AuthError::INVALID_GAIA_CREDENTIALS), error); |
263 service_->set_auth_state(kTestUser, AuthError::None()); | 281 service_->set_auth_state(kTestUser, AuthError::None()); |
264 | 282 |
265 // Simulate captcha. | 283 // Simulate captcha. |
266 AuthError captcha_error(AuthError::FromCaptchaChallenge( | 284 AuthError captcha_error(AuthError::FromCaptchaChallenge( |
267 std::string(), GURL(kTestCaptchaUrl), GURL())); | 285 std::string(), GURL(kTestCaptchaUrl), GURL())); |
268 service_->set_auth_state(kTestUser, captcha_error); | 286 service_->set_auth_state(kTestUser, captcha_error); |
269 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 287 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
| 288 AttachSyncSetupHandler(); |
270 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); | 289 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); |
271 EXPECT_EQ(5U, dialog_args.size()); | 290 EXPECT_EQ(4U, dialog_args.size()); |
272 dialog_args.GetString("iframeToShow", &iframe_to_show); | |
273 EXPECT_EQ("login", iframe_to_show); | |
274 std::string captcha_url; | 291 std::string captcha_url; |
275 dialog_args.GetString("captchaUrl", &captcha_url); | 292 dialog_args.GetString("captchaUrl", &captcha_url); |
276 EXPECT_EQ(kTestCaptchaUrl, GURL(captcha_url).spec()); | 293 EXPECT_EQ(kTestCaptchaUrl, GURL(captcha_url).spec()); |
277 error = -1; | 294 error = -1; |
278 dialog_args.GetInteger("error", &error); | 295 dialog_args.GetInteger("error", &error); |
279 EXPECT_EQ(static_cast<int>(AuthError::CAPTCHA_REQUIRED), error); | 296 EXPECT_EQ(static_cast<int>(AuthError::CAPTCHA_REQUIRED), error); |
280 service_->set_auth_state(kTestUser, AuthError::None()); | 297 service_->set_auth_state(kTestUser, AuthError::None()); |
281 | 298 |
282 // Simulate success. | 299 // Simulate success. |
283 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | 300 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
284 EXPECT_TRUE(wizard_->IsVisible()); | 301 EXPECT_TRUE(wizard_->IsVisible()); |
285 EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | |
286 // In a non-discrete run, GAIA_SUCCESS immediately transitions you to | 302 // In a non-discrete run, GAIA_SUCCESS immediately transitions you to |
287 // SYNC_EVERYTHING. | 303 // SYNC_EVERYTHING. |
288 EXPECT_EQ(SyncSetupWizard::SYNC_EVERYTHING, | 304 EXPECT_EQ(SyncSetupWizard::SYNC_EVERYTHING, flow_->current_state_); |
289 test_window_->flow()->current_state_); | |
290 | 305 |
291 // That's all we're testing here, just move on to DONE. We'll test the | 306 // That's all we're testing here, just move on to DONE. We'll test the |
292 // "choose data types" scenarios elsewhere. | 307 // "choose data types" scenarios elsewhere. |
293 wizard_->Step(SyncSetupWizard::SETTING_UP); // No merge and sync. | 308 wizard_->Step(SyncSetupWizard::SETTING_UP); // No merge and sync. |
294 wizard_->Step(SyncSetupWizard::DONE); // No merge and sync. | 309 wizard_->Step(SyncSetupWizard::DONE); // No merge and sync. |
295 EXPECT_TRUE(wizard_->IsVisible()); | 310 EXPECT_FALSE(wizard_->IsVisible()); |
296 EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | |
297 EXPECT_EQ(SyncSetupWizard::DONE, test_window_->flow()->current_state_); | |
298 } | 311 } |
299 | 312 |
300 TEST_F(SyncSetupWizardTest, DISABLED_ChooseDataTypesSetsPrefs) { | 313 TEST_F(SyncSetupWizardTest, ChooseDataTypesSetsPrefs) { |
301 SKIP_TEST_ON_MACOSX(); | 314 SKIP_TEST_ON_MACOSX(); |
302 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 315 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
| 316 AttachSyncSetupHandler(); |
303 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | 317 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
304 wizard_->Step(SyncSetupWizard::CONFIGURE); | 318 wizard_->Step(SyncSetupWizard::CONFIGURE); |
305 | 319 |
306 ListValue data_type_choices_value; | 320 ListValue data_type_choices_value; |
307 std::string data_type_choices = "{\"keepEverythingSynced\":false,"; | 321 std::string data_type_choices = |
308 data_type_choices += "\"syncBookmarks\":true,\"syncPreferences\":true,"; | 322 "{\"keepEverythingSynced\":false,\"syncBookmarks\":true," |
309 data_type_choices += "\"syncThemes\":false,\"syncPasswords\":false,"; | 323 "\"syncPreferences\":true,\"syncThemes\":false,\"syncPasswords\":false," |
310 data_type_choices += "\"syncAutofill\":false,\"syncExtensions\":false,"; | 324 "\"syncAutofill\":false,\"syncExtensions\":false,\"syncTypedUrls\":true," |
311 data_type_choices += "\"syncTypedUrls\":true,\"syncApps\":true,"; | 325 "\"syncApps\":true,\"syncSessions\":false,\"usePassphrase\":false," |
312 data_type_choices += "\"syncSessions\":false,\"usePassphrase\":false}"; | 326 "\"encryptAllData\":false}"; |
313 data_type_choices_value.Append(new StringValue(data_type_choices)); | 327 data_type_choices_value.Append(new StringValue(data_type_choices)); |
314 | 328 |
315 #if 0 | 329 // Simulate the user choosing data types; bookmarks, prefs, typed URLS, and |
316 // Simulate the user choosing data types; bookmarks, prefs, typed | 330 // apps are on, the rest are off. |
317 // URLS, and apps are on, the rest are off. | 331 handler_.HandleConfigure(&data_type_choices_value); |
318 test_window_->flow()->flow_handler_->HandleConfigure( | |
319 &data_type_choices_value); | |
320 EXPECT_TRUE(wizard_->IsVisible()); | 332 EXPECT_TRUE(wizard_->IsVisible()); |
321 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | |
322 EXPECT_FALSE(service_->keep_everything_synced_); | 333 EXPECT_FALSE(service_->keep_everything_synced_); |
323 EXPECT_EQ(service_->chosen_data_types_.count(syncable::BOOKMARKS), 1U); | 334 EXPECT_EQ(1U, service_->chosen_data_types_.count(syncable::BOOKMARKS)); |
324 EXPECT_EQ(service_->chosen_data_types_.count(syncable::PREFERENCES), 1U); | 335 EXPECT_EQ(1U, service_->chosen_data_types_.count(syncable::PREFERENCES)); |
325 EXPECT_EQ(service_->chosen_data_types_.count(syncable::THEMES), 0U); | 336 EXPECT_EQ(0U, service_->chosen_data_types_.count(syncable::THEMES)); |
326 EXPECT_EQ(service_->chosen_data_types_.count(syncable::PASSWORDS), 0U); | 337 EXPECT_EQ(0U, service_->chosen_data_types_.count(syncable::PASSWORDS)); |
327 EXPECT_EQ(service_->chosen_data_types_.count(syncable::AUTOFILL), 0U); | 338 EXPECT_EQ(0U, service_->chosen_data_types_.count(syncable::AUTOFILL)); |
328 EXPECT_EQ(service_->chosen_data_types_.count(syncable::EXTENSIONS), 0U); | 339 EXPECT_EQ(0U, service_->chosen_data_types_.count(syncable::EXTENSIONS)); |
329 EXPECT_EQ(service_->chosen_data_types_.count(syncable::TYPED_URLS), 1U); | 340 EXPECT_EQ(1U, service_->chosen_data_types_.count(syncable::TYPED_URLS)); |
330 EXPECT_EQ(service_->chosen_data_types_.count(syncable::APPS), 1U); | 341 EXPECT_EQ(1U, service_->chosen_data_types_.count(syncable::APPS)); |
331 #endif | 342 |
332 test_window_->CloseDialog(); | 343 CloseSetupUI(); |
333 } | 344 } |
334 | 345 |
335 TEST_F(SyncSetupWizardTest, DISABLED_EnterPassphraseRequired) { | 346 TEST_F(SyncSetupWizardTest, EnterPassphraseRequired) { |
336 SKIP_TEST_ON_MACOSX(); | 347 SKIP_TEST_ON_MACOSX(); |
337 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 348 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
| 349 AttachSyncSetupHandler(); |
338 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | 350 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
339 wizard_->Step(SyncSetupWizard::CONFIGURE); | 351 wizard_->Step(SyncSetupWizard::CONFIGURE); |
340 wizard_->Step(SyncSetupWizard::SETTING_UP); | 352 wizard_->Step(SyncSetupWizard::SETTING_UP); |
341 service_->SetPassphraseRequiredReason(sync_api::REASON_ENCRYPTION); | 353 service_->set_passphrase_required_reason(sync_api::REASON_ENCRYPTION); |
342 wizard_->Step(SyncSetupWizard::ENTER_PASSPHRASE); | 354 wizard_->Step(SyncSetupWizard::ENTER_PASSPHRASE); |
343 EXPECT_EQ(SyncSetupWizard::ENTER_PASSPHRASE, | 355 EXPECT_EQ(SyncSetupWizard::ENTER_PASSPHRASE, flow_->current_state_); |
344 test_window_->flow()->current_state_); | 356 |
345 #if 0 | |
346 ListValue value; | 357 ListValue value; |
347 value.Append(new StringValue("{\"passphrase\":\"myPassphrase\"," | 358 value.Append(new StringValue("{\"passphrase\":\"myPassphrase\"," |
348 "\"mode\":\"gaia\"}")); | 359 "\"mode\":\"gaia\"}")); |
349 test_window_->flow()->flow_handler_->HandlePassphraseEntry(&value); | 360 handler_.HandlePassphraseEntry(&value); |
350 EXPECT_EQ("myPassphrase", service_->passphrase_); | 361 EXPECT_EQ("myPassphrase", service_->passphrase_); |
351 #endif | |
352 } | 362 } |
353 | 363 |
354 TEST_F(SyncSetupWizardTest, DISABLED_DialogCancelled) { | 364 TEST_F(SyncSetupWizardTest, DialogCancelled) { |
355 SKIP_TEST_ON_MACOSX(); | 365 SKIP_TEST_ON_MACOSX(); |
356 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 366 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
| 367 AttachSyncSetupHandler(); |
357 // Simulate the user closing the dialog. | 368 // Simulate the user closing the dialog. |
358 test_window_->CloseDialog(); | 369 CloseSetupUI(); |
359 EXPECT_FALSE(wizard_->IsVisible()); | 370 EXPECT_FALSE(wizard_->IsVisible()); |
360 EXPECT_TRUE(service_->user_cancelled_dialog_); | 371 EXPECT_TRUE(service_->user_cancelled_dialog_); |
361 EXPECT_EQ(std::string(), service_->username_); | 372 EXPECT_EQ(std::string(), service_->username_); |
362 EXPECT_EQ(std::string(), service_->password_); | 373 EXPECT_EQ(std::string(), service_->password_); |
363 | 374 |
364 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 375 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
| 376 AttachSyncSetupHandler(); |
365 EXPECT_TRUE(wizard_->IsVisible()); | 377 EXPECT_TRUE(wizard_->IsVisible()); |
366 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | |
367 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 378 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
368 EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | |
369 | 379 |
370 test_window_->CloseDialog(); | 380 CloseSetupUI(); |
371 EXPECT_FALSE(wizard_->IsVisible()); | 381 EXPECT_FALSE(wizard_->IsVisible()); |
372 EXPECT_TRUE(service_->user_cancelled_dialog_); | 382 EXPECT_TRUE(service_->user_cancelled_dialog_); |
373 EXPECT_EQ(std::string(), service_->username_); | 383 EXPECT_EQ(std::string(), service_->username_); |
374 EXPECT_EQ(std::string(), service_->password_); | 384 EXPECT_EQ(std::string(), service_->password_); |
375 } | 385 } |
376 | 386 |
377 TEST_F(SyncSetupWizardTest, DISABLED_InvalidTransitions) { | 387 TEST_F(SyncSetupWizardTest, InvalidTransitions) { |
378 SKIP_TEST_ON_MACOSX(); | 388 SKIP_TEST_ON_MACOSX(); |
379 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | 389 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
380 EXPECT_FALSE(wizard_->IsVisible()); | 390 EXPECT_FALSE(wizard_->IsVisible()); |
381 EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | |
382 | 391 |
383 wizard_->Step(SyncSetupWizard::DONE); | 392 wizard_->Step(SyncSetupWizard::DONE); |
384 EXPECT_FALSE(wizard_->IsVisible()); | 393 EXPECT_FALSE(wizard_->IsVisible()); |
385 EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | |
386 | 394 |
387 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 395 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
| 396 AttachSyncSetupHandler(); |
388 | 397 |
389 wizard_->Step(SyncSetupWizard::DONE); | 398 wizard_->Step(SyncSetupWizard::DONE); |
390 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, test_window_->flow()->current_state_); | 399 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, flow_->current_state_); |
391 | 400 |
392 wizard_->Step(SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR); | 401 wizard_->Step(SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR); |
393 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, | 402 AttachSyncSetupHandler(); |
394 test_window_->flow()->current_state_); | 403 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, flow_->current_state_); |
395 | 404 |
396 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | 405 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
397 EXPECT_EQ(SyncSetupWizard::SYNC_EVERYTHING, | 406 EXPECT_EQ(SyncSetupWizard::SYNC_EVERYTHING, flow_->current_state_); |
398 test_window_->flow()->current_state_); | |
399 | 407 |
400 wizard_->Step(SyncSetupWizard::FATAL_ERROR); | 408 wizard_->Step(SyncSetupWizard::FATAL_ERROR); |
401 EXPECT_EQ(SyncSetupWizard::FATAL_ERROR, test_window_->flow()->current_state_); | 409 EXPECT_EQ(SyncSetupWizard::FATAL_ERROR, flow_->current_state_); |
402 } | 410 } |
403 | 411 |
404 TEST_F(SyncSetupWizardTest, DISABLED_FullSuccessfulRunSetsPref) { | 412 TEST_F(SyncSetupWizardTest, FullSuccessfulRunSetsPref) { |
405 SKIP_TEST_ON_MACOSX(); | 413 SKIP_TEST_ON_MACOSX(); |
406 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 414 CompleteSetup(); |
407 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | |
408 wizard_->Step(SyncSetupWizard::SETTING_UP); | |
409 wizard_->Step(SyncSetupWizard::DONE); | |
410 test_window_->CloseDialog(); | |
411 EXPECT_FALSE(wizard_->IsVisible()); | 415 EXPECT_FALSE(wizard_->IsVisible()); |
412 EXPECT_TRUE(service_->profile()->GetPrefs()->GetBoolean( | 416 EXPECT_TRUE(service_->profile()->GetPrefs()->GetBoolean( |
413 prefs::kSyncHasSetupCompleted)); | 417 prefs::kSyncHasSetupCompleted)); |
414 } | 418 } |
415 | 419 |
416 TEST_F(SyncSetupWizardTest, DISABLED_AbortedByPendingClear) { | 420 TEST_F(SyncSetupWizardTest, AbortedByPendingClear) { |
417 SKIP_TEST_ON_MACOSX(); | 421 SKIP_TEST_ON_MACOSX(); |
418 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 422 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
| 423 AttachSyncSetupHandler(); |
419 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | 424 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
420 wizard_->Step(SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR); | 425 wizard_->Step(SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR); |
421 EXPECT_EQ(SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR, | 426 EXPECT_EQ(SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR, |
422 test_window_->flow()->current_state_); | 427 flow_->current_state_); |
423 test_window_->CloseDialog(); | 428 CloseSetupUI(); |
424 EXPECT_FALSE(wizard_->IsVisible()); | 429 EXPECT_FALSE(wizard_->IsVisible()); |
425 } | 430 } |
426 | 431 |
427 TEST_F(SyncSetupWizardTest, DISABLED_DiscreteRunChooseDataTypes) { | 432 TEST_F(SyncSetupWizardTest, DiscreteRunChooseDataTypes) { |
428 SKIP_TEST_ON_MACOSX(); | 433 SKIP_TEST_ON_MACOSX(); |
429 // For a discrete run, we need to have ran through setup once. | 434 |
430 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 435 CompleteSetup(); |
431 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | |
432 wizard_->Step(SyncSetupWizard::DONE); | |
433 test_window_->CloseDialog(); | |
434 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | |
435 | 436 |
436 wizard_->Step(SyncSetupWizard::CONFIGURE); | 437 wizard_->Step(SyncSetupWizard::CONFIGURE); |
437 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | 438 AttachSyncSetupHandler(); |
438 EXPECT_EQ(SyncSetupWizard::DONE, test_window_->flow()->end_state_); | 439 EXPECT_EQ(SyncSetupWizard::DONE, flow_->end_state_); |
439 | 440 |
| 441 wizard_->Step(SyncSetupWizard::SETTING_UP); |
440 wizard_->Step(SyncSetupWizard::DONE); | 442 wizard_->Step(SyncSetupWizard::DONE); |
441 test_window_->CloseDialog(); | |
442 EXPECT_FALSE(wizard_->IsVisible()); | 443 EXPECT_FALSE(wizard_->IsVisible()); |
443 } | 444 } |
444 | 445 |
445 TEST_F(SyncSetupWizardTest, | 446 TEST_F(SyncSetupWizardTest, DiscreteRunChooseDataTypesAbortedByPendingClear) { |
446 DISABLED_DiscreteRunChooseDataTypesAbortedByPendingClear) { | |
447 SKIP_TEST_ON_MACOSX(); | 447 SKIP_TEST_ON_MACOSX(); |
448 // For a discrete run, we need to have ran through setup once. | 448 |
449 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 449 CompleteSetup(); |
450 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | |
451 wizard_->Step(SyncSetupWizard::DONE); | |
452 test_window_->CloseDialog(); | |
453 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | |
454 | 450 |
455 wizard_->Step(SyncSetupWizard::CONFIGURE); | 451 wizard_->Step(SyncSetupWizard::CONFIGURE); |
456 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | 452 AttachSyncSetupHandler(); |
457 EXPECT_EQ(SyncSetupWizard::DONE, test_window_->flow()->end_state_); | 453 EXPECT_EQ(SyncSetupWizard::DONE, flow_->end_state_); |
458 wizard_->Step(SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR); | 454 wizard_->Step(SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR); |
459 EXPECT_EQ(SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR, | 455 EXPECT_EQ(SyncSetupWizard::SETUP_ABORTED_BY_PENDING_CLEAR, |
460 test_window_->flow()->current_state_); | 456 flow_->current_state_); |
461 | 457 |
462 test_window_->CloseDialog(); | 458 CloseSetupUI(); |
463 EXPECT_FALSE(wizard_->IsVisible()); | 459 EXPECT_FALSE(wizard_->IsVisible()); |
464 } | 460 } |
465 | 461 |
466 TEST_F(SyncSetupWizardTest, DISABLED_DiscreteRunGaiaLogin) { | 462 TEST_F(SyncSetupWizardTest, DiscreteRunGaiaLogin) { |
467 SKIP_TEST_ON_MACOSX(); | 463 SKIP_TEST_ON_MACOSX(); |
468 DictionaryValue dialog_args; | 464 |
469 // For a discrete run, we need to have ran through setup once. | 465 CompleteSetup(); |
470 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | |
471 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | |
472 wizard_->Step(SyncSetupWizard::SETTING_UP); | |
473 wizard_->Step(SyncSetupWizard::DONE); | |
474 test_window_->CloseDialog(); | |
475 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | |
476 | 466 |
477 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 467 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
478 EXPECT_EQ(SyncSetupWizard::GAIA_SUCCESS, test_window_->flow()->end_state_); | 468 AttachSyncSetupHandler(); |
| 469 EXPECT_EQ(SyncSetupWizard::GAIA_SUCCESS, flow_->end_state_); |
479 | 470 |
480 AuthError invalid_gaia(AuthError::INVALID_GAIA_CREDENTIALS); | 471 AuthError invalid_gaia(AuthError::INVALID_GAIA_CREDENTIALS); |
481 service_->set_auth_state(kTestUser, invalid_gaia); | 472 service_->set_auth_state(kTestUser, invalid_gaia); |
482 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 473 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
483 EXPECT_TRUE(wizard_->IsVisible()); | 474 EXPECT_TRUE(wizard_->IsVisible()); |
| 475 |
| 476 DictionaryValue dialog_args; |
484 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); | 477 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); |
485 EXPECT_EQ(5U, dialog_args.size()); | 478 EXPECT_EQ(4U, dialog_args.size()); |
486 std::string iframe_to_show; | |
487 dialog_args.GetString("iframeToShow", &iframe_to_show); | |
488 EXPECT_EQ("login", iframe_to_show); | |
489 std::string actual_user; | 479 std::string actual_user; |
490 dialog_args.GetString("user", &actual_user); | 480 dialog_args.GetString("user", &actual_user); |
491 EXPECT_EQ(kTestUser, actual_user); | 481 EXPECT_EQ(kTestUser, actual_user); |
492 int error = -1; | 482 int error = -1; |
493 dialog_args.GetInteger("error", &error); | 483 dialog_args.GetInteger("error", &error); |
494 EXPECT_EQ(static_cast<int>(AuthError::INVALID_GAIA_CREDENTIALS), error); | 484 EXPECT_EQ(static_cast<int>(AuthError::INVALID_GAIA_CREDENTIALS), error); |
495 service_->set_auth_state(kTestUser, AuthError::None()); | 485 service_->set_auth_state(kTestUser, AuthError::None()); |
496 | 486 |
497 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | 487 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
498 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | 488 } |
| 489 |
| 490 TEST_F(SyncSetupWizardTest, NonFatalError) { |
| 491 SKIP_TEST_ON_MACOSX(); |
| 492 |
| 493 CompleteSetup(); |
| 494 |
| 495 // Set up the ENTER_PASSPHRASE case. |
| 496 service_->set_passphrase_required_reason(sync_api::REASON_ENCRYPTION); |
| 497 service_->set_is_using_secondary_passphrase(true); |
| 498 wizard_->Step(SyncSetupWizard::NONFATAL_ERROR); |
| 499 AttachSyncSetupHandler(); |
| 500 EXPECT_EQ(SyncSetupWizard::ENTER_PASSPHRASE, flow_->current_state_); |
| 501 EXPECT_EQ(SyncSetupWizard::DONE, flow_->end_state_); |
| 502 CloseSetupUI(); |
| 503 EXPECT_FALSE(wizard_->IsVisible()); |
| 504 |
| 505 // Reset. |
| 506 service_->set_passphrase_required_reason( |
| 507 sync_api::REASON_PASSPHRASE_NOT_REQUIRED); |
| 508 service_->set_is_using_secondary_passphrase(false); |
| 509 |
| 510 // Test the various auth error states that lead to GAIA_LOGIN. |
| 511 |
| 512 service_->set_last_auth_error( |
| 513 AuthError(GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS)); |
| 514 wizard_->Step(SyncSetupWizard::NONFATAL_ERROR); |
| 515 AttachSyncSetupHandler(); |
| 516 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, flow_->current_state_); |
| 517 EXPECT_EQ(SyncSetupWizard::DONE, flow_->end_state_); |
| 518 CloseSetupUI(); |
| 519 EXPECT_FALSE(wizard_->IsVisible()); |
| 520 |
| 521 service_->set_last_auth_error( |
| 522 AuthError(GoogleServiceAuthError::CAPTCHA_REQUIRED)); |
| 523 wizard_->Step(SyncSetupWizard::NONFATAL_ERROR); |
| 524 AttachSyncSetupHandler(); |
| 525 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, flow_->current_state_); |
| 526 EXPECT_EQ(SyncSetupWizard::DONE, flow_->end_state_); |
| 527 CloseSetupUI(); |
| 528 EXPECT_FALSE(wizard_->IsVisible()); |
| 529 |
| 530 service_->set_last_auth_error( |
| 531 AuthError(GoogleServiceAuthError::ACCOUNT_DELETED)); |
| 532 wizard_->Step(SyncSetupWizard::NONFATAL_ERROR); |
| 533 AttachSyncSetupHandler(); |
| 534 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, flow_->current_state_); |
| 535 EXPECT_EQ(SyncSetupWizard::DONE, flow_->end_state_); |
| 536 CloseSetupUI(); |
| 537 EXPECT_FALSE(wizard_->IsVisible()); |
| 538 |
| 539 service_->set_last_auth_error( |
| 540 AuthError(GoogleServiceAuthError::ACCOUNT_DISABLED)); |
| 541 wizard_->Step(SyncSetupWizard::NONFATAL_ERROR); |
| 542 AttachSyncSetupHandler(); |
| 543 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, flow_->current_state_); |
| 544 EXPECT_EQ(SyncSetupWizard::DONE, flow_->end_state_); |
| 545 CloseSetupUI(); |
| 546 EXPECT_FALSE(wizard_->IsVisible()); |
| 547 |
| 548 service_->set_last_auth_error( |
| 549 AuthError(GoogleServiceAuthError::SERVICE_UNAVAILABLE)); |
| 550 wizard_->Step(SyncSetupWizard::NONFATAL_ERROR); |
| 551 AttachSyncSetupHandler(); |
| 552 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, flow_->current_state_); |
| 553 EXPECT_EQ(SyncSetupWizard::DONE, flow_->end_state_); |
| 554 CloseSetupUI(); |
| 555 EXPECT_FALSE(wizard_->IsVisible()); |
499 } | 556 } |
500 | 557 |
501 #undef SKIP_TEST_ON_MACOSX | 558 #undef SKIP_TEST_ON_MACOSX |
OLD | NEW |