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

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

Issue 964563002: Replace SetAuthenticatedUsername with SetAuthenticatedAccountId. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@priv
Patch Set: rebased Created 5 years, 8 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 "base/files/file_util.h" 5 #include "base/files/file_util.h"
6 #include "base/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/prefs/pref_service_syncable.h" 9 #include "chrome/browser/prefs/pref_service_syncable.h"
10 #include "chrome/browser/signin/account_tracker_service_factory.h"
10 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" 11 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h"
11 #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h" 12 #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h"
12 #include "chrome/browser/signin/fake_signin_manager.h" 13 #include "chrome/browser/signin/fake_signin_manager.h"
13 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 14 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
14 #include "chrome/browser/signin/signin_manager_factory.h" 15 #include "chrome/browser/signin/signin_manager_factory.h"
15 #include "chrome/browser/sync/glue/sync_backend_host_mock.h" 16 #include "chrome/browser/sync/glue/sync_backend_host_mock.h"
16 #include "chrome/browser/sync/profile_sync_components_factory_mock.h" 17 #include "chrome/browser/sync/profile_sync_components_factory_mock.h"
17 #include "chrome/browser/sync/profile_sync_service_factory.h" 18 #include "chrome/browser/sync/profile_sync_service_factory.h"
18 #include "chrome/browser/sync/profile_sync_test_util.h" 19 #include "chrome/browser/sync/profile_sync_test_util.h"
19 #include "chrome/browser/sync/supervised_user_signin_manager_wrapper.h" 20 #include "chrome/browser/sync/supervised_user_signin_manager_wrapper.h"
20 #include "chrome/common/pref_names.h" 21 #include "chrome/common/pref_names.h"
21 #include "chrome/test/base/testing_browser_process.h" 22 #include "chrome/test/base/testing_browser_process.h"
22 #include "chrome/test/base/testing_profile.h" 23 #include "chrome/test/base/testing_profile.h"
23 #include "chrome/test/base/testing_profile_manager.h" 24 #include "chrome/test/base/testing_profile_manager.h"
25 #include "components/signin/core/browser/account_tracker_service.h"
24 #include "components/signin/core/browser/profile_oauth2_token_service.h" 26 #include "components/signin/core/browser/profile_oauth2_token_service.h"
25 #include "components/signin/core/browser/signin_manager.h" 27 #include "components/signin/core/browser/signin_manager.h"
26 #include "components/sync_driver/data_type_manager.h" 28 #include "components/sync_driver/data_type_manager.h"
27 #include "components/sync_driver/data_type_manager_mock.h" 29 #include "components/sync_driver/data_type_manager_mock.h"
28 #include "components/sync_driver/pref_names.h" 30 #include "components/sync_driver/pref_names.h"
29 #include "components/sync_driver/sync_prefs.h" 31 #include "components/sync_driver/sync_prefs.h"
30 #include "content/public/test/test_browser_thread_bundle.h" 32 #include "content/public/test/test_browser_thread_bundle.h"
31 #include "content/public/test/test_utils.h" 33 #include "content/public/test/test_utils.h"
32 #include "google_apis/gaia/gaia_auth_consumer.h" 34 #include "google_apis/gaia/gaia_auth_consumer.h"
33 #include "google_apis/gaia/gaia_constants.h" 35 #include "google_apis/gaia/gaia_constants.h"
34 #include "google_apis/gaia/oauth2_token_service.h" 36 #include "google_apis/gaia/oauth2_token_service.h"
35 #include "testing/gmock/include/gmock/gmock.h" 37 #include "testing/gmock/include/gmock/gmock.h"
36 #include "testing/gtest/include/gtest/gtest.h" 38 #include "testing/gtest/include/gtest/gtest.h"
37 39
38 using browser_sync::SyncBackendHostMock; 40 using browser_sync::SyncBackendHostMock;
39 using content::BrowserThread; 41 using content::BrowserThread;
40 using sync_driver::DataTypeManager; 42 using sync_driver::DataTypeManager;
41 using sync_driver::DataTypeManagerMock; 43 using sync_driver::DataTypeManagerMock;
42 using testing::_; 44 using testing::_;
43 using testing::AnyNumber; 45 using testing::AnyNumber;
44 using testing::DoAll; 46 using testing::DoAll;
45 using testing::InvokeArgument; 47 using testing::InvokeArgument;
46 using testing::Mock; 48 using testing::Mock;
47 using testing::Return; 49 using testing::Return;
48 using testing::SaveArg; 50 using testing::SaveArg;
49 51
52 namespace {
53
54 const char kGaiaId[] = "12345";
55 const char kEmail[] = "test_user@gmail.com";
56 const char kDummyPassword[] = "";
57
58 } // namespace
59
50 ACTION_P(InvokeOnConfigureStart, pss) { 60 ACTION_P(InvokeOnConfigureStart, pss) {
51 ProfileSyncService* service = 61 ProfileSyncService* service =
52 static_cast<ProfileSyncService*>(pss); 62 static_cast<ProfileSyncService*>(pss);
53 service->OnConfigureStart(); 63 service->OnConfigureStart();
54 } 64 }
55 65
56 ACTION_P3(InvokeOnConfigureDone, pss, error_callback, result) { 66 ACTION_P3(InvokeOnConfigureDone, pss, error_callback, result) {
57 ProfileSyncService* service = 67 ProfileSyncService* service =
58 static_cast<ProfileSyncService*>(pss); 68 static_cast<ProfileSyncService*>(pss);
59 DataTypeManager::ConfigureResult configure_result = 69 DataTypeManager::ConfigureResult configure_result =
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 ProfileOAuth2TokenServiceFactory::GetForProfile(profile), 132 ProfileOAuth2TokenServiceFactory::GetForProfile(profile),
123 browser_sync::MANUAL_START); 133 browser_sync::MANUAL_START);
124 } 134 }
125 135
126 void CreateSyncService() { 136 void CreateSyncService() {
127 sync_ = static_cast<ProfileSyncService*>( 137 sync_ = static_cast<ProfileSyncService*>(
128 ProfileSyncServiceFactory::GetForProfile(profile_)); 138 ProfileSyncServiceFactory::GetForProfile(profile_));
129 sync_->AddObserver(&observer_); 139 sync_->AddObserver(&observer_);
130 } 140 }
131 141
132 void IssueTestTokens() { 142 void IssueTestTokens(const std::string& account_id) {
133 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_) 143 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_)
134 ->UpdateCredentials("test_user@gmail.com", "oauth2_login_token"); 144 ->UpdateCredentials(account_id, "oauth2_login_token");
135 } 145 }
136 146
137 ProfileSyncComponentsFactoryMock* components_factory_mock() { 147 ProfileSyncComponentsFactoryMock* components_factory_mock() {
138 return static_cast<ProfileSyncComponentsFactoryMock*>(sync_->factory()); 148 return static_cast<ProfileSyncComponentsFactoryMock*>(sync_->factory());
139 } 149 }
140 150
141 FakeSigninManagerForTesting* fake_signin() { 151 FakeSigninManagerForTesting* fake_signin() {
142 return static_cast<FakeSigninManagerForTesting*>(sync_->signin()); 152 return static_cast<FakeSigninManagerForTesting*>(sync_->signin());
143 } 153 }
144 154
145 void SetError(DataTypeManager::ConfigureResult* result) { 155 void SetError(DataTypeManager::ConfigureResult* result) {
146 sync_driver::DataTypeStatusTable::TypeErrorMap errors; 156 sync_driver::DataTypeStatusTable::TypeErrorMap errors;
147 errors[syncer::BOOKMARKS] = 157 errors[syncer::BOOKMARKS] =
148 syncer::SyncError(FROM_HERE, 158 syncer::SyncError(FROM_HERE,
149 syncer::SyncError::UNRECOVERABLE_ERROR, 159 syncer::SyncError::UNRECOVERABLE_ERROR,
150 "Error", 160 "Error",
151 syncer::BOOKMARKS); 161 syncer::BOOKMARKS);
152 result->data_type_status_table.UpdateFailedDataTypes(errors); 162 result->data_type_status_table.UpdateFailedDataTypes(errors);
153 } 163 }
154 164
155 protected: 165 protected:
156 void SimulateTestUserSignin() { 166 static std::string SimulateTestUserSignin(
167 Profile* profile,
168 FakeSigninManagerForTesting* fake_signin,
169 ProfileSyncService* sync) {
170 std::string account_id =
171 AccountTrackerServiceFactory::GetForProfile(profile)
172 ->SeedAccountInfo(kGaiaId, kEmail);
173 profile->GetPrefs()->SetString(prefs::kGoogleServicesAccountId,
174 account_id);
157 #if !defined(OS_CHROMEOS) 175 #if !defined(OS_CHROMEOS)
158 fake_signin()->SignIn("test_user@gmail.com", ""); 176 fake_signin->SignIn(kGaiaId, kEmail, kDummyPassword);
159 #else 177 #else
160 fake_signin()->SetAuthenticatedUsername("test_user@gmail.com"); 178 fake_signin->SetAuthenticatedAccountInfo(kGaiaId, kEmail);
161 sync_->GoogleSigninSucceeded("test_user@gmail.com", 179 if (sync)
162 "test_user@gmail.com", 180 sync->GoogleSigninSucceeded(account_id, kEmail, kDummyPassword);
163 "");
164 #endif 181 #endif
182 return account_id;
165 } 183 }
166 184
167 DataTypeManagerMock* SetUpDataTypeManager() { 185 DataTypeManagerMock* SetUpDataTypeManager() {
168 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); 186 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock();
169 EXPECT_CALL(*components_factory_mock(), 187 EXPECT_CALL(*components_factory_mock(),
170 CreateDataTypeManager(_, _, _, _, _)). 188 CreateDataTypeManager(_, _, _, _, _)).
171 WillOnce(Return(data_type_manager)); 189 WillOnce(Return(data_type_manager));
172 return data_type_manager; 190 return data_type_manager;
173 } 191 }
174 192
(...skipping 19 matching lines...) Expand all
194 void SetUp() override { 212 void SetUp() override {
195 ProfileSyncServiceStartupTest::SetUp(); 213 ProfileSyncServiceStartupTest::SetUp();
196 sync_ = static_cast<ProfileSyncService*>( 214 sync_ = static_cast<ProfileSyncService*>(
197 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( 215 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
198 profile_, BuildCrosService)); 216 profile_, BuildCrosService));
199 sync_->AddObserver(&observer_); 217 sync_->AddObserver(&observer_);
200 } 218 }
201 219
202 static KeyedService* BuildCrosService(content::BrowserContext* context) { 220 static KeyedService* BuildCrosService(content::BrowserContext* context) {
203 Profile* profile = static_cast<Profile*>(context); 221 Profile* profile = static_cast<Profile*>(context);
204 SigninManagerBase* signin = 222 FakeSigninManagerForTesting* signin =
205 SigninManagerFactory::GetForProfile(profile); 223 static_cast<FakeSigninManagerForTesting*>(
206 signin->SetAuthenticatedUsername("test_user@gmail.com"); 224 SigninManagerFactory::GetForProfile(profile));
225 SimulateTestUserSignin(profile, signin, nullptr);
207 ProfileOAuth2TokenService* oauth2_token_service = 226 ProfileOAuth2TokenService* oauth2_token_service =
208 ProfileOAuth2TokenServiceFactory::GetForProfile(profile); 227 ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
209 EXPECT_TRUE(signin->IsAuthenticated()); 228 EXPECT_TRUE(signin->IsAuthenticated());
210 return new TestProfileSyncServiceNoBackup( 229 return new TestProfileSyncServiceNoBackup(
211 scoped_ptr<ProfileSyncComponentsFactory>( 230 scoped_ptr<ProfileSyncComponentsFactory>(
212 new ProfileSyncComponentsFactoryMock()), 231 new ProfileSyncComponentsFactoryMock()),
213 profile, 232 profile,
214 make_scoped_ptr(new SupervisedUserSigninManagerWrapper(profile, 233 make_scoped_ptr(new SupervisedUserSigninManagerWrapper(profile,
215 signin)), 234 signin)),
216 oauth2_token_service, 235 oauth2_token_service,
(...skipping 26 matching lines...) Expand all
243 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); 262 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1);
244 EXPECT_CALL(*data_type_manager, state()). 263 EXPECT_CALL(*data_type_manager, state()).
245 WillOnce(Return(DataTypeManager::CONFIGURED)). 264 WillOnce(Return(DataTypeManager::CONFIGURED)).
246 WillOnce(Return(DataTypeManager::CONFIGURED)); 265 WillOnce(Return(DataTypeManager::CONFIGURED));
247 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 266 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
248 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 267 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
249 268
250 sync_->SetSetupInProgress(true); 269 sync_->SetSetupInProgress(true);
251 270
252 // Simulate successful signin as test_user. 271 // Simulate successful signin as test_user.
253 SimulateTestUserSignin(); 272 std::string account_id =
273 SimulateTestUserSignin(profile_, fake_signin(), sync_);
254 // Create some tokens in the token service. 274 // Create some tokens in the token service.
255 IssueTestTokens(); 275 IssueTestTokens(account_id);
256 276
257 // Simulate the UI telling sync it has finished setting up. 277 // Simulate the UI telling sync it has finished setting up.
258 sync_->SetSetupInProgress(false); 278 sync_->SetSetupInProgress(false);
259 EXPECT_TRUE(sync_->SyncActive()); 279 EXPECT_TRUE(sync_->SyncActive());
260 } 280 }
261 281
262 // TODO(pavely): Reenable test once android is switched to oauth2. 282 // TODO(pavely): Reenable test once android is switched to oauth2.
263 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { 283 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) {
264 // We've never completed startup. 284 // We've never completed startup.
265 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); 285 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted);
(...skipping 10 matching lines...) Expand all
276 EXPECT_EQ( 296 EXPECT_EQ(
277 0, 297 0,
278 profile_->GetPrefs()->GetInt64(sync_driver::prefs::kSyncLastSyncedTime)); 298 profile_->GetPrefs()->GetInt64(sync_driver::prefs::kSyncLastSyncedTime));
279 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( 299 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(
280 sync_driver::prefs::kSyncHasSetupCompleted)); 300 sync_driver::prefs::kSyncHasSetupCompleted));
281 301
282 // Then start things up. 302 // Then start things up.
283 sync_->SetSetupInProgress(true); 303 sync_->SetSetupInProgress(true);
284 304
285 // Simulate successful signin as test_user. 305 // Simulate successful signin as test_user.
286 SimulateTestUserSignin(); 306 std::string account_id =
307 SimulateTestUserSignin(profile_, fake_signin(), sync_);
287 308
288 ProfileOAuth2TokenService* token_service = 309 ProfileOAuth2TokenService* token_service =
289 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_); 310 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_);
290 token_service->LoadCredentials("test_user@gmail.com"); 311 token_service->LoadCredentials(account_id);
291 312
292 sync_->SetSetupInProgress(false); 313 sync_->SetSetupInProgress(false);
293 // ProfileSyncService should try to start by requesting access token. 314 // ProfileSyncService should try to start by requesting access token.
294 // This request should fail as login token was not issued. 315 // This request should fail as login token was not issued.
295 EXPECT_FALSE(sync_->SyncActive()); 316 EXPECT_FALSE(sync_->SyncActive());
296 EXPECT_EQ(GoogleServiceAuthError::USER_NOT_SIGNED_UP, 317 EXPECT_EQ(GoogleServiceAuthError::USER_NOT_SIGNED_UP,
297 sync_->GetAuthError().state()); 318 sync_->GetAuthError().state());
298 } 319 }
299 320
300 // TODO(pavely): Reenable test once android is switched to oauth2. 321 // TODO(pavely): Reenable test once android is switched to oauth2.
301 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartInvalidCredentials) { 322 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartInvalidCredentials) {
302 sync_->signin()->SetAuthenticatedUsername("test_user@gmail.com");
303 CreateSyncService(); 323 CreateSyncService();
324 std::string account_id =
325 SimulateTestUserSignin(profile_, fake_signin(), sync_);
304 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); 326 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost();
305 327
306 // Tell the backend to stall while downloading control types (simulating an 328 // Tell the backend to stall while downloading control types (simulating an
307 // auth error). 329 // auth error).
308 mock_sbh->set_fail_initial_download(true); 330 mock_sbh->set_fail_initial_download(true);
309 331
310 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 332 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
311 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); 333 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0);
312 334
313 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 335 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
314 sync_->Initialize(); 336 sync_->Initialize();
315 EXPECT_FALSE(sync_->SyncActive()); 337 EXPECT_FALSE(sync_->SyncActive());
316 Mock::VerifyAndClearExpectations(data_type_manager); 338 Mock::VerifyAndClearExpectations(data_type_manager);
317 339
318 // Update the credentials, unstalling the backend. 340 // Update the credentials, unstalling the backend.
319 EXPECT_CALL(*data_type_manager, Configure(_, _)); 341 EXPECT_CALL(*data_type_manager, Configure(_, _));
320 EXPECT_CALL(*data_type_manager, state()). 342 EXPECT_CALL(*data_type_manager, state()).
321 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 343 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
322 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 344 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
323 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 345 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
324 sync_->SetSetupInProgress(true); 346 sync_->SetSetupInProgress(true);
325 347
326 // Simulate successful signin. 348 // Simulate successful signin.
327 SimulateTestUserSignin(); 349 SimulateTestUserSignin(profile_, fake_signin(), sync_);
328 350
329 sync_->SetSetupInProgress(false); 351 sync_->SetSetupInProgress(false);
330 352
331 // Verify we successfully finish startup and configuration. 353 // Verify we successfully finish startup and configuration.
332 EXPECT_TRUE(sync_->SyncActive()); 354 EXPECT_TRUE(sync_->SyncActive());
333 } 355 }
334 356
335 #if defined(OS_WIN) 357 #if defined(OS_WIN)
336 // http://crbug.com/396402 358 // http://crbug.com/396402
337 #define MAYBE_StartCrosNoCredentials DISABLED_StartCrosNoCredentials 359 #define MAYBE_StartCrosNoCredentials DISABLED_StartCrosNoCredentials
(...skipping 20 matching lines...) Expand all
358 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { 380 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) {
359 SetUpSyncBackendHost(); 381 SetUpSyncBackendHost();
360 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 382 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
361 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); 383 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted);
362 EXPECT_CALL(*data_type_manager, Configure(_, _)); 384 EXPECT_CALL(*data_type_manager, Configure(_, _));
363 EXPECT_CALL(*data_type_manager, state()). 385 EXPECT_CALL(*data_type_manager, state()).
364 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 386 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
365 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 387 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
366 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 388 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
367 389
368 IssueTestTokens(); 390 IssueTestTokens(
391 AccountTrackerServiceFactory::GetForProfile(profile_)
392 ->PickAccountIdForAccount("12345", kEmail));
369 sync_->Initialize(); 393 sync_->Initialize();
370 EXPECT_TRUE(sync_->SyncActive()); 394 EXPECT_TRUE(sync_->SyncActive());
371 } 395 }
372 396
373 #if defined(OS_WIN) 397 #if defined(OS_WIN)
374 // http://crbug.com/396402 398 // http://crbug.com/396402
375 #define MAYBE_StartNormal DISABLED_StartNormal 399 #define MAYBE_StartNormal DISABLED_StartNormal
376 #else 400 #else
377 #define MAYBE_StartNormal StartNormal 401 #define MAYBE_StartNormal StartNormal
378 #endif 402 #endif
379 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartNormal) { 403 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartNormal) {
380 // Pre load the tokens 404 // Pre load the tokens
381 SigninManagerFactory::GetForProfile(profile_)
382 ->SetAuthenticatedUsername("test_user@gmail.com");
383 CreateSyncService(); 405 CreateSyncService();
406 std::string account_id =
407 SimulateTestUserSignin(profile_, fake_signin(), sync_);
384 sync_->SetSyncSetupCompleted(); 408 sync_->SetSyncSetupCompleted();
385 SetUpSyncBackendHost(); 409 SetUpSyncBackendHost();
386 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 410 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
387 EXPECT_CALL(*data_type_manager, Configure(_, _)); 411 EXPECT_CALL(*data_type_manager, Configure(_, _));
388 EXPECT_CALL(*data_type_manager, state()). 412 EXPECT_CALL(*data_type_manager, state()).
389 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 413 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
390 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 414 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
391 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 415 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
392 416
393 IssueTestTokens(); 417 IssueTestTokens(account_id);
394 418
395 sync_->Initialize(); 419 sync_->Initialize();
396 } 420 }
397 421
398 // Test that we can recover from a case where a bug in the code resulted in 422 // Test that we can recover from a case where a bug in the code resulted in
399 // OnUserChoseDatatypes not being properly called and datatype preferences 423 // OnUserChoseDatatypes not being properly called and datatype preferences
400 // therefore being left unset. 424 // therefore being left unset.
401 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { 425 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) {
402 // Clear the datatype preference fields (simulating bug 154940). 426 // Clear the datatype preference fields (simulating bug 154940).
403 profile_->GetPrefs()->ClearPref( 427 profile_->GetPrefs()->ClearPref(
404 sync_driver::prefs::kSyncKeepEverythingSynced); 428 sync_driver::prefs::kSyncKeepEverythingSynced);
405 syncer::ModelTypeSet user_types = syncer::UserTypes(); 429 syncer::ModelTypeSet user_types = syncer::UserTypes();
406 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); 430 for (syncer::ModelTypeSet::Iterator iter = user_types.First();
407 iter.Good(); iter.Inc()) { 431 iter.Good(); iter.Inc()) {
408 profile_->GetPrefs()->ClearPref( 432 profile_->GetPrefs()->ClearPref(
409 sync_driver::SyncPrefs::GetPrefNameForDataType(iter.Get())); 433 sync_driver::SyncPrefs::GetPrefNameForDataType(iter.Get()));
410 } 434 }
411 435
412 // Pre load the tokens 436 // Pre load the tokens
413 SigninManagerFactory::GetForProfile(profile_)
414 ->SetAuthenticatedUsername("test_user@gmail.com");
415 CreateSyncService(); 437 CreateSyncService();
438 std::string account_id =
439 SimulateTestUserSignin(profile_, fake_signin(), sync_);
416 sync_->SetSyncSetupCompleted(); 440 sync_->SetSyncSetupCompleted();
417 SetUpSyncBackendHost(); 441 SetUpSyncBackendHost();
418 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 442 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
419 EXPECT_CALL(*data_type_manager, Configure(_, _)); 443 EXPECT_CALL(*data_type_manager, Configure(_, _));
420 EXPECT_CALL(*data_type_manager, state()). 444 EXPECT_CALL(*data_type_manager, state()).
421 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 445 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
422 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 446 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
423 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 447 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
424 448
425 IssueTestTokens(); 449 IssueTestTokens(account_id);
426 sync_->Initialize(); 450 sync_->Initialize();
427 451
428 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( 452 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean(
429 sync_driver::prefs::kSyncKeepEverythingSynced)); 453 sync_driver::prefs::kSyncKeepEverythingSynced));
430 } 454 }
431 455
432 // Verify that the recovery of datatype preferences doesn't overwrite a valid 456 // Verify that the recovery of datatype preferences doesn't overwrite a valid
433 // case where only bookmarks are enabled. 457 // case where only bookmarks are enabled.
434 #if defined(OS_WIN) 458 #if defined(OS_WIN)
435 // http://crbug.com/396402 459 // http://crbug.com/396402
436 #define MAYBE_StartDontRecoverDatatypePrefs DISABLED_StartDontRecoverDatatypePre fs 460 #define MAYBE_StartDontRecoverDatatypePrefs DISABLED_StartDontRecoverDatatypePre fs
437 #else 461 #else
438 #define MAYBE_StartDontRecoverDatatypePrefs StartDontRecoverDatatypePrefs 462 #define MAYBE_StartDontRecoverDatatypePrefs StartDontRecoverDatatypePrefs
439 #endif 463 #endif
440 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartDontRecoverDatatypePrefs) { 464 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartDontRecoverDatatypePrefs) {
441 // Explicitly set Keep Everything Synced to false and have only bookmarks 465 // Explicitly set Keep Everything Synced to false and have only bookmarks
442 // enabled. 466 // enabled.
443 profile_->GetPrefs()->SetBoolean( 467 profile_->GetPrefs()->SetBoolean(
444 sync_driver::prefs::kSyncKeepEverythingSynced, false); 468 sync_driver::prefs::kSyncKeepEverythingSynced, false);
445 469
446 // Pre load the tokens 470 // Pre load the tokens
447 SigninManagerFactory::GetForProfile(profile_)
448 ->SetAuthenticatedUsername("test_user@gmail.com");
449 CreateSyncService(); 471 CreateSyncService();
472 std::string account_id =
473 SimulateTestUserSignin(profile_, fake_signin(), sync_);
450 sync_->SetSyncSetupCompleted(); 474 sync_->SetSyncSetupCompleted();
451 SetUpSyncBackendHost(); 475 SetUpSyncBackendHost();
452 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 476 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
453 EXPECT_CALL(*data_type_manager, Configure(_, _)); 477 EXPECT_CALL(*data_type_manager, Configure(_, _));
454 EXPECT_CALL(*data_type_manager, state()). 478 EXPECT_CALL(*data_type_manager, state()).
455 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 479 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
456 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 480 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
457 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 481 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
458 IssueTestTokens(); 482 IssueTestTokens(account_id);
459 sync_->Initialize(); 483 sync_->Initialize();
460 484
461 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( 485 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(
462 sync_driver::prefs::kSyncKeepEverythingSynced)); 486 sync_driver::prefs::kSyncKeepEverythingSynced));
463 } 487 }
464 488
465 #if defined(OS_WIN) 489 #if defined(OS_WIN)
466 // http://crbug.com/396402 490 // http://crbug.com/396402
467 #define MAYBE_ManagedStartup DISABLED_ManagedStartup 491 #define MAYBE_ManagedStartup DISABLED_ManagedStartup
468 #else 492 #else
469 #define MAYBE_ManagedStartup ManagedStartup 493 #define MAYBE_ManagedStartup ManagedStartup
470 #endif 494 #endif
471 TEST_F(ProfileSyncServiceStartupTest, MAYBE_ManagedStartup) { 495 TEST_F(ProfileSyncServiceStartupTest, MAYBE_ManagedStartup) {
472 // Service should not be started by Initialize() since it's managed. 496 // Service should not be started by Initialize() since it's managed.
473 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 497 profile_->GetPrefs()->SetString(prefs::kGoogleServicesAccountId,
474 "test_user@gmail.com"); 498 kEmail);
475 CreateSyncService(); 499 CreateSyncService();
476 500
477 // Disable sync through policy. 501 // Disable sync through policy.
478 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true); 502 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true);
479 EXPECT_CALL(*components_factory_mock(), 503 EXPECT_CALL(*components_factory_mock(),
480 CreateDataTypeManager(_, _, _, _, _)).Times(0); 504 CreateDataTypeManager(_, _, _, _, _)).Times(0);
481 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 505 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
482 506
483 sync_->Initialize(); 507 sync_->Initialize();
484 } 508 }
485 509
486 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { 510 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) {
487 SigninManagerFactory::GetForProfile(profile_)
488 ->SetAuthenticatedUsername("test_user@gmail.com");
489 CreateSyncService(); 511 CreateSyncService();
512 std::string account_id =
513 SimulateTestUserSignin(profile_, fake_signin(), sync_);
490 sync_->SetSyncSetupCompleted(); 514 sync_->SetSyncSetupCompleted();
491 SetUpSyncBackendHost(); 515 SetUpSyncBackendHost();
492 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 516 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
493 EXPECT_CALL(*data_type_manager, Configure(_, _)); 517 EXPECT_CALL(*data_type_manager, Configure(_, _));
494 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 518 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
495 IssueTestTokens(); 519 IssueTestTokens(account_id);
496 sync_->Initialize(); 520 sync_->Initialize();
497 521
498 // The service should stop when switching to managed mode. 522 // The service should stop when switching to managed mode.
499 Mock::VerifyAndClearExpectations(data_type_manager); 523 Mock::VerifyAndClearExpectations(data_type_manager);
500 EXPECT_CALL(*data_type_manager, state()). 524 EXPECT_CALL(*data_type_manager, state()).
501 WillOnce(Return(DataTypeManager::CONFIGURED)); 525 WillOnce(Return(DataTypeManager::CONFIGURED));
502 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 526 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
503 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 527 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
504 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true); 528 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true);
505 529
506 // When switching back to unmanaged, the state should change, but the service 530 // When switching back to unmanaged, the state should change, but the service
507 // should not start up automatically (kSyncSetupCompleted will be false). 531 // should not start up automatically (kSyncSetupCompleted will be false).
508 Mock::VerifyAndClearExpectations(data_type_manager); 532 Mock::VerifyAndClearExpectations(data_type_manager);
509 EXPECT_CALL(*components_factory_mock(), 533 EXPECT_CALL(*components_factory_mock(),
510 CreateDataTypeManager(_, _, _, _, _)).Times(0); 534 CreateDataTypeManager(_, _, _, _, _)).Times(0);
511 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 535 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
512 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncManaged); 536 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncManaged);
513 } 537 }
514 538
515 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { 539 TEST_F(ProfileSyncServiceStartupTest, StartFailure) {
516 SigninManagerFactory::GetForProfile(profile_)
517 ->SetAuthenticatedUsername("test_user@gmail.com");
518 CreateSyncService(); 540 CreateSyncService();
541 std::string account_id =
542 SimulateTestUserSignin(profile_, fake_signin(), sync_);
519 sync_->SetSyncSetupCompleted(); 543 sync_->SetSyncSetupCompleted();
520 SetUpSyncBackendHost(); 544 SetUpSyncBackendHost();
521 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 545 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
522 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; 546 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED;
523 DataTypeManager::ConfigureResult result( 547 DataTypeManager::ConfigureResult result(
524 status, 548 status,
525 syncer::ModelTypeSet()); 549 syncer::ModelTypeSet());
526 EXPECT_CALL(*data_type_manager, Configure(_, _)).WillRepeatedly( 550 EXPECT_CALL(*data_type_manager, Configure(_, _)).WillRepeatedly(
527 DoAll(InvokeOnConfigureStart(sync_), 551 DoAll(InvokeOnConfigureStart(sync_),
528 InvokeOnConfigureDone( 552 InvokeOnConfigureDone(
529 sync_, 553 sync_,
530 base::Bind(&ProfileSyncServiceStartupTest::SetError, 554 base::Bind(&ProfileSyncServiceStartupTest::SetError,
531 base::Unretained(this)), 555 base::Unretained(this)),
532 result))); 556 result)));
533 EXPECT_CALL(*data_type_manager, state()). 557 EXPECT_CALL(*data_type_manager, state()).
534 WillOnce(Return(DataTypeManager::STOPPED)); 558 WillOnce(Return(DataTypeManager::STOPPED));
535 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 559 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
536 IssueTestTokens(); 560 IssueTestTokens(account_id);
537 sync_->Initialize(); 561 sync_->Initialize();
538 EXPECT_TRUE(sync_->HasUnrecoverableError()); 562 EXPECT_TRUE(sync_->HasUnrecoverableError());
539 } 563 }
540 564
541 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { 565 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) {
542 // Pre load the tokens 566 // Pre load the tokens
543 SigninManagerFactory::GetForProfile(profile_)
544 ->SetAuthenticatedUsername("test_user@gmail.com");
545 CreateSyncService(); 567 CreateSyncService();
568 std::string account_id =
569 SimulateTestUserSignin(profile_, fake_signin(), sync_);
546 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); 570 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost();
547 mock_sbh->set_fail_initial_download(true); 571 mock_sbh->set_fail_initial_download(true);
548 572
549 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); 573 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted);
550 574
551 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 575 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
552 sync_->Initialize(); 576 sync_->Initialize();
553 577
554 sync_->SetSetupInProgress(true); 578 sync_->SetSetupInProgress(true);
555 IssueTestTokens(); 579 IssueTestTokens(account_id);
556 sync_->SetSetupInProgress(false); 580 sync_->SetSetupInProgress(false);
557 EXPECT_FALSE(sync_->SyncActive()); 581 EXPECT_FALSE(sync_->SyncActive());
558 } 582 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698