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/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 | 204 |
205 // Should go into token service and stop. | 205 // Should go into token service and stop. |
206 EXPECT_EQ(1U, google_login_success_.size()); | 206 EXPECT_EQ(1U, google_login_success_.size()); |
207 EXPECT_EQ(0U, google_login_failure_.size()); | 207 EXPECT_EQ(0U, google_login_failure_.size()); |
208 | 208 |
209 // Should persist across resets. | 209 // Should persist across resets. |
210 manager_->Shutdown(); | 210 manager_->Shutdown(); |
211 manager_.reset(new SigninManager( | 211 manager_.reset(new SigninManager( |
212 scoped_ptr<SigninManagerDelegate>( | 212 scoped_ptr<SigninManagerDelegate>( |
213 new ChromeSigninManagerDelegate(profile_.get())))); | 213 new ChromeSigninManagerDelegate(profile_.get())))); |
214 manager_->Initialize(profile_.get()); | 214 manager_->Initialize(profile_.get(), NULL); |
215 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); | 215 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); |
216 } | 216 } |
217 | 217 |
218 // Helper method that wraps the logic when signin with credentials | 218 // Helper method that wraps the logic when signin with credentials |
219 // should fail. If |requestSent| is true, then simulate valid resopnse. | 219 // should fail. If |requestSent| is true, then simulate valid resopnse. |
220 // Otherwise the sign-in is aborted before any request is sent, thus no need | 220 // Otherwise the sign-in is aborted before any request is sent, thus no need |
221 // to simulatate response. | 221 // to simulatate response. |
222 void ExpectSignInWithCredentialsFail(bool requestSent) { | 222 void ExpectSignInWithCredentialsFail(bool requestSent) { |
223 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 223 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
224 | 224 |
(...skipping 25 matching lines...) Expand all Loading... |
250 content::TestNotificationTracker google_login_failure_; | 250 content::TestNotificationTracker google_login_failure_; |
251 std::vector<std::string> oauth_tokens_fetched_; | 251 std::vector<std::string> oauth_tokens_fetched_; |
252 scoped_ptr<TestingPrefServiceSimple> prefs_; | 252 scoped_ptr<TestingPrefServiceSimple> prefs_; |
253 scoped_ptr<content::TestBrowserThread> io_thread_; | 253 scoped_ptr<content::TestBrowserThread> io_thread_; |
254 std::vector<std::string> cookies_; | 254 std::vector<std::string> cookies_; |
255 }; | 255 }; |
256 | 256 |
257 // NOTE: ClientLogin's "StartSignin" is called after collecting credentials | 257 // NOTE: ClientLogin's "StartSignin" is called after collecting credentials |
258 // from the user. | 258 // from the user. |
259 TEST_F(SigninManagerTest, SignInClientLogin) { | 259 TEST_F(SigninManagerTest, SignInClientLogin) { |
260 manager_->Initialize(profile_.get()); | 260 manager_->Initialize(profile_.get(), NULL); |
261 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 261 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
262 | 262 |
263 manager_->StartSignIn( | 263 manager_->StartSignIn( |
264 "user@gmail.com", "password", std::string(), std::string()); | 264 "user@gmail.com", "password", std::string(), std::string()); |
265 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 265 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
266 | 266 |
267 SimulateValidResponseClientLogin(true); | 267 SimulateValidResponseClientLogin(true); |
268 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); | 268 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); |
269 | 269 |
270 // Should go into token service and stop. | 270 // Should go into token service and stop. |
271 EXPECT_EQ(1U, google_login_success_.size()); | 271 EXPECT_EQ(1U, google_login_success_.size()); |
272 EXPECT_EQ(0U, google_login_failure_.size()); | 272 EXPECT_EQ(0U, google_login_failure_.size()); |
273 | 273 |
274 service_->OnIssueAuthTokenSuccess(GaiaConstants::kGaiaOAuth2LoginRefreshToken, | 274 service_->OnIssueAuthTokenSuccess(GaiaConstants::kGaiaOAuth2LoginRefreshToken, |
275 "oauth2Token"); | 275 "oauth2Token"); |
276 SimulateValidUberToken(); | 276 SimulateValidUberToken(); |
277 // Check that the login cookie has been sent. | 277 // Check that the login cookie has been sent. |
278 ASSERT_NE(std::find(cookies_.begin(), cookies_.end(), "checkCookie = true"), | 278 ASSERT_NE(std::find(cookies_.begin(), cookies_.end(), "checkCookie = true"), |
279 cookies_.end()); | 279 cookies_.end()); |
280 | 280 |
281 // Should persist across resets. | 281 // Should persist across resets. |
282 manager_->Shutdown(); | 282 manager_->Shutdown(); |
283 manager_.reset(new SigninManager( | 283 manager_.reset(new SigninManager( |
284 scoped_ptr<SigninManagerDelegate>( | 284 scoped_ptr<SigninManagerDelegate>( |
285 new ChromeSigninManagerDelegate(profile_.get())))); | 285 new ChromeSigninManagerDelegate(profile_.get())))); |
286 manager_->Initialize(profile_.get()); | 286 manager_->Initialize(profile_.get(), NULL); |
287 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); | 287 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); |
288 } | 288 } |
289 | 289 |
290 TEST_F(SigninManagerTest, SignInWithCredentials) { | 290 TEST_F(SigninManagerTest, SignInWithCredentials) { |
291 manager_->Initialize(profile_.get()); | 291 manager_->Initialize(profile_.get(), NULL); |
292 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 292 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
293 | 293 |
294 manager_->StartSignInWithCredentials( | 294 manager_->StartSignInWithCredentials( |
295 "0", | 295 "0", |
296 "user@gmail.com", | 296 "user@gmail.com", |
297 "password", | 297 "password", |
298 SigninManager::OAuthTokenFetchedCallback()); | 298 SigninManager::OAuthTokenFetchedCallback()); |
299 | 299 |
300 ExpectSignInWithCredentialsSuccess(); | 300 ExpectSignInWithCredentialsSuccess(); |
301 } | 301 } |
302 | 302 |
303 TEST_F(SigninManagerTest, SignInWithCredentialsNonCanonicalEmail) { | 303 TEST_F(SigninManagerTest, SignInWithCredentialsNonCanonicalEmail) { |
304 manager_->Initialize(profile_.get()); | 304 manager_->Initialize(profile_.get(), NULL); |
305 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 305 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
306 | 306 |
307 manager_->StartSignInWithCredentials( | 307 manager_->StartSignInWithCredentials( |
308 "0", | 308 "0", |
309 "user", | 309 "user", |
310 "password", | 310 "password", |
311 SigninManager::OAuthTokenFetchedCallback()); | 311 SigninManager::OAuthTokenFetchedCallback()); |
312 | 312 |
313 ExpectSignInWithCredentialsSuccess(); | 313 ExpectSignInWithCredentialsSuccess(); |
314 } | 314 } |
315 | 315 |
316 TEST_F(SigninManagerTest, SignInWithCredentialsWrongEmail) { | 316 TEST_F(SigninManagerTest, SignInWithCredentialsWrongEmail) { |
317 manager_->Initialize(profile_.get()); | 317 manager_->Initialize(profile_.get(), NULL); |
318 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 318 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
319 | 319 |
320 // If the email address used to start the sign in does not match the | 320 // If the email address used to start the sign in does not match the |
321 // email address returned by /GetUserInfo, the sign in should fail. | 321 // email address returned by /GetUserInfo, the sign in should fail. |
322 manager_->StartSignInWithCredentials( | 322 manager_->StartSignInWithCredentials( |
323 "0", | 323 "0", |
324 "user2@gmail.com", | 324 "user2@gmail.com", |
325 "password", | 325 "password", |
326 SigninManager::OAuthTokenFetchedCallback()); | 326 SigninManager::OAuthTokenFetchedCallback()); |
327 | 327 |
328 ExpectSignInWithCredentialsFail(true /* requestSent */); | 328 ExpectSignInWithCredentialsFail(true /* requestSent */); |
329 } | 329 } |
330 | 330 |
331 TEST_F(SigninManagerTest, SignInWithCredentialsEmptyPasswordValidCookie) { | 331 TEST_F(SigninManagerTest, SignInWithCredentialsEmptyPasswordValidCookie) { |
332 manager_->Initialize(profile_.get()); | 332 manager_->Initialize(profile_.get(), NULL); |
333 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 333 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
334 | 334 |
335 // Set a valid LSID cookie in the test cookie store. | 335 // Set a valid LSID cookie in the test cookie store. |
336 scoped_refptr<net::CookieMonster> cookie_monster = | 336 scoped_refptr<net::CookieMonster> cookie_monster = |
337 profile_->GetCookieMonster(); | 337 profile_->GetCookieMonster(); |
338 net::CookieOptions options; | 338 net::CookieOptions options; |
339 options.set_include_httponly(); | 339 options.set_include_httponly(); |
340 cookie_monster->SetCookieWithOptionsAsync( | 340 cookie_monster->SetCookieWithOptionsAsync( |
341 GURL("https://accounts.google.com"), | 341 GURL("https://accounts.google.com"), |
342 "LSID=1234; secure; httponly", options, | 342 "LSID=1234; secure; httponly", options, |
343 net::CookieMonster::SetCookiesCallback()); | 343 net::CookieMonster::SetCookiesCallback()); |
344 | 344 |
345 // Since the password is empty, will verify the gaia cookies first. | 345 // Since the password is empty, will verify the gaia cookies first. |
346 manager_->StartSignInWithCredentials( | 346 manager_->StartSignInWithCredentials( |
347 "0", | 347 "0", |
348 "user@gmail.com", | 348 "user@gmail.com", |
349 std::string(), | 349 std::string(), |
350 SigninManager::OAuthTokenFetchedCallback()); | 350 SigninManager::OAuthTokenFetchedCallback()); |
351 | 351 |
352 WaitUntilUIDone(); | 352 WaitUntilUIDone(); |
353 | 353 |
354 // Verification should succeed and continue with auto signin. | 354 // Verification should succeed and continue with auto signin. |
355 ExpectSignInWithCredentialsSuccess(); | 355 ExpectSignInWithCredentialsSuccess(); |
356 } | 356 } |
357 | 357 |
358 TEST_F(SigninManagerTest, SignInWithCredentialsEmptyPasswordNoValidCookie) { | 358 TEST_F(SigninManagerTest, SignInWithCredentialsEmptyPasswordNoValidCookie) { |
359 manager_->Initialize(profile_.get()); | 359 manager_->Initialize(profile_.get(), NULL); |
360 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 360 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
361 | 361 |
362 // Since the password is empty, will verify the gaia cookies first. | 362 // Since the password is empty, will verify the gaia cookies first. |
363 manager_->StartSignInWithCredentials( | 363 manager_->StartSignInWithCredentials( |
364 "0", | 364 "0", |
365 "user@gmail.com", | 365 "user@gmail.com", |
366 std::string(), | 366 std::string(), |
367 SigninManager::OAuthTokenFetchedCallback()); | 367 SigninManager::OAuthTokenFetchedCallback()); |
368 | 368 |
369 WaitUntilUIDone(); | 369 WaitUntilUIDone(); |
370 | 370 |
371 // Since the test cookie store is empty, verification should fail and throws | 371 // Since the test cookie store is empty, verification should fail and throws |
372 // a login error. | 372 // a login error. |
373 ExpectSignInWithCredentialsFail(false /* requestSent */); | 373 ExpectSignInWithCredentialsFail(false /* requestSent */); |
374 } | 374 } |
375 | 375 |
376 TEST_F(SigninManagerTest, SignInWithCredentialsEmptyPasswordInValidCookie) { | 376 TEST_F(SigninManagerTest, SignInWithCredentialsEmptyPasswordInValidCookie) { |
377 manager_->Initialize(profile_.get()); | 377 manager_->Initialize(profile_.get(), NULL); |
378 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 378 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
379 | 379 |
380 // Set an invalid LSID cookie in the test cookie store. | 380 // Set an invalid LSID cookie in the test cookie store. |
381 scoped_refptr<net::CookieMonster> cookie_monster = | 381 scoped_refptr<net::CookieMonster> cookie_monster = |
382 profile_->GetCookieMonster(); | 382 profile_->GetCookieMonster(); |
383 net::CookieOptions options; | 383 net::CookieOptions options; |
384 options.set_include_httponly(); | 384 options.set_include_httponly(); |
385 cookie_monster->SetCookieWithOptionsAsync( | 385 cookie_monster->SetCookieWithOptionsAsync( |
386 GURL("https://accounts.google.com"), | 386 GURL("https://accounts.google.com"), |
387 "LSID=1234; domain=google.com; secure; httponly", options, | 387 "LSID=1234; domain=google.com; secure; httponly", options, |
388 net::CookieMonster::SetCookiesCallback()); | 388 net::CookieMonster::SetCookiesCallback()); |
389 | 389 |
390 // Since the password is empty, must verify the gaia cookies first. | 390 // Since the password is empty, must verify the gaia cookies first. |
391 manager_->StartSignInWithCredentials( | 391 manager_->StartSignInWithCredentials( |
392 "0", | 392 "0", |
393 "user@gmail.com", | 393 "user@gmail.com", |
394 std::string(), | 394 std::string(), |
395 SigninManager::OAuthTokenFetchedCallback()); | 395 SigninManager::OAuthTokenFetchedCallback()); |
396 | 396 |
397 WaitUntilUIDone(); | 397 WaitUntilUIDone(); |
398 | 398 |
399 // Since the LSID cookie is invalid, verification should fail and throws | 399 // Since the LSID cookie is invalid, verification should fail and throws |
400 // a login error. | 400 // a login error. |
401 ExpectSignInWithCredentialsFail(false /* requestSent */); | 401 ExpectSignInWithCredentialsFail(false /* requestSent */); |
402 } | 402 } |
403 | 403 |
404 TEST_F(SigninManagerTest, SignInWithCredentialsCallbackComplete) { | 404 TEST_F(SigninManagerTest, SignInWithCredentialsCallbackComplete) { |
405 manager_->Initialize(profile_.get()); | 405 manager_->Initialize(profile_.get(), NULL); |
406 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 406 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
407 | 407 |
408 // Since the password is empty, must verify the gaia cookies first. | 408 // Since the password is empty, must verify the gaia cookies first. |
409 SigninManager::OAuthTokenFetchedCallback callback = | 409 SigninManager::OAuthTokenFetchedCallback callback = |
410 base::Bind(&SigninManagerTest::CompleteSigninCallback, | 410 base::Bind(&SigninManagerTest::CompleteSigninCallback, |
411 base::Unretained(this)); | 411 base::Unretained(this)); |
412 manager_->StartSignInWithCredentials( | 412 manager_->StartSignInWithCredentials( |
413 "0", | 413 "0", |
414 "user@gmail.com", | 414 "user@gmail.com", |
415 "password", | 415 "password", |
416 callback); | 416 callback); |
417 | 417 |
418 ExpectSignInWithCredentialsSuccess(); | 418 ExpectSignInWithCredentialsSuccess(); |
419 ASSERT_EQ(1U, oauth_tokens_fetched_.size()); | 419 ASSERT_EQ(1U, oauth_tokens_fetched_.size()); |
420 EXPECT_EQ(oauth_tokens_fetched_[0], "rt1"); | 420 EXPECT_EQ(oauth_tokens_fetched_[0], "rt1"); |
421 } | 421 } |
422 | 422 |
423 TEST_F(SigninManagerTest, SignInWithCredentialsCallbackCancel) { | 423 TEST_F(SigninManagerTest, SignInWithCredentialsCallbackCancel) { |
424 manager_->Initialize(profile_.get()); | 424 manager_->Initialize(profile_.get(), NULL); |
425 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 425 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
426 | 426 |
427 // Since the password is empty, must verify the gaia cookies first. | 427 // Since the password is empty, must verify the gaia cookies first. |
428 SigninManager::OAuthTokenFetchedCallback callback = | 428 SigninManager::OAuthTokenFetchedCallback callback = |
429 base::Bind(&SigninManagerTest::CancelSigninCallback, | 429 base::Bind(&SigninManagerTest::CancelSigninCallback, |
430 base::Unretained(this)); | 430 base::Unretained(this)); |
431 manager_->StartSignInWithCredentials( | 431 manager_->StartSignInWithCredentials( |
432 "0", | 432 "0", |
433 "user@gmail.com", | 433 "user@gmail.com", |
434 "password", | 434 "password", |
435 callback); | 435 callback); |
436 | 436 |
437 // Signin should fail since it would be cancelled by the callback. | 437 // Signin should fail since it would be cancelled by the callback. |
438 ExpectSignInWithCredentialsFail(true); | 438 ExpectSignInWithCredentialsFail(true); |
439 ASSERT_EQ(1U, oauth_tokens_fetched_.size()); | 439 ASSERT_EQ(1U, oauth_tokens_fetched_.size()); |
440 EXPECT_EQ(oauth_tokens_fetched_[0], "rt1"); | 440 EXPECT_EQ(oauth_tokens_fetched_[0], "rt1"); |
441 } | 441 } |
442 | 442 |
443 TEST_F(SigninManagerTest, SignInClientLoginNoGPlus) { | 443 TEST_F(SigninManagerTest, SignInClientLoginNoGPlus) { |
444 manager_->Initialize(profile_.get()); | 444 manager_->Initialize(profile_.get(), NULL); |
445 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 445 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
446 | 446 |
447 manager_->StartSignIn("username", "password", std::string(), std::string()); | 447 manager_->StartSignIn("username", "password", std::string(), std::string()); |
448 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 448 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
449 | 449 |
450 SimulateValidResponseClientLogin(false); | 450 SimulateValidResponseClientLogin(false); |
451 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); | 451 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); |
452 } | 452 } |
453 | 453 |
454 TEST_F(SigninManagerTest, ClearTransientSigninData) { | 454 TEST_F(SigninManagerTest, ClearTransientSigninData) { |
455 manager_->Initialize(profile_.get()); | 455 manager_->Initialize(profile_.get(), NULL); |
456 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 456 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
457 | 457 |
458 manager_->StartSignIn("username", "password", std::string(), std::string()); | 458 manager_->StartSignIn("username", "password", std::string(), std::string()); |
459 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 459 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
460 | 460 |
461 SimulateValidResponseClientLogin(false); | 461 SimulateValidResponseClientLogin(false); |
462 | 462 |
463 // Should go into token service and stop. | 463 // Should go into token service and stop. |
464 EXPECT_EQ(1U, google_login_success_.size()); | 464 EXPECT_EQ(1U, google_login_success_.size()); |
465 EXPECT_EQ(0U, google_login_failure_.size()); | 465 EXPECT_EQ(0U, google_login_failure_.size()); |
466 | 466 |
467 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); | 467 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); |
468 | 468 |
469 // Now clear the in memory data. | 469 // Now clear the in memory data. |
470 manager_->ClearTransientSigninData(); | 470 manager_->ClearTransientSigninData(); |
471 EXPECT_TRUE(manager_->last_result_.data.empty()); | 471 EXPECT_TRUE(manager_->last_result_.data.empty()); |
472 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); | 472 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); |
473 | 473 |
474 // Ensure preferences are not modified. | 474 // Ensure preferences are not modified. |
475 EXPECT_FALSE( | 475 EXPECT_FALSE( |
476 profile_->GetPrefs()->GetString(prefs::kGoogleServicesUsername).empty()); | 476 profile_->GetPrefs()->GetString(prefs::kGoogleServicesUsername).empty()); |
477 | 477 |
478 // On reset it should be regenerated. | 478 // On reset it should be regenerated. |
479 manager_->Shutdown(); | 479 manager_->Shutdown(); |
480 manager_.reset(new SigninManager( | 480 manager_.reset(new SigninManager( |
481 scoped_ptr<SigninManagerDelegate>( | 481 scoped_ptr<SigninManagerDelegate>( |
482 new ChromeSigninManagerDelegate(profile_.get())))); | 482 new ChromeSigninManagerDelegate(profile_.get())))); |
483 manager_->Initialize(profile_.get()); | 483 manager_->Initialize(profile_.get(), NULL); |
484 | 484 |
485 // Now make sure we have the right user name. | 485 // Now make sure we have the right user name. |
486 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); | 486 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); |
487 } | 487 } |
488 | 488 |
489 TEST_F(SigninManagerTest, SignOutClientLogin) { | 489 TEST_F(SigninManagerTest, SignOutClientLogin) { |
490 manager_->Initialize(profile_.get()); | 490 manager_->Initialize(profile_.get(), NULL); |
491 manager_->StartSignIn("username", "password", std::string(), std::string()); | 491 manager_->StartSignIn("username", "password", std::string(), std::string()); |
492 SimulateValidResponseClientLogin(false); | 492 SimulateValidResponseClientLogin(false); |
493 manager_->OnClientLoginSuccess(credentials_); | 493 manager_->OnClientLoginSuccess(credentials_); |
494 | 494 |
495 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); | 495 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); |
496 manager_->SignOut(); | 496 manager_->SignOut(); |
497 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 497 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
498 // Should not be persisted anymore | 498 // Should not be persisted anymore |
499 manager_->Shutdown(); | 499 manager_->Shutdown(); |
500 manager_.reset(new SigninManager( | 500 manager_.reset(new SigninManager( |
501 scoped_ptr<SigninManagerDelegate>( | 501 scoped_ptr<SigninManagerDelegate>( |
502 new ChromeSigninManagerDelegate(profile_.get())))); | 502 new ChromeSigninManagerDelegate(profile_.get())))); |
503 manager_->Initialize(profile_.get()); | 503 manager_->Initialize(profile_.get(), NULL); |
504 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 504 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
505 } | 505 } |
506 | 506 |
507 TEST_F(SigninManagerTest, SignInFailureClientLogin) { | 507 TEST_F(SigninManagerTest, SignInFailureClientLogin) { |
508 manager_->Initialize(profile_.get()); | 508 manager_->Initialize(profile_.get(), NULL); |
509 manager_->StartSignIn("username", "password", std::string(), std::string()); | 509 manager_->StartSignIn("username", "password", std::string(), std::string()); |
510 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); | 510 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); |
511 manager_->OnClientLoginFailure(error); | 511 manager_->OnClientLoginFailure(error); |
512 | 512 |
513 EXPECT_EQ(0U, google_login_success_.size()); | 513 EXPECT_EQ(0U, google_login_success_.size()); |
514 EXPECT_EQ(1U, google_login_failure_.size()); | 514 EXPECT_EQ(1U, google_login_failure_.size()); |
515 | 515 |
516 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 516 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
517 | 517 |
518 // Should not be persisted | 518 // Should not be persisted |
519 manager_->Shutdown(); | 519 manager_->Shutdown(); |
520 manager_.reset(new SigninManager( | 520 manager_.reset(new SigninManager( |
521 scoped_ptr<SigninManagerDelegate>( | 521 scoped_ptr<SigninManagerDelegate>( |
522 new ChromeSigninManagerDelegate(profile_.get())))); | 522 new ChromeSigninManagerDelegate(profile_.get())))); |
523 manager_->Initialize(profile_.get()); | 523 manager_->Initialize(profile_.get(), NULL); |
524 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 524 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
525 } | 525 } |
526 | 526 |
527 TEST_F(SigninManagerTest, ProvideSecondFactorSuccess) { | 527 TEST_F(SigninManagerTest, ProvideSecondFactorSuccess) { |
528 manager_->Initialize(profile_.get()); | 528 manager_->Initialize(profile_.get(), NULL); |
529 manager_->StartSignIn("username", "password", std::string(), std::string()); | 529 manager_->StartSignIn("username", "password", std::string(), std::string()); |
530 GoogleServiceAuthError error(GoogleServiceAuthError::TWO_FACTOR); | 530 GoogleServiceAuthError error(GoogleServiceAuthError::TWO_FACTOR); |
531 manager_->OnClientLoginFailure(error); | 531 manager_->OnClientLoginFailure(error); |
532 | 532 |
533 EXPECT_EQ(0U, google_login_success_.size()); | 533 EXPECT_EQ(0U, google_login_success_.size()); |
534 EXPECT_EQ(1U, google_login_failure_.size()); | 534 EXPECT_EQ(1U, google_login_failure_.size()); |
535 | 535 |
536 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 536 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
537 EXPECT_FALSE(manager_->possibly_invalid_username_.empty()); | 537 EXPECT_FALSE(manager_->possibly_invalid_username_.empty()); |
538 | 538 |
539 manager_->ProvideSecondFactorAccessCode("access"); | 539 manager_->ProvideSecondFactorAccessCode("access"); |
540 SimulateValidResponseClientLogin(false); | 540 SimulateValidResponseClientLogin(false); |
541 | 541 |
542 EXPECT_EQ(1U, google_login_success_.size()); | 542 EXPECT_EQ(1U, google_login_success_.size()); |
543 EXPECT_EQ(1U, google_login_failure_.size()); | 543 EXPECT_EQ(1U, google_login_failure_.size()); |
544 } | 544 } |
545 | 545 |
546 TEST_F(SigninManagerTest, ProvideSecondFactorFailure) { | 546 TEST_F(SigninManagerTest, ProvideSecondFactorFailure) { |
547 manager_->Initialize(profile_.get()); | 547 manager_->Initialize(profile_.get(), NULL); |
548 manager_->StartSignIn("username", "password", std::string(), std::string()); | 548 manager_->StartSignIn("username", "password", std::string(), std::string()); |
549 GoogleServiceAuthError error1(GoogleServiceAuthError::TWO_FACTOR); | 549 GoogleServiceAuthError error1(GoogleServiceAuthError::TWO_FACTOR); |
550 manager_->OnClientLoginFailure(error1); | 550 manager_->OnClientLoginFailure(error1); |
551 | 551 |
552 EXPECT_EQ(0U, google_login_success_.size()); | 552 EXPECT_EQ(0U, google_login_success_.size()); |
553 EXPECT_EQ(1U, google_login_failure_.size()); | 553 EXPECT_EQ(1U, google_login_failure_.size()); |
554 | 554 |
555 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 555 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
556 EXPECT_FALSE(manager_->possibly_invalid_username_.empty()); | 556 EXPECT_FALSE(manager_->possibly_invalid_username_.empty()); |
557 | 557 |
558 manager_->ProvideSecondFactorAccessCode("badaccess"); | 558 manager_->ProvideSecondFactorAccessCode("badaccess"); |
559 GoogleServiceAuthError error2( | 559 GoogleServiceAuthError error2( |
560 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); | 560 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); |
561 manager_->OnClientLoginFailure(error2); | 561 manager_->OnClientLoginFailure(error2); |
562 | 562 |
563 EXPECT_EQ(0U, google_login_success_.size()); | 563 EXPECT_EQ(0U, google_login_success_.size()); |
564 EXPECT_EQ(2U, google_login_failure_.size()); | 564 EXPECT_EQ(2U, google_login_failure_.size()); |
565 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 565 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
566 | 566 |
567 manager_->ProvideSecondFactorAccessCode("badaccess"); | 567 manager_->ProvideSecondFactorAccessCode("badaccess"); |
568 GoogleServiceAuthError error3(GoogleServiceAuthError::CONNECTION_FAILED); | 568 GoogleServiceAuthError error3(GoogleServiceAuthError::CONNECTION_FAILED); |
569 manager_->OnClientLoginFailure(error3); | 569 manager_->OnClientLoginFailure(error3); |
570 | 570 |
571 EXPECT_EQ(0U, google_login_success_.size()); | 571 EXPECT_EQ(0U, google_login_success_.size()); |
572 EXPECT_EQ(3U, google_login_failure_.size()); | 572 EXPECT_EQ(3U, google_login_failure_.size()); |
573 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 573 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
574 } | 574 } |
575 | 575 |
576 TEST_F(SigninManagerTest, SignOutMidConnect) { | 576 TEST_F(SigninManagerTest, SignOutMidConnect) { |
577 manager_->Initialize(profile_.get()); | 577 manager_->Initialize(profile_.get(), NULL); |
578 manager_->StartSignIn("username", "password", std::string(), std::string()); | 578 manager_->StartSignIn("username", "password", std::string(), std::string()); |
579 EXPECT_EQ("username", manager_->GetUsernameForAuthInProgress()); | 579 EXPECT_EQ("username", manager_->GetUsernameForAuthInProgress()); |
580 manager_->SignOut(); | 580 manager_->SignOut(); |
581 EXPECT_EQ(0U, google_login_success_.size()); | 581 EXPECT_EQ(0U, google_login_success_.size()); |
582 EXPECT_EQ(1U, google_login_failure_.size()); | 582 EXPECT_EQ(1U, google_login_failure_.size()); |
583 | 583 |
584 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 584 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
585 EXPECT_TRUE(manager_->GetUsernameForAuthInProgress().empty()); | 585 EXPECT_TRUE(manager_->GetUsernameForAuthInProgress().empty()); |
586 } | 586 } |
587 | 587 |
588 TEST_F(SigninManagerTest, SignOutWhileProhibited) { | 588 TEST_F(SigninManagerTest, SignOutWhileProhibited) { |
589 manager_->Initialize(profile_.get()); | 589 manager_->Initialize(profile_.get(), NULL); |
590 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 590 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
591 | 591 |
592 manager_->SetAuthenticatedUsername("user@gmail.com"); | 592 manager_->SetAuthenticatedUsername("user@gmail.com"); |
593 manager_->ProhibitSignout(true); | 593 manager_->ProhibitSignout(true); |
594 manager_->SignOut(); | 594 manager_->SignOut(); |
595 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); | 595 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); |
596 manager_->ProhibitSignout(false); | 596 manager_->ProhibitSignout(false); |
597 manager_->SignOut(); | 597 manager_->SignOut(); |
598 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 598 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); |
599 } | 599 } |
(...skipping 11 matching lines...) Expand all Loading... |
611 // chromiumsync is double-embedded in a continue query param. | 611 // chromiumsync is double-embedded in a continue query param. |
612 EXPECT_TRUE(SigninManager::IsWebBasedSigninFlowURL( | 612 EXPECT_TRUE(SigninManager::IsWebBasedSigninFlowURL( |
613 GURL("https://accounts.google.com/CheckCookie?" | 613 GURL("https://accounts.google.com/CheckCookie?" |
614 "continue=https%3A%2F%2Fwww.google.com%2Fintl%2Fen-US%2Fchrome" | 614 "continue=https%3A%2F%2Fwww.google.com%2Fintl%2Fen-US%2Fchrome" |
615 "%2Fblank.html%3Fsource%3D3%26nonadv%3D1&service=chromiumsync"))); | 615 "%2Fblank.html%3Fsource%3D3%26nonadv%3D1&service=chromiumsync"))); |
616 } | 616 } |
617 | 617 |
618 TEST_F(SigninManagerTest, Prohibited) { | 618 TEST_F(SigninManagerTest, Prohibited) { |
619 g_browser_process->local_state()->SetString( | 619 g_browser_process->local_state()->SetString( |
620 prefs::kGoogleServicesUsernamePattern, ".*@google.com"); | 620 prefs::kGoogleServicesUsernamePattern, ".*@google.com"); |
621 manager_->Initialize(profile_.get()); | 621 manager_->Initialize(profile_.get(), g_browser_process->local_state()); |
622 EXPECT_TRUE(manager_->IsAllowedUsername("test@google.com")); | 622 EXPECT_TRUE(manager_->IsAllowedUsername("test@google.com")); |
623 EXPECT_TRUE(manager_->IsAllowedUsername("happy@google.com")); | 623 EXPECT_TRUE(manager_->IsAllowedUsername("happy@google.com")); |
624 EXPECT_FALSE(manager_->IsAllowedUsername("test@invalid.com")); | 624 EXPECT_FALSE(manager_->IsAllowedUsername("test@invalid.com")); |
625 EXPECT_FALSE(manager_->IsAllowedUsername("test@notgoogle.com")); | 625 EXPECT_FALSE(manager_->IsAllowedUsername("test@notgoogle.com")); |
626 EXPECT_FALSE(manager_->IsAllowedUsername(std::string())); | 626 EXPECT_FALSE(manager_->IsAllowedUsername(std::string())); |
627 } | 627 } |
628 | 628 |
629 TEST_F(SigninManagerTest, TestAlternateWildcard) { | 629 TEST_F(SigninManagerTest, TestAlternateWildcard) { |
630 // Test to make sure we accept "*@google.com" as a pattern (treat it as if | 630 // Test to make sure we accept "*@google.com" as a pattern (treat it as if |
631 // the admin entered ".*@google.com"). | 631 // the admin entered ".*@google.com"). |
632 g_browser_process->local_state()->SetString( | 632 g_browser_process->local_state()->SetString( |
633 prefs::kGoogleServicesUsernamePattern, "*@google.com"); | 633 prefs::kGoogleServicesUsernamePattern, "*@google.com"); |
634 manager_->Initialize(profile_.get()); | 634 manager_->Initialize(profile_.get(), g_browser_process->local_state()); |
635 EXPECT_TRUE(manager_->IsAllowedUsername("test@google.com")); | 635 EXPECT_TRUE(manager_->IsAllowedUsername("test@google.com")); |
636 EXPECT_TRUE(manager_->IsAllowedUsername("happy@google.com")); | 636 EXPECT_TRUE(manager_->IsAllowedUsername("happy@google.com")); |
637 EXPECT_FALSE(manager_->IsAllowedUsername("test@invalid.com")); | 637 EXPECT_FALSE(manager_->IsAllowedUsername("test@invalid.com")); |
638 EXPECT_FALSE(manager_->IsAllowedUsername("test@notgoogle.com")); | 638 EXPECT_FALSE(manager_->IsAllowedUsername("test@notgoogle.com")); |
639 EXPECT_FALSE(manager_->IsAllowedUsername(std::string())); | 639 EXPECT_FALSE(manager_->IsAllowedUsername(std::string())); |
640 } | 640 } |
641 | 641 |
642 TEST_F(SigninManagerTest, ProhibitedAtStartup) { | 642 TEST_F(SigninManagerTest, ProhibitedAtStartup) { |
643 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, | 643 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
644 "monkey@invalid.com"); | 644 "monkey@invalid.com"); |
645 g_browser_process->local_state()->SetString( | 645 g_browser_process->local_state()->SetString( |
646 prefs::kGoogleServicesUsernamePattern, ".*@google.com"); | 646 prefs::kGoogleServicesUsernamePattern, ".*@google.com"); |
647 manager_->Initialize(profile_.get()); | 647 manager_->Initialize(profile_.get(), g_browser_process->local_state()); |
648 // Currently signed in user is prohibited by policy, so should be signed out. | 648 // Currently signed in user is prohibited by policy, so should be signed out. |
649 EXPECT_EQ("", manager_->GetAuthenticatedUsername()); | 649 EXPECT_EQ("", manager_->GetAuthenticatedUsername()); |
650 } | 650 } |
651 | 651 |
652 TEST_F(SigninManagerTest, ProhibitedAfterStartup) { | 652 TEST_F(SigninManagerTest, ProhibitedAfterStartup) { |
653 std::string user("monkey@invalid.com"); | 653 std::string user("monkey@invalid.com"); |
654 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, user); | 654 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, user); |
655 manager_->Initialize(profile_.get()); | 655 manager_->Initialize(profile_.get(), g_browser_process->local_state()); |
656 EXPECT_EQ(user, manager_->GetAuthenticatedUsername()); | 656 EXPECT_EQ(user, manager_->GetAuthenticatedUsername()); |
657 // Update the profile - user should be signed out. | 657 // Update the profile - user should be signed out. |
658 g_browser_process->local_state()->SetString( | 658 g_browser_process->local_state()->SetString( |
659 prefs::kGoogleServicesUsernamePattern, ".*@google.com"); | 659 prefs::kGoogleServicesUsernamePattern, ".*@google.com"); |
660 EXPECT_EQ("", manager_->GetAuthenticatedUsername()); | 660 EXPECT_EQ("", manager_->GetAuthenticatedUsername()); |
661 } | 661 } |
OLD | NEW |