OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/signin/signin_manager.h" | 5 #include "chrome/browser/signin/signin_manager.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 google_login_success_.ListenFor( | 54 google_login_success_.ListenFor( |
55 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, | 55 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, |
56 content::Source<Profile>(profile_.get())); | 56 content::Source<Profile>(profile_.get())); |
57 google_login_failure_.ListenFor(chrome::NOTIFICATION_GOOGLE_SIGNIN_FAILED, | 57 google_login_failure_.ListenFor(chrome::NOTIFICATION_GOOGLE_SIGNIN_FAILED, |
58 content::Source<Profile>(profile_.get())); | 58 content::Source<Profile>(profile_.get())); |
59 } | 59 } |
60 | 60 |
61 virtual void TearDown() OVERRIDE { | 61 virtual void TearDown() OVERRIDE { |
62 // Destroy the SigninManager here, because it relies on profile_ which is | 62 // Destroy the SigninManager here, because it relies on profile_ which is |
63 // freed in the base class. | 63 // freed in the base class. |
64 manager_->Shutdown(); | |
65 manager_.reset(NULL); | 64 manager_.reset(NULL); |
66 TestingBrowserProcess::GetGlobal()->SetLocalState(NULL); | 65 TestingBrowserProcess::GetGlobal()->SetLocalState(NULL); |
67 prefs_.reset(NULL); | 66 prefs_.reset(NULL); |
68 TokenServiceTestHarness::TearDown(); | 67 TokenServiceTestHarness::TearDown(); |
69 } | 68 } |
70 | 69 |
71 void SetupFetcherAndComplete(const std::string& url, | 70 void SetupFetcherAndComplete(const std::string& url, |
72 int response_code, | 71 int response_code, |
73 const net::ResponseCookies& cookies, | 72 const net::ResponseCookies& cookies, |
74 const std::string& response_string) { | 73 const std::string& response_string) { |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 | 201 |
203 SimulateValidResponseClientLogin(true); | 202 SimulateValidResponseClientLogin(true); |
204 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); | 203 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); |
205 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean(prefs::kIsGooglePlusUser)); | 204 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean(prefs::kIsGooglePlusUser)); |
206 | 205 |
207 // Should go into token service and stop. | 206 // Should go into token service and stop. |
208 EXPECT_EQ(1U, google_login_success_.size()); | 207 EXPECT_EQ(1U, google_login_success_.size()); |
209 EXPECT_EQ(0U, google_login_failure_.size()); | 208 EXPECT_EQ(0U, google_login_failure_.size()); |
210 | 209 |
211 // Should persist across resets. | 210 // Should persist across resets. |
212 manager_->Shutdown(); | |
213 manager_.reset(new SigninManager()); | 211 manager_.reset(new SigninManager()); |
214 manager_->Initialize(profile_.get()); | 212 manager_->Initialize(profile_.get()); |
215 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); | 213 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); |
216 } | 214 } |
217 | 215 |
218 TEST_F(SigninManagerTest, Prohibited) { | 216 TEST_F(SigninManagerTest, Prohibited) { |
219 g_browser_process->local_state()->SetString( | 217 g_browser_process->local_state()->SetString( |
220 prefs::kGoogleServicesUsernamePattern, ".*@google.com"); | 218 prefs::kGoogleServicesUsernamePattern, ".*@google.com"); |
221 manager_->Initialize(profile_.get()); | 219 manager_->Initialize(profile_.get()); |
222 EXPECT_TRUE(manager_->IsAllowedUsername("test@google.com")); | 220 EXPECT_TRUE(manager_->IsAllowedUsername("test@google.com")); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 | 270 |
273 // This is flow, the oauth2 credentials should already be available in | 271 // This is flow, the oauth2 credentials should already be available in |
274 // the token service. | 272 // the token service. |
275 EXPECT_TRUE(service_->HasOAuthLoginToken()); | 273 EXPECT_TRUE(service_->HasOAuthLoginToken()); |
276 | 274 |
277 // Should go into token service and stop. | 275 // Should go into token service and stop. |
278 EXPECT_EQ(1U, google_login_success_.size()); | 276 EXPECT_EQ(1U, google_login_success_.size()); |
279 EXPECT_EQ(0U, google_login_failure_.size()); | 277 EXPECT_EQ(0U, google_login_failure_.size()); |
280 | 278 |
281 // Should persist across resets. | 279 // Should persist across resets. |
282 manager_->Shutdown(); | |
283 manager_.reset(new SigninManager()); | 280 manager_.reset(new SigninManager()); |
284 manager_->Initialize(profile_.get()); | 281 manager_->Initialize(profile_.get()); |
285 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); | 282 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); |
286 } | 283 } |
287 | 284 |
288 TEST_F(SigninManagerTest, SignInWithCredentialsWrongEmail) { | 285 TEST_F(SigninManagerTest, SignInWithCredentialsWrongEmail) { |
289 manager_->Initialize(profile_.get()); | 286 manager_->Initialize(profile_.get()); |
290 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 287 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
291 | 288 |
292 // If the email address used to start the sign in does not match the | 289 // If the email address used to start the sign in does not match the |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 // Now clear the in memory data. | 333 // Now clear the in memory data. |
337 manager_->ClearTransientSigninData(); | 334 manager_->ClearTransientSigninData(); |
338 EXPECT_TRUE(manager_->last_result_.data.empty()); | 335 EXPECT_TRUE(manager_->last_result_.data.empty()); |
339 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); | 336 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); |
340 | 337 |
341 // Ensure preferences are not modified. | 338 // Ensure preferences are not modified. |
342 EXPECT_FALSE( | 339 EXPECT_FALSE( |
343 profile_->GetPrefs()->GetString(prefs::kGoogleServicesUsername).empty()); | 340 profile_->GetPrefs()->GetString(prefs::kGoogleServicesUsername).empty()); |
344 | 341 |
345 // On reset it should be regenerated. | 342 // On reset it should be regenerated. |
346 manager_->Shutdown(); | |
347 manager_.reset(new SigninManager()); | 343 manager_.reset(new SigninManager()); |
348 manager_->Initialize(profile_.get()); | 344 manager_->Initialize(profile_.get()); |
349 | 345 |
350 // Now make sure we have the right user name. | 346 // Now make sure we have the right user name. |
351 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); | 347 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); |
352 } | 348 } |
353 | 349 |
354 TEST_F(SigninManagerTest, SignOutClientLogin) { | 350 TEST_F(SigninManagerTest, SignOutClientLogin) { |
355 manager_->Initialize(profile_.get()); | 351 manager_->Initialize(profile_.get()); |
356 manager_->StartSignIn("username", "password", "", ""); | 352 manager_->StartSignIn("username", "password", "", ""); |
357 SimulateValidResponseClientLogin(false); | 353 SimulateValidResponseClientLogin(false); |
358 manager_->OnClientLoginSuccess(credentials_); | 354 manager_->OnClientLoginSuccess(credentials_); |
359 | 355 |
360 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); | 356 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); |
361 manager_->SignOut(); | 357 manager_->SignOut(); |
362 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 358 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
363 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(prefs::kIsGooglePlusUser)); | 359 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(prefs::kIsGooglePlusUser)); |
364 // Should not be persisted anymore | 360 // Should not be persisted anymore |
365 manager_->Shutdown(); | |
366 manager_.reset(new SigninManager()); | 361 manager_.reset(new SigninManager()); |
367 manager_->Initialize(profile_.get()); | 362 manager_->Initialize(profile_.get()); |
368 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 363 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
369 } | 364 } |
370 | 365 |
371 TEST_F(SigninManagerTest, SignInFailureClientLogin) { | 366 TEST_F(SigninManagerTest, SignInFailureClientLogin) { |
372 manager_->Initialize(profile_.get()); | 367 manager_->Initialize(profile_.get()); |
373 manager_->StartSignIn("username", "password", "", ""); | 368 manager_->StartSignIn("username", "password", "", ""); |
374 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); | 369 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); |
375 manager_->OnClientLoginFailure(error); | 370 manager_->OnClientLoginFailure(error); |
376 | 371 |
377 EXPECT_EQ(0U, google_login_success_.size()); | 372 EXPECT_EQ(0U, google_login_success_.size()); |
378 EXPECT_EQ(1U, google_login_failure_.size()); | 373 EXPECT_EQ(1U, google_login_failure_.size()); |
379 | 374 |
380 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 375 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
381 | 376 |
382 // Should not be persisted | 377 // Should not be persisted |
383 manager_->Shutdown(); | |
384 manager_.reset(new SigninManager()); | 378 manager_.reset(new SigninManager()); |
385 manager_->Initialize(profile_.get()); | 379 manager_->Initialize(profile_.get()); |
386 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 380 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
387 } | 381 } |
388 | 382 |
389 TEST_F(SigninManagerTest, ProvideSecondFactorSuccess) { | 383 TEST_F(SigninManagerTest, ProvideSecondFactorSuccess) { |
390 manager_->Initialize(profile_.get()); | 384 manager_->Initialize(profile_.get()); |
391 manager_->StartSignIn("username", "password", "", ""); | 385 manager_->StartSignIn("username", "password", "", ""); |
392 GoogleServiceAuthError error(GoogleServiceAuthError::TWO_FACTOR); | 386 GoogleServiceAuthError error(GoogleServiceAuthError::TWO_FACTOR); |
393 manager_->OnClientLoginFailure(error); | 387 manager_->OnClientLoginFailure(error); |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 | 484 |
491 manager_->ProvideOAuthChallengeResponse( | 485 manager_->ProvideOAuthChallengeResponse( |
492 GoogleServiceAuthError::CAPTCHA_REQUIRED, "token", "solution"); | 486 GoogleServiceAuthError::CAPTCHA_REQUIRED, "token", "solution"); |
493 | 487 |
494 SimulateProvideOAuthChallengeResponseValid(); | 488 SimulateProvideOAuthChallengeResponseValid(); |
495 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); | 489 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); |
496 | 490 |
497 EXPECT_EQ(1U, google_login_success_.size()); | 491 EXPECT_EQ(1U, google_login_success_.size()); |
498 EXPECT_EQ(1U, google_login_failure_.size()); | 492 EXPECT_EQ(1U, google_login_failure_.size()); |
499 } | 493 } |
OLD | NEW |