OLD | NEW |
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 1401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1412 Cryptographer* cryptographer = trans.GetCryptographer(); | 1412 Cryptographer* cryptographer = trans.GetCryptographer(); |
1413 EXPECT_TRUE(cryptographer->is_ready()); | 1413 EXPECT_TRUE(cryptographer->is_ready()); |
1414 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encryption_keybag())); | 1414 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encryption_keybag())); |
1415 } | 1415 } |
1416 } | 1416 } |
1417 | 1417 |
1418 TEST_F(SyncManagerTest, EncryptDataTypesWithNoData) { | 1418 TEST_F(SyncManagerTest, EncryptDataTypesWithNoData) { |
1419 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); | 1419 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); |
1420 EXPECT_CALL(encryption_observer_, | 1420 EXPECT_CALL(encryption_observer_, |
1421 OnEncryptedTypesChanged( | 1421 OnEncryptedTypesChanged( |
1422 HasModelTypes(UserTypes()), true)); | 1422 HasModelTypes(EncryptableUserTypes()), true)); |
1423 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1423 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1424 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); | 1424 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); |
1425 EXPECT_TRUE(EncryptEverythingEnabledForTest()); | 1425 EXPECT_TRUE(EncryptEverythingEnabledForTest()); |
1426 } | 1426 } |
1427 | 1427 |
1428 TEST_F(SyncManagerTest, EncryptDataTypesWithData) { | 1428 TEST_F(SyncManagerTest, EncryptDataTypesWithData) { |
1429 size_t batch_size = 5; | 1429 size_t batch_size = 5; |
1430 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); | 1430 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); |
1431 | 1431 |
1432 // Create some unencrypted unsynced data. | 1432 // Create some unencrypted unsynced data. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1466 SESSIONS, | 1466 SESSIONS, |
1467 false /* not encrypted */)); | 1467 false /* not encrypted */)); |
1468 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1468 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
1469 trans.GetWrappedTrans(), | 1469 trans.GetWrappedTrans(), |
1470 THEMES, | 1470 THEMES, |
1471 false /* not encrypted */)); | 1471 false /* not encrypted */)); |
1472 } | 1472 } |
1473 | 1473 |
1474 EXPECT_CALL(encryption_observer_, | 1474 EXPECT_CALL(encryption_observer_, |
1475 OnEncryptedTypesChanged( | 1475 OnEncryptedTypesChanged( |
1476 HasModelTypes(UserTypes()), true)); | 1476 HasModelTypes(EncryptableUserTypes()), true)); |
1477 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1477 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1478 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); | 1478 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); |
1479 EXPECT_TRUE(EncryptEverythingEnabledForTest()); | 1479 EXPECT_TRUE(EncryptEverythingEnabledForTest()); |
1480 { | 1480 { |
1481 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1481 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1482 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals( | 1482 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals( |
1483 UserTypes())); | 1483 EncryptableUserTypes())); |
1484 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1484 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
1485 trans.GetWrappedTrans(), | 1485 trans.GetWrappedTrans(), |
1486 BOOKMARKS, | 1486 BOOKMARKS, |
1487 true /* is encrypted */)); | 1487 true /* is encrypted */)); |
1488 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1488 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
1489 trans.GetWrappedTrans(), | 1489 trans.GetWrappedTrans(), |
1490 SESSIONS, | 1490 SESSIONS, |
1491 true /* is encrypted */)); | 1491 true /* is encrypted */)); |
1492 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1492 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
1493 trans.GetWrappedTrans(), | 1493 trans.GetWrappedTrans(), |
1494 THEMES, | 1494 THEMES, |
1495 true /* is encrypted */)); | 1495 true /* is encrypted */)); |
1496 } | 1496 } |
1497 | 1497 |
1498 // Trigger's a ReEncryptEverything with new passphrase. | 1498 // Trigger's a ReEncryptEverything with new passphrase. |
1499 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); | 1499 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
1500 EXPECT_CALL(encryption_observer_, | 1500 EXPECT_CALL(encryption_observer_, |
1501 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1501 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
1502 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1502 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
1503 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1503 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1504 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1504 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
1505 EXPECT_CALL(encryption_observer_, | 1505 EXPECT_CALL(encryption_observer_, |
1506 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE, _)); | 1506 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE, _)); |
1507 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1507 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
1508 "new_passphrase", true); | 1508 "new_passphrase", true); |
1509 EXPECT_TRUE(EncryptEverythingEnabledForTest()); | 1509 EXPECT_TRUE(EncryptEverythingEnabledForTest()); |
1510 { | 1510 { |
1511 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1511 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1512 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(UserTypes())); | 1512 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals( |
| 1513 EncryptableUserTypes())); |
1513 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1514 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
1514 trans.GetWrappedTrans(), | 1515 trans.GetWrappedTrans(), |
1515 BOOKMARKS, | 1516 BOOKMARKS, |
1516 true /* is encrypted */)); | 1517 true /* is encrypted */)); |
1517 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1518 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
1518 trans.GetWrappedTrans(), | 1519 trans.GetWrappedTrans(), |
1519 SESSIONS, | 1520 SESSIONS, |
1520 true /* is encrypted */)); | 1521 true /* is encrypted */)); |
1521 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1522 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
1522 trans.GetWrappedTrans(), | 1523 trans.GetWrappedTrans(), |
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1999 { | 2000 { |
2000 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2001 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2001 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 2002 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
2002 trans.GetWrappedTrans(), | 2003 trans.GetWrappedTrans(), |
2003 BOOKMARKS, | 2004 BOOKMARKS, |
2004 false /* not encrypted */)); | 2005 false /* not encrypted */)); |
2005 } | 2006 } |
2006 | 2007 |
2007 EXPECT_CALL(encryption_observer_, | 2008 EXPECT_CALL(encryption_observer_, |
2008 OnEncryptedTypesChanged( | 2009 OnEncryptedTypesChanged( |
2009 HasModelTypes(UserTypes()), true)); | 2010 HasModelTypes(EncryptableUserTypes()), true)); |
2010 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 2011 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
2011 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); | 2012 sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); |
2012 EXPECT_TRUE(EncryptEverythingEnabledForTest()); | 2013 EXPECT_TRUE(EncryptEverythingEnabledForTest()); |
2013 | 2014 |
2014 { | 2015 { |
2015 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2016 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2016 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(UserTypes())); | 2017 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals( |
| 2018 EncryptableUserTypes())); |
2017 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 2019 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
2018 trans.GetWrappedTrans(), | 2020 trans.GetWrappedTrans(), |
2019 BOOKMARKS, | 2021 BOOKMARKS, |
2020 true /* is encrypted */)); | 2022 true /* is encrypted */)); |
2021 | 2023 |
2022 ReadNode node(&trans); | 2024 ReadNode node(&trans); |
2023 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(node_id1)); | 2025 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(node_id1)); |
2024 EXPECT_EQ(BOOKMARKS, node.GetModelType()); | 2026 EXPECT_EQ(BOOKMARKS, node.GetModelType()); |
2025 EXPECT_EQ(title, node.GetTitle()); | 2027 EXPECT_EQ(title, node.GetTitle()); |
2026 EXPECT_EQ(title, node.GetBookmarkSpecifics().title()); | 2028 EXPECT_EQ(title, node.GetBookmarkSpecifics().title()); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2086 WriteNode node(&trans); | 2088 WriteNode node(&trans); |
2087 EXPECT_EQ(BaseNode::INIT_OK, | 2089 EXPECT_EQ(BaseNode::INIT_OK, |
2088 node.InitByClientTagLookup(BOOKMARKS, client_tag)); | 2090 node.InitByClientTagLookup(BOOKMARKS, client_tag)); |
2089 node.SetEntitySpecifics(entity_specifics); | 2091 node.SetEntitySpecifics(entity_specifics); |
2090 } | 2092 } |
2091 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); | 2093 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
2092 | 2094 |
2093 // Encrypt the datatatype, should set is_unsynced. | 2095 // Encrypt the datatatype, should set is_unsynced. |
2094 EXPECT_CALL(encryption_observer_, | 2096 EXPECT_CALL(encryption_observer_, |
2095 OnEncryptedTypesChanged( | 2097 OnEncryptedTypesChanged( |
2096 HasModelTypes(UserTypes()), true)); | 2098 HasModelTypes(EncryptableUserTypes()), true)); |
2097 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 2099 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
2098 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); | 2100 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); |
2099 | 2101 |
2100 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 2102 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
2101 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true)); | 2103 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true)); |
2102 sync_manager_.GetEncryptionHandler()->Init(); | 2104 sync_manager_.GetEncryptionHandler()->Init(); |
2103 PumpLoop(); | 2105 PumpLoop(); |
2104 { | 2106 { |
2105 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2107 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2106 ReadNode node(&trans); | 2108 ReadNode node(&trans); |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2411 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, | 2413 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, |
2412 BaseNode::GenerateSyncableHash(BOOKMARKS, | 2414 BaseNode::GenerateSyncableHash(BOOKMARKS, |
2413 client_tag), | 2415 client_tag), |
2414 entity_specifics); | 2416 entity_specifics); |
2415 // New node shouldn't start off unsynced. | 2417 // New node shouldn't start off unsynced. |
2416 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); | 2418 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
2417 | 2419 |
2418 // Encrypt the datatatype, should set is_unsynced. | 2420 // Encrypt the datatatype, should set is_unsynced. |
2419 EXPECT_CALL(encryption_observer_, | 2421 EXPECT_CALL(encryption_observer_, |
2420 OnEncryptedTypesChanged( | 2422 OnEncryptedTypesChanged( |
2421 HasModelTypes(UserTypes()), true)); | 2423 HasModelTypes(EncryptableUserTypes()), true)); |
2422 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 2424 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
2423 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); | 2425 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); |
2424 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 2426 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
2425 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true)); | 2427 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true)); |
2426 sync_manager_.GetEncryptionHandler()->Init(); | 2428 sync_manager_.GetEncryptionHandler()->Init(); |
2427 PumpLoop(); | 2429 PumpLoop(); |
2428 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); | 2430 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
2429 | 2431 |
2430 // Manually change to the same title. Should not set is_unsynced. | 2432 // Manually change to the same title. Should not set is_unsynced. |
2431 // NON_UNIQUE_NAME should be kEncryptedString. | 2433 // NON_UNIQUE_NAME should be kEncryptedString. |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2508 client_tag, | 2510 client_tag, |
2509 BaseNode::GenerateSyncableHash(PREFERENCES, | 2511 BaseNode::GenerateSyncableHash(PREFERENCES, |
2510 client_tag), | 2512 client_tag), |
2511 entity_specifics); | 2513 entity_specifics); |
2512 // New node shouldn't start off unsynced. | 2514 // New node shouldn't start off unsynced. |
2513 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); | 2515 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); |
2514 | 2516 |
2515 // Encrypt the datatatype, should set is_unsynced. | 2517 // Encrypt the datatatype, should set is_unsynced. |
2516 EXPECT_CALL(encryption_observer_, | 2518 EXPECT_CALL(encryption_observer_, |
2517 OnEncryptedTypesChanged( | 2519 OnEncryptedTypesChanged( |
2518 HasModelTypes(UserTypes()), true)); | 2520 HasModelTypes(EncryptableUserTypes()), true)); |
2519 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 2521 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
2520 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); | 2522 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); |
2521 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 2523 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
2522 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true)); | 2524 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, true)); |
2523 sync_manager_.GetEncryptionHandler()->Init(); | 2525 sync_manager_.GetEncryptionHandler()->Init(); |
2524 PumpLoop(); | 2526 PumpLoop(); |
2525 EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag)); | 2527 EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag)); |
2526 | 2528 |
2527 // Manually change to the same title. Should not set is_unsynced. | 2529 // Manually change to the same title. Should not set is_unsynced. |
2528 // NON_UNIQUE_NAME should be kEncryptedString. | 2530 // NON_UNIQUE_NAME should be kEncryptedString. |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2885 | 2887 |
2886 // Verify only the non-disabled types remain after cleanup. | 2888 // Verify only the non-disabled types remain after cleanup. |
2887 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); | 2889 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); |
2888 EXPECT_TRUE(new_enabled_types.Equals( | 2890 EXPECT_TRUE(new_enabled_types.Equals( |
2889 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types))); | 2891 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types))); |
2890 EXPECT_TRUE(disabled_types.Equals( | 2892 EXPECT_TRUE(disabled_types.Equals( |
2891 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); | 2893 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); |
2892 } | 2894 } |
2893 | 2895 |
2894 } // namespace | 2896 } // namespace |
OLD | NEW |