Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(198)

Side by Side Diff: chrome/browser/sync/profile_sync_service_startup_unittest.cc

Issue 23382008: Making OAuth2TokenService multi-login aware, updating callers, minor fixes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing a unit test, addressing comments from courage@ Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "testing/gtest/include/gtest/gtest.h" 5 #include "testing/gtest/include/gtest/gtest.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 213 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
214 "test_user@gmail.com"); 214 "test_user@gmail.com");
215 sync_->signin()->SetAuthenticatedUsername("test_user@gmail.com"); 215 sync_->signin()->SetAuthenticatedUsername("test_user@gmail.com");
216 GoogleServiceSigninSuccessDetails details("test_user@gmail.com", ""); 216 GoogleServiceSigninSuccessDetails details("test_user@gmail.com", "");
217 content::NotificationService::current()->Notify( 217 content::NotificationService::current()->Notify(
218 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 218 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
219 content::Source<Profile>(profile_.get()), 219 content::Source<Profile>(profile_.get()),
220 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 220 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
221 221
222 // Create some tokens in the token service. 222 // Create some tokens in the token service.
223 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 223 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get())
224 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); 224 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token");
225 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 225 TokenServiceFactory::GetForProfile(profile_.get())
226 GaiaConstants::kSyncService, "token"); 226 ->IssueAuthTokenForTest(GaiaConstants::kSyncService, "token");
227 227
228 // Simulate the UI telling sync it has finished setting up. 228 // Simulate the UI telling sync it has finished setting up.
229 sync_->SetSetupInProgress(false); 229 sync_->SetSetupInProgress(false);
230 EXPECT_TRUE(sync_->ShouldPushChanges()); 230 EXPECT_TRUE(sync_->ShouldPushChanges());
231 } 231 }
232 232
233 // TODO(pavely): Reenable test once android is switched to oauth2. 233 // TODO(pavely): Reenable test once android is switched to oauth2.
234 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { 234 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) {
235 // We've never completed startup. 235 // We've never completed startup.
236 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 236 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 344
345 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { 345 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) {
346 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 346 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
347 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 347 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
348 EXPECT_CALL(*data_type_manager, Configure(_, _)); 348 EXPECT_CALL(*data_type_manager, Configure(_, _));
349 EXPECT_CALL(*data_type_manager, state()). 349 EXPECT_CALL(*data_type_manager, state()).
350 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 350 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
351 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 351 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
352 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 352 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
353 353
354 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 354 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get())
355 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); 355 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token");
356 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 356 TokenServiceFactory::GetForProfile(profile_.get())
357 GaiaConstants::kSyncService, "sync_token"); 357 ->IssueAuthTokenForTest(GaiaConstants::kSyncService, "sync_token");
358 sync_->Initialize(); 358 sync_->Initialize();
359 EXPECT_TRUE(sync_->ShouldPushChanges()); 359 EXPECT_TRUE(sync_->ShouldPushChanges());
360 } 360 }
361 361
362 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { 362 TEST_F(ProfileSyncServiceStartupTest, StartNormal) {
363 // Pre load the tokens 363 // Pre load the tokens
364 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 364 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
365 "test_user@gmail.com"); 365 "test_user@gmail.com");
366 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 366 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
367 profile_.get(), NULL); 367 profile_.get(), NULL);
368 CreateSyncService(); 368 CreateSyncService();
369 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 369 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
370 EXPECT_CALL(*data_type_manager, Configure(_, _)); 370 EXPECT_CALL(*data_type_manager, Configure(_, _));
371 EXPECT_CALL(*data_type_manager, state()). 371 EXPECT_CALL(*data_type_manager, state()).
372 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 372 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
373 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 373 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
374 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 374 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
375 375
376 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 376 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get())
377 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); 377 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token");
378 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 378 TokenServiceFactory::GetForProfile(profile_.get())
379 GaiaConstants::kSyncService, "sync_token"); 379 ->IssueAuthTokenForTest(GaiaConstants::kSyncService, "sync_token");
380 380
381 sync_->Initialize(); 381 sync_->Initialize();
382 } 382 }
383 383
384 // Test that we can recover from a case where a bug in the code resulted in 384 // Test that we can recover from a case where a bug in the code resulted in
385 // OnUserChoseDatatypes not being properly called and datatype preferences 385 // OnUserChoseDatatypes not being properly called and datatype preferences
386 // therefore being left unset. 386 // therefore being left unset.
387 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { 387 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) {
388 // Clear the datatype preference fields (simulating bug 154940). 388 // Clear the datatype preference fields (simulating bug 154940).
389 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced); 389 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced);
(...skipping 10 matching lines...) Expand all
400 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 400 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
401 profile_.get(), NULL); 401 profile_.get(), NULL);
402 CreateSyncService(); 402 CreateSyncService();
403 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 403 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
404 EXPECT_CALL(*data_type_manager, Configure(_, _)); 404 EXPECT_CALL(*data_type_manager, Configure(_, _));
405 EXPECT_CALL(*data_type_manager, state()). 405 EXPECT_CALL(*data_type_manager, state()).
406 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 406 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
407 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 407 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
408 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 408 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
409 409
410 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 410 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get())
411 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); 411 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token");
412 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 412 TokenServiceFactory::GetForProfile(profile_.get())
413 GaiaConstants::kSyncService, "sync_token"); 413 ->IssueAuthTokenForTest(GaiaConstants::kSyncService, "sync_token");
414 sync_->Initialize(); 414 sync_->Initialize();
415 415
416 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( 416 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean(
417 prefs::kSyncKeepEverythingSynced)); 417 prefs::kSyncKeepEverythingSynced));
418 } 418 }
419 419
420 // Verify that the recovery of datatype preferences doesn't overwrite a valid 420 // Verify that the recovery of datatype preferences doesn't overwrite a valid
421 // case where only bookmarks are enabled. 421 // case where only bookmarks are enabled.
422 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { 422 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) {
423 // Explicitly set Keep Everything Synced to false and have only bookmarks 423 // Explicitly set Keep Everything Synced to false and have only bookmarks
424 // enabled. 424 // enabled.
425 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); 425 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false);
426 426
427 // Pre load the tokens 427 // Pre load the tokens
428 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 428 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
429 "test_user@gmail.com"); 429 "test_user@gmail.com");
430 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 430 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
431 profile_.get(), NULL); 431 profile_.get(), NULL);
432 CreateSyncService(); 432 CreateSyncService();
433 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 433 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
434 EXPECT_CALL(*data_type_manager, Configure(_, _)); 434 EXPECT_CALL(*data_type_manager, Configure(_, _));
435 EXPECT_CALL(*data_type_manager, state()). 435 EXPECT_CALL(*data_type_manager, state()).
436 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 436 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
437 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 437 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
438 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 438 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
439 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 439 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get())
440 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); 440 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token");
441 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 441 TokenServiceFactory::GetForProfile(profile_.get())
442 GaiaConstants::kSyncService, "sync_token"); 442 ->IssueAuthTokenForTest(GaiaConstants::kSyncService, "sync_token");
443 sync_->Initialize(); 443 sync_->Initialize();
444 444
445 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( 445 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(
446 prefs::kSyncKeepEverythingSynced)); 446 prefs::kSyncKeepEverythingSynced));
447 } 447 }
448 448
449 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { 449 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) {
450 // Service should not be started by Initialize() since it's managed. 450 // Service should not be started by Initialize() since it's managed.
451 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 451 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
452 "test_user@gmail.com"); 452 "test_user@gmail.com");
(...skipping 14 matching lines...) Expand all
467 467
468 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { 468 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) {
469 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 469 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
470 "test_user@gmail.com"); 470 "test_user@gmail.com");
471 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 471 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
472 profile_.get(), NULL); 472 profile_.get(), NULL);
473 CreateSyncService(); 473 CreateSyncService();
474 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 474 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
475 EXPECT_CALL(*data_type_manager, Configure(_, _)); 475 EXPECT_CALL(*data_type_manager, Configure(_, _));
476 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 476 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
477 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 477 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get())
478 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); 478 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token");
479 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 479 TokenServiceFactory::GetForProfile(profile_.get())
480 GaiaConstants::kSyncService, "token"); 480 ->IssueAuthTokenForTest(GaiaConstants::kSyncService, "token");
481 sync_->Initialize(); 481 sync_->Initialize();
482 482
483 // The service should stop when switching to managed mode. 483 // The service should stop when switching to managed mode.
484 Mock::VerifyAndClearExpectations(data_type_manager); 484 Mock::VerifyAndClearExpectations(data_type_manager);
485 EXPECT_CALL(*data_type_manager, state()). 485 EXPECT_CALL(*data_type_manager, state()).
486 WillOnce(Return(DataTypeManager::CONFIGURED)); 486 WillOnce(Return(DataTypeManager::CONFIGURED));
487 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 487 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
488 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 488 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
489 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); 489 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true);
490 490
(...skipping 27 matching lines...) Expand all
518 errors, 518 errors,
519 syncer::ModelTypeSet(), 519 syncer::ModelTypeSet(),
520 syncer::ModelTypeSet()); 520 syncer::ModelTypeSet());
521 EXPECT_CALL(*data_type_manager, Configure(_, _)). 521 EXPECT_CALL(*data_type_manager, Configure(_, _)).
522 WillRepeatedly( 522 WillRepeatedly(
523 DoAll(InvokeOnConfigureStart(sync_), 523 DoAll(InvokeOnConfigureStart(sync_),
524 InvokeOnConfigureDone(sync_, result))); 524 InvokeOnConfigureDone(sync_, result)));
525 EXPECT_CALL(*data_type_manager, state()). 525 EXPECT_CALL(*data_type_manager, state()).
526 WillOnce(Return(DataTypeManager::STOPPED)); 526 WillOnce(Return(DataTypeManager::STOPPED));
527 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 527 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
528 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 528 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get())
529 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); 529 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token");
530 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 530 TokenServiceFactory::GetForProfile(profile_.get())
531 GaiaConstants::kSyncService, "token"); 531 ->IssueAuthTokenForTest(GaiaConstants::kSyncService, "token");
532 sync_->Initialize(); 532 sync_->Initialize();
533 EXPECT_TRUE(sync_->HasUnrecoverableError()); 533 EXPECT_TRUE(sync_->HasUnrecoverableError());
534 } 534 }
535 535
536 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { 536 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) {
537 // Pre load the tokens 537 // Pre load the tokens
538 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 538 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
539 "test_user@gmail.com"); 539 "test_user@gmail.com");
540 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 540 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
541 profile_.get(), NULL); 541 profile_.get(), NULL);
542 CreateSyncService(); 542 CreateSyncService();
543 543
544 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 544 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
545 545
546 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 546 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
547 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 547 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get())
Andrew T Wilson (Slow) 2013/09/06 09:23:10 BTW, might be nice if this were moved out into a h
fgorski 2013/09/12 23:46:24 Done. Extracted these 4 lines to a method IssueTes
548 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); 548 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token");
549 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 549 TokenServiceFactory::GetForProfile(profile_.get())
550 GaiaConstants::kSyncService, "token"); 550 ->IssueAuthTokenForTest(GaiaConstants::kSyncService, "token");
551 sync_->fail_initial_download(); 551 sync_->fail_initial_download();
552 552
553 sync_->SetSetupInProgress(true); 553 sync_->SetSetupInProgress(true);
554 sync_->Initialize(); 554 sync_->Initialize();
555 sync_->SetSetupInProgress(false); 555 sync_->SetSetupInProgress(false);
556 EXPECT_FALSE(sync_->sync_initialized()); 556 EXPECT_FALSE(sync_->sync_initialized());
557 EXPECT_TRUE(sync_->GetBackendForTest()); 557 EXPECT_TRUE(sync_->GetBackendForTest());
558 } 558 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698