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

Side by Side Diff: sync/internal_api/sync_manager_impl_unittest.cc

Issue 10844005: [Sync] Refactor GetEncryptedTypes usage. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase + add dcheck Created 8 years, 4 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
« no previous file with comments | « sync/internal_api/sync_manager_impl.cc ('k') | sync/internal_api/test/test_user_share.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // Unit tests for the SyncApi. Note that a lot of the underlying 5 // Unit tests for the SyncApi. Note that a lot of the underlying
6 // functionality is provided by the Syncable layer, which has its own 6 // functionality is provided by the Syncable layer, which has its own
7 // unit tests. We'll test SyncApi specific things in this harness. 7 // unit tests. We'll test SyncApi specific things in this harness.
8 8
9 #include <cstddef> 9 #include <cstddef>
10 #include <map> 10 #include <map>
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 entry.Put(syncable::SPECIFICS, specifics); 218 entry.Put(syncable::SPECIFICS, specifics);
219 return entry.Get(syncable::META_HANDLE); 219 return entry.Get(syncable::META_HANDLE);
220 } 220 }
221 221
222 } // namespace 222 } // namespace
223 223
224 class SyncApiTest : public testing::Test { 224 class SyncApiTest : public testing::Test {
225 public: 225 public:
226 virtual void SetUp() { 226 virtual void SetUp() {
227 test_user_share_.SetUp(); 227 test_user_share_.SetUp();
228 SetUpEncryption();
229 } 228 }
230 229
231 virtual void TearDown() { 230 virtual void TearDown() {
232 test_user_share_.TearDown(); 231 test_user_share_.TearDown();
233 } 232 }
234 233
235 void SetUpEncryption() {
236 ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
237 encryption_handler_.reset(
238 new SyncEncryptionHandlerImpl(test_user_share_.user_share(),
239 trans.GetCryptographer()));
240 trans.GetCryptographer()->SetNigoriHandler(encryption_handler_.get());
241 }
242
243 protected: 234 protected:
244 MessageLoop message_loop_; 235 MessageLoop message_loop_;
245 TestUserShare test_user_share_; 236 TestUserShare test_user_share_;
246 scoped_ptr<SyncEncryptionHandlerImpl> encryption_handler_;
247 }; 237 };
248 238
249 TEST_F(SyncApiTest, SanityCheckTest) { 239 TEST_F(SyncApiTest, SanityCheckTest) {
250 { 240 {
251 ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); 241 ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
252 EXPECT_TRUE(trans.GetWrappedTrans() != NULL); 242 EXPECT_TRUE(trans.GetWrappedTrans());
253 } 243 }
254 { 244 {
255 WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); 245 WriteTransaction trans(FROM_HERE, test_user_share_.user_share());
256 EXPECT_TRUE(trans.GetWrappedTrans() != NULL); 246 EXPECT_TRUE(trans.GetWrappedTrans());
257 } 247 }
258 { 248 {
259 // No entries but root should exist 249 // No entries but root should exist
260 ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); 250 ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
261 ReadNode node(&trans); 251 ReadNode node(&trans);
262 // Metahandle 1 can be root, sanity check 2 252 // Metahandle 1 can be root, sanity check 2
263 EXPECT_EQ(BaseNode::INIT_FAILED_ENTRY_NOT_GOOD, node.InitByIdLookup(2)); 253 EXPECT_EQ(BaseNode::INIT_FAILED_ENTRY_NOT_GOOD, node.InitByIdLookup(2));
264 } 254 }
265 } 255 }
266 256
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 EXPECT_EQ("secret", data.password_value()); 466 EXPECT_EQ("secret", data.password_value());
477 } 467 }
478 } 468 }
479 469
480 TEST_F(SyncApiTest, WriteEncryptedTitle) { 470 TEST_F(SyncApiTest, WriteEncryptedTitle) {
481 KeyParams params = {"localhost", "username", "passphrase"}; 471 KeyParams params = {"localhost", "username", "passphrase"};
482 { 472 {
483 ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); 473 ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
484 trans.GetCryptographer()->AddKey(params); 474 trans.GetCryptographer()->AddKey(params);
485 } 475 }
486 encryption_handler_->EnableEncryptEverything(); 476 test_user_share_.encryption_handler()->EnableEncryptEverything();
487 { 477 {
488 WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); 478 WriteTransaction trans(FROM_HERE, test_user_share_.user_share());
489 ReadNode root_node(&trans); 479 ReadNode root_node(&trans);
490 root_node.InitByRootLookup(); 480 root_node.InitByRootLookup();
491 481
492 WriteNode bookmark_node(&trans); 482 WriteNode bookmark_node(&trans);
493 WriteNode::InitUniqueByCreationResult result = 483 WriteNode::InitUniqueByCreationResult result =
494 bookmark_node.InitUniqueByCreation(BOOKMARKS, 484 bookmark_node.InitUniqueByCreation(BOOKMARKS,
495 root_node, "foo"); 485 root_node, "foo");
496 EXPECT_EQ(WriteNode::INIT_SUCCESS, result); 486 EXPECT_EQ(WriteNode::INIT_SUCCESS, result);
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 return false; 824 return false;
835 if (encryption_status != UNINITIALIZED) { 825 if (encryption_status != UNINITIALIZED) {
836 KeyParams params = {"localhost", "dummy", "foobar"}; 826 KeyParams params = {"localhost", "dummy", "foobar"};
837 cryptographer->AddKey(params); 827 cryptographer->AddKey(params);
838 } else { 828 } else {
839 DCHECK_NE(nigori_status, WRITE_TO_NIGORI); 829 DCHECK_NE(nigori_status, WRITE_TO_NIGORI);
840 } 830 }
841 if (nigori_status == WRITE_TO_NIGORI) { 831 if (nigori_status == WRITE_TO_NIGORI) {
842 sync_pb::NigoriSpecifics nigori; 832 sync_pb::NigoriSpecifics nigori;
843 cryptographer->GetKeys(nigori.mutable_encrypted()); 833 cryptographer->GetKeys(nigori.mutable_encrypted());
844 cryptographer->UpdateNigoriFromEncryptedTypes( 834 share->directory->GetNigoriHandler()->UpdateNigoriFromEncryptedTypes(
845 &nigori, 835 &nigori,
846 trans.GetWrappedTrans()); 836 trans.GetWrappedTrans());
847 WriteNode node(&trans); 837 WriteNode node(&trans);
848 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(nigori_id)); 838 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(nigori_id));
849 node.SetNigoriSpecifics(nigori); 839 node.SetNigoriSpecifics(nigori);
850 } 840 }
851 return cryptographer->is_ready(); 841 return cryptographer->is_ready();
852 } 842 }
853 843
854 int64 GetIdForDataType(ModelType type) { 844 int64 GetIdForDataType(ModelType type) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 } 887 }
898 888
899 // Returns true if we are currently encrypting all sync data. May 889 // Returns true if we are currently encrypting all sync data. May
900 // be called on any thread. 890 // be called on any thread.
901 bool EncryptEverythingEnabledForTest() { 891 bool EncryptEverythingEnabledForTest() {
902 return sync_manager_.GetEncryptionHandler()->EncryptEverythingEnabled(); 892 return sync_manager_.GetEncryptionHandler()->EncryptEverythingEnabled();
903 } 893 }
904 894
905 // Gets the set of encrypted types from the cryptographer 895 // Gets the set of encrypted types from the cryptographer
906 // Note: opens a transaction. May be called from any thread. 896 // Note: opens a transaction. May be called from any thread.
907 syncer::ModelTypeSet GetEncryptedDataTypesForTest() { 897 ModelTypeSet GetEncryptedTypes() {
908 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 898 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
909 return GetEncryptedTypes(&trans); 899 return GetEncryptedTypesWithTrans(&trans);
900 }
901
902 ModelTypeSet GetEncryptedTypesWithTrans(BaseTransaction* trans) {
903 return trans->GetDirectory()->GetNigoriHandler()->
904 GetEncryptedTypes(trans->GetWrappedTrans());
910 } 905 }
911 906
912 void SimulateEnableNotificationsForTest() { 907 void SimulateEnableNotificationsForTest() {
913 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread()); 908 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread());
914 sync_manager_.OnNotificationsEnabled(); 909 sync_manager_.OnNotificationsEnabled();
915 } 910 }
916 911
917 void SimulateDisableNotificationsForTest( 912 void SimulateDisableNotificationsForTest(
918 NotificationsDisabledReason reason) { 913 NotificationsDisabledReason reason) {
919 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread()); 914 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread());
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
1349 TriggerOnIncomingNotificationForTest(model_types); 1344 TriggerOnIncomingNotificationForTest(model_types);
1350 1345
1351 // Should trigger the replies. 1346 // Should trigger the replies.
1352 PumpLoop(); 1347 PumpLoop();
1353 } 1348 }
1354 1349
1355 TEST_F(SyncManagerTest, RefreshEncryptionReady) { 1350 TEST_F(SyncManagerTest, RefreshEncryptionReady) {
1356 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 1351 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
1357 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 1352 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
1358 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 1353 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
1354 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
1359 1355
1360 sync_manager_.GetEncryptionHandler()->Init(); 1356 sync_manager_.GetEncryptionHandler()->Init();
1361 PumpLoop(); 1357 PumpLoop();
1362 1358
1363 const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest(); 1359 const ModelTypeSet encrypted_types = GetEncryptedTypes();
1364 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); 1360 EXPECT_TRUE(encrypted_types.Has(PASSWORDS));
1365 EXPECT_FALSE(EncryptEverythingEnabledForTest()); 1361 EXPECT_FALSE(EncryptEverythingEnabledForTest());
1366 1362
1367 { 1363 {
1368 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1364 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1369 ReadNode node(&trans); 1365 ReadNode node(&trans);
1370 EXPECT_EQ(BaseNode::INIT_OK, 1366 EXPECT_EQ(BaseNode::INIT_OK,
1371 node.InitByIdLookup(GetIdForDataType(NIGORI))); 1367 node.InitByIdLookup(GetIdForDataType(NIGORI)));
1372 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); 1368 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics();
1373 EXPECT_TRUE(nigori.has_encrypted()); 1369 EXPECT_TRUE(nigori.has_encrypted());
1374 Cryptographer* cryptographer = trans.GetCryptographer(); 1370 Cryptographer* cryptographer = trans.GetCryptographer();
1375 EXPECT_TRUE(cryptographer->is_ready()); 1371 EXPECT_TRUE(cryptographer->is_ready());
1376 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); 1372 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted()));
1377 } 1373 }
1378 } 1374 }
1379 1375
1380 // Attempt to refresh encryption when nigori not downloaded. 1376 // Attempt to refresh encryption when nigori not downloaded.
1381 TEST_F(SyncManagerTest, RefreshEncryptionNotReady) { 1377 TEST_F(SyncManagerTest, RefreshEncryptionNotReady) {
1382 // Don't set up encryption (no nigori node created). 1378 // Don't set up encryption (no nigori node created).
1383 1379
1384 // Should fail. Triggers an OnPassphraseRequired because the cryptographer 1380 // Should fail. Triggers an OnPassphraseRequired because the cryptographer
1385 // is not ready. 1381 // is not ready.
1386 EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_, _)).Times(1); 1382 EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_, _)).Times(1);
1387 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 1383 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
1384 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
1388 sync_manager_.GetEncryptionHandler()->Init(); 1385 sync_manager_.GetEncryptionHandler()->Init();
1389 PumpLoop(); 1386 PumpLoop();
1390 1387
1391 const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest(); 1388 const ModelTypeSet encrypted_types = GetEncryptedTypes();
1392 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded. 1389 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded.
1393 EXPECT_FALSE(EncryptEverythingEnabledForTest()); 1390 EXPECT_FALSE(EncryptEverythingEnabledForTest());
1394 } 1391 }
1395 1392
1396 // Attempt to refresh encryption when nigori is empty. 1393 // Attempt to refresh encryption when nigori is empty.
1397 TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) { 1394 TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) {
1398 EXPECT_TRUE(SetUpEncryption(DONT_WRITE_NIGORI, DEFAULT_ENCRYPTION)); 1395 EXPECT_TRUE(SetUpEncryption(DONT_WRITE_NIGORI, DEFAULT_ENCRYPTION));
1399 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(1); 1396 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(1);
1400 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 1397 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
1398 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
1401 1399
1402 // Should write to nigori. 1400 // Should write to nigori.
1403 sync_manager_.GetEncryptionHandler()->Init(); 1401 sync_manager_.GetEncryptionHandler()->Init();
1404 PumpLoop(); 1402 PumpLoop();
1405 1403
1406 const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest(); 1404 const ModelTypeSet encrypted_types = GetEncryptedTypes();
1407 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded. 1405 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded.
1408 EXPECT_FALSE(EncryptEverythingEnabledForTest()); 1406 EXPECT_FALSE(EncryptEverythingEnabledForTest());
1409 1407
1410 { 1408 {
1411 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1409 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1412 ReadNode node(&trans); 1410 ReadNode node(&trans);
1413 EXPECT_EQ(BaseNode::INIT_OK, 1411 EXPECT_EQ(BaseNode::INIT_OK,
1414 node.InitByIdLookup(GetIdForDataType(NIGORI))); 1412 node.InitByIdLookup(GetIdForDataType(NIGORI)));
1415 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); 1413 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics();
1416 EXPECT_TRUE(nigori.has_encrypted()); 1414 EXPECT_TRUE(nigori.has_encrypted());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1453 } 1451 }
1454 // Last batch_size nodes are a third type that will not need encryption. 1452 // Last batch_size nodes are a third type that will not need encryption.
1455 for (; i < 3*batch_size; ++i) { 1453 for (; i < 3*batch_size; ++i) {
1456 MakeNodeWithParent(sync_manager_.GetUserShare(), THEMES, 1454 MakeNodeWithParent(sync_manager_.GetUserShare(), THEMES,
1457 base::StringPrintf("%"PRIuS"", i), 1455 base::StringPrintf("%"PRIuS"", i),
1458 GetIdForDataType(THEMES)); 1456 GetIdForDataType(THEMES));
1459 } 1457 }
1460 1458
1461 { 1459 {
1462 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1460 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1463 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals( 1461 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(
1464 SyncEncryptionHandler::SensitiveTypes())); 1462 SyncEncryptionHandler::SensitiveTypes()));
1465 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1463 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1466 trans.GetWrappedTrans(), 1464 trans.GetWrappedTrans(),
1467 trans.GetCryptographer(),
1468 BOOKMARKS, 1465 BOOKMARKS,
1469 false /* not encrypted */)); 1466 false /* not encrypted */));
1470 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1467 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1471 trans.GetWrappedTrans(), 1468 trans.GetWrappedTrans(),
1472 trans.GetCryptographer(),
1473 SESSIONS, 1469 SESSIONS,
1474 false /* not encrypted */)); 1470 false /* not encrypted */));
1475 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1471 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1476 trans.GetWrappedTrans(), 1472 trans.GetWrappedTrans(),
1477 trans.GetCryptographer(),
1478 THEMES, 1473 THEMES,
1479 false /* not encrypted */)); 1474 false /* not encrypted */));
1480 } 1475 }
1481 1476
1482 EXPECT_CALL(encryption_observer_, 1477 EXPECT_CALL(encryption_observer_,
1483 OnEncryptedTypesChanged( 1478 OnEncryptedTypesChanged(
1484 HasModelTypes(ModelTypeSet::All()), true)); 1479 HasModelTypes(ModelTypeSet::All()), true));
1485 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 1480 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
1486 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); 1481 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything();
1487 EXPECT_TRUE(EncryptEverythingEnabledForTest()); 1482 EXPECT_TRUE(EncryptEverythingEnabledForTest());
1488 { 1483 {
1489 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1484 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1490 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals( 1485 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(
1491 ModelTypeSet::All())); 1486 ModelTypeSet::All()));
1492 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1487 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1493 trans.GetWrappedTrans(), 1488 trans.GetWrappedTrans(),
1494 trans.GetCryptographer(),
1495 BOOKMARKS, 1489 BOOKMARKS,
1496 true /* is encrypted */)); 1490 true /* is encrypted */));
1497 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1491 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1498 trans.GetWrappedTrans(), 1492 trans.GetWrappedTrans(),
1499 trans.GetCryptographer(),
1500 SESSIONS, 1493 SESSIONS,
1501 true /* is encrypted */)); 1494 true /* is encrypted */));
1502 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1495 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1503 trans.GetWrappedTrans(), 1496 trans.GetWrappedTrans(),
1504 trans.GetCryptographer(),
1505 THEMES, 1497 THEMES,
1506 true /* is encrypted */)); 1498 true /* is encrypted */));
1507 } 1499 }
1508 1500
1509 // Trigger's a ReEncryptEverything with new passphrase. 1501 // Trigger's a ReEncryptEverything with new passphrase.
1510 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 1502 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
1511 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); 1503 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
1512 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); 1504 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
1513 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 1505 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
1514 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 1506 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
1515 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( 1507 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
1516 "new_passphrase", true); 1508 "new_passphrase", true);
1517 EXPECT_TRUE(EncryptEverythingEnabledForTest()); 1509 EXPECT_TRUE(EncryptEverythingEnabledForTest());
1518 { 1510 {
1519 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1511 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1520 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(ModelTypeSet::All())); 1512 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(ModelTypeSet::All()));
1521 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1513 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1522 trans.GetWrappedTrans(), 1514 trans.GetWrappedTrans(),
1523 trans.GetCryptographer(),
1524 BOOKMARKS, 1515 BOOKMARKS,
1525 true /* is encrypted */)); 1516 true /* is encrypted */));
1526 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1517 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1527 trans.GetWrappedTrans(), 1518 trans.GetWrappedTrans(),
1528 trans.GetCryptographer(),
1529 SESSIONS, 1519 SESSIONS,
1530 true /* is encrypted */)); 1520 true /* is encrypted */));
1531 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1521 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1532 trans.GetWrappedTrans(), 1522 trans.GetWrappedTrans(),
1533 trans.GetCryptographer(),
1534 THEMES, 1523 THEMES,
1535 true /* is encrypted */)); 1524 true /* is encrypted */));
1536 } 1525 }
1537 // Calling EncryptDataTypes with an empty encrypted types should not trigger 1526 // Calling EncryptDataTypes with an empty encrypted types should not trigger
1538 // a reencryption and should just notify immediately. 1527 // a reencryption and should just notify immediately.
1539 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 1528 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
1540 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)).Times(0); 1529 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)).Times(0);
1541 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()).Times(0); 1530 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()).Times(0);
1542 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(0); 1531 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(0);
1543 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); 1532 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything();
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 // specifics should be stored in the server legal form. 1973 // specifics should be stored in the server legal form.
1985 EXPECT_EQ(raw_title2, node2.GetTitle()); 1974 EXPECT_EQ(raw_title2, node2.GetTitle());
1986 EXPECT_EQ(title2, node2.GetBookmarkSpecifics().title()); 1975 EXPECT_EQ(title2, node2.GetBookmarkSpecifics().title());
1987 EXPECT_EQ(url2, node2.GetBookmarkSpecifics().url()); 1976 EXPECT_EQ(url2, node2.GetBookmarkSpecifics().url());
1988 } 1977 }
1989 1978
1990 { 1979 {
1991 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1980 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1992 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1981 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1993 trans.GetWrappedTrans(), 1982 trans.GetWrappedTrans(),
1994 trans.GetCryptographer(),
1995 BOOKMARKS, 1983 BOOKMARKS,
1996 false /* not encrypted */)); 1984 false /* not encrypted */));
1997 } 1985 }
1998 1986
1999 EXPECT_CALL(encryption_observer_, 1987 EXPECT_CALL(encryption_observer_,
2000 OnEncryptedTypesChanged( 1988 OnEncryptedTypesChanged(
2001 HasModelTypes(ModelTypeSet::All()), true)); 1989 HasModelTypes(ModelTypeSet::All()), true));
2002 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 1990 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2003 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); 1991 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything();
2004 EXPECT_TRUE(EncryptEverythingEnabledForTest()); 1992 EXPECT_TRUE(EncryptEverythingEnabledForTest());
2005 1993
2006 { 1994 {
2007 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1995 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2008 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(ModelTypeSet::All())); 1996 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(ModelTypeSet::All()));
2009 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1997 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
2010 trans.GetWrappedTrans(), 1998 trans.GetWrappedTrans(),
2011 trans.GetCryptographer(),
2012 BOOKMARKS, 1999 BOOKMARKS,
2013 true /* is encrypted */)); 2000 true /* is encrypted */));
2014 2001
2015 ReadNode node(&trans); 2002 ReadNode node(&trans);
2016 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(node_id1)); 2003 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(node_id1));
2017 EXPECT_EQ(BOOKMARKS, node.GetModelType()); 2004 EXPECT_EQ(BOOKMARKS, node.GetModelType());
2018 EXPECT_EQ(title, node.GetTitle()); 2005 EXPECT_EQ(title, node.GetTitle());
2019 EXPECT_EQ(title, node.GetBookmarkSpecifics().title()); 2006 EXPECT_EQ(title, node.GetBookmarkSpecifics().title());
2020 EXPECT_EQ(url, node.GetBookmarkSpecifics().url()); 2007 EXPECT_EQ(url, node.GetBookmarkSpecifics().url());
2021 2008
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2084 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2071 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2085 2072
2086 // Encrypt the datatatype, should set is_unsynced. 2073 // Encrypt the datatatype, should set is_unsynced.
2087 EXPECT_CALL(encryption_observer_, 2074 EXPECT_CALL(encryption_observer_,
2088 OnEncryptedTypesChanged( 2075 OnEncryptedTypesChanged(
2089 HasModelTypes(ModelTypeSet::All()), true)); 2076 HasModelTypes(ModelTypeSet::All()), true));
2090 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2077 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2091 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); 2078 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
2092 2079
2093 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2080 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2081 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true));
2094 sync_manager_.GetEncryptionHandler()->Init(); 2082 sync_manager_.GetEncryptionHandler()->Init();
2095 PumpLoop(); 2083 PumpLoop();
2096 { 2084 {
2097 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2085 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2098 ReadNode node(&trans); 2086 ReadNode node(&trans);
2099 EXPECT_EQ(BaseNode::INIT_OK, 2087 EXPECT_EQ(BaseNode::INIT_OK,
2100 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2088 node.InitByClientTagLookup(BOOKMARKS, client_tag));
2101 const syncable::Entry* node_entry = node.GetEntry(); 2089 const syncable::Entry* node_entry = node.GetEntry();
2102 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS); 2090 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS);
2103 EXPECT_TRUE(specifics.has_encrypted()); 2091 EXPECT_TRUE(specifics.has_encrypted());
(...skipping 27 matching lines...) Expand all
2131 EXPECT_TRUE(cryptographer->is_ready()); 2119 EXPECT_TRUE(cryptographer->is_ready());
2132 EXPECT_TRUE(cryptographer->CanDecryptUsingDefaultKey( 2120 EXPECT_TRUE(cryptographer->CanDecryptUsingDefaultKey(
2133 specifics.encrypted())); 2121 specifics.encrypted()));
2134 } 2122 }
2135 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2123 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2136 2124
2137 // Force a re-encrypt everything. Should not set is_unsynced. 2125 // Force a re-encrypt everything. Should not set is_unsynced.
2138 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2126 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2139 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2127 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2140 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2128 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2129 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true));
2141 2130
2142 sync_manager_.GetEncryptionHandler()->Init(); 2131 sync_manager_.GetEncryptionHandler()->Init();
2143 PumpLoop(); 2132 PumpLoop();
2144 2133
2145 { 2134 {
2146 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2135 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2147 ReadNode node(&trans); 2136 ReadNode node(&trans);
2148 EXPECT_EQ(BaseNode::INIT_OK, 2137 EXPECT_EQ(BaseNode::INIT_OK,
2149 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2138 node.InitByClientTagLookup(BOOKMARKS, client_tag));
2150 const syncable::Entry* node_entry = node.GetEntry(); 2139 const syncable::Entry* node_entry = node.GetEntry();
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
2337 BaseNode::GenerateSyncableHash(PASSWORDS, 2326 BaseNode::GenerateSyncableHash(PASSWORDS,
2338 client_tag), 2327 client_tag),
2339 entity_specifics); 2328 entity_specifics);
2340 // New node shouldn't start off unsynced. 2329 // New node shouldn't start off unsynced.
2341 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2330 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2342 2331
2343 // Force a re-encrypt everything. Should not set is_unsynced. 2332 // Force a re-encrypt everything. Should not set is_unsynced.
2344 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2333 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2345 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2334 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2346 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2335 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2336 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
2347 sync_manager_.GetEncryptionHandler()->Init(); 2337 sync_manager_.GetEncryptionHandler()->Init();
2348 PumpLoop(); 2338 PumpLoop();
2349 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2339 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2350 } 2340 }
2351 2341
2352 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks 2342 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks
2353 // when we write the same data, but does set it when we write new data. 2343 // when we write the same data, but does set it when we write new data.
2354 TEST_F(SyncManagerTest, SetBookmarkTitle) { 2344 TEST_F(SyncManagerTest, SetBookmarkTitle) {
2355 std::string client_tag = "title"; 2345 std::string client_tag = "title";
2356 sync_pb::EntitySpecifics entity_specifics; 2346 sync_pb::EntitySpecifics entity_specifics;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2399 // New node shouldn't start off unsynced. 2389 // New node shouldn't start off unsynced.
2400 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2390 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2401 2391
2402 // Encrypt the datatatype, should set is_unsynced. 2392 // Encrypt the datatatype, should set is_unsynced.
2403 EXPECT_CALL(encryption_observer_, 2393 EXPECT_CALL(encryption_observer_,
2404 OnEncryptedTypesChanged( 2394 OnEncryptedTypesChanged(
2405 HasModelTypes(ModelTypeSet::All()), true)); 2395 HasModelTypes(ModelTypeSet::All()), true));
2406 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2396 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2407 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); 2397 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
2408 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2398 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2399 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true));
2409 sync_manager_.GetEncryptionHandler()->Init(); 2400 sync_manager_.GetEncryptionHandler()->Init();
2410 PumpLoop(); 2401 PumpLoop();
2411 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2402 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2412 2403
2413 // Manually change to the same title. Should not set is_unsynced. 2404 // Manually change to the same title. Should not set is_unsynced.
2414 // NON_UNIQUE_NAME should be kEncryptedString. 2405 // NON_UNIQUE_NAME should be kEncryptedString.
2415 { 2406 {
2416 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2407 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2417 WriteNode node(&trans); 2408 WriteNode node(&trans);
2418 EXPECT_EQ(BaseNode::INIT_OK, 2409 EXPECT_EQ(BaseNode::INIT_OK,
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
2495 // New node shouldn't start off unsynced. 2486 // New node shouldn't start off unsynced.
2496 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); 2487 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag));
2497 2488
2498 // Encrypt the datatatype, should set is_unsynced. 2489 // Encrypt the datatatype, should set is_unsynced.
2499 EXPECT_CALL(encryption_observer_, 2490 EXPECT_CALL(encryption_observer_,
2500 OnEncryptedTypesChanged( 2491 OnEncryptedTypesChanged(
2501 HasModelTypes(ModelTypeSet::All()), true)); 2492 HasModelTypes(ModelTypeSet::All()), true));
2502 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2493 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2503 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); 2494 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
2504 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2495 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2496 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true));
2505 sync_manager_.GetEncryptionHandler()->Init(); 2497 sync_manager_.GetEncryptionHandler()->Init();
2506 PumpLoop(); 2498 PumpLoop();
2507 EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag)); 2499 EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag));
2508 2500
2509 // Manually change to the same title. Should not set is_unsynced. 2501 // Manually change to the same title. Should not set is_unsynced.
2510 // NON_UNIQUE_NAME should be kEncryptedString. 2502 // NON_UNIQUE_NAME should be kEncryptedString.
2511 { 2503 {
2512 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2504 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2513 WriteNode node(&trans); 2505 WriteNode node(&trans);
2514 EXPECT_EQ(BaseNode::INIT_OK, 2506 EXPECT_EQ(BaseNode::INIT_OK,
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
2867 2859
2868 // Verify only the non-disabled types remain after cleanup. 2860 // Verify only the non-disabled types remain after cleanup.
2869 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); 2861 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types);
2870 EXPECT_TRUE(new_enabled_types.Equals( 2862 EXPECT_TRUE(new_enabled_types.Equals(
2871 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types))); 2863 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types)));
2872 EXPECT_TRUE(disabled_types.Equals( 2864 EXPECT_TRUE(disabled_types.Equals(
2873 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); 2865 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All())));
2874 } 2866 }
2875 2867
2876 } // namespace 2868 } // namespace
OLDNEW
« no previous file with comments | « sync/internal_api/sync_manager_impl.cc ('k') | sync/internal_api/test/test_user_share.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698