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

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

Issue 3913005: sync: enable password sync by default. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/chrome/debug
Patch Set: fix mac again Created 10 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <vector> 5 #include <vector>
6 6
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 8
9 #include "base/task.h" 9 #include "base/task.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 WillRepeatedly(Return(password_store_.get())); 178 WillRepeatedly(Return(password_store_.get()));
179 179
180 EXPECT_CALL(observer_, 180 EXPECT_CALL(observer_,
181 Observe( 181 Observe(
182 NotificationType(NotificationType::SYNC_CONFIGURE_DONE),_,_)); 182 NotificationType(NotificationType::SYNC_CONFIGURE_DONE),_,_));
183 183
184 service_->RegisterDataTypeController(data_type_controller); 184 service_->RegisterDataTypeController(data_type_controller);
185 service_->Initialize(); 185 service_->Initialize();
186 MessageLoop::current()->Run(); 186 MessageLoop::current()->Run();
187 187
188 // Only set the passphrase if we actually created the password and nigori 188
189 // root nodes. 189 EXPECT_CALL(observer_,
190 if (root_task) { 190 Observe(
191 EXPECT_CALL(observer_, 191 NotificationType(NotificationType::SYNC_PASSPHRASE_ACCEPTED),
192 Observe( 192 _,_)).
193 NotificationType(NotificationType::SYNC_PASSPHRASE_ACCEPTED), 193 WillOnce(InvokeTask(node_task));
194 _,_)). 194 EXPECT_CALL(observer_,
195 WillOnce(InvokeTask(node_task)); 195 Observe(
196 EXPECT_CALL(observer_, 196 NotificationType(NotificationType::SYNC_CONFIGURE_DONE),
197 Observe( 197 _,_)).
198 NotificationType(NotificationType::SYNC_CONFIGURE_DONE), 198 WillOnce(QuitUIMessageLoop());
199 _,_)). 199 service_->SetPassphrase("foo");
200 WillOnce(QuitUIMessageLoop()); 200 MessageLoop::current()->Run();
201 service_->SetPassphrase("foo"); 201
202 MessageLoop::current()->Run();
203 }
204 } 202 }
205 } 203 }
206 204
207 void AddPasswordSyncNode(const PasswordForm& entry) { 205 void AddPasswordSyncNode(const PasswordForm& entry) {
208 sync_api::WriteTransaction trans( 206 sync_api::WriteTransaction trans(
209 service_->backend()->GetUserShareHandle()); 207 service_->backend()->GetUserShareHandle());
210 sync_api::ReadNode password_root(&trans); 208 sync_api::ReadNode password_root(&trans);
211 ASSERT_TRUE(password_root.InitByTagLookup(browser_sync::kPasswordTag)); 209 ASSERT_TRUE(password_root.InitByTagLookup(browser_sync::kPasswordTag));
212 210
213 sync_api::WriteNode node(&trans); 211 sync_api::WriteNode node(&trans);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 261
264 friend class AddPasswordEntriesTask; 262 friend class AddPasswordEntriesTask;
265 263
266 BrowserThread db_thread_; 264 BrowserThread db_thread_;
267 scoped_refptr<ThreadNotificationService> notification_service_; 265 scoped_refptr<ThreadNotificationService> notification_service_;
268 NotificationObserverMock observer_; 266 NotificationObserverMock observer_;
269 ProfileMock profile_; 267 ProfileMock profile_;
270 scoped_refptr<MockPasswordStore> password_store_; 268 scoped_refptr<MockPasswordStore> password_store_;
271 NotificationRegistrar registrar_; 269 NotificationRegistrar registrar_;
272 270
273 TestIdFactory ids_;
274 };
275
276 class CreatePasswordRootTask : public Task {
277 public:
278 explicit CreatePasswordRootTask(AbstractProfileSyncServiceTest* test)
279 : test_(test) {
280 }
281
282 virtual void Run() {
283 test_->CreateRoot(syncable::NIGORI);
284 test_->CreateRoot(syncable::PASSWORDS);
285 }
286
287 private:
288 AbstractProfileSyncServiceTest* test_;
289 }; 271 };
290 272
291 class AddPasswordEntriesTask : public Task { 273 class AddPasswordEntriesTask : public Task {
292 public: 274 public:
293 AddPasswordEntriesTask(ProfileSyncServicePasswordTest* test, 275 AddPasswordEntriesTask(ProfileSyncServicePasswordTest* test,
294 const std::vector<PasswordForm>& entries) 276 const std::vector<PasswordForm>& entries)
295 : test_(test), entries_(entries) { 277 : test_(test), entries_(entries) {
296 } 278 }
297 279
298 virtual void Run() { 280 virtual void Run() {
299 for (size_t i = 0; i < entries_.size(); ++i) { 281 for (size_t i = 0; i < entries_.size(); ++i) {
300 test_->AddPasswordSyncNode(entries_[i]); 282 test_->AddPasswordSyncNode(entries_[i]);
301 } 283 }
302 } 284 }
303 285
304 private: 286 private:
305 ProfileSyncServicePasswordTest* test_; 287 ProfileSyncServicePasswordTest* test_;
306 const std::vector<PasswordForm>& entries_; 288 const std::vector<PasswordForm>& entries_;
307 }; 289 };
308 290
309 TEST_F(ProfileSyncServicePasswordTest, FailModelAssociation) { 291 TEST_F(ProfileSyncServicePasswordTest, FailModelAssociation) {
310 // Create the nigori root node so that password model association is 292 StartSyncService(NULL, NULL, 1, 2);
311 // attempted, but not the password root node so that it fails.
312 CreateRootTask task(this, syncable::NIGORI);
313 StartSyncService(&task, NULL, 1, 2);
314 EXPECT_TRUE(service_->unrecoverable_error_detected()); 293 EXPECT_TRUE(service_->unrecoverable_error_detected());
315 } 294 }
316 295
317 TEST_F(ProfileSyncServicePasswordTest, EmptyNativeEmptySync) { 296 TEST_F(ProfileSyncServicePasswordTest, EmptyNativeEmptySync) {
318 EXPECT_CALL(*password_store_, FillAutofillableLogins(_)) 297 EXPECT_CALL(*password_store_, FillAutofillableLogins(_))
319 .WillOnce(Return(true)); 298 .WillOnce(Return(true));
320 EXPECT_CALL(*password_store_, FillBlacklistLogins(_)) 299 EXPECT_CALL(*password_store_, FillBlacklistLogins(_))
321 .WillOnce(Return(true)); 300 .WillOnce(Return(true));
322 SetIdleChangeProcessorExpectations(); 301 SetIdleChangeProcessorExpectations();
323 CreatePasswordRootTask task(this); 302 CreateRootTask task(this, syncable::PASSWORDS);
324 StartSyncService(&task, NULL); 303 StartSyncService(&task, NULL);
325 std::vector<PasswordForm> sync_entries; 304 std::vector<PasswordForm> sync_entries;
326 GetPasswordEntriesFromSyncDB(&sync_entries); 305 GetPasswordEntriesFromSyncDB(&sync_entries);
327 EXPECT_EQ(0U, sync_entries.size()); 306 EXPECT_EQ(0U, sync_entries.size());
328 } 307 }
329 308
330 TEST_F(ProfileSyncServicePasswordTest, HasNativeEntriesEmptySync) { 309 TEST_F(ProfileSyncServicePasswordTest, HasNativeEntriesEmptySync) {
331 std::vector<PasswordForm*> forms; 310 std::vector<PasswordForm*> forms;
332 std::vector<PasswordForm> expected_forms; 311 std::vector<PasswordForm> expected_forms;
333 PasswordForm* new_form = new PasswordForm; 312 PasswordForm* new_form = new PasswordForm;
334 new_form->scheme = PasswordForm::SCHEME_HTML; 313 new_form->scheme = PasswordForm::SCHEME_HTML;
335 new_form->signon_realm = "pie"; 314 new_form->signon_realm = "pie";
336 new_form->origin = GURL("http://pie.com"); 315 new_form->origin = GURL("http://pie.com");
337 new_form->action = GURL("http://pie.com/submit"); 316 new_form->action = GURL("http://pie.com/submit");
338 new_form->username_element = UTF8ToUTF16("name"); 317 new_form->username_element = UTF8ToUTF16("name");
339 new_form->username_value = UTF8ToUTF16("tom"); 318 new_form->username_value = UTF8ToUTF16("tom");
340 new_form->password_element = UTF8ToUTF16("cork"); 319 new_form->password_element = UTF8ToUTF16("cork");
341 new_form->password_value = UTF8ToUTF16("password1"); 320 new_form->password_value = UTF8ToUTF16("password1");
342 new_form->ssl_valid = true; 321 new_form->ssl_valid = true;
343 new_form->preferred = false; 322 new_form->preferred = false;
344 new_form->date_created = base::Time::FromInternalValue(1234); 323 new_form->date_created = base::Time::FromInternalValue(1234);
345 new_form->blacklisted_by_user = false; 324 new_form->blacklisted_by_user = false;
346 forms.push_back(new_form); 325 forms.push_back(new_form);
347 expected_forms.push_back(*new_form); 326 expected_forms.push_back(*new_form);
348 EXPECT_CALL(*password_store_, FillAutofillableLogins(_)) 327 EXPECT_CALL(*password_store_, FillAutofillableLogins(_))
349 .WillOnce(DoAll(SetArgumentPointee<0>(forms), Return(true))); 328 .WillOnce(DoAll(SetArgumentPointee<0>(forms), Return(true)));
350 EXPECT_CALL(*password_store_, FillBlacklistLogins(_)) 329 EXPECT_CALL(*password_store_, FillBlacklistLogins(_))
351 .WillOnce(Return(true)); 330 .WillOnce(Return(true));
352 SetIdleChangeProcessorExpectations(); 331 SetIdleChangeProcessorExpectations();
353 CreatePasswordRootTask task(this); 332 CreateRootTask task(this, syncable::PASSWORDS);
354 StartSyncService(&task, NULL); 333 StartSyncService(&task, NULL);
355 std::vector<PasswordForm> sync_forms; 334 std::vector<PasswordForm> sync_forms;
356 GetPasswordEntriesFromSyncDB(&sync_forms); 335 GetPasswordEntriesFromSyncDB(&sync_forms);
357 ASSERT_EQ(1U, sync_forms.size()); 336 ASSERT_EQ(1U, sync_forms.size());
358 EXPECT_TRUE(ComparePasswords(expected_forms[0], sync_forms[0])); 337 EXPECT_TRUE(ComparePasswords(expected_forms[0], sync_forms[0]));
359 } 338 }
360 339
361 TEST_F(ProfileSyncServicePasswordTest, HasNativeEntriesEmptySyncSameUsername) { 340 TEST_F(ProfileSyncServicePasswordTest, HasNativeEntriesEmptySyncSameUsername) {
362 std::vector<PasswordForm*> forms; 341 std::vector<PasswordForm*> forms;
363 std::vector<PasswordForm> expected_forms; 342 std::vector<PasswordForm> expected_forms;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 new_form->blacklisted_by_user = false; 374 new_form->blacklisted_by_user = false;
396 forms.push_back(new_form); 375 forms.push_back(new_form);
397 expected_forms.push_back(*new_form); 376 expected_forms.push_back(*new_form);
398 } 377 }
399 378
400 EXPECT_CALL(*password_store_, FillAutofillableLogins(_)) 379 EXPECT_CALL(*password_store_, FillAutofillableLogins(_))
401 .WillOnce(DoAll(SetArgumentPointee<0>(forms), Return(true))); 380 .WillOnce(DoAll(SetArgumentPointee<0>(forms), Return(true)));
402 EXPECT_CALL(*password_store_, FillBlacklistLogins(_)) 381 EXPECT_CALL(*password_store_, FillBlacklistLogins(_))
403 .WillOnce(Return(true)); 382 .WillOnce(Return(true));
404 SetIdleChangeProcessorExpectations(); 383 SetIdleChangeProcessorExpectations();
405 CreatePasswordRootTask task(this); 384 CreateRootTask task(this, syncable::PASSWORDS);
406 StartSyncService(&task, NULL); 385 StartSyncService(&task, NULL);
407 std::vector<PasswordForm> sync_forms; 386 std::vector<PasswordForm> sync_forms;
408 GetPasswordEntriesFromSyncDB(&sync_forms); 387 GetPasswordEntriesFromSyncDB(&sync_forms);
409 ASSERT_EQ(2U, sync_forms.size()); 388 ASSERT_EQ(2U, sync_forms.size());
410 EXPECT_TRUE(ComparePasswords(expected_forms[0], sync_forms[1])); 389 EXPECT_TRUE(ComparePasswords(expected_forms[0], sync_forms[1]));
411 EXPECT_TRUE(ComparePasswords(expected_forms[1], sync_forms[0])); 390 EXPECT_TRUE(ComparePasswords(expected_forms[1], sync_forms[0]));
412 } 391 }
413 392
414 TEST_F(ProfileSyncServicePasswordTest, HasNativeHasSyncNoMerge) { 393 TEST_F(ProfileSyncServicePasswordTest, HasNativeHasSyncNoMerge) {
415 std::vector<PasswordForm*> native_forms; 394 std::vector<PasswordForm*> native_forms;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 new_form.blacklisted_by_user = false; 429 new_form.blacklisted_by_user = false;
451 sync_forms.push_back(new_form); 430 sync_forms.push_back(new_form);
452 expected_forms.push_back(new_form); 431 expected_forms.push_back(new_form);
453 } 432 }
454 433
455 EXPECT_CALL(*password_store_, FillAutofillableLogins(_)) 434 EXPECT_CALL(*password_store_, FillAutofillableLogins(_))
456 .WillOnce(DoAll(SetArgumentPointee<0>(native_forms), Return(true))); 435 .WillOnce(DoAll(SetArgumentPointee<0>(native_forms), Return(true)));
457 EXPECT_CALL(*password_store_, FillBlacklistLogins(_)).WillOnce(Return(true)); 436 EXPECT_CALL(*password_store_, FillBlacklistLogins(_)).WillOnce(Return(true));
458 EXPECT_CALL(*password_store_, AddLoginImpl(_)).Times(1); 437 EXPECT_CALL(*password_store_, AddLoginImpl(_)).Times(1);
459 438
460 CreatePasswordRootTask root_task(this); 439 CreateRootTask root_task(this, syncable::PASSWORDS);
461 AddPasswordEntriesTask node_task(this, sync_forms); 440 AddPasswordEntriesTask node_task(this, sync_forms);
462 StartSyncService(&root_task, &node_task); 441 StartSyncService(&root_task, &node_task);
463 442
464 std::vector<PasswordForm> new_sync_forms; 443 std::vector<PasswordForm> new_sync_forms;
465 GetPasswordEntriesFromSyncDB(&new_sync_forms); 444 GetPasswordEntriesFromSyncDB(&new_sync_forms);
466 445
467 EXPECT_EQ(2U, new_sync_forms.size()); 446 EXPECT_EQ(2U, new_sync_forms.size());
468 EXPECT_TRUE(ComparePasswords(expected_forms[0], new_sync_forms[0])); 447 EXPECT_TRUE(ComparePasswords(expected_forms[0], new_sync_forms[0]));
469 EXPECT_TRUE(ComparePasswords(expected_forms[1], new_sync_forms[1])); 448 EXPECT_TRUE(ComparePasswords(expected_forms[1], new_sync_forms[1]));
470 } 449 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 new_form.date_created = base::Time::FromInternalValue(12345); 502 new_form.date_created = base::Time::FromInternalValue(12345);
524 new_form.blacklisted_by_user = false; 503 new_form.blacklisted_by_user = false;
525 expected_forms.push_back(new_form); 504 expected_forms.push_back(new_form);
526 } 505 }
527 506
528 EXPECT_CALL(*password_store_, FillAutofillableLogins(_)) 507 EXPECT_CALL(*password_store_, FillAutofillableLogins(_))
529 .WillOnce(DoAll(SetArgumentPointee<0>(native_forms), Return(true))); 508 .WillOnce(DoAll(SetArgumentPointee<0>(native_forms), Return(true)));
530 EXPECT_CALL(*password_store_, FillBlacklistLogins(_)).WillOnce(Return(true)); 509 EXPECT_CALL(*password_store_, FillBlacklistLogins(_)).WillOnce(Return(true));
531 EXPECT_CALL(*password_store_, UpdateLoginImpl(_)).Times(1); 510 EXPECT_CALL(*password_store_, UpdateLoginImpl(_)).Times(1);
532 511
533 CreatePasswordRootTask root_task(this); 512 CreateRootTask root_task(this, syncable::PASSWORDS);
534 AddPasswordEntriesTask node_task(this, sync_forms); 513 AddPasswordEntriesTask node_task(this, sync_forms);
535 514
536 StartSyncService(&root_task, &node_task); 515 StartSyncService(&root_task, &node_task);
537 516
538 std::vector<PasswordForm> new_sync_forms; 517 std::vector<PasswordForm> new_sync_forms;
539 GetPasswordEntriesFromSyncDB(&new_sync_forms); 518 GetPasswordEntriesFromSyncDB(&new_sync_forms);
540 519
541 EXPECT_EQ(1U, new_sync_forms.size()); 520 EXPECT_EQ(1U, new_sync_forms.size());
542 EXPECT_TRUE(ComparePasswords(expected_forms[0], new_sync_forms[0])); 521 EXPECT_TRUE(ComparePasswords(expected_forms[0], new_sync_forms[0]));
543 } 522 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698