OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #include "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
6 | 6 |
7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
8 #include "base/scoped_ptr.h" | 8 #include "base/scoped_ptr.h" |
9 #include "base/stl_util-inl.h" | 9 #include "base/stl_util-inl.h" |
10 #include "chrome/browser/browser.h" | 10 #include "chrome/browser/browser.h" |
11 #include "chrome/browser/browser_list.h" | 11 #include "chrome/browser/browser_list.h" |
12 #include "chrome/browser/google_service_auth_error.h" | 12 #include "chrome/browser/google_service_auth_error.h" |
13 #include "chrome/browser/sync/profile_sync_service.h" | 13 #include "chrome/browser/sync/profile_sync_service.h" |
14 #include "chrome/browser/sync/sync_setup_flow.h" | 14 #include "chrome/browser/sync/sync_setup_flow.h" |
15 #include "chrome/browser/sync/sync_setup_wizard.h" | 15 #include "chrome/browser/sync/sync_setup_wizard.h" |
16 #include "chrome/common/pref_names.h" | 16 #include "chrome/common/pref_names.h" |
17 #include "chrome/common/pref_service.h" | 17 #include "chrome/common/pref_service.h" |
18 #include "chrome/test/browser_with_test_window_test.h" | 18 #include "chrome/test/browser_with_test_window_test.h" |
19 #include "chrome/test/testing_profile.h" | 19 #include "chrome/test/testing_profile.h" |
20 #include "chrome/test/test_browser_window.h" | 20 #include "chrome/test/test_browser_window.h" |
21 | 21 |
22 static const char* kTestUser = "chrome.p13n.test@gmail.com"; | 22 static const char* kTestUser = "chrome.p13n.test@gmail.com"; |
23 static const char* kTestPassword = "passwd"; | 23 static const char* kTestPassword = "passwd"; |
| 24 static const char* kTestCaptcha = "pizzamyheart"; |
| 25 static const char* kTestCaptchaUrl = "http://pizzamyheart/"; |
24 | 26 |
25 typedef GoogleServiceAuthError AuthError; | 27 typedef GoogleServiceAuthError AuthError; |
26 | 28 |
27 // A PSS subtype to inject. | 29 // A PSS subtype to inject. |
28 class ProfileSyncServiceForWizardTest : public ProfileSyncService { | 30 class ProfileSyncServiceForWizardTest : public ProfileSyncService { |
29 public: | 31 public: |
30 explicit ProfileSyncServiceForWizardTest(Profile* profile) | 32 explicit ProfileSyncServiceForWizardTest(Profile* profile) |
31 : ProfileSyncService(profile), user_accepted_merge_and_sync_(false), | 33 : ProfileSyncService(profile), user_accepted_merge_and_sync_(false), |
32 user_cancelled_dialog_(false) { | 34 user_cancelled_dialog_(false) { |
33 RegisterPreferences(); | 35 RegisterPreferences(); |
34 } | 36 } |
35 | 37 |
36 virtual ~ProfileSyncServiceForWizardTest() { } | 38 virtual ~ProfileSyncServiceForWizardTest() { } |
37 | 39 |
38 virtual void OnUserSubmittedAuth(const std::string& username, | 40 virtual void OnUserSubmittedAuth(const std::string& username, |
39 const std::string& password) { | 41 const std::string& password, |
| 42 const std::string& captcha) { |
40 username_ = username; | 43 username_ = username; |
41 password_ = password; | 44 password_ = password; |
| 45 captcha_ = captcha; |
42 } | 46 } |
43 virtual void OnUserAcceptedMergeAndSync() { | 47 virtual void OnUserAcceptedMergeAndSync() { |
44 user_accepted_merge_and_sync_ = true; | 48 user_accepted_merge_and_sync_ = true; |
45 } | 49 } |
46 virtual void OnUserCancelledDialog() { | 50 virtual void OnUserCancelledDialog() { |
47 user_cancelled_dialog_ = true; | 51 user_cancelled_dialog_ = true; |
48 } | 52 } |
49 | 53 |
50 virtual string16 GetAuthenticatedUsername() const { | 54 virtual string16 GetAuthenticatedUsername() const { |
51 return UTF8ToUTF16(username_); | 55 return UTF8ToUTF16(username_); |
52 } | 56 } |
53 | 57 |
54 void set_auth_state(const std::string& last_email, | 58 void set_auth_state(const std::string& last_email, |
55 const AuthError::State& state) { | 59 const AuthError& error) { |
56 last_attempted_user_email_ = last_email; | 60 last_attempted_user_email_ = last_email; |
57 last_auth_error_ = AuthError(state); | 61 last_auth_error_ = error; |
58 } | 62 } |
59 | 63 |
60 void ResetTestStats() { | 64 void ResetTestStats() { |
61 username_.clear(); | 65 username_.clear(); |
62 password_.clear(); | 66 password_.clear(); |
| 67 captcha_.clear(); |
63 user_accepted_merge_and_sync_ = false; | 68 user_accepted_merge_and_sync_ = false; |
64 user_cancelled_dialog_ = false; | 69 user_cancelled_dialog_ = false; |
65 } | 70 } |
66 | 71 |
67 std::string username_; | 72 std::string username_; |
68 std::string password_; | 73 std::string password_; |
| 74 std::string captcha_; |
69 bool user_accepted_merge_and_sync_; | 75 bool user_accepted_merge_and_sync_; |
70 bool user_cancelled_dialog_; | 76 bool user_cancelled_dialog_; |
71 | 77 |
72 private: | 78 private: |
73 DISALLOW_COPY_AND_ASSIGN(ProfileSyncServiceForWizardTest); | 79 DISALLOW_COPY_AND_ASSIGN(ProfileSyncServiceForWizardTest); |
74 }; | 80 }; |
75 | 81 |
76 class TestingProfileWithSyncService : public TestingProfile { | 82 class TestingProfileWithSyncService : public TestingProfile { |
77 public: | 83 public: |
78 TestingProfileWithSyncService() { | 84 TestingProfileWithSyncService() { |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 }; | 187 }; |
182 | 188 |
183 TEST_F(SyncSetupWizardTest, InitialStepLogin) { | 189 TEST_F(SyncSetupWizardTest, InitialStepLogin) { |
184 DictionaryValue dialog_args; | 190 DictionaryValue dialog_args; |
185 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); | 191 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); |
186 std::string json_start_args; | 192 std::string json_start_args; |
187 base::JSONWriter::Write(&dialog_args, false, &json_start_args); | 193 base::JSONWriter::Write(&dialog_args, false, &json_start_args); |
188 ListValue credentials; | 194 ListValue credentials; |
189 std::string auth = "{\"user\":\""; | 195 std::string auth = "{\"user\":\""; |
190 auth += std::string(kTestUser) + "\",\"pass\":\""; | 196 auth += std::string(kTestUser) + "\",\"pass\":\""; |
191 auth += std::string(kTestPassword) + "\"}"; | 197 auth += std::string(kTestPassword) + "\",\"captcha\":\""; |
| 198 auth += std::string(kTestCaptcha) + "\"}"; |
192 credentials.Append(new StringValue(auth)); | 199 credentials.Append(new StringValue(auth)); |
193 | 200 |
194 EXPECT_FALSE(wizard_->IsVisible()); | 201 EXPECT_FALSE(wizard_->IsVisible()); |
195 EXPECT_FALSE(test_window_->flow()); | 202 EXPECT_FALSE(test_window_->flow()); |
196 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 203 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
197 | 204 |
198 EXPECT_TRUE(wizard_->IsVisible()); | 205 EXPECT_TRUE(wizard_->IsVisible()); |
199 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | 206 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); |
200 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, test_window_->flow()->current_state_); | 207 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, test_window_->flow()->current_state_); |
201 EXPECT_EQ(SyncSetupWizard::DONE, test_window_->flow()->end_state_); | 208 EXPECT_EQ(SyncSetupWizard::DONE, test_window_->flow()->end_state_); |
202 EXPECT_EQ(json_start_args, test_window_->flow()->dialog_start_args_); | 209 EXPECT_EQ(json_start_args, test_window_->flow()->dialog_start_args_); |
203 | 210 |
204 // Simulate the user submitting credentials. | 211 // Simulate the user submitting credentials. |
205 test_window_->flow()->flow_handler_->HandleSubmitAuth(&credentials); | 212 test_window_->flow()->flow_handler_->HandleSubmitAuth(&credentials); |
206 EXPECT_TRUE(wizard_->IsVisible()); | 213 EXPECT_TRUE(wizard_->IsVisible()); |
207 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, test_window_->flow()->current_state_); | 214 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, test_window_->flow()->current_state_); |
208 EXPECT_EQ(kTestUser, service_->username_); | 215 EXPECT_EQ(kTestUser, service_->username_); |
209 EXPECT_EQ(kTestPassword, service_->password_); | 216 EXPECT_EQ(kTestPassword, service_->password_); |
| 217 EXPECT_EQ(kTestCaptcha, service_->captcha_); |
210 EXPECT_FALSE(service_->user_accepted_merge_and_sync_); | 218 EXPECT_FALSE(service_->user_accepted_merge_and_sync_); |
211 EXPECT_FALSE(service_->user_cancelled_dialog_); | 219 EXPECT_FALSE(service_->user_cancelled_dialog_); |
212 service_->ResetTestStats(); | 220 service_->ResetTestStats(); |
213 | 221 |
214 // Simulate failed credentials. | 222 // Simulate failed credentials. |
215 service_->set_auth_state(kTestUser, AuthError::INVALID_GAIA_CREDENTIALS); | 223 AuthError invalid_gaia(AuthError::INVALID_GAIA_CREDENTIALS); |
| 224 service_->set_auth_state(kTestUser, invalid_gaia); |
216 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 225 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
217 EXPECT_TRUE(wizard_->IsVisible()); | 226 EXPECT_TRUE(wizard_->IsVisible()); |
218 EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | 227 EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); |
219 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, test_window_->flow()->current_state_); | 228 EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, test_window_->flow()->current_state_); |
220 dialog_args.Clear(); | 229 dialog_args.Clear(); |
221 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); | 230 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); |
222 EXPECT_TRUE(2 == dialog_args.GetSize()); | 231 EXPECT_TRUE(3 == dialog_args.GetSize()); |
223 std::string actual_user; | 232 std::string actual_user; |
224 dialog_args.GetString(L"user", &actual_user); | 233 dialog_args.GetString(L"user", &actual_user); |
225 EXPECT_EQ(kTestUser, actual_user); | 234 EXPECT_EQ(kTestUser, actual_user); |
226 int error = -1; | 235 int error = -1; |
227 dialog_args.GetInteger(L"error", &error); | 236 dialog_args.GetInteger(L"error", &error); |
228 EXPECT_EQ(static_cast<int>(AuthError::INVALID_GAIA_CREDENTIALS), error); | 237 EXPECT_EQ(static_cast<int>(AuthError::INVALID_GAIA_CREDENTIALS), error); |
229 service_->set_auth_state(kTestUser, AuthError::NONE); | 238 service_->set_auth_state(kTestUser, AuthError::None()); |
| 239 |
| 240 // Simulate captcha. |
| 241 AuthError captcha_error(AuthError::FromCaptchaChallenge( |
| 242 std::string(), GURL(kTestCaptchaUrl), GURL())); |
| 243 service_->set_auth_state(kTestUser, captcha_error); |
| 244 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
| 245 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); |
| 246 EXPECT_TRUE(3 == dialog_args.GetSize()); |
| 247 std::string captcha_url; |
| 248 dialog_args.GetString(L"captchaUrl", &captcha_url); |
| 249 EXPECT_EQ(kTestCaptchaUrl, GURL(captcha_url).spec()); |
| 250 error = -1; |
| 251 dialog_args.GetInteger(L"error", &error); |
| 252 EXPECT_EQ(static_cast<int>(AuthError::CAPTCHA_REQUIRED), error); |
| 253 service_->set_auth_state(kTestUser, AuthError::None()); |
230 | 254 |
231 // Simulate success. | 255 // Simulate success. |
232 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | 256 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
233 EXPECT_TRUE(wizard_->IsVisible()); | 257 EXPECT_TRUE(wizard_->IsVisible()); |
234 EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | 258 EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); |
235 EXPECT_EQ(SyncSetupWizard::GAIA_SUCCESS, | 259 EXPECT_EQ(SyncSetupWizard::GAIA_SUCCESS, |
236 test_window_->flow()->current_state_); | 260 test_window_->flow()->current_state_); |
237 | 261 |
238 wizard_->Step(SyncSetupWizard::DONE); // No merge and sync. | 262 wizard_->Step(SyncSetupWizard::DONE); // No merge and sync. |
239 EXPECT_TRUE(wizard_->IsVisible()); | 263 EXPECT_TRUE(wizard_->IsVisible()); |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 382 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
359 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | 383 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
360 wizard_->Step(SyncSetupWizard::MERGE_AND_SYNC); | 384 wizard_->Step(SyncSetupWizard::MERGE_AND_SYNC); |
361 wizard_->Step(SyncSetupWizard::DONE); | 385 wizard_->Step(SyncSetupWizard::DONE); |
362 test_window_->CloseDialog(); | 386 test_window_->CloseDialog(); |
363 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | 387 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); |
364 | 388 |
365 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 389 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
366 EXPECT_EQ(SyncSetupWizard::GAIA_SUCCESS, test_window_->flow()->end_state_); | 390 EXPECT_EQ(SyncSetupWizard::GAIA_SUCCESS, test_window_->flow()->end_state_); |
367 | 391 |
368 service_->set_auth_state(kTestUser, AuthError::INVALID_GAIA_CREDENTIALS); | 392 AuthError invalid_gaia(AuthError::INVALID_GAIA_CREDENTIALS); |
| 393 service_->set_auth_state(kTestUser, invalid_gaia); |
369 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); | 394 wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
370 EXPECT_TRUE(wizard_->IsVisible()); | 395 EXPECT_TRUE(wizard_->IsVisible()); |
371 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); | 396 SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); |
372 EXPECT_TRUE(2 == dialog_args.GetSize()); | 397 EXPECT_TRUE(3 == dialog_args.GetSize()); |
373 std::string actual_user; | 398 std::string actual_user; |
374 dialog_args.GetString(L"user", &actual_user); | 399 dialog_args.GetString(L"user", &actual_user); |
375 EXPECT_EQ(kTestUser, actual_user); | 400 EXPECT_EQ(kTestUser, actual_user); |
376 int error = -1; | 401 int error = -1; |
377 dialog_args.GetInteger(L"error", &error); | 402 dialog_args.GetInteger(L"error", &error); |
378 EXPECT_EQ(static_cast<int>(AuthError::INVALID_GAIA_CREDENTIALS), error); | 403 EXPECT_EQ(static_cast<int>(AuthError::INVALID_GAIA_CREDENTIALS), error); |
379 service_->set_auth_state(kTestUser, AuthError::NONE); | 404 service_->set_auth_state(kTestUser, AuthError::None()); |
380 | 405 |
381 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); | 406 wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
382 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); | 407 EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); |
383 } | 408 } |
OLD | NEW |