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 "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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |