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

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: Fix order of init 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 17 matching lines...) Expand all
192 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest { 210 class ProfileSyncServiceStartupCrosTest : public ProfileSyncServiceStartupTest {
193 public: 211 public:
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(
221 content::BrowserContext* context) {
Nicolas Zea 2015/04/10 20:15:28 nit: fit on previous line?
Roger Tawa OOO till Jul 10th 2015/04/11 00:23:08 Done.
203 Profile* profile = static_cast<Profile*>(context); 222 Profile* profile = static_cast<Profile*>(context);
204 SigninManagerBase* signin = 223 FakeSigninManagerForTesting* signin =
205 SigninManagerFactory::GetForProfile(profile); 224 static_cast<FakeSigninManagerForTesting*>(
206 signin->SetAuthenticatedUsername("test_user@gmail.com"); 225 SigninManagerFactory::GetForProfile(profile));
226 SimulateTestUserSignin(profile, signin, nullptr);
207 ProfileOAuth2TokenService* oauth2_token_service = 227 ProfileOAuth2TokenService* oauth2_token_service =
208 ProfileOAuth2TokenServiceFactory::GetForProfile(profile); 228 ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
209 EXPECT_TRUE(signin->IsAuthenticated()); 229 EXPECT_TRUE(signin->IsAuthenticated());
210 return new TestProfileSyncServiceNoBackup( 230 return new TestProfileSyncServiceNoBackup(
211 scoped_ptr<ProfileSyncComponentsFactory>( 231 scoped_ptr<ProfileSyncComponentsFactory>(
212 new ProfileSyncComponentsFactoryMock()), 232 new ProfileSyncComponentsFactoryMock()),
213 profile, 233 profile,
214 make_scoped_ptr(new SupervisedUserSigninManagerWrapper(profile, 234 make_scoped_ptr(new SupervisedUserSigninManagerWrapper(profile,
215 signin)), 235 signin)),
216 oauth2_token_service, 236 oauth2_token_service,
(...skipping 26 matching lines...) Expand all
243 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); 263 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1);
244 EXPECT_CALL(*data_type_manager, state()). 264 EXPECT_CALL(*data_type_manager, state()).
245 WillOnce(Return(DataTypeManager::CONFIGURED)). 265 WillOnce(Return(DataTypeManager::CONFIGURED)).
246 WillOnce(Return(DataTypeManager::CONFIGURED)); 266 WillOnce(Return(DataTypeManager::CONFIGURED));
247 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 267 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
248 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 268 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
249 269
250 sync_->SetSetupInProgress(true); 270 sync_->SetSetupInProgress(true);
251 271
252 // Simulate successful signin as test_user. 272 // Simulate successful signin as test_user.
253 SimulateTestUserSignin(); 273 std::string account_id =
274 SimulateTestUserSignin(profile_, fake_signin(), sync_);
254 // Create some tokens in the token service. 275 // Create some tokens in the token service.
255 IssueTestTokens(); 276 IssueTestTokens(account_id);
256 277
257 // Simulate the UI telling sync it has finished setting up. 278 // Simulate the UI telling sync it has finished setting up.
258 sync_->SetSetupInProgress(false); 279 sync_->SetSetupInProgress(false);
259 EXPECT_TRUE(sync_->SyncActive()); 280 EXPECT_TRUE(sync_->SyncActive());
260 } 281 }
261 282
262 // TODO(pavely): Reenable test once android is switched to oauth2. 283 // TODO(pavely): Reenable test once android is switched to oauth2.
263 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { 284 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) {
264 // We've never completed startup. 285 // We've never completed startup.
265 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); 286 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted);
(...skipping 10 matching lines...) Expand all
276 EXPECT_EQ( 297 EXPECT_EQ(
277 0, 298 0,
278 profile_->GetPrefs()->GetInt64(sync_driver::prefs::kSyncLastSyncedTime)); 299 profile_->GetPrefs()->GetInt64(sync_driver::prefs::kSyncLastSyncedTime));
279 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( 300 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(
280 sync_driver::prefs::kSyncHasSetupCompleted)); 301 sync_driver::prefs::kSyncHasSetupCompleted));
281 302
282 // Then start things up. 303 // Then start things up.
283 sync_->SetSetupInProgress(true); 304 sync_->SetSetupInProgress(true);
284 305
285 // Simulate successful signin as test_user. 306 // Simulate successful signin as test_user.
286 SimulateTestUserSignin(); 307 std::string account_id =
308 SimulateTestUserSignin(profile_, fake_signin(), sync_);
287 309
288 ProfileOAuth2TokenService* token_service = 310 ProfileOAuth2TokenService* token_service =
289 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_); 311 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_);
290 token_service->LoadCredentials("test_user@gmail.com"); 312 token_service->LoadCredentials(kEmail);
Nicolas Zea 2015/04/10 20:15:28 isn't this supposed to be an account id now?
Roger Tawa OOO till Jul 10th 2015/04/11 00:23:08 Good catch! Fixed.
291 313
292 sync_->SetSetupInProgress(false); 314 sync_->SetSetupInProgress(false);
293 // ProfileSyncService should try to start by requesting access token. 315 // ProfileSyncService should try to start by requesting access token.
294 // This request should fail as login token was not issued. 316 // This request should fail as login token was not issued.
295 EXPECT_FALSE(sync_->SyncActive()); 317 EXPECT_FALSE(sync_->SyncActive());
296 EXPECT_EQ(GoogleServiceAuthError::USER_NOT_SIGNED_UP, 318 EXPECT_EQ(GoogleServiceAuthError::USER_NOT_SIGNED_UP,
297 sync_->GetAuthError().state()); 319 sync_->GetAuthError().state());
298 } 320 }
299 321
300 // TODO(pavely): Reenable test once android is switched to oauth2. 322 // TODO(pavely): Reenable test once android is switched to oauth2.
301 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartInvalidCredentials) { 323 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartInvalidCredentials) {
302 sync_->signin()->SetAuthenticatedUsername("test_user@gmail.com");
303 CreateSyncService(); 324 CreateSyncService();
325 std::string account_id =
326 SimulateTestUserSignin(profile_, fake_signin(), sync_);
304 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); 327 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost();
305 328
306 // Tell the backend to stall while downloading control types (simulating an 329 // Tell the backend to stall while downloading control types (simulating an
307 // auth error). 330 // auth error).
308 mock_sbh->set_fail_initial_download(true); 331 mock_sbh->set_fail_initial_download(true);
309 332
310 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 333 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
311 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); 334 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0);
312 335
313 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 336 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
314 sync_->Initialize(); 337 sync_->Initialize();
315 EXPECT_FALSE(sync_->SyncActive()); 338 EXPECT_FALSE(sync_->SyncActive());
316 Mock::VerifyAndClearExpectations(data_type_manager); 339 Mock::VerifyAndClearExpectations(data_type_manager);
317 340
318 // Update the credentials, unstalling the backend. 341 // Update the credentials, unstalling the backend.
319 EXPECT_CALL(*data_type_manager, Configure(_, _)); 342 EXPECT_CALL(*data_type_manager, Configure(_, _));
320 EXPECT_CALL(*data_type_manager, state()). 343 EXPECT_CALL(*data_type_manager, state()).
321 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 344 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
322 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 345 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
323 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 346 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
324 sync_->SetSetupInProgress(true); 347 sync_->SetSetupInProgress(true);
325 348
326 // Simulate successful signin. 349 // Simulate successful signin.
327 SimulateTestUserSignin(); 350 SimulateTestUserSignin(profile_, fake_signin(), sync_);
328 351
329 sync_->SetSetupInProgress(false); 352 sync_->SetSetupInProgress(false);
330 353
331 // Verify we successfully finish startup and configuration. 354 // Verify we successfully finish startup and configuration.
332 EXPECT_TRUE(sync_->SyncActive()); 355 EXPECT_TRUE(sync_->SyncActive());
333 } 356 }
334 357
335 #if defined(OS_WIN) 358 #if defined(OS_WIN)
336 // http://crbug.com/396402 359 // http://crbug.com/396402
337 #define MAYBE_StartCrosNoCredentials DISABLED_StartCrosNoCredentials 360 #define MAYBE_StartCrosNoCredentials DISABLED_StartCrosNoCredentials
(...skipping 20 matching lines...) Expand all
358 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { 381 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) {
359 SetUpSyncBackendHost(); 382 SetUpSyncBackendHost();
360 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 383 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
361 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); 384 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted);
362 EXPECT_CALL(*data_type_manager, Configure(_, _)); 385 EXPECT_CALL(*data_type_manager, Configure(_, _));
363 EXPECT_CALL(*data_type_manager, state()). 386 EXPECT_CALL(*data_type_manager, state()).
364 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 387 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
365 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 388 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
366 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 389 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
367 390
368 IssueTestTokens(); 391 IssueTestTokens(
392 AccountTrackerServiceFactory::GetForProfile(profile_)
393 ->PickAccountIdForAccount("12345", kEmail));
369 sync_->Initialize(); 394 sync_->Initialize();
370 EXPECT_TRUE(sync_->SyncActive()); 395 EXPECT_TRUE(sync_->SyncActive());
371 } 396 }
372 397
373 #if defined(OS_WIN) 398 #if defined(OS_WIN)
374 // http://crbug.com/396402 399 // http://crbug.com/396402
375 #define MAYBE_StartNormal DISABLED_StartNormal 400 #define MAYBE_StartNormal DISABLED_StartNormal
376 #else 401 #else
377 #define MAYBE_StartNormal StartNormal 402 #define MAYBE_StartNormal StartNormal
378 #endif 403 #endif
379 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartNormal) { 404 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartNormal) {
380 // Pre load the tokens 405 // Pre load the tokens
381 SigninManagerFactory::GetForProfile(profile_)
382 ->SetAuthenticatedUsername("test_user@gmail.com");
383 CreateSyncService(); 406 CreateSyncService();
407 std::string account_id =
408 SimulateTestUserSignin(profile_, fake_signin(), sync_);
384 sync_->SetSyncSetupCompleted(); 409 sync_->SetSyncSetupCompleted();
385 SetUpSyncBackendHost(); 410 SetUpSyncBackendHost();
386 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 411 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
387 EXPECT_CALL(*data_type_manager, Configure(_, _)); 412 EXPECT_CALL(*data_type_manager, Configure(_, _));
388 EXPECT_CALL(*data_type_manager, state()). 413 EXPECT_CALL(*data_type_manager, state()).
389 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 414 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
390 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 415 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
391 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 416 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
392 417
393 IssueTestTokens(); 418 IssueTestTokens(account_id);
394 419
395 sync_->Initialize(); 420 sync_->Initialize();
396 } 421 }
397 422
398 // Test that we can recover from a case where a bug in the code resulted in 423 // 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 424 // OnUserChoseDatatypes not being properly called and datatype preferences
400 // therefore being left unset. 425 // therefore being left unset.
401 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { 426 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) {
402 // Clear the datatype preference fields (simulating bug 154940). 427 // Clear the datatype preference fields (simulating bug 154940).
403 profile_->GetPrefs()->ClearPref( 428 profile_->GetPrefs()->ClearPref(
404 sync_driver::prefs::kSyncKeepEverythingSynced); 429 sync_driver::prefs::kSyncKeepEverythingSynced);
405 syncer::ModelTypeSet user_types = syncer::UserTypes(); 430 syncer::ModelTypeSet user_types = syncer::UserTypes();
406 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); 431 for (syncer::ModelTypeSet::Iterator iter = user_types.First();
407 iter.Good(); iter.Inc()) { 432 iter.Good(); iter.Inc()) {
408 profile_->GetPrefs()->ClearPref( 433 profile_->GetPrefs()->ClearPref(
409 sync_driver::SyncPrefs::GetPrefNameForDataType(iter.Get())); 434 sync_driver::SyncPrefs::GetPrefNameForDataType(iter.Get()));
410 } 435 }
411 436
412 // Pre load the tokens 437 // Pre load the tokens
413 SigninManagerFactory::GetForProfile(profile_)
414 ->SetAuthenticatedUsername("test_user@gmail.com");
415 CreateSyncService(); 438 CreateSyncService();
439 std::string account_id =
440 SimulateTestUserSignin(profile_, fake_signin(), sync_);
416 sync_->SetSyncSetupCompleted(); 441 sync_->SetSyncSetupCompleted();
417 SetUpSyncBackendHost(); 442 SetUpSyncBackendHost();
418 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 443 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
419 EXPECT_CALL(*data_type_manager, Configure(_, _)); 444 EXPECT_CALL(*data_type_manager, Configure(_, _));
420 EXPECT_CALL(*data_type_manager, state()). 445 EXPECT_CALL(*data_type_manager, state()).
421 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 446 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
422 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 447 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
423 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 448 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
424 449
425 IssueTestTokens(); 450 IssueTestTokens(account_id);
426 sync_->Initialize(); 451 sync_->Initialize();
427 452
428 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( 453 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean(
429 sync_driver::prefs::kSyncKeepEverythingSynced)); 454 sync_driver::prefs::kSyncKeepEverythingSynced));
430 } 455 }
431 456
432 // Verify that the recovery of datatype preferences doesn't overwrite a valid 457 // Verify that the recovery of datatype preferences doesn't overwrite a valid
433 // case where only bookmarks are enabled. 458 // case where only bookmarks are enabled.
434 #if defined(OS_WIN) 459 #if defined(OS_WIN)
435 // http://crbug.com/396402 460 // http://crbug.com/396402
436 #define MAYBE_StartDontRecoverDatatypePrefs DISABLED_StartDontRecoverDatatypePre fs 461 #define MAYBE_StartDontRecoverDatatypePrefs DISABLED_StartDontRecoverDatatypePre fs
437 #else 462 #else
438 #define MAYBE_StartDontRecoverDatatypePrefs StartDontRecoverDatatypePrefs 463 #define MAYBE_StartDontRecoverDatatypePrefs StartDontRecoverDatatypePrefs
439 #endif 464 #endif
440 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartDontRecoverDatatypePrefs) { 465 TEST_F(ProfileSyncServiceStartupTest, MAYBE_StartDontRecoverDatatypePrefs) {
441 // Explicitly set Keep Everything Synced to false and have only bookmarks 466 // Explicitly set Keep Everything Synced to false and have only bookmarks
442 // enabled. 467 // enabled.
443 profile_->GetPrefs()->SetBoolean( 468 profile_->GetPrefs()->SetBoolean(
444 sync_driver::prefs::kSyncKeepEverythingSynced, false); 469 sync_driver::prefs::kSyncKeepEverythingSynced, false);
445 470
446 // Pre load the tokens 471 // Pre load the tokens
447 SigninManagerFactory::GetForProfile(profile_)
448 ->SetAuthenticatedUsername("test_user@gmail.com");
449 CreateSyncService(); 472 CreateSyncService();
473 std::string account_id =
474 SimulateTestUserSignin(profile_, fake_signin(), sync_);
450 sync_->SetSyncSetupCompleted(); 475 sync_->SetSyncSetupCompleted();
451 SetUpSyncBackendHost(); 476 SetUpSyncBackendHost();
452 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 477 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
453 EXPECT_CALL(*data_type_manager, Configure(_, _)); 478 EXPECT_CALL(*data_type_manager, Configure(_, _));
454 EXPECT_CALL(*data_type_manager, state()). 479 EXPECT_CALL(*data_type_manager, state()).
455 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); 480 WillRepeatedly(Return(DataTypeManager::CONFIGURED));
456 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 481 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
457 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 482 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
458 IssueTestTokens(); 483 IssueTestTokens(account_id);
459 sync_->Initialize(); 484 sync_->Initialize();
460 485
461 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( 486 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(
462 sync_driver::prefs::kSyncKeepEverythingSynced)); 487 sync_driver::prefs::kSyncKeepEverythingSynced));
463 } 488 }
464 489
465 #if defined(OS_WIN) 490 #if defined(OS_WIN)
466 // http://crbug.com/396402 491 // http://crbug.com/396402
467 #define MAYBE_ManagedStartup DISABLED_ManagedStartup 492 #define MAYBE_ManagedStartup DISABLED_ManagedStartup
468 #else 493 #else
469 #define MAYBE_ManagedStartup ManagedStartup 494 #define MAYBE_ManagedStartup ManagedStartup
470 #endif 495 #endif
471 TEST_F(ProfileSyncServiceStartupTest, MAYBE_ManagedStartup) { 496 TEST_F(ProfileSyncServiceStartupTest, MAYBE_ManagedStartup) {
472 // Service should not be started by Initialize() since it's managed. 497 // Service should not be started by Initialize() since it's managed.
473 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 498 profile_->GetPrefs()->SetString(prefs::kGoogleServicesAccountId,
474 "test_user@gmail.com"); 499 kEmail);
475 CreateSyncService(); 500 CreateSyncService();
476 501
477 // Disable sync through policy. 502 // Disable sync through policy.
478 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true); 503 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true);
479 EXPECT_CALL(*components_factory_mock(), 504 EXPECT_CALL(*components_factory_mock(),
480 CreateDataTypeManager(_, _, _, _, _)).Times(0); 505 CreateDataTypeManager(_, _, _, _, _)).Times(0);
481 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 506 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
482 507
483 sync_->Initialize(); 508 sync_->Initialize();
484 } 509 }
485 510
486 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { 511 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) {
487 SigninManagerFactory::GetForProfile(profile_)
488 ->SetAuthenticatedUsername("test_user@gmail.com");
489 CreateSyncService(); 512 CreateSyncService();
513 std::string account_id =
514 SimulateTestUserSignin(profile_, fake_signin(), sync_);
490 sync_->SetSyncSetupCompleted(); 515 sync_->SetSyncSetupCompleted();
491 SetUpSyncBackendHost(); 516 SetUpSyncBackendHost();
492 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 517 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
493 EXPECT_CALL(*data_type_manager, Configure(_, _)); 518 EXPECT_CALL(*data_type_manager, Configure(_, _));
494 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 519 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
495 IssueTestTokens(); 520 IssueTestTokens(account_id);
496 sync_->Initialize(); 521 sync_->Initialize();
497 522
498 // The service should stop when switching to managed mode. 523 // The service should stop when switching to managed mode.
499 Mock::VerifyAndClearExpectations(data_type_manager); 524 Mock::VerifyAndClearExpectations(data_type_manager);
500 EXPECT_CALL(*data_type_manager, state()). 525 EXPECT_CALL(*data_type_manager, state()).
501 WillOnce(Return(DataTypeManager::CONFIGURED)); 526 WillOnce(Return(DataTypeManager::CONFIGURED));
502 EXPECT_CALL(*data_type_manager, Stop()).Times(1); 527 EXPECT_CALL(*data_type_manager, Stop()).Times(1);
503 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 528 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
504 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true); 529 profile_->GetPrefs()->SetBoolean(sync_driver::prefs::kSyncManaged, true);
505 530
506 // When switching back to unmanaged, the state should change, but the service 531 // When switching back to unmanaged, the state should change, but the service
507 // should not start up automatically (kSyncSetupCompleted will be false). 532 // should not start up automatically (kSyncSetupCompleted will be false).
508 Mock::VerifyAndClearExpectations(data_type_manager); 533 Mock::VerifyAndClearExpectations(data_type_manager);
509 EXPECT_CALL(*components_factory_mock(), 534 EXPECT_CALL(*components_factory_mock(),
510 CreateDataTypeManager(_, _, _, _, _)).Times(0); 535 CreateDataTypeManager(_, _, _, _, _)).Times(0);
511 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 536 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
512 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncManaged); 537 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncManaged);
513 } 538 }
514 539
515 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { 540 TEST_F(ProfileSyncServiceStartupTest, StartFailure) {
516 SigninManagerFactory::GetForProfile(profile_)
517 ->SetAuthenticatedUsername("test_user@gmail.com");
518 CreateSyncService(); 541 CreateSyncService();
542 std::string account_id =
543 SimulateTestUserSignin(profile_, fake_signin(), sync_);
519 sync_->SetSyncSetupCompleted(); 544 sync_->SetSyncSetupCompleted();
520 SetUpSyncBackendHost(); 545 SetUpSyncBackendHost();
521 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); 546 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
522 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; 547 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED;
523 DataTypeManager::ConfigureResult result( 548 DataTypeManager::ConfigureResult result(
524 status, 549 status,
525 syncer::ModelTypeSet()); 550 syncer::ModelTypeSet());
526 EXPECT_CALL(*data_type_manager, Configure(_, _)).WillRepeatedly( 551 EXPECT_CALL(*data_type_manager, Configure(_, _)).WillRepeatedly(
527 DoAll(InvokeOnConfigureStart(sync_), 552 DoAll(InvokeOnConfigureStart(sync_),
528 InvokeOnConfigureDone( 553 InvokeOnConfigureDone(
529 sync_, 554 sync_,
530 base::Bind(&ProfileSyncServiceStartupTest::SetError, 555 base::Bind(&ProfileSyncServiceStartupTest::SetError,
531 base::Unretained(this)), 556 base::Unretained(this)),
532 result))); 557 result)));
533 EXPECT_CALL(*data_type_manager, state()). 558 EXPECT_CALL(*data_type_manager, state()).
534 WillOnce(Return(DataTypeManager::STOPPED)); 559 WillOnce(Return(DataTypeManager::STOPPED));
535 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 560 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
536 IssueTestTokens(); 561 IssueTestTokens(account_id);
537 sync_->Initialize(); 562 sync_->Initialize();
538 EXPECT_TRUE(sync_->HasUnrecoverableError()); 563 EXPECT_TRUE(sync_->HasUnrecoverableError());
539 } 564 }
540 565
541 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { 566 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) {
542 // Pre load the tokens 567 // Pre load the tokens
543 SigninManagerFactory::GetForProfile(profile_)
544 ->SetAuthenticatedUsername("test_user@gmail.com");
545 CreateSyncService(); 568 CreateSyncService();
569 std::string account_id =
570 SimulateTestUserSignin(profile_, fake_signin(), sync_);
546 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); 571 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost();
547 mock_sbh->set_fail_initial_download(true); 572 mock_sbh->set_fail_initial_download(true);
548 573
549 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted); 574 profile_->GetPrefs()->ClearPref(sync_driver::prefs::kSyncHasSetupCompleted);
550 575
551 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); 576 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
552 sync_->Initialize(); 577 sync_->Initialize();
553 578
554 sync_->SetSetupInProgress(true); 579 sync_->SetSetupInProgress(true);
555 IssueTestTokens(); 580 IssueTestTokens(account_id);
556 sync_->SetSetupInProgress(false); 581 sync_->SetSetupInProgress(false);
557 EXPECT_FALSE(sync_->SyncActive()); 582 EXPECT_FALSE(sync_->SyncActive());
558 } 583 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698