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

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: Remove token prefetch. Move UMA counters. Fix some tests. Etc. 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 // We've never completed startup.
231 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 240 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
232 SigninManagerFactory::GetForProfile( 241 SigninManagerFactory::GetForProfile(
233 profile_.get())->Initialize(profile_.get(), NULL); 242 profile_.get())->Initialize(profile_.get(), NULL);
234 TokenService* token_service = static_cast<TokenService*>( 243 TokenService* token_service = static_cast<TokenService*>(
235 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( 244 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse(
236 profile_.get(), BuildFakeTokenService)); 245 profile_.get(), BuildFakeTokenService));
237 CreateSyncService(); 246 CreateSyncService();
238 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
239 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0);
240 247
241 // Should not actually start, rather just clean things up and wait 248 // Should not actually start, rather just clean things up and wait
242 // to be enabled. 249 // to be enabled.
250 EXPECT_CALL(*sync_->components_factory_mock(),
251 CreateDataTypeManager(_, _, _, _, _)).Times(0);
243 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 252 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
244 sync_->Initialize(); 253 sync_->Initialize();
245 EXPECT_FALSE(sync_->GetBackendForTest()); 254 EXPECT_FALSE(sync_->GetBackendForTest());
246 255
247 // Preferences should be back to defaults. 256 // Preferences should be back to defaults.
248 EXPECT_EQ(0, profile_->GetPrefs()->GetInt64(prefs::kSyncLastSyncedTime)); 257 EXPECT_EQ(0, profile_->GetPrefs()->GetInt64(prefs::kSyncLastSyncedTime));
249 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(prefs::kSyncHasSetupCompleted)); 258 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(prefs::kSyncHasSetupCompleted));
250 Mock::VerifyAndClearExpectations(data_type_manager);
251 259
252 // Then start things up. 260 // 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); 261 sync_->SetSetupInProgress(true);
261 262
262 // Simulate successful signin as test_user. 263 // Simulate successful signin as test_user.
263 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 264 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
264 "test_user"); 265 "test_user");
265 sync_->signin()->SetAuthenticatedUsername("test_user"); 266 sync_->signin()->SetAuthenticatedUsername("test_user");
266 GoogleServiceSigninSuccessDetails details("test_user", ""); 267 GoogleServiceSigninSuccessDetails details("test_user", "");
267 content::NotificationService::current()->Notify( 268 content::NotificationService::current()->Notify(
268 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 269 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
269 content::Source<Profile>(profile_.get()), 270 content::Source<Profile>(profile_.get()),
270 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 271 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
271 // NOTE: Unlike StartFirstTime, this test does not issue any auth tokens. 272 // NOTE: Unlike StartFirstTime, this test does not issue any auth tokens.
272 token_service->LoadTokensFromDB(); 273 token_service->LoadTokensFromDB();
273 274
274 sync_->SetSetupInProgress(false); 275 sync_->SetSetupInProgress(false);
275 // Backend should initialize using a bogus GAIA token for credentials. 276 // ProfileSyncService should try to start by requesting access token.
276 EXPECT_TRUE(sync_->ShouldPushChanges()); 277 // This request should fail as login token was not issued to TokenService.
278 EXPECT_FALSE(sync_->ShouldPushChanges());
279 EXPECT_EQ(GoogleServiceAuthError::USER_NOT_SIGNED_UP,
280 sync_->GetAuthError().state());
277 } 281 }
278 282
279 TEST_F(ProfileSyncServiceStartupTest, StartInvalidCredentials) { 283 TEST_F(ProfileSyncServiceStartupTest, StartInvalidCredentials) {
280 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 284 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
281 "test_user"); 285 "test_user");
282 SigninManagerFactory::GetForProfile( 286 SigninManagerFactory::GetForProfile(
283 profile_.get())->Initialize(profile_.get(), NULL); 287 profile_.get())->Initialize(profile_.get(), NULL);
284 CreateSyncService(); 288 CreateSyncService();
285 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 289 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
286 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); 290 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0);
287 TokenService* token_service = static_cast<TokenService*>( 291 // Issue login token so that ProfileSyncServer tries to initialize backend.
288 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( 292 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
289 profile_.get(), BuildFakeTokenService)); 293 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
290 token_service->LoadTokensFromDB();
291 294
292 // Tell the backend to stall while downloading control types (simulating an 295 // Tell the backend to stall while downloading control types (simulating an
293 // auth error). 296 // auth error).
294 sync_->fail_initial_download(); 297 sync_->fail_initial_download();
295 298
296 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 299 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
297 sync_->Initialize(); 300 sync_->Initialize();
298 EXPECT_TRUE(sync_->GetBackendForTest()); 301 EXPECT_TRUE(sync_->GetBackendForTest());
299 EXPECT_FALSE(sync_->sync_initialized()); 302 EXPECT_FALSE(sync_->sync_initialized());
300 EXPECT_FALSE(sync_->ShouldPushChanges());
301 Mock::VerifyAndClearExpectations(data_type_manager); 303 Mock::VerifyAndClearExpectations(data_type_manager);
302 304
303 // Update the credentials, unstalling the backend. 305 // Update the credentials, unstalling the backend.
304 EXPECT_CALL(*data_type_manager, Configure(_, _)); 306 EXPECT_CALL(*data_type_manager, Configure(_, _));
305 EXPECT_CALL(*data_type_manager, state()). 307 EXPECT_CALL(*data_type_manager, state()).
306 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 308 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
307 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 309 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
308 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 310 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
309 sync_->SetSetupInProgress(true); 311 sync_->SetSetupInProgress(true);
310 312
311 // Simulate successful signin. 313 // Simulate successful signin.
312 GoogleServiceSigninSuccessDetails details("test_user", std::string()); 314 GoogleServiceSigninSuccessDetails details("test_user", std::string());
313 content::NotificationService::current()->Notify( 315 content::NotificationService::current()->Notify(
314 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, 316 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL,
315 content::Source<Profile>(profile_.get()), 317 content::Source<Profile>(profile_.get()),
316 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); 318 content::Details<const GoogleServiceSigninSuccessDetails>(&details));
317 319
318 token_service->IssueAuthTokenForTest( 320 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
319 GaiaConstants::kSyncService, "sync_token"); 321 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
320 sync_->SetSetupInProgress(false); 322 sync_->SetSetupInProgress(false);
321 base::MessageLoop::current()->Run();
322 323
323 // Verify we successfully finish startup and configuration. 324 // Verify we successfully finish startup and configuration.
324 EXPECT_TRUE(sync_->ShouldPushChanges()); 325 EXPECT_TRUE(sync_->ShouldPushChanges());
325 } 326 }
326 327
327 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) { 328 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) {
328 EXPECT_CALL(*sync_->components_factory_mock(), 329 EXPECT_CALL(*sync_->components_factory_mock(),
329 CreateDataTypeManager(_, _, _, _, _)).Times(0); 330 CreateDataTypeManager(_, _, _, _, _)).Times(0);
330 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 331 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
331 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 332 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
(...skipping 16 matching lines...) Expand all
348 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { 349 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) {
349 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 350 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
350 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 351 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
351 EXPECT_CALL(*data_type_manager, Configure(_, _)); 352 EXPECT_CALL(*data_type_manager, Configure(_, _));
352 EXPECT_CALL(*data_type_manager, state()). 353 EXPECT_CALL(*data_type_manager, state()).
353 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 354 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
354 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 355 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
355 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 356 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
356 357
357 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 358 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
358 GaiaConstants::kSyncService, "sync_token"); 359 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
359 sync_->Initialize(); 360 sync_->Initialize();
360 EXPECT_TRUE(sync_->ShouldPushChanges()); 361 EXPECT_TRUE(sync_->ShouldPushChanges());
361 } 362 }
362 363
363 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { 364 TEST_F(ProfileSyncServiceStartupTest, StartNormal) {
364 // Pre load the tokens 365 // Pre load the tokens
365 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); 366 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user");
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 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
377 GaiaConstants::kSyncService, "sync_token"); 378 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
378 379
379 sync_->Initialize(); 380 sync_->Initialize();
380 } 381 }
381 382
382 // Test that we can recover from a case where a bug in the code resulted in 383 // 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 384 // OnUserChoseDatatypes not being properly called and datatype preferences
384 // therefore being left unset. 385 // therefore being left unset.
385 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { 386 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) {
386 // Clear the datatype preference fields (simulating bug 154940). 387 // Clear the datatype preference fields (simulating bug 154940).
387 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced); 388 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced);
(...skipping 10 matching lines...) Expand all
398 profile_.get(), NULL); 399 profile_.get(), NULL);
399 CreateSyncService(); 400 CreateSyncService();
400 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 401 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
401 EXPECT_CALL(*data_type_manager, Configure(_, _)); 402 EXPECT_CALL(*data_type_manager, Configure(_, _));
402 EXPECT_CALL(*data_type_manager, state()). 403 EXPECT_CALL(*data_type_manager, state()).
403 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 404 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
404 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 405 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
405 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 406 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
406 407
407 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 408 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
408 GaiaConstants::kSyncService, "sync_token"); 409 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
409 sync_->Initialize(); 410 sync_->Initialize();
410 411
411 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( 412 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean(
412 prefs::kSyncKeepEverythingSynced)); 413 prefs::kSyncKeepEverythingSynced));
413 } 414 }
414 415
415 // Verify that the recovery of datatype preferences doesn't overwrite a valid 416 // Verify that the recovery of datatype preferences doesn't overwrite a valid
416 // case where only bookmarks are enabled. 417 // case where only bookmarks are enabled.
417 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { 418 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) {
418 // Explicitly set Keep Everything Synced to false and have only bookmarks 419 // Explicitly set Keep Everything Synced to false and have only bookmarks
419 // enabled. 420 // enabled.
420 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); 421 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false);
421 422
422 // Pre load the tokens 423 // Pre load the tokens
423 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); 424 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user");
424 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 425 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
425 profile_.get(), NULL); 426 profile_.get(), NULL);
426 CreateSyncService(); 427 CreateSyncService();
427 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 428 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
428 EXPECT_CALL(*data_type_manager, Configure(_, _)); 429 EXPECT_CALL(*data_type_manager, Configure(_, _));
429 EXPECT_CALL(*data_type_manager, state()). 430 EXPECT_CALL(*data_type_manager, state()).
430 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 431 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
431 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 432 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
432 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 433 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
433 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 434 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
434 GaiaConstants::kSyncService, "sync_token"); 435 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
435 sync_->Initialize(); 436 sync_->Initialize();
436 437
437 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( 438 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(
438 prefs::kSyncKeepEverythingSynced)); 439 prefs::kSyncKeepEverythingSynced));
439 } 440 }
440 441
441 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { 442 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) {
442 // Service should not be started by Initialize() since it's managed. 443 // Service should not be started by Initialize() since it's managed.
443 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); 444 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user");
444 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 445 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
445 profile_.get(), NULL); 446 profile_.get(), NULL);
446 CreateSyncService(); 447 CreateSyncService();
447 448
448 // Disable sync through policy. 449 // Disable sync through policy.
449 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); 450 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true);
450 EXPECT_CALL(*sync_->components_factory_mock(), 451 EXPECT_CALL(*sync_->components_factory_mock(),
451 CreateDataTypeManager(_, _, _, _, _)).Times(0); 452 CreateDataTypeManager(_, _, _, _, _)).Times(0);
452 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 453 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
453 454
454 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 455 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
455 GaiaConstants::kSyncService, "sync_token"); 456 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
456 sync_->Initialize(); 457 sync_->Initialize();
457 } 458 }
458 459
459 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { 460 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) {
460 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); 461 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user");
461 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 462 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
462 profile_.get(), NULL); 463 profile_.get(), NULL);
463 CreateSyncService(); 464 CreateSyncService();
464 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 465 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
465 EXPECT_CALL(*data_type_manager, Configure(_, _)); 466 EXPECT_CALL(*data_type_manager, Configure(_, _));
466 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 467 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
467 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 468 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
468 GaiaConstants::kSyncService, "sync_token"); 469 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
469 sync_->Initialize(); 470 sync_->Initialize();
470 471
471 // The service should stop when switching to managed mode. 472 // The service should stop when switching to managed mode.
472 Mock::VerifyAndClearExpectations(data_type_manager); 473 Mock::VerifyAndClearExpectations(data_type_manager);
473 EXPECT_CALL(*data_type_manager, state()). 474 EXPECT_CALL(*data_type_manager, state()).
474 WillOnce(Return(DataTypeManager::CONFIGURED)); 475 WillOnce(Return(DataTypeManager::CONFIGURED));
475 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 476 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
476 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 477 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
477 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); 478 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true);
478 479
(...skipping 23 matching lines...) Expand all
502 errors, 503 errors,
503 syncer::ModelTypeSet()); 504 syncer::ModelTypeSet());
504 EXPECT_CALL(*data_type_manager, Configure(_, _)). 505 EXPECT_CALL(*data_type_manager, Configure(_, _)).
505 WillRepeatedly( 506 WillRepeatedly(
506 DoAll(InvokeOnConfigureStart(sync_), 507 DoAll(InvokeOnConfigureStart(sync_),
507 InvokeOnConfigureDone(sync_, result))); 508 InvokeOnConfigureDone(sync_, result)));
508 EXPECT_CALL(*data_type_manager, state()). 509 EXPECT_CALL(*data_type_manager, state()).
509 WillOnce(Return(DataTypeManager::STOPPED)); 510 WillOnce(Return(DataTypeManager::STOPPED));
510 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 511 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
511 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 512 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
512 GaiaConstants::kSyncService, "sync_token"); 513 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
513 sync_->Initialize(); 514 sync_->Initialize();
514 EXPECT_TRUE(sync_->HasUnrecoverableError()); 515 EXPECT_TRUE(sync_->HasUnrecoverableError());
515 } 516 }
516 517
517 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { 518 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) {
518 // Pre load the tokens 519 // Pre load the tokens
519 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); 520 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user");
520 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( 521 SigninManagerFactory::GetForProfile(profile_.get())->Initialize(
521 profile_.get(), NULL); 522 profile_.get(), NULL);
522 CreateSyncService(); 523 CreateSyncService();
523 524
524 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); 525 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
525 526
526 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 527 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
527 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( 528 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest(
528 GaiaConstants::kSyncService, "sync_token"); 529 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token");
529 sync_->fail_initial_download(); 530 sync_->fail_initial_download();
530 531
532 sync_->SetSetupInProgress(true);
Andrew T Wilson (Slow) 2013/06/04 14:37:32 Why is this necessary now?
pavely 2013/06/04 20:11:13 I think this test was initially broken. With SyncH
531 sync_->Initialize(); 533 sync_->Initialize();
534 sync_->SetSetupInProgress(false);
532 EXPECT_FALSE(sync_->sync_initialized()); 535 EXPECT_FALSE(sync_->sync_initialized());
533 EXPECT_FALSE(sync_->GetBackendForTest()); 536 EXPECT_TRUE(sync_->GetBackendForTest());
534 } 537 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698