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

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

Issue 15421011: Use OAuth2 token for sync (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix issues based on feedback Created 7 years, 6 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.h" 8 #include "base/message_loop.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "chrome/browser/signin/fake_signin_manager.h" 10 #include "chrome/browser/signin/fake_signin_manager.h"
11 #include "chrome/browser/signin/oauth2_token_service.h"
12 #include "chrome/browser/signin/profile_oauth2_token_service.h"
13 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
11 #include "chrome/browser/signin/signin_manager.h" 14 #include "chrome/browser/signin/signin_manager.h"
12 #include "chrome/browser/signin/signin_manager_factory.h" 15 #include "chrome/browser/signin/signin_manager_factory.h"
13 #include "chrome/browser/signin/token_service.h" 16 #include "chrome/browser/signin/token_service.h"
14 #include "chrome/browser/signin/token_service_factory.h" 17 #include "chrome/browser/signin/token_service_factory.h"
15 #include "chrome/browser/sync/glue/data_type_manager.h" 18 #include "chrome/browser/sync/glue/data_type_manager.h"
16 #include "chrome/browser/sync/glue/data_type_manager_mock.h" 19 #include "chrome/browser/sync/glue/data_type_manager_mock.h"
17 #include "chrome/browser/sync/profile_sync_components_factory_mock.h" 20 #include "chrome/browser/sync/profile_sync_components_factory_mock.h"
18 #include "chrome/browser/sync/profile_sync_service_factory.h" 21 #include "chrome/browser/sync/profile_sync_service_factory.h"
19 #include "chrome/browser/sync/profile_sync_test_util.h" 22 #include "chrome/browser/sync/profile_sync_test_util.h"
20 #include "chrome/browser/sync/sync_prefs.h" 23 #include "chrome/browser/sync/sync_prefs.h"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 file_thread_.Start(); 85 file_thread_.Start();
83 io_thread_.StartIOThread(); 86 io_thread_.StartIOThread();
84 profile_->CreateRequestContext(); 87 profile_->CreateRequestContext();
85 #if defined(OS_CHROMEOS) 88 #if defined(OS_CHROMEOS)
86 SigninManagerFactory::GetInstance()->SetTestingFactory( 89 SigninManagerFactory::GetInstance()->SetTestingFactory(
87 profile_.get(), FakeSigninManagerBase::Build); 90 profile_.get(), FakeSigninManagerBase::Build);
88 #else 91 #else
89 SigninManagerFactory::GetInstance()->SetTestingFactory( 92 SigninManagerFactory::GetInstance()->SetTestingFactory(
90 profile_.get(), FakeSigninManager::Build); 93 profile_.get(), FakeSigninManager::Build);
91 #endif 94 #endif
95 // ProfileOAuth2TokenServiceFactory::GetInstance()->SetTestingFactory(
96 // profile_.get(), FakeOAuth2TokenService::BuildTokenService);
92 } 97 }
93 98
94 virtual void TearDown() { 99 virtual void TearDown() {
95 sync_->RemoveObserver(&observer_); 100 sync_->RemoveObserver(&observer_);
96 ProfileSyncServiceFactory::GetInstance()->SetTestingFactory( 101 ProfileSyncServiceFactory::GetInstance()->SetTestingFactory(
97 profile_.get(), NULL); 102 profile_.get(), NULL);
103 ProfileOAuth2TokenServiceFactory::GetInstance()->SetTestingFactory(
104 profile_.get(), NULL);
98 profile_.reset(); 105 profile_.reset();
99 106
100 // Pump messages posted by the sync core thread (which may end up 107 // Pump messages posted by the sync core thread (which may end up
101 // posting on the IO thread). 108 // posting on the IO thread).
102 ui_loop_.RunUntilIdle(); 109 ui_loop_.RunUntilIdle();
103 io_thread_.Stop(); 110 io_thread_.Stop();
104 file_thread_.Stop(); 111 file_thread_.Stop();
105 ui_loop_.RunUntilIdle(); 112 ui_loop_.RunUntilIdle();
106 } 113 }
107 114
108 static BrowserContextKeyedService* BuildService( 115 static BrowserContextKeyedService* BuildService(
109 content::BrowserContext* profile) { 116 content::BrowserContext* profile) {
110 return new TestProfileSyncService( 117 return new TestProfileSyncService(
111 new ProfileSyncComponentsFactoryMock(), 118 new ProfileSyncComponentsFactoryMock(),
112 static_cast<Profile*>(profile), 119 static_cast<Profile*>(profile),
113 SigninManagerFactory::GetForProfile(static_cast<Profile*>(profile)), 120 SigninManagerFactory::GetForProfile(static_cast<Profile*>(profile)),
114 ProfileSyncService::MANUAL_START, 121 ProfileSyncService::MANUAL_START,
115 true); 122 true);
116 } 123 }
117 124
118 void CreateSyncService() { 125 void CreateSyncService() {
126 ProfileOAuth2TokenServiceFactory::GetInstance()->SetTestingFactory(
127 profile_.get(), FakeOAuth2TokenService::BuildTokenService);
119 sync_ = static_cast<TestProfileSyncService*>( 128 sync_ = static_cast<TestProfileSyncService*>(
120 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( 129 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
121 profile_.get(), BuildService)); 130 profile_.get(), BuildService));
122 sync_->AddObserver(&observer_); 131 sync_->AddObserver(&observer_);
123 sync_->set_synchronous_sync_configuration(); 132 sync_->set_synchronous_sync_configuration();
124 } 133 }
125 134
126 protected: 135 protected:
127 DataTypeManagerMock* SetUpDataTypeManager() { 136 DataTypeManagerMock* SetUpDataTypeManager() {
128 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); 137 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock();
(...skipping 10 matching lines...) Expand all
139 content::TestBrowserThread io_thread_; 148 content::TestBrowserThread io_thread_;
140 scoped_ptr<TestingProfile> profile_; 149 scoped_ptr<TestingProfile> profile_;
141 TestProfileSyncService* sync_; 150 TestProfileSyncService* sync_;
142 ProfileSyncServiceObserverMock observer_; 151 ProfileSyncServiceObserverMock observer_;
143 }; 152 };
144 153
145 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { 154 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest {
146 public: 155 public:
147 virtual void SetUp() { 156 virtual void SetUp() {
148 ProfileSyncServiceStartupTest::SetUp(); 157 ProfileSyncServiceStartupTest::SetUp();
158 ProfileOAuth2TokenServiceFactory::GetInstance()->SetTestingFactory(
159 profile_.get(), FakeOAuth2TokenService::BuildTokenService);
149 sync_ = static_cast<TestProfileSyncService*>( 160 sync_ = static_cast<TestProfileSyncService*>(
150 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( 161 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
151 profile_.get(), BuildCrosService)); 162 profile_.get(), BuildCrosService));
152 sync_->AddObserver(&observer_); 163 sync_->AddObserver(&observer_);
153 sync_->set_synchronous_sync_configuration(); 164 sync_->set_synchronous_sync_configuration();
154 } 165 }
155 166
156 static BrowserContextKeyedService* BuildCrosService( 167 static BrowserContextKeyedService* BuildCrosService(
157 content::BrowserContext* context) { 168 content::BrowserContext* context) {
158 Profile* profile = static_cast<Profile*>(context); 169 Profile* profile = static_cast<Profile*>(context);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 "test_user"); 221 "test_user");
211 sync_->signin()->SetAuthenticatedUsername("test_user"); 222 sync_->signin()->SetAuthenticatedUsername("test_user");
212 GoogleServiceSigninSuccessDetails details("test_user", ""); 223 GoogleServiceSigninSuccessDetails details("test_user", "");
213 content::NotificationService::current()->Notify( 224 content::NotificationService::current()->Notify(
214 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 225 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
215 content::Source<Profile>(profile_.get()), 226 content::Source<Profile>(profile_.get()),
216 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 227 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
217 228
218 // Create some tokens in the token service. 229 // Create some tokens in the token service.
219 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 230 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
220 GaiaConstants::kSyncService, "sync_token");
221 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
222 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); 231 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
223 232
224 // Simulate the UI telling sync it has finished setting up. 233 // Simulate the UI telling sync it has finished setting up.
225 sync_->SetSetupInProgress(false); 234 sync_->SetSetupInProgress(false);
226 EXPECT_TRUE(sync_->ShouldPushChanges()); 235 EXPECT_TRUE(sync_->ShouldPushChanges());
227 } 236 }
228 237
229 TEST_F(ProfileSyncServiceStartupTest, StartNoCredentials) { 238 TEST_F(ProfileSyncServiceStartupTest, StartNoCredentials) {
230 // We've never completed startup. 239 EXPECT_CALL(*sync_->components_factory_mock(),
240 CreateDataTypeManager(_, _, _, _, _)).Times(0);
241
242 // We've never completed startup.
231 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 243 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
232 SigninManagerFactory::GetForProfile( 244 SigninManagerFactory::GetForProfile(
233 profile_.get())->Initialize(profile_.get(), NULL); 245 profile_.get())->Initialize(profile_.get(), NULL);
234 TokenService* token_service = static_cast<TokenService*>( 246 TokenService* token_service = static_cast<TokenService*>(
235 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( 247 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse(
236 profile_.get(), BuildFakeTokenService)); 248 profile_.get(), BuildFakeTokenService));
237 CreateSyncService(); 249 CreateSyncService();
238 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
239 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0);
240 250
241 // Should not actually start, rather just clean things up and wait 251 // Should not actually start, rather just clean things up and wait
242 // to be enabled. 252 // to be enabled.
243 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 253 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
244 sync_->Initialize(); 254 sync_->Initialize();
245 EXPECT_FALSE(sync_->GetBackendForTest()); 255 EXPECT_FALSE(sync_->GetBackendForTest());
246 256
247 // Preferences should be back to defaults. 257 // Preferences should be back to defaults.
248 EXPECT_EQ(0, profile_->GetPrefs()->GetInt64(prefs::kSyncLastSyncedTime)); 258 EXPECT_EQ(0, profile_->GetPrefs()->GetInt64(prefs::kSyncLastSyncedTime));
249 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(prefs::kSyncHasSetupCompleted)); 259 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(prefs::kSyncHasSetupCompleted));
250 Mock::VerifyAndClearExpectations(data_type_manager);
251 260
252 // Then start things up. 261 // Then start things up.
253 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1);
254 EXPECT_CALL(*data_type_manager, state()).
255 WillOnce(Return(DataTypeManager::CONFIGURED)).
256 WillOnce(Return(DataTypeManager::CONFIGURED));
257 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
258 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
259
260 sync_->SetSetupInProgress(true); 262 sync_->SetSetupInProgress(true);
261 263
262 // Simulate successful signin as test_user. 264 // Simulate successful signin as test_user.
263 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 265 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
264 "test_user"); 266 "test_user");
265 sync_->signin()->SetAuthenticatedUsername("test_user"); 267 sync_->signin()->SetAuthenticatedUsername("test_user");
266 GoogleServiceSigninSuccessDetails details("test_user", ""); 268 GoogleServiceSigninSuccessDetails details("test_user", "");
267 content::NotificationService::current()->Notify( 269 content::NotificationService::current()->Notify(
268 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 270 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
269 content::Source<Profile>(profile_.get()), 271 content::Source<Profile>(profile_.get()),
270 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 272 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
271 // NOTE: Unlike StartFirstTime, this test does not issue any auth tokens. 273 // NOTE: Unlike StartFirstTime, this test does not issue any auth tokens.
272 token_service->LoadTokensFromDB(); 274 token_service->LoadTokensFromDB();
273 275
274 sync_->SetSetupInProgress(false); 276 sync_->SetSetupInProgress(false);
275 // Backend should initialize using a bogus GAIA token for credentials. 277 // ProfileSyncService should try to start by requesting access token.
276 EXPECT_TRUE(sync_->ShouldPushChanges()); 278 // This request should fail as login token was not issued to TokenService.
279 EXPECT_FALSE(sync_->ShouldPushChanges());
280 EXPECT_EQ(GoogleServiceAuthError::USER_NOT_SIGNED_UP,
281 sync_->GetAuthError().state());
277 } 282 }
278 283
279 TEST_F(ProfileSyncServiceStartupTest, StartInvalidCredentials) { 284 TEST_F(ProfileSyncServiceStartupTest, StartInvalidCredentials) {
280 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 285 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
281 "test_user"); 286 "test_user");
282 SigninManagerFactory::GetForProfile( 287 SigninManagerFactory::GetForProfile(
283 profile_.get())->Initialize(profile_.get(), NULL); 288 profile_.get())->Initialize(profile_.get(), NULL);
284 CreateSyncService(); 289 CreateSyncService();
285 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 290 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
286 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); 291 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0);
287 TokenService* token_service = static_cast<TokenService*>( 292 // Issue login token so that ProfileSyncServer tries to initialize backend.
288 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( 293 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
289 profile_.get(), BuildFakeTokenService)); 294 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
290 token_service->LoadTokensFromDB();
291 295
292 // Tell the backend to stall while downloading control types (simulating an 296 // Tell the backend to stall while downloading control types (simulating an
293 // auth error). 297 // auth error).
294 sync_->fail_initial_download(); 298 sync_->fail_initial_download();
295 299
296 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 300 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
297 sync_->Initialize(); 301 sync_->Initialize();
298 EXPECT_TRUE(sync_->GetBackendForTest()); 302 EXPECT_TRUE(sync_->GetBackendForTest());
299 EXPECT_FALSE(sync_->sync_initialized()); 303 EXPECT_FALSE(sync_->sync_initialized());
300 EXPECT_FALSE(sync_->ShouldPushChanges());
301 Mock::VerifyAndClearExpectations(data_type_manager); 304 Mock::VerifyAndClearExpectations(data_type_manager);
302 305
303 // Update the credentials, unstalling the backend. 306 // Update the credentials, unstalling the backend.
304 EXPECT_CALL(*data_type_manager, Configure(_, _)); 307 EXPECT_CALL(*data_type_manager, Configure(_, _));
305 EXPECT_CALL(*data_type_manager, state()). 308 EXPECT_CALL(*data_type_manager, state()).
306 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 309 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
307 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 310 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
308 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 311 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
309 sync_->SetSetupInProgress(true); 312 sync_->SetSetupInProgress(true);
310 313
311 // Simulate successful signin. 314 // Simulate successful signin.
312 GoogleServiceSigninSuccessDetails details("test_user", std::string()); 315 GoogleServiceSigninSuccessDetails details("test_user", std::string());
313 content::NotificationService::current()->Notify( 316 content::NotificationService::current()->Notify(
314 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 317 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
315 content::Source<Profile>(profile_.get()), 318 content::Source<Profile>(profile_.get()),
316 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 319 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
317 320
318 token_service->IssueAuthTokenForTest( 321 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
319 GaiaConstants::kSyncService, "sync_token"); 322 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
320 sync_->SetSetupInProgress(false); 323 sync_->SetSetupInProgress(false);
321 base::MessageLoop::current()->Run();
322 324
323 // Verify we successfully finish startup and configuration. 325 // Verify we successfully finish startup and configuration.
324 EXPECT_TRUE(sync_->ShouldPushChanges()); 326 EXPECT_TRUE(sync_->ShouldPushChanges());
325 } 327 }
326 328
327 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) { 329 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) {
328 EXPECT_CALL(*sync_->components_factory_mock(), 330 EXPECT_CALL(*sync_->components_factory_mock(),
329 CreateDataTypeManager(_, _, _, _, _)).Times(0); 331 CreateDataTypeManager(_, _, _, _, _)).Times(0);
330 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 332 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
331 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 333 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
(...skipping 16 matching lines...) Expand all
348 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { 350 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) {
349 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 351 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
350 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 352 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
351 EXPECT_CALL(*data_type_manager, Configure(_, _)); 353 EXPECT_CALL(*data_type_manager, Configure(_, _));
352 EXPECT_CALL(*data_type_manager, state()). 354 EXPECT_CALL(*data_type_manager, state()).
353 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 355 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
354 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 356 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
355 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 357 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
356 358
357 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 359 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
358 GaiaConstants::kSyncService, "sync_token"); 360 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
359 sync_->Initialize(); 361 sync_->Initialize();
360 EXPECT_TRUE(sync_->ShouldPushChanges()); 362 EXPECT_TRUE(sync_->ShouldPushChanges());
361 } 363 }
362 364
363 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { 365 TEST_F(ProfileSyncServiceStartupTest, StartNormal) {
364 // Pre load the tokens 366 // Pre load the tokens
365 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); 367 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user");
366 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 368 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
367 profile_.get(), NULL); 369 profile_.get(), NULL);
368 CreateSyncService(); 370 CreateSyncService();
369 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 371 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
370 EXPECT_CALL(*data_type_manager, Configure(_, _)); 372 EXPECT_CALL(*data_type_manager, Configure(_, _));
371 EXPECT_CALL(*data_type_manager, state()). 373 EXPECT_CALL(*data_type_manager, state()).
372 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 374 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
373 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 375 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
374 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 376 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
375 377
376 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 378 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
377 GaiaConstants::kSyncService, "sync_token"); 379 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
378 380
379 sync_->Initialize(); 381 sync_->Initialize();
380 } 382 }
381 383
382 // 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
383 // OnUserChoseDatatypes not being properly called and datatype preferences 385 // OnUserChoseDatatypes not being properly called and datatype preferences
384 // therefore being left unset. 386 // therefore being left unset.
385 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { 387 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) {
386 // Clear the datatype preference fields (simulating bug 154940). 388 // Clear the datatype preference fields (simulating bug 154940).
387 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced); 389 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced);
(...skipping 10 matching lines...) Expand all
398 profile_.get(), NULL); 400 profile_.get(), NULL);
399 CreateSyncService(); 401 CreateSyncService();
400 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 402 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
401 EXPECT_CALL(*data_type_manager, Configure(_, _)); 403 EXPECT_CALL(*data_type_manager, Configure(_, _));
402 EXPECT_CALL(*data_type_manager, state()). 404 EXPECT_CALL(*data_type_manager, state()).
403 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 405 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
404 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 406 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
405 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 407 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
406 408
407 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 409 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
408 GaiaConstants::kSyncService, "sync_token"); 410 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
409 sync_->Initialize(); 411 sync_->Initialize();
410 412
411 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( 413 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean(
412 prefs::kSyncKeepEverythingSynced)); 414 prefs::kSyncKeepEverythingSynced));
413 } 415 }
414 416
415 // Verify that the recovery of datatype preferences doesn't overwrite a valid 417 // Verify that the recovery of datatype preferences doesn't overwrite a valid
416 // case where only bookmarks are enabled. 418 // case where only bookmarks are enabled.
417 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { 419 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) {
418 // Explicitly set Keep Everything Synced to false and have only bookmarks 420 // Explicitly set Keep Everything Synced to false and have only bookmarks
419 // enabled. 421 // enabled.
420 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); 422 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false);
421 423
422 // Pre load the tokens 424 // Pre load the tokens
423 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); 425 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user");
424 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 426 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
425 profile_.get(), NULL); 427 profile_.get(), NULL);
426 CreateSyncService(); 428 CreateSyncService();
427 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 429 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
428 EXPECT_CALL(*data_type_manager, Configure(_, _)); 430 EXPECT_CALL(*data_type_manager, Configure(_, _));
429 EXPECT_CALL(*data_type_manager, state()). 431 EXPECT_CALL(*data_type_manager, state()).
430 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 432 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
431 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 433 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
432 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 434 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
433 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 435 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
434 GaiaConstants::kSyncService, "sync_token"); 436 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
435 sync_->Initialize(); 437 sync_->Initialize();
436 438
437 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( 439 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(
438 prefs::kSyncKeepEverythingSynced)); 440 prefs::kSyncKeepEverythingSynced));
439 } 441 }
440 442
441 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { 443 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) {
442 // Service should not be started by Initialize() since it's managed. 444 // Service should not be started by Initialize() since it's managed.
443 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); 445 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user");
444 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 446 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
445 profile_.get(), NULL); 447 profile_.get(), NULL);
446 CreateSyncService(); 448 CreateSyncService();
447 449
448 // Disable sync through policy. 450 // Disable sync through policy.
449 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); 451 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true);
450 EXPECT_CALL(*sync_->components_factory_mock(), 452 EXPECT_CALL(*sync_->components_factory_mock(),
451 CreateDataTypeManager(_, _, _, _, _)).Times(0); 453 CreateDataTypeManager(_, _, _, _, _)).Times(0);
452 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 454 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
453 455
454 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 456 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
455 GaiaConstants::kSyncService, "sync_token"); 457 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
456 sync_->Initialize(); 458 sync_->Initialize();
457 } 459 }
458 460
459 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { 461 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) {
460 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); 462 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user");
461 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 463 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
462 profile_.get(), NULL); 464 profile_.get(), NULL);
463 CreateSyncService(); 465 CreateSyncService();
464 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 466 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
465 EXPECT_CALL(*data_type_manager, Configure(_, _)); 467 EXPECT_CALL(*data_type_manager, Configure(_, _));
466 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 468 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
467 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 469 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
468 GaiaConstants::kSyncService, "sync_token"); 470 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
469 sync_->Initialize(); 471 sync_->Initialize();
470 472
471 // The service should stop when switching to managed mode. 473 // The service should stop when switching to managed mode.
472 Mock::VerifyAndClearExpectations(data_type_manager); 474 Mock::VerifyAndClearExpectations(data_type_manager);
473 EXPECT_CALL(*data_type_manager, state()). 475 EXPECT_CALL(*data_type_manager, state()).
474 WillOnce(Return(DataTypeManager::CONFIGURED)); 476 WillOnce(Return(DataTypeManager::CONFIGURED));
475 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 477 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
476 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 478 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
477 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); 479 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true);
478 480
(...skipping 23 matching lines...) Expand all
502 errors, 504 errors,
503 syncer::ModelTypeSet()); 505 syncer::ModelTypeSet());
504 EXPECT_CALL(*data_type_manager, Configure(_, _)). 506 EXPECT_CALL(*data_type_manager, Configure(_, _)).
505 WillRepeatedly( 507 WillRepeatedly(
506 DoAll(InvokeOnConfigureStart(sync_), 508 DoAll(InvokeOnConfigureStart(sync_),
507 InvokeOnConfigureDone(sync_, result))); 509 InvokeOnConfigureDone(sync_, result)));
508 EXPECT_CALL(*data_type_manager, state()). 510 EXPECT_CALL(*data_type_manager, state()).
509 WillOnce(Return(DataTypeManager::STOPPED)); 511 WillOnce(Return(DataTypeManager::STOPPED));
510 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 512 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
511 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 513 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
512 GaiaConstants::kSyncService, "sync_token"); 514 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
513 sync_->Initialize(); 515 sync_->Initialize();
514 EXPECT_TRUE(sync_->HasUnrecoverableError()); 516 EXPECT_TRUE(sync_->HasUnrecoverableError());
515 } 517 }
516 518
517 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { 519 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) {
518 // Pre load the tokens 520 // Pre load the tokens
519 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); 521 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user");
520 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 522 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
521 profile_.get(), NULL); 523 profile_.get(), NULL);
522 CreateSyncService(); 524 CreateSyncService();
523 525
524 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 526 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
525 527
526 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 528 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
527 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 529 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
528 GaiaConstants::kSyncService, "sync_token"); 530 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
529 sync_->fail_initial_download(); 531 sync_->fail_initial_download();
530 532
533 sync_->SetSetupInProgress(true);
531 sync_->Initialize(); 534 sync_->Initialize();
535 sync_->SetSetupInProgress(false);
532 EXPECT_FALSE(sync_->sync_initialized()); 536 EXPECT_FALSE(sync_->sync_initialized());
533 EXPECT_FALSE(sync_->GetBackendForTest()); 537 EXPECT_TRUE(sync_->GetBackendForTest());
534 } 538 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698