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.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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 |
92 } | 95 } |
93 | 96 |
94 virtual void TearDown() { | 97 virtual void TearDown() { |
95 sync_->RemoveObserver(&observer_); | 98 sync_->RemoveObserver(&observer_); |
96 ProfileSyncServiceFactory::GetInstance()->SetTestingFactory( | 99 ProfileSyncServiceFactory::GetInstance()->SetTestingFactory( |
97 profile_.get(), NULL); | 100 profile_.get(), NULL); |
| 101 ProfileOAuth2TokenServiceFactory::GetInstance()->SetTestingFactory( |
| 102 profile_.get(), NULL); |
98 profile_.reset(); | 103 profile_.reset(); |
99 | 104 |
100 // Pump messages posted by the sync core thread (which may end up | 105 // Pump messages posted by the sync core thread (which may end up |
101 // posting on the IO thread). | 106 // posting on the IO thread). |
102 ui_loop_.RunUntilIdle(); | 107 ui_loop_.RunUntilIdle(); |
103 io_thread_.Stop(); | 108 io_thread_.Stop(); |
104 file_thread_.Stop(); | 109 file_thread_.Stop(); |
105 ui_loop_.RunUntilIdle(); | 110 ui_loop_.RunUntilIdle(); |
106 } | 111 } |
107 | 112 |
108 static BrowserContextKeyedService* BuildService( | 113 static BrowserContextKeyedService* BuildService( |
109 content::BrowserContext* profile) { | 114 content::BrowserContext* profile) { |
110 return new TestProfileSyncService( | 115 return new TestProfileSyncService( |
111 new ProfileSyncComponentsFactoryMock(), | 116 new ProfileSyncComponentsFactoryMock(), |
112 static_cast<Profile*>(profile), | 117 static_cast<Profile*>(profile), |
113 SigninManagerFactory::GetForProfile(static_cast<Profile*>(profile)), | 118 SigninManagerFactory::GetForProfile(static_cast<Profile*>(profile)), |
114 ProfileSyncService::MANUAL_START, | 119 ProfileSyncService::MANUAL_START, |
115 true); | 120 true); |
116 } | 121 } |
117 | 122 |
118 void CreateSyncService() { | 123 void CreateSyncService() { |
| 124 ProfileOAuth2TokenServiceFactory::GetInstance()->SetTestingFactory( |
| 125 profile_.get(), FakeOAuth2TokenService::BuildTokenService); |
119 sync_ = static_cast<TestProfileSyncService*>( | 126 sync_ = static_cast<TestProfileSyncService*>( |
120 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 127 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
121 profile_.get(), BuildService)); | 128 profile_.get(), BuildService)); |
122 sync_->AddObserver(&observer_); | 129 sync_->AddObserver(&observer_); |
123 sync_->set_synchronous_sync_configuration(); | 130 sync_->set_synchronous_sync_configuration(); |
124 } | 131 } |
125 | 132 |
126 protected: | 133 protected: |
127 DataTypeManagerMock* SetUpDataTypeManager() { | 134 DataTypeManagerMock* SetUpDataTypeManager() { |
128 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); | 135 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); |
(...skipping 10 matching lines...) Expand all Loading... |
139 content::TestBrowserThread io_thread_; | 146 content::TestBrowserThread io_thread_; |
140 scoped_ptr<TestingProfile> profile_; | 147 scoped_ptr<TestingProfile> profile_; |
141 TestProfileSyncService* sync_; | 148 TestProfileSyncService* sync_; |
142 ProfileSyncServiceObserverMock observer_; | 149 ProfileSyncServiceObserverMock observer_; |
143 }; | 150 }; |
144 | 151 |
145 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { | 152 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { |
146 public: | 153 public: |
147 virtual void SetUp() { | 154 virtual void SetUp() { |
148 ProfileSyncServiceStartupTest::SetUp(); | 155 ProfileSyncServiceStartupTest::SetUp(); |
| 156 ProfileOAuth2TokenServiceFactory::GetInstance()->SetTestingFactory( |
| 157 profile_.get(), FakeOAuth2TokenService::BuildTokenService); |
149 sync_ = static_cast<TestProfileSyncService*>( | 158 sync_ = static_cast<TestProfileSyncService*>( |
150 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 159 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
151 profile_.get(), BuildCrosService)); | 160 profile_.get(), BuildCrosService)); |
152 sync_->AddObserver(&observer_); | 161 sync_->AddObserver(&observer_); |
153 sync_->set_synchronous_sync_configuration(); | 162 sync_->set_synchronous_sync_configuration(); |
154 } | 163 } |
155 | 164 |
156 static BrowserContextKeyedService* BuildCrosService( | 165 static BrowserContextKeyedService* BuildCrosService( |
157 content::BrowserContext* context) { | 166 content::BrowserContext* context) { |
158 Profile* profile = static_cast<Profile*>(context); | 167 Profile* profile = static_cast<Profile*>(context); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 "test_user"); | 219 "test_user"); |
211 sync_->signin()->SetAuthenticatedUsername("test_user"); | 220 sync_->signin()->SetAuthenticatedUsername("test_user"); |
212 GoogleServiceSigninSuccessDetails details("test_user", ""); | 221 GoogleServiceSigninSuccessDetails details("test_user", ""); |
213 content::NotificationService::current()->Notify( | 222 content::NotificationService::current()->Notify( |
214 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, | 223 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, |
215 content::Source<Profile>(profile_.get()), | 224 content::Source<Profile>(profile_.get()), |
216 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); | 225 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); |
217 | 226 |
218 // Create some tokens in the token service. | 227 // Create some tokens in the token service. |
219 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 228 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
220 GaiaConstants::kSyncService, "sync_token"); | 229 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
221 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 230 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
222 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); | 231 GaiaConstants::kSyncService, "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 // TODO(pavely): Reenable test once android is switched to oauth2. |
230 // We've never completed startup. | 239 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { |
| 240 // We've never completed startup. |
231 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); | 241 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); |
232 SigninManagerFactory::GetForProfile( | 242 SigninManagerFactory::GetForProfile( |
233 profile_.get())->Initialize(profile_.get(), NULL); | 243 profile_.get())->Initialize(profile_.get(), NULL); |
234 TokenService* token_service = static_cast<TokenService*>( | 244 TokenService* token_service = static_cast<TokenService*>( |
235 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 245 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
236 profile_.get(), BuildFakeTokenService)); | 246 profile_.get(), BuildFakeTokenService)); |
237 CreateSyncService(); | 247 CreateSyncService(); |
238 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | |
239 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); | |
240 | 248 |
241 // Should not actually start, rather just clean things up and wait | 249 // Should not actually start, rather just clean things up and wait |
242 // to be enabled. | 250 // to be enabled. |
| 251 EXPECT_CALL(*sync_->components_factory_mock(), |
| 252 CreateDataTypeManager(_, _, _, _, _, _)).Times(0); |
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 // TODO(pavely): Reenable test once android is switched to oauth2. |
| 285 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartInvalidCredentials) { |
280 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, | 286 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
281 "test_user"); | 287 "test_user"); |
282 SigninManagerFactory::GetForProfile( | 288 SigninManagerFactory::GetForProfile( |
283 profile_.get())->Initialize(profile_.get(), NULL); | 289 profile_.get())->Initialize(profile_.get(), NULL); |
284 CreateSyncService(); | 290 CreateSyncService(); |
285 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 291 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
286 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); | 292 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); |
287 TokenService* token_service = static_cast<TokenService*>( | 293 // Issue login token so that ProfileSyncServer tries to initialize backend. |
288 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 294 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
289 profile_.get(), BuildFakeTokenService)); | 295 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
290 token_service->LoadTokensFromDB(); | |
291 | 296 |
292 // Tell the backend to stall while downloading control types (simulating an | 297 // Tell the backend to stall while downloading control types (simulating an |
293 // auth error). | 298 // auth error). |
294 sync_->fail_initial_download(); | 299 sync_->fail_initial_download(); |
295 | 300 |
296 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 301 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
297 sync_->Initialize(); | 302 sync_->Initialize(); |
298 EXPECT_TRUE(sync_->GetBackendForTest()); | 303 EXPECT_TRUE(sync_->GetBackendForTest()); |
299 EXPECT_FALSE(sync_->sync_initialized()); | 304 EXPECT_FALSE(sync_->sync_initialized()); |
300 EXPECT_FALSE(sync_->ShouldPushChanges()); | |
301 Mock::VerifyAndClearExpectations(data_type_manager); | 305 Mock::VerifyAndClearExpectations(data_type_manager); |
302 | 306 |
303 // Update the credentials, unstalling the backend. | 307 // Update the credentials, unstalling the backend. |
304 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 308 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
305 EXPECT_CALL(*data_type_manager, state()). | 309 EXPECT_CALL(*data_type_manager, state()). |
306 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 310 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
307 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 311 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
308 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 312 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
309 sync_->SetSetupInProgress(true); | 313 sync_->SetSetupInProgress(true); |
310 | 314 |
311 // Simulate successful signin. | 315 // Simulate successful signin. |
312 GoogleServiceSigninSuccessDetails details("test_user", std::string()); | 316 GoogleServiceSigninSuccessDetails details("test_user", std::string()); |
313 content::NotificationService::current()->Notify( | 317 content::NotificationService::current()->Notify( |
314 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, | 318 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, |
315 content::Source<Profile>(profile_.get()), | 319 content::Source<Profile>(profile_.get()), |
316 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); | 320 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); |
317 | 321 |
318 token_service->IssueAuthTokenForTest( | 322 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
319 GaiaConstants::kSyncService, "sync_token"); | 323 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
320 sync_->SetSetupInProgress(false); | 324 sync_->SetSetupInProgress(false); |
321 base::MessageLoop::current()->Run(); | |
322 | 325 |
323 // Verify we successfully finish startup and configuration. | 326 // Verify we successfully finish startup and configuration. |
324 EXPECT_TRUE(sync_->ShouldPushChanges()); | 327 EXPECT_TRUE(sync_->ShouldPushChanges()); |
325 } | 328 } |
326 | 329 |
327 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) { | 330 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) { |
328 EXPECT_CALL(*sync_->components_factory_mock(), | 331 EXPECT_CALL(*sync_->components_factory_mock(), |
329 CreateDataTypeManager(_, _, _, _, _, _)).Times(0); | 332 CreateDataTypeManager(_, _, _, _, _, _)).Times(0); |
330 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); | 333 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); |
331 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 334 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
(...skipping 16 matching lines...) Expand all Loading... |
348 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { | 351 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { |
349 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 352 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
350 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); | 353 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); |
351 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 354 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
352 EXPECT_CALL(*data_type_manager, state()). | 355 EXPECT_CALL(*data_type_manager, state()). |
353 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 356 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
354 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 357 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
355 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 358 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
356 | 359 |
357 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 360 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 361 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
| 362 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
358 GaiaConstants::kSyncService, "sync_token"); | 363 GaiaConstants::kSyncService, "sync_token"); |
359 sync_->Initialize(); | 364 sync_->Initialize(); |
360 EXPECT_TRUE(sync_->ShouldPushChanges()); | 365 EXPECT_TRUE(sync_->ShouldPushChanges()); |
361 } | 366 } |
362 | 367 |
363 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { | 368 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { |
364 // Pre load the tokens | 369 // Pre load the tokens |
365 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 370 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); |
366 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 371 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
367 profile_.get(), NULL); | 372 profile_.get(), NULL); |
368 CreateSyncService(); | 373 CreateSyncService(); |
369 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 374 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
370 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 375 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
371 EXPECT_CALL(*data_type_manager, state()). | 376 EXPECT_CALL(*data_type_manager, state()). |
372 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 377 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
373 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 378 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
374 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 379 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
375 | 380 |
376 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 381 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 382 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
| 383 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
377 GaiaConstants::kSyncService, "sync_token"); | 384 GaiaConstants::kSyncService, "sync_token"); |
378 | 385 |
379 sync_->Initialize(); | 386 sync_->Initialize(); |
380 } | 387 } |
381 | 388 |
382 // Test that we can recover from a case where a bug in the code resulted in | 389 // 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 | 390 // OnUserChoseDatatypes not being properly called and datatype preferences |
384 // therefore being left unset. | 391 // therefore being left unset. |
385 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { | 392 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { |
386 // Clear the datatype preference fields (simulating bug 154940). | 393 // Clear the datatype preference fields (simulating bug 154940). |
(...skipping 11 matching lines...) Expand all Loading... |
398 profile_.get(), NULL); | 405 profile_.get(), NULL); |
399 CreateSyncService(); | 406 CreateSyncService(); |
400 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 407 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
401 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 408 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
402 EXPECT_CALL(*data_type_manager, state()). | 409 EXPECT_CALL(*data_type_manager, state()). |
403 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 410 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
404 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 411 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
405 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 412 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
406 | 413 |
407 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 414 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 415 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
| 416 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
408 GaiaConstants::kSyncService, "sync_token"); | 417 GaiaConstants::kSyncService, "sync_token"); |
409 sync_->Initialize(); | 418 sync_->Initialize(); |
410 | 419 |
411 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( | 420 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( |
412 prefs::kSyncKeepEverythingSynced)); | 421 prefs::kSyncKeepEverythingSynced)); |
413 } | 422 } |
414 | 423 |
415 // Verify that the recovery of datatype preferences doesn't overwrite a valid | 424 // Verify that the recovery of datatype preferences doesn't overwrite a valid |
416 // case where only bookmarks are enabled. | 425 // case where only bookmarks are enabled. |
417 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { | 426 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { |
418 // Explicitly set Keep Everything Synced to false and have only bookmarks | 427 // Explicitly set Keep Everything Synced to false and have only bookmarks |
419 // enabled. | 428 // enabled. |
420 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); | 429 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); |
421 | 430 |
422 // Pre load the tokens | 431 // Pre load the tokens |
423 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 432 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); |
424 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 433 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
425 profile_.get(), NULL); | 434 profile_.get(), NULL); |
426 CreateSyncService(); | 435 CreateSyncService(); |
427 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 436 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
428 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 437 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
429 EXPECT_CALL(*data_type_manager, state()). | 438 EXPECT_CALL(*data_type_manager, state()). |
430 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 439 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
431 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 440 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
432 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 441 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
433 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 442 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 443 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
| 444 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
434 GaiaConstants::kSyncService, "sync_token"); | 445 GaiaConstants::kSyncService, "sync_token"); |
435 sync_->Initialize(); | 446 sync_->Initialize(); |
436 | 447 |
437 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( | 448 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( |
438 prefs::kSyncKeepEverythingSynced)); | 449 prefs::kSyncKeepEverythingSynced)); |
439 } | 450 } |
440 | 451 |
441 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { | 452 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { |
442 // Service should not be started by Initialize() since it's managed. | 453 // Service should not be started by Initialize() since it's managed. |
443 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 454 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); |
444 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 455 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
445 profile_.get(), NULL); | 456 profile_.get(), NULL); |
446 CreateSyncService(); | 457 CreateSyncService(); |
447 | 458 |
448 // Disable sync through policy. | 459 // Disable sync through policy. |
449 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); | 460 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); |
450 EXPECT_CALL(*sync_->components_factory_mock(), | 461 EXPECT_CALL(*sync_->components_factory_mock(), |
451 CreateDataTypeManager(_, _, _, _, _, _)).Times(0); | 462 CreateDataTypeManager(_, _, _, _, _, _)).Times(0); |
452 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 463 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
453 | 464 |
454 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 465 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
455 GaiaConstants::kSyncService, "sync_token"); | 466 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
456 sync_->Initialize(); | 467 sync_->Initialize(); |
457 } | 468 } |
458 | 469 |
459 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { | 470 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { |
460 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 471 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); |
461 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 472 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
462 profile_.get(), NULL); | 473 profile_.get(), NULL); |
463 CreateSyncService(); | 474 CreateSyncService(); |
464 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 475 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
465 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 476 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
466 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 477 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
467 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 478 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
468 GaiaConstants::kSyncService, "sync_token"); | 479 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
| 480 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 481 GaiaConstants::kSyncService, "token"); |
469 sync_->Initialize(); | 482 sync_->Initialize(); |
470 | 483 |
471 // The service should stop when switching to managed mode. | 484 // The service should stop when switching to managed mode. |
472 Mock::VerifyAndClearExpectations(data_type_manager); | 485 Mock::VerifyAndClearExpectations(data_type_manager); |
473 EXPECT_CALL(*data_type_manager, state()). | 486 EXPECT_CALL(*data_type_manager, state()). |
474 WillOnce(Return(DataTypeManager::CONFIGURED)); | 487 WillOnce(Return(DataTypeManager::CONFIGURED)); |
475 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 488 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
476 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 489 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
477 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); | 490 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); |
478 | 491 |
(...skipping 24 matching lines...) Expand all Loading... |
503 syncer::ModelTypeSet(), | 516 syncer::ModelTypeSet(), |
504 syncer::ModelTypeSet()); | 517 syncer::ModelTypeSet()); |
505 EXPECT_CALL(*data_type_manager, Configure(_, _)). | 518 EXPECT_CALL(*data_type_manager, Configure(_, _)). |
506 WillRepeatedly( | 519 WillRepeatedly( |
507 DoAll(InvokeOnConfigureStart(sync_), | 520 DoAll(InvokeOnConfigureStart(sync_), |
508 InvokeOnConfigureDone(sync_, result))); | 521 InvokeOnConfigureDone(sync_, result))); |
509 EXPECT_CALL(*data_type_manager, state()). | 522 EXPECT_CALL(*data_type_manager, state()). |
510 WillOnce(Return(DataTypeManager::STOPPED)); | 523 WillOnce(Return(DataTypeManager::STOPPED)); |
511 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 524 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
512 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 525 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
513 GaiaConstants::kSyncService, "sync_token"); | 526 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
| 527 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 528 GaiaConstants::kSyncService, "token"); |
514 sync_->Initialize(); | 529 sync_->Initialize(); |
515 EXPECT_TRUE(sync_->HasUnrecoverableError()); | 530 EXPECT_TRUE(sync_->HasUnrecoverableError()); |
516 } | 531 } |
517 | 532 |
518 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { | 533 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { |
519 // Pre load the tokens | 534 // Pre load the tokens |
520 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 535 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); |
521 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 536 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
522 profile_.get(), NULL); | 537 profile_.get(), NULL); |
523 CreateSyncService(); | 538 CreateSyncService(); |
524 | 539 |
525 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); | 540 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); |
526 | 541 |
527 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 542 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
528 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 543 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
529 GaiaConstants::kSyncService, "sync_token"); | 544 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
| 545 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 546 GaiaConstants::kSyncService, "token"); |
530 sync_->fail_initial_download(); | 547 sync_->fail_initial_download(); |
531 | 548 |
| 549 sync_->SetSetupInProgress(true); |
532 sync_->Initialize(); | 550 sync_->Initialize(); |
| 551 sync_->SetSetupInProgress(false); |
533 EXPECT_FALSE(sync_->sync_initialized()); | 552 EXPECT_FALSE(sync_->sync_initialized()); |
534 EXPECT_FALSE(sync_->GetBackendForTest()); | 553 EXPECT_TRUE(sync_->GetBackendForTest()); |
535 } | 554 } |
OLD | NEW |