Chromium Code Reviews| 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 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 693 public: | 693 public: |
| 694 MOCK_METHOD2(OnPassphraseRequired, | 694 MOCK_METHOD2(OnPassphraseRequired, |
| 695 void(PassphraseRequiredReason, | 695 void(PassphraseRequiredReason, |
| 696 const sync_pb::EncryptedData&)); // NOLINT | 696 const sync_pb::EncryptedData&)); // NOLINT |
| 697 MOCK_METHOD0(OnPassphraseAccepted, void()); // NOLINT | 697 MOCK_METHOD0(OnPassphraseAccepted, void()); // NOLINT |
| 698 MOCK_METHOD1(OnBootstrapTokenUpdated, void(const std::string&)); // NOLINT | 698 MOCK_METHOD1(OnBootstrapTokenUpdated, void(const std::string&)); // NOLINT |
| 699 MOCK_METHOD2(OnEncryptedTypesChanged, | 699 MOCK_METHOD2(OnEncryptedTypesChanged, |
| 700 void(ModelTypeSet, bool)); // NOLINT | 700 void(ModelTypeSet, bool)); // NOLINT |
| 701 MOCK_METHOD0(OnEncryptionComplete, void()); // NOLINT | 701 MOCK_METHOD0(OnEncryptionComplete, void()); // NOLINT |
| 702 MOCK_METHOD1(OnCryptographerStateChanged, void(Cryptographer*)); // NOLINT | 702 MOCK_METHOD1(OnCryptographerStateChanged, void(Cryptographer*)); // NOLINT |
| 703 MOCK_METHOD1(OnPassphraseStateChanged, void(PassphraseState)); // NOLINT | |
| 703 }; | 704 }; |
| 704 | 705 |
| 705 class SyncNotifierMock : public SyncNotifier { | 706 class SyncNotifierMock : public SyncNotifier { |
| 706 public: | 707 public: |
| 707 MOCK_METHOD1(RegisterHandler, void(SyncNotifierObserver*)); | 708 MOCK_METHOD1(RegisterHandler, void(SyncNotifierObserver*)); |
| 708 MOCK_METHOD2(UpdateRegisteredIds, | 709 MOCK_METHOD2(UpdateRegisteredIds, |
| 709 void(SyncNotifierObserver*, const ObjectIdSet&)); | 710 void(SyncNotifierObserver*, const ObjectIdSet&)); |
| 710 MOCK_METHOD1(UnregisterHandler, void(SyncNotifierObserver*)); | 711 MOCK_METHOD1(UnregisterHandler, void(SyncNotifierObserver*)); |
| 711 MOCK_METHOD1(SetUniqueId, void(const std::string&)); | 712 MOCK_METHOD1(SetUniqueId, void(const std::string&)); |
| 712 MOCK_METHOD1(SetStateDeprecated, void(const std::string&)); | 713 MOCK_METHOD1(SetStateDeprecated, void(const std::string&)); |
| (...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1517 THEMES, | 1518 THEMES, |
| 1518 true /* is encrypted */)); | 1519 true /* is encrypted */)); |
| 1519 } | 1520 } |
| 1520 | 1521 |
| 1521 // Trigger's a ReEncryptEverything with new passphrase. | 1522 // Trigger's a ReEncryptEverything with new passphrase. |
| 1522 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); | 1523 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
| 1523 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1524 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
| 1524 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1525 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
| 1525 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1526 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
| 1526 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1527 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1528 EXPECT_CALL(encryption_observer_, | |
| 1529 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); | |
| 1527 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1530 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
| 1528 "new_passphrase", true); | 1531 "new_passphrase", true); |
| 1529 EXPECT_TRUE(EncryptEverythingEnabledForTest()); | 1532 EXPECT_TRUE(EncryptEverythingEnabledForTest()); |
| 1530 { | 1533 { |
| 1531 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1534 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1532 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(ModelTypeSet::All())); | 1535 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(ModelTypeSet::All())); |
| 1533 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1536 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
| 1534 trans.GetWrappedTrans(), | 1537 trans.GetWrappedTrans(), |
| 1535 BOOKMARKS, | 1538 BOOKMARKS, |
| 1536 true /* is encrypted */)); | 1539 true /* is encrypted */)); |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 1557 // (case 1 in SyncManager::SyncInternal::SetEncryptionPassphrase) | 1560 // (case 1 in SyncManager::SyncInternal::SetEncryptionPassphrase) |
| 1558 TEST_F(SyncManagerTest, SetInitialGaiaPass) { | 1561 TEST_F(SyncManagerTest, SetInitialGaiaPass) { |
| 1559 EXPECT_FALSE(SetUpEncryption(DONT_WRITE_NIGORI, UNINITIALIZED)); | 1562 EXPECT_FALSE(SetUpEncryption(DONT_WRITE_NIGORI, UNINITIALIZED)); |
| 1560 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1563 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
| 1561 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1564 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
| 1562 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1565 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
| 1563 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1566 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1564 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1567 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
| 1565 "new_passphrase", | 1568 "new_passphrase", |
| 1566 false); | 1569 false); |
| 1567 EXPECT_FALSE( | 1570 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
| 1568 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1571 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
| 1569 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1572 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
| 1570 { | 1573 { |
| 1571 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1574 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1572 ReadNode node(&trans); | 1575 ReadNode node(&trans); |
| 1573 EXPECT_EQ(BaseNode::INIT_OK, node.InitByTagLookup(kNigoriTag)); | 1576 EXPECT_EQ(BaseNode::INIT_OK, node.InitByTagLookup(kNigoriTag)); |
| 1574 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); | 1577 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); |
| 1575 Cryptographer* cryptographer = trans.GetCryptographer(); | 1578 Cryptographer* cryptographer = trans.GetCryptographer(); |
| 1576 EXPECT_TRUE(cryptographer->is_ready()); | 1579 EXPECT_TRUE(cryptographer->is_ready()); |
| 1577 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); | 1580 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); |
| 1578 } | 1581 } |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 1591 cryptographer->GetBootstrapToken(&bootstrap_token); | 1594 cryptographer->GetBootstrapToken(&bootstrap_token); |
| 1592 verifier.Bootstrap(bootstrap_token); | 1595 verifier.Bootstrap(bootstrap_token); |
| 1593 } | 1596 } |
| 1594 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1597 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
| 1595 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1598 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
| 1596 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1599 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
| 1597 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1600 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1598 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1601 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
| 1599 "new_passphrase", | 1602 "new_passphrase", |
| 1600 false); | 1603 false); |
| 1601 EXPECT_FALSE( | 1604 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
| 1602 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1605 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
| 1603 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1606 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
| 1604 { | 1607 { |
| 1605 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1608 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1606 Cryptographer* cryptographer = trans.GetCryptographer(); | 1609 Cryptographer* cryptographer = trans.GetCryptographer(); |
| 1607 EXPECT_TRUE(cryptographer->is_ready()); | 1610 EXPECT_TRUE(cryptographer->is_ready()); |
| 1608 // Verify the default key has changed. | 1611 // Verify the default key has changed. |
| 1609 sync_pb::EncryptedData encrypted; | 1612 sync_pb::EncryptedData encrypted; |
| 1610 cryptographer->GetKeys(&encrypted); | 1613 cryptographer->GetKeys(&encrypted); |
| 1611 EXPECT_FALSE(verifier.CanDecrypt(encrypted)); | 1614 EXPECT_FALSE(verifier.CanDecrypt(encrypted)); |
| 1612 } | 1615 } |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 1635 root_node, "foo"); | 1638 root_node, "foo"); |
| 1636 EXPECT_EQ(WriteNode::INIT_SUCCESS, result); | 1639 EXPECT_EQ(WriteNode::INIT_SUCCESS, result); |
| 1637 sync_pb::PasswordSpecificsData data; | 1640 sync_pb::PasswordSpecificsData data; |
| 1638 data.set_password_value("secret"); | 1641 data.set_password_value("secret"); |
| 1639 password_node.SetPasswordSpecifics(data); | 1642 password_node.SetPasswordSpecifics(data); |
| 1640 } | 1643 } |
| 1641 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1644 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
| 1642 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1645 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
| 1643 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1646 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
| 1644 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1647 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1648 EXPECT_CALL(encryption_observer_, | |
| 1649 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); | |
| 1645 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1650 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
| 1646 "new_passphrase", | 1651 "new_passphrase", |
| 1647 true); | 1652 true); |
| 1648 EXPECT_TRUE( | 1653 EXPECT_EQ(CUSTOM_PASSPHRASE, |
| 1649 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1654 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
| 1650 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1655 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
| 1651 { | 1656 { |
| 1652 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1657 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1653 Cryptographer* cryptographer = trans.GetCryptographer(); | 1658 Cryptographer* cryptographer = trans.GetCryptographer(); |
| 1654 EXPECT_TRUE(cryptographer->is_ready()); | 1659 EXPECT_TRUE(cryptographer->is_ready()); |
| 1655 // Verify the default key has changed. | 1660 // Verify the default key has changed. |
| 1656 sync_pb::EncryptedData encrypted; | 1661 sync_pb::EncryptedData encrypted; |
| 1657 cryptographer->GetKeys(&encrypted); | 1662 cryptographer->GetKeys(&encrypted); |
| 1658 EXPECT_FALSE(verifier.CanDecrypt(encrypted)); | 1663 EXPECT_FALSE(verifier.CanDecrypt(encrypted)); |
| 1659 | 1664 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1691 other_cryptographer.GetKeys(nigori.mutable_encrypted()); | 1696 other_cryptographer.GetKeys(nigori.mutable_encrypted()); |
| 1692 cryptographer->SetPendingKeys(nigori.encrypted()); | 1697 cryptographer->SetPendingKeys(nigori.encrypted()); |
| 1693 EXPECT_TRUE(cryptographer->has_pending_keys()); | 1698 EXPECT_TRUE(cryptographer->has_pending_keys()); |
| 1694 node.SetNigoriSpecifics(nigori); | 1699 node.SetNigoriSpecifics(nigori); |
| 1695 } | 1700 } |
| 1696 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1701 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
| 1697 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1702 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
| 1698 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1703 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
| 1699 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1704 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1700 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("passphrase2"); | 1705 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("passphrase2"); |
| 1701 EXPECT_FALSE( | 1706 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
| 1702 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1707 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
| 1703 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1708 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
| 1704 { | 1709 { |
| 1705 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1710 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1706 Cryptographer* cryptographer = trans.GetCryptographer(); | 1711 Cryptographer* cryptographer = trans.GetCryptographer(); |
| 1707 EXPECT_TRUE(cryptographer->is_ready()); | 1712 EXPECT_TRUE(cryptographer->is_ready()); |
| 1708 // Verify we're encrypting with the new key. | 1713 // Verify we're encrypting with the new key. |
| 1709 sync_pb::EncryptedData encrypted; | 1714 sync_pb::EncryptedData encrypted; |
| 1710 cryptographer->GetKeys(&encrypted); | 1715 cryptographer->GetKeys(&encrypted); |
| 1711 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted)); | 1716 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted)); |
| 1712 } | 1717 } |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1747 // The bootstrap token should have been updated. Save it to ensure it's based | 1752 // The bootstrap token should have been updated. Save it to ensure it's based |
| 1748 // on the new GAIA password. | 1753 // on the new GAIA password. |
| 1749 std::string bootstrap_token; | 1754 std::string bootstrap_token; |
| 1750 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)) | 1755 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)) |
| 1751 .WillOnce(SaveArg<0>(&bootstrap_token)); | 1756 .WillOnce(SaveArg<0>(&bootstrap_token)); |
| 1752 EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_,_)); | 1757 EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_,_)); |
| 1753 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1758 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1754 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1759 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
| 1755 "new_gaia", | 1760 "new_gaia", |
| 1756 false); | 1761 false); |
| 1757 EXPECT_FALSE( | 1762 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
| 1758 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1763 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
| 1759 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1764 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
| 1760 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); | 1765 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
| 1761 { | 1766 { |
| 1762 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1767 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1763 Cryptographer* cryptographer = trans.GetCryptographer(); | 1768 Cryptographer* cryptographer = trans.GetCryptographer(); |
| 1764 EXPECT_TRUE(cryptographer->is_initialized()); | 1769 EXPECT_TRUE(cryptographer->is_initialized()); |
| 1765 EXPECT_FALSE(cryptographer->is_ready()); | 1770 EXPECT_FALSE(cryptographer->is_ready()); |
| 1766 // Verify we're encrypting with the new key, even though we have pending | 1771 // Verify we're encrypting with the new key, even though we have pending |
| 1767 // keys. | 1772 // keys. |
| 1768 sync_pb::EncryptedData encrypted; | 1773 sync_pb::EncryptedData encrypted; |
| 1769 other_cryptographer.GetKeys(&encrypted); | 1774 other_cryptographer.GetKeys(&encrypted); |
| 1770 EXPECT_TRUE(cryptographer->CanDecrypt(encrypted)); | 1775 EXPECT_TRUE(cryptographer->CanDecrypt(encrypted)); |
| 1771 } | 1776 } |
| 1772 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1777 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
| 1773 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1778 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
| 1774 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1779 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
| 1775 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1780 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1776 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1781 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
| 1777 "old_gaia", | 1782 "old_gaia", |
| 1778 false); | 1783 false); |
| 1779 EXPECT_FALSE( | 1784 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
| 1780 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1785 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
| 1781 { | 1786 { |
| 1782 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1787 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1783 Cryptographer* cryptographer = trans.GetCryptographer(); | 1788 Cryptographer* cryptographer = trans.GetCryptographer(); |
| 1784 EXPECT_TRUE(cryptographer->is_ready()); | 1789 EXPECT_TRUE(cryptographer->is_ready()); |
| 1785 | 1790 |
| 1786 // Verify we're encrypting with the new key. | 1791 // Verify we're encrypting with the new key. |
| 1787 sync_pb::EncryptedData encrypted; | 1792 sync_pb::EncryptedData encrypted; |
| 1788 other_cryptographer.GetKeys(&encrypted); | 1793 other_cryptographer.GetKeys(&encrypted); |
| 1789 EXPECT_TRUE(cryptographer->CanDecrypt(encrypted)); | 1794 EXPECT_TRUE(cryptographer->CanDecrypt(encrypted)); |
| 1790 | 1795 |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 1819 other_cryptographer.GetKeys(nigori.mutable_encrypted()); | 1824 other_cryptographer.GetKeys(nigori.mutable_encrypted()); |
| 1820 cryptographer->SetPendingKeys(nigori.encrypted()); | 1825 cryptographer->SetPendingKeys(nigori.encrypted()); |
| 1821 EXPECT_TRUE(cryptographer->has_pending_keys()); | 1826 EXPECT_TRUE(cryptographer->has_pending_keys()); |
| 1822 nigori.set_using_explicit_passphrase(true); | 1827 nigori.set_using_explicit_passphrase(true); |
| 1823 node.SetNigoriSpecifics(nigori); | 1828 node.SetNigoriSpecifics(nigori); |
| 1824 } | 1829 } |
| 1825 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1830 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
| 1826 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1831 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
| 1827 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1832 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
| 1828 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1833 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1834 EXPECT_CALL(encryption_observer_, | |
| 1835 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); | |
| 1829 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("explicit"); | 1836 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("explicit"); |
| 1830 EXPECT_TRUE( | 1837 EXPECT_EQ(CUSTOM_PASSPHRASE, |
| 1831 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1838 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
| 1832 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1839 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
| 1833 { | 1840 { |
| 1834 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1841 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1835 Cryptographer* cryptographer = trans.GetCryptographer(); | 1842 Cryptographer* cryptographer = trans.GetCryptographer(); |
| 1836 EXPECT_TRUE(cryptographer->is_ready()); | 1843 EXPECT_TRUE(cryptographer->is_ready()); |
| 1837 // Verify we're encrypting with the new key. | 1844 // Verify we're encrypting with the new key. |
| 1838 sync_pb::EncryptedData encrypted; | 1845 sync_pb::EncryptedData encrypted; |
| 1839 cryptographer->GetKeys(&encrypted); | 1846 cryptographer->GetKeys(&encrypted); |
| 1840 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted)); | 1847 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted)); |
| 1841 } | 1848 } |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 1863 cryptographer->SetPendingKeys(nigori.encrypted()); | 1870 cryptographer->SetPendingKeys(nigori.encrypted()); |
| 1864 EXPECT_FALSE(cryptographer->is_ready()); | 1871 EXPECT_FALSE(cryptographer->is_ready()); |
| 1865 } | 1872 } |
| 1866 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1873 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
| 1867 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1874 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
| 1868 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1875 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
| 1869 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1876 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1870 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1877 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
| 1871 "passphrase", | 1878 "passphrase", |
| 1872 false); | 1879 false); |
| 1873 EXPECT_FALSE( | 1880 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
| 1874 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1881 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
| 1875 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1882 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
| 1876 { | 1883 { |
| 1877 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1884 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1878 Cryptographer* cryptographer = trans.GetCryptographer(); | 1885 Cryptographer* cryptographer = trans.GetCryptographer(); |
| 1879 EXPECT_TRUE(cryptographer->is_ready()); | 1886 EXPECT_TRUE(cryptographer->is_ready()); |
| 1880 } | 1887 } |
| 1881 } | 1888 } |
| 1882 | 1889 |
| 1883 TEST_F(SyncManagerTest, SetPassphraseWithEmptyPasswordNode) { | 1890 TEST_F(SyncManagerTest, SetPassphraseWithEmptyPasswordNode) { |
| 1884 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); | 1891 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); |
| 1885 int64 node_id = 0; | 1892 int64 node_id = 0; |
| 1886 std::string tag = "foo"; | 1893 std::string tag = "foo"; |
| 1887 { | 1894 { |
| 1888 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1895 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1889 ReadNode root_node(&trans); | 1896 ReadNode root_node(&trans); |
| 1890 root_node.InitByRootLookup(); | 1897 root_node.InitByRootLookup(); |
| 1891 | 1898 |
| 1892 WriteNode password_node(&trans); | 1899 WriteNode password_node(&trans); |
| 1893 WriteNode::InitUniqueByCreationResult result = | 1900 WriteNode::InitUniqueByCreationResult result = |
| 1894 password_node.InitUniqueByCreation(PASSWORDS, root_node, tag); | 1901 password_node.InitUniqueByCreation(PASSWORDS, root_node, tag); |
| 1895 EXPECT_EQ(WriteNode::INIT_SUCCESS, result); | 1902 EXPECT_EQ(WriteNode::INIT_SUCCESS, result); |
| 1896 node_id = password_node.GetId(); | 1903 node_id = password_node.GetId(); |
| 1897 } | 1904 } |
| 1898 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1905 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
| 1899 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1906 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
| 1900 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1907 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
| 1901 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1908 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1909 EXPECT_CALL(encryption_observer_, | |
| 1910 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); | |
| 1902 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1911 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
| 1903 "new_passphrase", | 1912 "new_passphrase", |
| 1904 true); | 1913 true); |
| 1905 EXPECT_TRUE( | 1914 EXPECT_EQ(CUSTOM_PASSPHRASE, |
| 1906 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1915 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
| 1907 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1916 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
| 1908 { | 1917 { |
| 1909 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1918 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 1910 ReadNode password_node(&trans); | 1919 ReadNode password_node(&trans); |
| 1911 EXPECT_EQ(BaseNode::INIT_FAILED_DECRYPT_IF_NECESSARY, | 1920 EXPECT_EQ(BaseNode::INIT_FAILED_DECRYPT_IF_NECESSARY, |
| 1912 password_node.InitByClientTagLookup(PASSWORDS, | 1921 password_node.InitByClientTagLookup(PASSWORDS, |
| 1913 tag)); | 1922 tag)); |
| 1914 } | 1923 } |
| 1915 { | 1924 { |
| 1916 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1925 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2115 specifics.encrypted())); | 2124 specifics.encrypted())); |
| 2116 } | 2125 } |
| 2117 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); | 2126 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
| 2118 | 2127 |
| 2119 // Set a new passphrase. Should set is_unsynced. | 2128 // Set a new passphrase. Should set is_unsynced. |
| 2120 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); | 2129 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
| 2121 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 2130 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
| 2122 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 2131 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
| 2123 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 2132 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
| 2124 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 2133 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 2134 EXPECT_CALL(encryption_observer_, | |
| 2135 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); | |
| 2125 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 2136 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
| 2126 "new_passphrase", | 2137 "new_passphrase", |
| 2127 true); | 2138 true); |
| 2128 { | 2139 { |
| 2129 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2140 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
| 2130 ReadNode node(&trans); | 2141 ReadNode node(&trans); |
| 2131 EXPECT_EQ(BaseNode::INIT_OK, | 2142 EXPECT_EQ(BaseNode::INIT_OK, |
| 2132 node.InitByClientTagLookup(BOOKMARKS, client_tag)); | 2143 node.InitByClientTagLookup(BOOKMARKS, client_tag)); |
| 2133 const syncable::Entry* node_entry = node.GetEntry(); | 2144 const syncable::Entry* node_entry = node.GetEntry(); |
| 2134 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS); | 2145 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS); |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2310 entity_specifics); | 2321 entity_specifics); |
| 2311 // New node shouldn't start off unsynced. | 2322 // New node shouldn't start off unsynced. |
| 2312 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); | 2323 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
| 2313 | 2324 |
| 2314 // Set a new passphrase. Should set is_unsynced. | 2325 // Set a new passphrase. Should set is_unsynced. |
| 2315 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); | 2326 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
| 2316 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 2327 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
| 2317 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 2328 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
| 2318 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 2329 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
| 2319 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 2330 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 2331 EXPECT_CALL(encryption_observer_, | |
| 2332 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); | |
| 2320 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 2333 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
| 2321 "new_passphrase", | 2334 "new_passphrase", |
| 2322 true); | 2335 true); |
| 2323 EXPECT_TRUE( | 2336 EXPECT_EQ(CUSTOM_PASSPHRASE, |
|
akalin
2012/08/22 20:10:39
can you write a test that uses any of the other tw
Nicolas Zea
2012/08/22 20:18:33
Those will be in future CL's once the migration lo
| |
| 2324 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 2337 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
| 2325 EXPECT_TRUE(ResetUnsyncedEntry(PASSWORDS, client_tag)); | 2338 EXPECT_TRUE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
| 2326 } | 2339 } |
| 2327 | 2340 |
| 2328 // Passwords have their own handling for encryption. Verify it does not result | 2341 // Passwords have their own handling for encryption. Verify it does not result |
| 2329 // in unnecessary writes via ReencryptEverything. | 2342 // in unnecessary writes via ReencryptEverything. |
| 2330 TEST_F(SyncManagerTest, UpdatePasswordReencryptEverything) { | 2343 TEST_F(SyncManagerTest, UpdatePasswordReencryptEverything) { |
| 2331 std::string client_tag = "title"; | 2344 std::string client_tag = "title"; |
| 2332 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); | 2345 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); |
| 2333 sync_pb::EntitySpecifics entity_specifics; | 2346 sync_pb::EntitySpecifics entity_specifics; |
| 2334 { | 2347 { |
| (...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2874 | 2887 |
| 2875 // Verify only the non-disabled types remain after cleanup. | 2888 // Verify only the non-disabled types remain after cleanup. |
| 2876 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); | 2889 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); |
| 2877 EXPECT_TRUE(new_enabled_types.Equals( | 2890 EXPECT_TRUE(new_enabled_types.Equals( |
| 2878 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types))); | 2891 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types))); |
| 2879 EXPECT_TRUE(disabled_types.Equals( | 2892 EXPECT_TRUE(disabled_types.Equals( |
| 2880 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); | 2893 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); |
| 2881 } | 2894 } |
| 2882 | 2895 |
| 2883 } // namespace | 2896 } // namespace |
| OLD | NEW |