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

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: Updates to access token cache handling 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 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 true); 129 true);
130 } 130 }
131 131
132 void CreateSyncService() { 132 void CreateSyncService() {
133 sync_ = static_cast<TestProfileSyncService*>( 133 sync_ = static_cast<TestProfileSyncService*>(
134 ProfileSyncServiceFactory::GetForProfile(profile_.get())); 134 ProfileSyncServiceFactory::GetForProfile(profile_.get()));
135 sync_->AddObserver(&observer_); 135 sync_->AddObserver(&observer_);
136 sync_->set_synchronous_sync_configuration(); 136 sync_->set_synchronous_sync_configuration();
137 } 137 }
138 138
139 void IssueTestTokens() {
140 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_.get())
141 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token");
142 TokenServiceFactory::GetForProfile(profile_.get())
143 ->IssueAuthTokenForTest(GaiaConstants::kSyncService, "token");
144 }
145
139 protected: 146 protected:
140 DataTypeManagerMock* SetUpDataTypeManager() { 147 DataTypeManagerMock* SetUpDataTypeManager() {
141 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); 148 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock();
142 EXPECT_CALL(*sync_->components_factory_mock(), 149 EXPECT_CALL(*sync_->components_factory_mock(),
143 CreateDataTypeManager(_, _, _, _, _, _)). 150 CreateDataTypeManager(_, _, _, _, _, _)).
144 WillOnce(Return(data_type_manager)); 151 WillOnce(Return(data_type_manager));
145 return data_type_manager; 152 return data_type_manager;
146 } 153 }
147 154
148 content::TestBrowserThreadBundle thread_bundle_; 155 content::TestBrowserThreadBundle thread_bundle_;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 220 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
214 "test_user@gmail.com"); 221 "test_user@gmail.com");
215 sync_->signin()->SetAuthenticatedUsername("test_user@gmail.com"); 222 sync_->signin()->SetAuthenticatedUsername("test_user@gmail.com");
216 GoogleServiceSigninSuccessDetails details("test_user@gmail.com", ""); 223 GoogleServiceSigninSuccessDetails details("test_user@gmail.com", "");
217 content::NotificationService::current()->Notify( 224 content::NotificationService::current()->Notify(
218 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 225 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
219 content::Source<Profile>(profile_.get()), 226 content::Source<Profile>(profile_.get()),
220 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 227 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
221 228
222 // Create some tokens in the token service. 229 // Create some tokens in the token service.
223 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 230 IssueTestTokens();
224 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
225 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
226 GaiaConstants::kSyncService, "token");
227 231
228 // Simulate the UI telling sync it has finished setting up. 232 // Simulate the UI telling sync it has finished setting up.
229 sync_->SetSetupInProgress(false); 233 sync_->SetSetupInProgress(false);
230 EXPECT_TRUE(sync_->ShouldPushChanges()); 234 EXPECT_TRUE(sync_->ShouldPushChanges());
231 } 235 }
232 236
233 // TODO(pavely): Reenable test once android is switched to oauth2. 237 // TODO(pavely): Reenable test once android is switched to oauth2.
234 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { 238 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) {
235 // We've never completed startup. 239 // We've never completed startup.
236 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 240 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 348
345 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { 349 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) {
346 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 350 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
347 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 351 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
348 EXPECT_CALL(*data_type_manager, Configure(_, _)); 352 EXPECT_CALL(*data_type_manager, Configure(_, _));
349 EXPECT_CALL(*data_type_manager, state()). 353 EXPECT_CALL(*data_type_manager, state()).
350 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 354 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
351 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 355 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
352 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 356 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
353 357
354 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 358 IssueTestTokens();
355 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
356 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
357 GaiaConstants::kSyncService, "sync_token");
358 sync_->Initialize(); 359 sync_->Initialize();
359 EXPECT_TRUE(sync_->ShouldPushChanges()); 360 EXPECT_TRUE(sync_->ShouldPushChanges());
360 } 361 }
361 362
362 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { 363 TEST_F(ProfileSyncServiceStartupTest, StartNormal) {
363 // Pre load the tokens 364 // Pre load the tokens
364 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 365 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
365 "test_user@gmail.com"); 366 "test_user@gmail.com");
366 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 367 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
367 profile_.get(), NULL); 368 profile_.get(), NULL);
368 CreateSyncService(); 369 CreateSyncService();
369 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 370 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
370 EXPECT_CALL(*data_type_manager, Configure(_, _)); 371 EXPECT_CALL(*data_type_manager, Configure(_, _));
371 EXPECT_CALL(*data_type_manager, state()). 372 EXPECT_CALL(*data_type_manager, state()).
372 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 373 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
373 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 374 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
374 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 375 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
375 376
376 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 377 IssueTestTokens();
377 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
378 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
379 GaiaConstants::kSyncService, "sync_token");
380 378
381 sync_->Initialize(); 379 sync_->Initialize();
382 } 380 }
383 381
384 // Test that we can recover from a case where a bug in the code resulted in 382 // 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 383 // OnUserChoseDatatypes not being properly called and datatype preferences
386 // therefore being left unset. 384 // therefore being left unset.
387 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { 385 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) {
388 // Clear the datatype preference fields (simulating bug 154940). 386 // Clear the datatype preference fields (simulating bug 154940).
389 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced); 387 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced);
(...skipping 10 matching lines...) Expand all
400 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 398 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
401 profile_.get(), NULL); 399 profile_.get(), NULL);
402 CreateSyncService(); 400 CreateSyncService();
403 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 401 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
404 EXPECT_CALL(*data_type_manager, Configure(_, _)); 402 EXPECT_CALL(*data_type_manager, Configure(_, _));
405 EXPECT_CALL(*data_type_manager, state()). 403 EXPECT_CALL(*data_type_manager, state()).
406 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 404 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
407 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 405 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
408 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 406 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
409 407
410 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 408 IssueTestTokens();
411 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
412 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
413 GaiaConstants::kSyncService, "sync_token");
414 sync_->Initialize(); 409 sync_->Initialize();
415 410
416 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( 411 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean(
417 prefs::kSyncKeepEverythingSynced)); 412 prefs::kSyncKeepEverythingSynced));
418 } 413 }
419 414
420 // Verify that the recovery of datatype preferences doesn't overwrite a valid 415 // Verify that the recovery of datatype preferences doesn't overwrite a valid
421 // case where only bookmarks are enabled. 416 // case where only bookmarks are enabled.
422 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { 417 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) {
423 // Explicitly set Keep Everything Synced to false and have only bookmarks 418 // Explicitly set Keep Everything Synced to false and have only bookmarks
424 // enabled. 419 // enabled.
425 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); 420 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false);
426 421
427 // Pre load the tokens 422 // Pre load the tokens
428 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 423 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
429 "test_user@gmail.com"); 424 "test_user@gmail.com");
430 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 425 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
431 profile_.get(), NULL); 426 profile_.get(), NULL);
432 CreateSyncService(); 427 CreateSyncService();
433 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 428 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
434 EXPECT_CALL(*data_type_manager, Configure(_, _)); 429 EXPECT_CALL(*data_type_manager, Configure(_, _));
435 EXPECT_CALL(*data_type_manager, state()). 430 EXPECT_CALL(*data_type_manager, state()).
436 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 431 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
437 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 432 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
438 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 433 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
439 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 434 IssueTestTokens();
440 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
441 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
442 GaiaConstants::kSyncService, "sync_token");
443 sync_->Initialize(); 435 sync_->Initialize();
444 436
445 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( 437 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(
446 prefs::kSyncKeepEverythingSynced)); 438 prefs::kSyncKeepEverythingSynced));
447 } 439 }
448 440
449 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { 441 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) {
450 // Service should not be started by Initialize() since it's managed. 442 // Service should not be started by Initialize() since it's managed.
451 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 443 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
452 "test_user@gmail.com"); 444 "test_user@gmail.com");
(...skipping 14 matching lines...) Expand all
467 459
468 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { 460 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) {
469 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 461 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
470 "test_user@gmail.com"); 462 "test_user@gmail.com");
471 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 463 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
472 profile_.get(), NULL); 464 profile_.get(), NULL);
473 CreateSyncService(); 465 CreateSyncService();
474 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 466 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
475 EXPECT_CALL(*data_type_manager, Configure(_, _)); 467 EXPECT_CALL(*data_type_manager, Configure(_, _));
476 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 468 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
477 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 469 IssueTestTokens();
478 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
479 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
480 GaiaConstants::kSyncService, "token");
481 sync_->Initialize(); 470 sync_->Initialize();
482 471
483 // The service should stop when switching to managed mode. 472 // The service should stop when switching to managed mode.
484 Mock::VerifyAndClearExpectations(data_type_manager); 473 Mock::VerifyAndClearExpectations(data_type_manager);
485 EXPECT_CALL(*data_type_manager, state()). 474 EXPECT_CALL(*data_type_manager, state()).
486 WillOnce(Return(DataTypeManager::CONFIGURED)); 475 WillOnce(Return(DataTypeManager::CONFIGURED));
487 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 476 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
488 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 477 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
489 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); 478 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true);
490 479
(...skipping 27 matching lines...) Expand all
518 errors, 507 errors,
519 syncer::ModelTypeSet(), 508 syncer::ModelTypeSet(),
520 syncer::ModelTypeSet()); 509 syncer::ModelTypeSet());
521 EXPECT_CALL(*data_type_manager, Configure(_, _)). 510 EXPECT_CALL(*data_type_manager, Configure(_, _)).
522 WillRepeatedly( 511 WillRepeatedly(
523 DoAll(InvokeOnConfigureStart(sync_), 512 DoAll(InvokeOnConfigureStart(sync_),
524 InvokeOnConfigureDone(sync_, result))); 513 InvokeOnConfigureDone(sync_, result)));
525 EXPECT_CALL(*data_type_manager, state()). 514 EXPECT_CALL(*data_type_manager, state()).
526 WillOnce(Return(DataTypeManager::STOPPED)); 515 WillOnce(Return(DataTypeManager::STOPPED));
527 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 516 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
528 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 517 IssueTestTokens();
529 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
530 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
531 GaiaConstants::kSyncService, "token");
532 sync_->Initialize(); 518 sync_->Initialize();
533 EXPECT_TRUE(sync_->HasUnrecoverableError()); 519 EXPECT_TRUE(sync_->HasUnrecoverableError());
534 } 520 }
535 521
536 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { 522 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) {
537 // Pre load the tokens 523 // Pre load the tokens
538 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 524 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
539 "test_user@gmail.com"); 525 "test_user@gmail.com");
540 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 526 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
541 profile_.get(), NULL); 527 profile_.get(), NULL);
542 CreateSyncService(); 528 CreateSyncService();
543 529
544 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 530 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
545 531
546 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 532 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
547 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 533 IssueTestTokens();
548 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
549 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
550 GaiaConstants::kSyncService, "token");
551 sync_->fail_initial_download(); 534 sync_->fail_initial_download();
552 535
553 sync_->SetSetupInProgress(true); 536 sync_->SetSetupInProgress(true);
554 sync_->Initialize(); 537 sync_->Initialize();
555 sync_->SetSetupInProgress(false); 538 sync_->SetSetupInProgress(false);
556 EXPECT_FALSE(sync_->sync_initialized()); 539 EXPECT_FALSE(sync_->sync_initialized());
557 EXPECT_TRUE(sync_->GetBackendForTest()); 540 EXPECT_TRUE(sync_->GetBackendForTest());
558 } 541 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698