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

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: Always trigger OnEncryptedTypesChanged on init 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
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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 entry.Put(syncable::SPECIFICS, specifics); 220 entry.Put(syncable::SPECIFICS, specifics);
221 return entry.Get(syncable::META_HANDLE); 221 return entry.Get(syncable::META_HANDLE);
222 } 222 }
223 223
224 } // namespace 224 } // namespace
225 225
226 class SyncApiTest : public testing::Test { 226 class SyncApiTest : public testing::Test {
227 public: 227 public:
228 virtual void SetUp() { 228 virtual void SetUp() {
229 test_user_share_.SetUp(); 229 test_user_share_.SetUp();
230 SetUpEncryption();
231 } 230 }
232 231
233 virtual void TearDown() { 232 virtual void TearDown() {
234 test_user_share_.TearDown(); 233 test_user_share_.TearDown();
235 } 234 }
236 235
237 void SetUpEncryption() {
238 ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
239 encryption_handler_.reset(
240 new SyncEncryptionHandlerImpl(test_user_share_.user_share(),
241 trans.GetCryptographer()));
242 trans.GetCryptographer()->SetNigoriHandler(encryption_handler_.get());
243 }
244
245 protected: 236 protected:
246 MessageLoop message_loop_; 237 MessageLoop message_loop_;
247 TestUserShare test_user_share_; 238 TestUserShare test_user_share_;
248 scoped_ptr<SyncEncryptionHandlerImpl> encryption_handler_;
249 }; 239 };
250 240
251 TEST_F(SyncApiTest, SanityCheckTest) { 241 TEST_F(SyncApiTest, SanityCheckTest) {
252 { 242 {
253 ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); 243 ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
254 EXPECT_TRUE(trans.GetWrappedTrans() != NULL); 244 EXPECT_TRUE(trans.GetWrappedTrans());
255 } 245 }
256 { 246 {
257 WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); 247 WriteTransaction trans(FROM_HERE, test_user_share_.user_share());
258 EXPECT_TRUE(trans.GetWrappedTrans() != NULL); 248 EXPECT_TRUE(trans.GetWrappedTrans());
259 } 249 }
260 { 250 {
261 // No entries but root should exist 251 // No entries but root should exist
262 ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); 252 ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
263 ReadNode node(&trans); 253 ReadNode node(&trans);
264 // Metahandle 1 can be root, sanity check 2 254 // Metahandle 1 can be root, sanity check 2
265 EXPECT_EQ(BaseNode::INIT_FAILED_ENTRY_NOT_GOOD, node.InitByIdLookup(2)); 255 EXPECT_EQ(BaseNode::INIT_FAILED_ENTRY_NOT_GOOD, node.InitByIdLookup(2));
266 } 256 }
267 } 257 }
268 258
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 EXPECT_EQ("secret", data.password_value()); 468 EXPECT_EQ("secret", data.password_value());
479 } 469 }
480 } 470 }
481 471
482 TEST_F(SyncApiTest, WriteEncryptedTitle) { 472 TEST_F(SyncApiTest, WriteEncryptedTitle) {
483 KeyParams params = {"localhost", "username", "passphrase"}; 473 KeyParams params = {"localhost", "username", "passphrase"};
484 { 474 {
485 ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); 475 ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
486 trans.GetCryptographer()->AddKey(params); 476 trans.GetCryptographer()->AddKey(params);
487 } 477 }
488 encryption_handler_->EnableEncryptEverything(); 478 test_user_share_.encryption_handler()->EnableEncryptEverything();
489 { 479 {
490 WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); 480 WriteTransaction trans(FROM_HERE, test_user_share_.user_share());
491 ReadNode root_node(&trans); 481 ReadNode root_node(&trans);
492 root_node.InitByRootLookup(); 482 root_node.InitByRootLookup();
493 483
494 WriteNode bookmark_node(&trans); 484 WriteNode bookmark_node(&trans);
495 WriteNode::InitUniqueByCreationResult result = 485 WriteNode::InitUniqueByCreationResult result =
496 bookmark_node.InitUniqueByCreation(BOOKMARKS, 486 bookmark_node.InitUniqueByCreation(BOOKMARKS,
497 root_node, "foo"); 487 root_node, "foo");
498 EXPECT_EQ(WriteNode::INIT_SUCCESS, result); 488 EXPECT_EQ(WriteNode::INIT_SUCCESS, result);
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 return false; 844 return false;
855 if (encryption_status != UNINITIALIZED) { 845 if (encryption_status != UNINITIALIZED) {
856 KeyParams params = {"localhost", "dummy", "foobar"}; 846 KeyParams params = {"localhost", "dummy", "foobar"};
857 cryptographer->AddKey(params); 847 cryptographer->AddKey(params);
858 } else { 848 } else {
859 DCHECK_NE(nigori_status, WRITE_TO_NIGORI); 849 DCHECK_NE(nigori_status, WRITE_TO_NIGORI);
860 } 850 }
861 if (nigori_status == WRITE_TO_NIGORI) { 851 if (nigori_status == WRITE_TO_NIGORI) {
862 sync_pb::NigoriSpecifics nigori; 852 sync_pb::NigoriSpecifics nigori;
863 cryptographer->GetKeys(nigori.mutable_encrypted()); 853 cryptographer->GetKeys(nigori.mutable_encrypted());
864 cryptographer->UpdateNigoriFromEncryptedTypes( 854 share->directory->GetNigoriHandler()->UpdateNigoriFromEncryptedTypes(
865 &nigori, 855 &nigori,
866 trans.GetWrappedTrans()); 856 trans.GetWrappedTrans());
867 WriteNode node(&trans); 857 WriteNode node(&trans);
868 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(nigori_id)); 858 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(nigori_id));
869 node.SetNigoriSpecifics(nigori); 859 node.SetNigoriSpecifics(nigori);
870 } 860 }
871 return cryptographer->is_ready(); 861 return cryptographer->is_ready();
872 } 862 }
873 863
874 int64 GetIdForDataType(ModelType type) { 864 int64 GetIdForDataType(ModelType type) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 } 907 }
918 908
919 // Returns true if we are currently encrypting all sync data. May 909 // Returns true if we are currently encrypting all sync data. May
920 // be called on any thread. 910 // be called on any thread.
921 bool EncryptEverythingEnabledForTest() { 911 bool EncryptEverythingEnabledForTest() {
922 return sync_manager_.GetEncryptionHandler()->EncryptEverythingEnabled(); 912 return sync_manager_.GetEncryptionHandler()->EncryptEverythingEnabled();
923 } 913 }
924 914
925 // Gets the set of encrypted types from the cryptographer 915 // Gets the set of encrypted types from the cryptographer
926 // Note: opens a transaction. May be called from any thread. 916 // Note: opens a transaction. May be called from any thread.
927 syncer::ModelTypeSet GetEncryptedDataTypesForTest() { 917 ModelTypeSet GetEncryptedTypes() {
928 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 918 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
929 return GetEncryptedTypes(&trans); 919 return GetEncryptedTypesWithTrans(&trans);
920 }
921
922 ModelTypeSet GetEncryptedTypesWithTrans(BaseTransaction* trans) {
923 return trans->GetDirectory()->GetNigoriHandler()->
924 GetEncryptedTypes(trans->GetWrappedTrans());
930 } 925 }
931 926
932 void SimulateEnableNotificationsForTest() { 927 void SimulateEnableNotificationsForTest() {
933 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread()); 928 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread());
934 sync_manager_.OnNotificationsEnabled(); 929 sync_manager_.OnNotificationsEnabled();
935 } 930 }
936 931
937 void SimulateDisableNotificationsForTest( 932 void SimulateDisableNotificationsForTest(
938 NotificationsDisabledReason reason) { 933 NotificationsDisabledReason reason) {
939 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread()); 934 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread());
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
1372 TriggerOnIncomingNotificationForTest(model_types); 1367 TriggerOnIncomingNotificationForTest(model_types);
1373 1368
1374 // Should trigger the replies. 1369 // Should trigger the replies.
1375 PumpLoop(); 1370 PumpLoop();
1376 } 1371 }
1377 1372
1378 TEST_F(SyncManagerTest, RefreshEncryptionReady) { 1373 TEST_F(SyncManagerTest, RefreshEncryptionReady) {
1379 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 1374 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
1380 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 1375 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
1381 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 1376 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
1377 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
1382 1378
1383 sync_manager_.GetEncryptionHandler()->Init(); 1379 sync_manager_.GetEncryptionHandler()->Init();
1384 PumpLoop(); 1380 PumpLoop();
1385 1381
1386 const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest(); 1382 const ModelTypeSet encrypted_types = GetEncryptedTypes();
1387 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); 1383 EXPECT_TRUE(encrypted_types.Has(PASSWORDS));
1388 EXPECT_FALSE(EncryptEverythingEnabledForTest()); 1384 EXPECT_FALSE(EncryptEverythingEnabledForTest());
1389 1385
1390 { 1386 {
1391 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1387 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1392 ReadNode node(&trans); 1388 ReadNode node(&trans);
1393 EXPECT_EQ(BaseNode::INIT_OK, 1389 EXPECT_EQ(BaseNode::INIT_OK,
1394 node.InitByIdLookup(GetIdForDataType(NIGORI))); 1390 node.InitByIdLookup(GetIdForDataType(NIGORI)));
1395 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); 1391 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics();
1396 EXPECT_TRUE(nigori.has_encrypted()); 1392 EXPECT_TRUE(nigori.has_encrypted());
1397 Cryptographer* cryptographer = trans.GetCryptographer(); 1393 Cryptographer* cryptographer = trans.GetCryptographer();
1398 EXPECT_TRUE(cryptographer->is_ready()); 1394 EXPECT_TRUE(cryptographer->is_ready());
1399 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); 1395 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted()));
1400 } 1396 }
1401 } 1397 }
1402 1398
1403 // Attempt to refresh encryption when nigori not downloaded. 1399 // Attempt to refresh encryption when nigori not downloaded.
1404 TEST_F(SyncManagerTest, RefreshEncryptionNotReady) { 1400 TEST_F(SyncManagerTest, RefreshEncryptionNotReady) {
1405 // Don't set up encryption (no nigori node created). 1401 // Don't set up encryption (no nigori node created).
1406 1402
1407 // Should fail. Triggers an OnPassphraseRequired because the cryptographer 1403 // Should fail. Triggers an OnPassphraseRequired because the cryptographer
1408 // is not ready. 1404 // is not ready.
1409 EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_, _)).Times(1); 1405 EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_, _)).Times(1);
1410 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 1406 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
1407 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
1411 sync_manager_.GetEncryptionHandler()->Init(); 1408 sync_manager_.GetEncryptionHandler()->Init();
1412 PumpLoop(); 1409 PumpLoop();
1413 1410
1414 const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest(); 1411 const ModelTypeSet encrypted_types = GetEncryptedTypes();
1415 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded. 1412 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded.
1416 EXPECT_FALSE(EncryptEverythingEnabledForTest()); 1413 EXPECT_FALSE(EncryptEverythingEnabledForTest());
1417 } 1414 }
1418 1415
1419 // Attempt to refresh encryption when nigori is empty. 1416 // Attempt to refresh encryption when nigori is empty.
1420 TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) { 1417 TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) {
1421 EXPECT_TRUE(SetUpEncryption(DONT_WRITE_NIGORI, DEFAULT_ENCRYPTION)); 1418 EXPECT_TRUE(SetUpEncryption(DONT_WRITE_NIGORI, DEFAULT_ENCRYPTION));
1422 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(1); 1419 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(1);
1423 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 1420 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
1421 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
1424 1422
1425 // Should write to nigori. 1423 // Should write to nigori.
1426 sync_manager_.GetEncryptionHandler()->Init(); 1424 sync_manager_.GetEncryptionHandler()->Init();
1427 PumpLoop(); 1425 PumpLoop();
1428 1426
1429 const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest(); 1427 const ModelTypeSet encrypted_types = GetEncryptedTypes();
1430 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded. 1428 EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded.
1431 EXPECT_FALSE(EncryptEverythingEnabledForTest()); 1429 EXPECT_FALSE(EncryptEverythingEnabledForTest());
1432 1430
1433 { 1431 {
1434 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1432 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1435 ReadNode node(&trans); 1433 ReadNode node(&trans);
1436 EXPECT_EQ(BaseNode::INIT_OK, 1434 EXPECT_EQ(BaseNode::INIT_OK,
1437 node.InitByIdLookup(GetIdForDataType(NIGORI))); 1435 node.InitByIdLookup(GetIdForDataType(NIGORI)));
1438 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); 1436 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics();
1439 EXPECT_TRUE(nigori.has_encrypted()); 1437 EXPECT_TRUE(nigori.has_encrypted());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1476 } 1474 }
1477 // Last batch_size nodes are a third type that will not need encryption. 1475 // Last batch_size nodes are a third type that will not need encryption.
1478 for (; i < 3*batch_size; ++i) { 1476 for (; i < 3*batch_size; ++i) {
1479 MakeNodeWithParent(sync_manager_.GetUserShare(), THEMES, 1477 MakeNodeWithParent(sync_manager_.GetUserShare(), THEMES,
1480 base::StringPrintf("%"PRIuS"", i), 1478 base::StringPrintf("%"PRIuS"", i),
1481 GetIdForDataType(THEMES)); 1479 GetIdForDataType(THEMES));
1482 } 1480 }
1483 1481
1484 { 1482 {
1485 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1483 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1486 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals( 1484 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(
1487 SyncEncryptionHandler::SensitiveTypes())); 1485 SyncEncryptionHandler::SensitiveTypes()));
1488 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1486 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1489 trans.GetWrappedTrans(), 1487 trans.GetWrappedTrans(),
1490 trans.GetCryptographer(),
1491 BOOKMARKS, 1488 BOOKMARKS,
1492 false /* not encrypted */)); 1489 false /* not encrypted */));
1493 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1490 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1494 trans.GetWrappedTrans(), 1491 trans.GetWrappedTrans(),
1495 trans.GetCryptographer(),
1496 SESSIONS, 1492 SESSIONS,
1497 false /* not encrypted */)); 1493 false /* not encrypted */));
1498 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1494 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1499 trans.GetWrappedTrans(), 1495 trans.GetWrappedTrans(),
1500 trans.GetCryptographer(),
1501 THEMES, 1496 THEMES,
1502 false /* not encrypted */)); 1497 false /* not encrypted */));
1503 } 1498 }
1504 1499
1505 EXPECT_CALL(encryption_observer_, 1500 EXPECT_CALL(encryption_observer_,
1506 OnEncryptedTypesChanged( 1501 OnEncryptedTypesChanged(
1507 HasModelTypes(ModelTypeSet::All()), true)); 1502 HasModelTypes(ModelTypeSet::All()), true));
1508 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 1503 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
1509 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); 1504 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything();
1510 EXPECT_TRUE(EncryptEverythingEnabledForTest()); 1505 EXPECT_TRUE(EncryptEverythingEnabledForTest());
1511 { 1506 {
1512 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1507 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1513 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals( 1508 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(
1514 ModelTypeSet::All())); 1509 ModelTypeSet::All()));
1515 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1510 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1516 trans.GetWrappedTrans(), 1511 trans.GetWrappedTrans(),
1517 trans.GetCryptographer(),
1518 BOOKMARKS, 1512 BOOKMARKS,
1519 true /* is encrypted */)); 1513 true /* is encrypted */));
1520 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1514 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1521 trans.GetWrappedTrans(), 1515 trans.GetWrappedTrans(),
1522 trans.GetCryptographer(),
1523 SESSIONS, 1516 SESSIONS,
1524 true /* is encrypted */)); 1517 true /* is encrypted */));
1525 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1518 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1526 trans.GetWrappedTrans(), 1519 trans.GetWrappedTrans(),
1527 trans.GetCryptographer(),
1528 THEMES, 1520 THEMES,
1529 true /* is encrypted */)); 1521 true /* is encrypted */));
1530 } 1522 }
1531 1523
1532 // Trigger's a ReEncryptEverything with new passphrase. 1524 // Trigger's a ReEncryptEverything with new passphrase.
1533 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 1525 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
1534 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); 1526 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
1535 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); 1527 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
1536 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 1528 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
1537 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 1529 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
1538 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( 1530 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
1539 "new_passphrase", true); 1531 "new_passphrase", true);
1540 EXPECT_TRUE(EncryptEverythingEnabledForTest()); 1532 EXPECT_TRUE(EncryptEverythingEnabledForTest());
1541 { 1533 {
1542 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1534 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1543 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(ModelTypeSet::All())); 1535 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(ModelTypeSet::All()));
1544 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1536 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1545 trans.GetWrappedTrans(), 1537 trans.GetWrappedTrans(),
1546 trans.GetCryptographer(),
1547 BOOKMARKS, 1538 BOOKMARKS,
1548 true /* is encrypted */)); 1539 true /* is encrypted */));
1549 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1540 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1550 trans.GetWrappedTrans(), 1541 trans.GetWrappedTrans(),
1551 trans.GetCryptographer(),
1552 SESSIONS, 1542 SESSIONS,
1553 true /* is encrypted */)); 1543 true /* is encrypted */));
1554 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 1544 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
1555 trans.GetWrappedTrans(), 1545 trans.GetWrappedTrans(),
1556 trans.GetCryptographer(),
1557 THEMES, 1546 THEMES,
1558 true /* is encrypted */)); 1547 true /* is encrypted */));
1559 } 1548 }
1560 // Calling EncryptDataTypes with an empty encrypted types should not trigger 1549 // Calling EncryptDataTypes with an empty encrypted types should not trigger
1561 // a reencryption and should just notify immediately. 1550 // a reencryption and should just notify immediately.
1562 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 1551 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
1563 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)).Times(0); 1552 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)).Times(0);
1564 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()).Times(0); 1553 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()).Times(0);
1565 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(0); 1554 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(0);
1566 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); 1555 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything();
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
2007 // specifics should be stored in the server legal form. 1996 // specifics should be stored in the server legal form.
2008 EXPECT_EQ(raw_title2, node2.GetTitle()); 1997 EXPECT_EQ(raw_title2, node2.GetTitle());
2009 EXPECT_EQ(title2, node2.GetBookmarkSpecifics().title()); 1998 EXPECT_EQ(title2, node2.GetBookmarkSpecifics().title());
2010 EXPECT_EQ(url2, node2.GetBookmarkSpecifics().url()); 1999 EXPECT_EQ(url2, node2.GetBookmarkSpecifics().url());
2011 } 2000 }
2012 2001
2013 { 2002 {
2014 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2003 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2015 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 2004 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
2016 trans.GetWrappedTrans(), 2005 trans.GetWrappedTrans(),
2017 trans.GetCryptographer(),
2018 BOOKMARKS, 2006 BOOKMARKS,
2019 false /* not encrypted */)); 2007 false /* not encrypted */));
2020 } 2008 }
2021 2009
2022 EXPECT_CALL(encryption_observer_, 2010 EXPECT_CALL(encryption_observer_,
2023 OnEncryptedTypesChanged( 2011 OnEncryptedTypesChanged(
2024 HasModelTypes(ModelTypeSet::All()), true)); 2012 HasModelTypes(ModelTypeSet::All()), true));
2025 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2013 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2026 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); 2014 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything();
2027 EXPECT_TRUE(EncryptEverythingEnabledForTest()); 2015 EXPECT_TRUE(EncryptEverythingEnabledForTest());
2028 2016
2029 { 2017 {
2030 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2018 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2031 EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(ModelTypeSet::All())); 2019 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(ModelTypeSet::All()));
2032 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( 2020 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
2033 trans.GetWrappedTrans(), 2021 trans.GetWrappedTrans(),
2034 trans.GetCryptographer(),
2035 BOOKMARKS, 2022 BOOKMARKS,
2036 true /* is encrypted */)); 2023 true /* is encrypted */));
2037 2024
2038 ReadNode node(&trans); 2025 ReadNode node(&trans);
2039 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(node_id1)); 2026 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(node_id1));
2040 EXPECT_EQ(BOOKMARKS, node.GetModelType()); 2027 EXPECT_EQ(BOOKMARKS, node.GetModelType());
2041 EXPECT_EQ(title, node.GetTitle()); 2028 EXPECT_EQ(title, node.GetTitle());
2042 EXPECT_EQ(title, node.GetBookmarkSpecifics().title()); 2029 EXPECT_EQ(title, node.GetBookmarkSpecifics().title());
2043 EXPECT_EQ(url, node.GetBookmarkSpecifics().url()); 2030 EXPECT_EQ(url, node.GetBookmarkSpecifics().url());
2044 2031
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2107 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2094 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2108 2095
2109 // Encrypt the datatatype, should set is_unsynced. 2096 // Encrypt the datatatype, should set is_unsynced.
2110 EXPECT_CALL(encryption_observer_, 2097 EXPECT_CALL(encryption_observer_,
2111 OnEncryptedTypesChanged( 2098 OnEncryptedTypesChanged(
2112 HasModelTypes(ModelTypeSet::All()), true)); 2099 HasModelTypes(ModelTypeSet::All()), true));
2113 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2100 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2114 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); 2101 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
2115 2102
2116 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2103 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2104 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true));
2117 sync_manager_.GetEncryptionHandler()->Init(); 2105 sync_manager_.GetEncryptionHandler()->Init();
2118 PumpLoop(); 2106 PumpLoop();
2119 { 2107 {
2120 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2108 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2121 ReadNode node(&trans); 2109 ReadNode node(&trans);
2122 EXPECT_EQ(BaseNode::INIT_OK, 2110 EXPECT_EQ(BaseNode::INIT_OK,
2123 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2111 node.InitByClientTagLookup(BOOKMARKS, client_tag));
2124 const syncable::Entry* node_entry = node.GetEntry(); 2112 const syncable::Entry* node_entry = node.GetEntry();
2125 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS); 2113 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS);
2126 EXPECT_TRUE(specifics.has_encrypted()); 2114 EXPECT_TRUE(specifics.has_encrypted());
(...skipping 27 matching lines...) Expand all
2154 EXPECT_TRUE(cryptographer->is_ready()); 2142 EXPECT_TRUE(cryptographer->is_ready());
2155 EXPECT_TRUE(cryptographer->CanDecryptUsingDefaultKey( 2143 EXPECT_TRUE(cryptographer->CanDecryptUsingDefaultKey(
2156 specifics.encrypted())); 2144 specifics.encrypted()));
2157 } 2145 }
2158 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2146 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2159 2147
2160 // Force a re-encrypt everything. Should not set is_unsynced. 2148 // Force a re-encrypt everything. Should not set is_unsynced.
2161 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2149 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2162 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2150 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2163 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2151 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2152 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
2164 2153
2165 sync_manager_.GetEncryptionHandler()->Init(); 2154 sync_manager_.GetEncryptionHandler()->Init();
2166 PumpLoop(); 2155 PumpLoop();
2167 2156
2168 { 2157 {
2169 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2158 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2170 ReadNode node(&trans); 2159 ReadNode node(&trans);
2171 EXPECT_EQ(BaseNode::INIT_OK, 2160 EXPECT_EQ(BaseNode::INIT_OK,
2172 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2161 node.InitByClientTagLookup(BOOKMARKS, client_tag));
2173 const syncable::Entry* node_entry = node.GetEntry(); 2162 const syncable::Entry* node_entry = node.GetEntry();
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
2360 BaseNode::GenerateSyncableHash(PASSWORDS, 2349 BaseNode::GenerateSyncableHash(PASSWORDS,
2361 client_tag), 2350 client_tag),
2362 entity_specifics); 2351 entity_specifics);
2363 // New node shouldn't start off unsynced. 2352 // New node shouldn't start off unsynced.
2364 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2353 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2365 2354
2366 // Force a re-encrypt everything. Should not set is_unsynced. 2355 // Force a re-encrypt everything. Should not set is_unsynced.
2367 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2356 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2368 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2357 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2369 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2358 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2359 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
2370 sync_manager_.GetEncryptionHandler()->Init(); 2360 sync_manager_.GetEncryptionHandler()->Init();
2371 PumpLoop(); 2361 PumpLoop();
2372 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2362 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2373 } 2363 }
2374 2364
2375 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks 2365 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks
2376 // when we write the same data, but does set it when we write new data. 2366 // when we write the same data, but does set it when we write new data.
2377 TEST_F(SyncManagerTest, SetBookmarkTitle) { 2367 TEST_F(SyncManagerTest, SetBookmarkTitle) {
2378 std::string client_tag = "title"; 2368 std::string client_tag = "title";
2379 sync_pb::EntitySpecifics entity_specifics; 2369 sync_pb::EntitySpecifics entity_specifics;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2422 // New node shouldn't start off unsynced. 2412 // New node shouldn't start off unsynced.
2423 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2413 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2424 2414
2425 // Encrypt the datatatype, should set is_unsynced. 2415 // Encrypt the datatatype, should set is_unsynced.
2426 EXPECT_CALL(encryption_observer_, 2416 EXPECT_CALL(encryption_observer_,
2427 OnEncryptedTypesChanged( 2417 OnEncryptedTypesChanged(
2428 HasModelTypes(ModelTypeSet::All()), true)); 2418 HasModelTypes(ModelTypeSet::All()), true));
2429 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2419 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2430 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); 2420 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
2431 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2421 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2422 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true));
2432 sync_manager_.GetEncryptionHandler()->Init(); 2423 sync_manager_.GetEncryptionHandler()->Init();
2433 PumpLoop(); 2424 PumpLoop();
2434 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2425 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2435 2426
2436 // Manually change to the same title. Should not set is_unsynced. 2427 // Manually change to the same title. Should not set is_unsynced.
2437 // NON_UNIQUE_NAME should be kEncryptedString. 2428 // NON_UNIQUE_NAME should be kEncryptedString.
2438 { 2429 {
2439 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2430 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2440 WriteNode node(&trans); 2431 WriteNode node(&trans);
2441 EXPECT_EQ(BaseNode::INIT_OK, 2432 EXPECT_EQ(BaseNode::INIT_OK,
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
2518 // New node shouldn't start off unsynced. 2509 // New node shouldn't start off unsynced.
2519 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); 2510 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag));
2520 2511
2521 // Encrypt the datatatype, should set is_unsynced. 2512 // Encrypt the datatatype, should set is_unsynced.
2522 EXPECT_CALL(encryption_observer_, 2513 EXPECT_CALL(encryption_observer_,
2523 OnEncryptedTypesChanged( 2514 OnEncryptedTypesChanged(
2524 HasModelTypes(ModelTypeSet::All()), true)); 2515 HasModelTypes(ModelTypeSet::All()), true));
2525 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2516 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2526 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); 2517 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
2527 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2518 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2519 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true));
2528 sync_manager_.GetEncryptionHandler()->Init(); 2520 sync_manager_.GetEncryptionHandler()->Init();
2529 PumpLoop(); 2521 PumpLoop();
2530 EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag)); 2522 EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag));
2531 2523
2532 // Manually change to the same title. Should not set is_unsynced. 2524 // Manually change to the same title. Should not set is_unsynced.
2533 // NON_UNIQUE_NAME should be kEncryptedString. 2525 // NON_UNIQUE_NAME should be kEncryptedString.
2534 { 2526 {
2535 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2527 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2536 WriteNode node(&trans); 2528 WriteNode node(&trans);
2537 EXPECT_EQ(BaseNode::INIT_OK, 2529 EXPECT_EQ(BaseNode::INIT_OK,
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
2890 2882
2891 // Verify only the non-disabled types remain after cleanup. 2883 // Verify only the non-disabled types remain after cleanup.
2892 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); 2884 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types);
2893 EXPECT_TRUE(new_enabled_types.Equals( 2885 EXPECT_TRUE(new_enabled_types.Equals(
2894 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types))); 2886 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types)));
2895 EXPECT_TRUE(disabled_types.Equals( 2887 EXPECT_TRUE(disabled_types.Equals(
2896 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); 2888 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All())));
2897 } 2889 }
2898 2890
2899 } // namespace 2891 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698