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 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
691 public: | 691 public: |
692 MOCK_METHOD2(OnPassphraseRequired, | 692 MOCK_METHOD2(OnPassphraseRequired, |
693 void(PassphraseRequiredReason, | 693 void(PassphraseRequiredReason, |
694 const sync_pb::EncryptedData&)); // NOLINT | 694 const sync_pb::EncryptedData&)); // NOLINT |
695 MOCK_METHOD0(OnPassphraseAccepted, void()); // NOLINT | 695 MOCK_METHOD0(OnPassphraseAccepted, void()); // NOLINT |
696 MOCK_METHOD1(OnBootstrapTokenUpdated, void(const std::string&)); // NOLINT | 696 MOCK_METHOD1(OnBootstrapTokenUpdated, void(const std::string&)); // NOLINT |
697 MOCK_METHOD2(OnEncryptedTypesChanged, | 697 MOCK_METHOD2(OnEncryptedTypesChanged, |
698 void(ModelTypeSet, bool)); // NOLINT | 698 void(ModelTypeSet, bool)); // NOLINT |
699 MOCK_METHOD0(OnEncryptionComplete, void()); // NOLINT | 699 MOCK_METHOD0(OnEncryptionComplete, void()); // NOLINT |
700 MOCK_METHOD1(OnCryptographerStateChanged, void(Cryptographer*)); // NOLINT | 700 MOCK_METHOD1(OnCryptographerStateChanged, void(Cryptographer*)); // NOLINT |
| 701 MOCK_METHOD1(OnPassphraseStateChanged, void(PassphraseState)); // NOLINT |
701 }; | 702 }; |
702 | 703 |
703 } // namespace | 704 } // namespace |
704 | 705 |
705 class SyncManagerTest : public testing::Test, | 706 class SyncManagerTest : public testing::Test, |
706 public SyncManager::ChangeDelegate { | 707 public SyncManager::ChangeDelegate { |
707 protected: | 708 protected: |
708 enum NigoriStatus { | 709 enum NigoriStatus { |
709 DONT_WRITE_NIGORI, | 710 DONT_WRITE_NIGORI, |
710 WRITE_TO_NIGORI | 711 WRITE_TO_NIGORI |
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1497 THEMES, | 1498 THEMES, |
1498 true /* is encrypted */)); | 1499 true /* is encrypted */)); |
1499 } | 1500 } |
1500 | 1501 |
1501 // Trigger's a ReEncryptEverything with new passphrase. | 1502 // Trigger's a ReEncryptEverything with new passphrase. |
1502 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); | 1503 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
1503 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1504 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
1504 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1505 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
1505 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1506 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1506 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1507 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1508 EXPECT_CALL(encryption_observer_, |
| 1509 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); |
1507 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1510 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
1508 "new_passphrase", true); | 1511 "new_passphrase", true); |
1509 EXPECT_TRUE(EncryptEverythingEnabledForTest()); | 1512 EXPECT_TRUE(EncryptEverythingEnabledForTest()); |
1510 { | 1513 { |
1511 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1514 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1512 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(ModelTypeSet::All())); | 1515 EXPECT_TRUE(GetEncryptedTypesWithTrans(&trans).Equals(ModelTypeSet::All())); |
1513 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( | 1516 EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
1514 trans.GetWrappedTrans(), | 1517 trans.GetWrappedTrans(), |
1515 BOOKMARKS, | 1518 BOOKMARKS, |
1516 true /* is encrypted */)); | 1519 true /* is encrypted */)); |
(...skipping 20 matching lines...) Expand all Loading... |
1537 // (case 1 in SyncManager::SyncInternal::SetEncryptionPassphrase) | 1540 // (case 1 in SyncManager::SyncInternal::SetEncryptionPassphrase) |
1538 TEST_F(SyncManagerTest, SetInitialGaiaPass) { | 1541 TEST_F(SyncManagerTest, SetInitialGaiaPass) { |
1539 EXPECT_FALSE(SetUpEncryption(DONT_WRITE_NIGORI, UNINITIALIZED)); | 1542 EXPECT_FALSE(SetUpEncryption(DONT_WRITE_NIGORI, UNINITIALIZED)); |
1540 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1543 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
1541 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1544 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
1542 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1545 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1543 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1546 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
1544 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1547 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
1545 "new_passphrase", | 1548 "new_passphrase", |
1546 false); | 1549 false); |
1547 EXPECT_FALSE( | 1550 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
1548 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1551 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
1549 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1552 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
1550 { | 1553 { |
1551 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1554 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1552 ReadNode node(&trans); | 1555 ReadNode node(&trans); |
1553 EXPECT_EQ(BaseNode::INIT_OK, node.InitByTagLookup(kNigoriTag)); | 1556 EXPECT_EQ(BaseNode::INIT_OK, node.InitByTagLookup(kNigoriTag)); |
1554 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); | 1557 sync_pb::NigoriSpecifics nigori = node.GetNigoriSpecifics(); |
1555 Cryptographer* cryptographer = trans.GetCryptographer(); | 1558 Cryptographer* cryptographer = trans.GetCryptographer(); |
1556 EXPECT_TRUE(cryptographer->is_ready()); | 1559 EXPECT_TRUE(cryptographer->is_ready()); |
1557 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); | 1560 EXPECT_TRUE(cryptographer->CanDecrypt(nigori.encrypted())); |
1558 } | 1561 } |
(...skipping 12 matching lines...) Expand all Loading... |
1571 cryptographer->GetBootstrapToken(&bootstrap_token); | 1574 cryptographer->GetBootstrapToken(&bootstrap_token); |
1572 verifier.Bootstrap(bootstrap_token); | 1575 verifier.Bootstrap(bootstrap_token); |
1573 } | 1576 } |
1574 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1577 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
1575 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1578 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
1576 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1579 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1577 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1580 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
1578 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1581 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
1579 "new_passphrase", | 1582 "new_passphrase", |
1580 false); | 1583 false); |
1581 EXPECT_FALSE( | 1584 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
1582 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1585 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
1583 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1586 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
1584 { | 1587 { |
1585 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1588 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1586 Cryptographer* cryptographer = trans.GetCryptographer(); | 1589 Cryptographer* cryptographer = trans.GetCryptographer(); |
1587 EXPECT_TRUE(cryptographer->is_ready()); | 1590 EXPECT_TRUE(cryptographer->is_ready()); |
1588 // Verify the default key has changed. | 1591 // Verify the default key has changed. |
1589 sync_pb::EncryptedData encrypted; | 1592 sync_pb::EncryptedData encrypted; |
1590 cryptographer->GetKeys(&encrypted); | 1593 cryptographer->GetKeys(&encrypted); |
1591 EXPECT_FALSE(verifier.CanDecrypt(encrypted)); | 1594 EXPECT_FALSE(verifier.CanDecrypt(encrypted)); |
1592 } | 1595 } |
(...skipping 22 matching lines...) Expand all Loading... |
1615 root_node, "foo"); | 1618 root_node, "foo"); |
1616 EXPECT_EQ(WriteNode::INIT_SUCCESS, result); | 1619 EXPECT_EQ(WriteNode::INIT_SUCCESS, result); |
1617 sync_pb::PasswordSpecificsData data; | 1620 sync_pb::PasswordSpecificsData data; |
1618 data.set_password_value("secret"); | 1621 data.set_password_value("secret"); |
1619 password_node.SetPasswordSpecifics(data); | 1622 password_node.SetPasswordSpecifics(data); |
1620 } | 1623 } |
1621 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1624 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
1622 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1625 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
1623 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1626 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1624 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1627 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1628 EXPECT_CALL(encryption_observer_, |
| 1629 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); |
1625 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1630 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
1626 "new_passphrase", | 1631 "new_passphrase", |
1627 true); | 1632 true); |
1628 EXPECT_TRUE( | 1633 EXPECT_EQ(CUSTOM_PASSPHRASE, |
1629 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1634 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
1630 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1635 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
1631 { | 1636 { |
1632 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1637 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1633 Cryptographer* cryptographer = trans.GetCryptographer(); | 1638 Cryptographer* cryptographer = trans.GetCryptographer(); |
1634 EXPECT_TRUE(cryptographer->is_ready()); | 1639 EXPECT_TRUE(cryptographer->is_ready()); |
1635 // Verify the default key has changed. | 1640 // Verify the default key has changed. |
1636 sync_pb::EncryptedData encrypted; | 1641 sync_pb::EncryptedData encrypted; |
1637 cryptographer->GetKeys(&encrypted); | 1642 cryptographer->GetKeys(&encrypted); |
1638 EXPECT_FALSE(verifier.CanDecrypt(encrypted)); | 1643 EXPECT_FALSE(verifier.CanDecrypt(encrypted)); |
1639 | 1644 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1671 other_cryptographer.GetKeys(nigori.mutable_encrypted()); | 1676 other_cryptographer.GetKeys(nigori.mutable_encrypted()); |
1672 cryptographer->SetPendingKeys(nigori.encrypted()); | 1677 cryptographer->SetPendingKeys(nigori.encrypted()); |
1673 EXPECT_TRUE(cryptographer->has_pending_keys()); | 1678 EXPECT_TRUE(cryptographer->has_pending_keys()); |
1674 node.SetNigoriSpecifics(nigori); | 1679 node.SetNigoriSpecifics(nigori); |
1675 } | 1680 } |
1676 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1681 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
1677 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1682 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
1678 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1683 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1679 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1684 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
1680 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("passphrase2"); | 1685 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("passphrase2"); |
1681 EXPECT_FALSE( | 1686 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
1682 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1687 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
1683 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1688 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
1684 { | 1689 { |
1685 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1690 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1686 Cryptographer* cryptographer = trans.GetCryptographer(); | 1691 Cryptographer* cryptographer = trans.GetCryptographer(); |
1687 EXPECT_TRUE(cryptographer->is_ready()); | 1692 EXPECT_TRUE(cryptographer->is_ready()); |
1688 // Verify we're encrypting with the new key. | 1693 // Verify we're encrypting with the new key. |
1689 sync_pb::EncryptedData encrypted; | 1694 sync_pb::EncryptedData encrypted; |
1690 cryptographer->GetKeys(&encrypted); | 1695 cryptographer->GetKeys(&encrypted); |
1691 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted)); | 1696 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted)); |
1692 } | 1697 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1727 // The bootstrap token should have been updated. Save it to ensure it's based | 1732 // The bootstrap token should have been updated. Save it to ensure it's based |
1728 // on the new GAIA password. | 1733 // on the new GAIA password. |
1729 std::string bootstrap_token; | 1734 std::string bootstrap_token; |
1730 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)) | 1735 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)) |
1731 .WillOnce(SaveArg<0>(&bootstrap_token)); | 1736 .WillOnce(SaveArg<0>(&bootstrap_token)); |
1732 EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_,_)); | 1737 EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_,_)); |
1733 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1738 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
1734 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1739 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
1735 "new_gaia", | 1740 "new_gaia", |
1736 false); | 1741 false); |
1737 EXPECT_FALSE( | 1742 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
1738 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1743 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
1739 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1744 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
1740 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); | 1745 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
1741 { | 1746 { |
1742 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1747 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1743 Cryptographer* cryptographer = trans.GetCryptographer(); | 1748 Cryptographer* cryptographer = trans.GetCryptographer(); |
1744 EXPECT_TRUE(cryptographer->is_initialized()); | 1749 EXPECT_TRUE(cryptographer->is_initialized()); |
1745 EXPECT_FALSE(cryptographer->is_ready()); | 1750 EXPECT_FALSE(cryptographer->is_ready()); |
1746 // Verify we're encrypting with the new key, even though we have pending | 1751 // Verify we're encrypting with the new key, even though we have pending |
1747 // keys. | 1752 // keys. |
1748 sync_pb::EncryptedData encrypted; | 1753 sync_pb::EncryptedData encrypted; |
1749 other_cryptographer.GetKeys(&encrypted); | 1754 other_cryptographer.GetKeys(&encrypted); |
1750 EXPECT_TRUE(cryptographer->CanDecrypt(encrypted)); | 1755 EXPECT_TRUE(cryptographer->CanDecrypt(encrypted)); |
1751 } | 1756 } |
1752 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1757 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
1753 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1758 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
1754 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1759 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1755 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1760 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
1756 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1761 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
1757 "old_gaia", | 1762 "old_gaia", |
1758 false); | 1763 false); |
1759 EXPECT_FALSE( | 1764 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
1760 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1765 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
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_ready()); | 1769 EXPECT_TRUE(cryptographer->is_ready()); |
1765 | 1770 |
1766 // Verify we're encrypting with the new key. | 1771 // Verify we're encrypting with the new key. |
1767 sync_pb::EncryptedData encrypted; | 1772 sync_pb::EncryptedData encrypted; |
1768 other_cryptographer.GetKeys(&encrypted); | 1773 other_cryptographer.GetKeys(&encrypted); |
1769 EXPECT_TRUE(cryptographer->CanDecrypt(encrypted)); | 1774 EXPECT_TRUE(cryptographer->CanDecrypt(encrypted)); |
1770 | 1775 |
(...skipping 28 matching lines...) Expand all Loading... |
1799 other_cryptographer.GetKeys(nigori.mutable_encrypted()); | 1804 other_cryptographer.GetKeys(nigori.mutable_encrypted()); |
1800 cryptographer->SetPendingKeys(nigori.encrypted()); | 1805 cryptographer->SetPendingKeys(nigori.encrypted()); |
1801 EXPECT_TRUE(cryptographer->has_pending_keys()); | 1806 EXPECT_TRUE(cryptographer->has_pending_keys()); |
1802 nigori.set_using_explicit_passphrase(true); | 1807 nigori.set_using_explicit_passphrase(true); |
1803 node.SetNigoriSpecifics(nigori); | 1808 node.SetNigoriSpecifics(nigori); |
1804 } | 1809 } |
1805 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1810 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
1806 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1811 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
1807 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1812 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1808 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1813 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1814 EXPECT_CALL(encryption_observer_, |
| 1815 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); |
1809 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("explicit"); | 1816 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("explicit"); |
1810 EXPECT_TRUE( | 1817 EXPECT_EQ(CUSTOM_PASSPHRASE, |
1811 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1818 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
1812 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1819 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
1813 { | 1820 { |
1814 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1821 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1815 Cryptographer* cryptographer = trans.GetCryptographer(); | 1822 Cryptographer* cryptographer = trans.GetCryptographer(); |
1816 EXPECT_TRUE(cryptographer->is_ready()); | 1823 EXPECT_TRUE(cryptographer->is_ready()); |
1817 // Verify we're encrypting with the new key. | 1824 // Verify we're encrypting with the new key. |
1818 sync_pb::EncryptedData encrypted; | 1825 sync_pb::EncryptedData encrypted; |
1819 cryptographer->GetKeys(&encrypted); | 1826 cryptographer->GetKeys(&encrypted); |
1820 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted)); | 1827 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted)); |
1821 } | 1828 } |
(...skipping 21 matching lines...) Expand all Loading... |
1843 cryptographer->SetPendingKeys(nigori.encrypted()); | 1850 cryptographer->SetPendingKeys(nigori.encrypted()); |
1844 EXPECT_FALSE(cryptographer->is_ready()); | 1851 EXPECT_FALSE(cryptographer->is_ready()); |
1845 } | 1852 } |
1846 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1853 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
1847 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1854 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
1848 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1855 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1849 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1856 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
1850 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1857 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
1851 "passphrase", | 1858 "passphrase", |
1852 false); | 1859 false); |
1853 EXPECT_FALSE( | 1860 EXPECT_EQ(IMPLICIT_PASSPHRASE, |
1854 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1861 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
1855 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1862 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
1856 { | 1863 { |
1857 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1864 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1858 Cryptographer* cryptographer = trans.GetCryptographer(); | 1865 Cryptographer* cryptographer = trans.GetCryptographer(); |
1859 EXPECT_TRUE(cryptographer->is_ready()); | 1866 EXPECT_TRUE(cryptographer->is_ready()); |
1860 } | 1867 } |
1861 } | 1868 } |
1862 | 1869 |
1863 TEST_F(SyncManagerTest, SetPassphraseWithEmptyPasswordNode) { | 1870 TEST_F(SyncManagerTest, SetPassphraseWithEmptyPasswordNode) { |
1864 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); | 1871 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); |
1865 int64 node_id = 0; | 1872 int64 node_id = 0; |
1866 std::string tag = "foo"; | 1873 std::string tag = "foo"; |
1867 { | 1874 { |
1868 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1875 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1869 ReadNode root_node(&trans); | 1876 ReadNode root_node(&trans); |
1870 root_node.InitByRootLookup(); | 1877 root_node.InitByRootLookup(); |
1871 | 1878 |
1872 WriteNode password_node(&trans); | 1879 WriteNode password_node(&trans); |
1873 WriteNode::InitUniqueByCreationResult result = | 1880 WriteNode::InitUniqueByCreationResult result = |
1874 password_node.InitUniqueByCreation(PASSWORDS, root_node, tag); | 1881 password_node.InitUniqueByCreation(PASSWORDS, root_node, tag); |
1875 EXPECT_EQ(WriteNode::INIT_SUCCESS, result); | 1882 EXPECT_EQ(WriteNode::INIT_SUCCESS, result); |
1876 node_id = password_node.GetId(); | 1883 node_id = password_node.GetId(); |
1877 } | 1884 } |
1878 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 1885 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
1879 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 1886 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
1880 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 1887 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
1881 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 1888 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 1889 EXPECT_CALL(encryption_observer_, |
| 1890 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); |
1882 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 1891 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
1883 "new_passphrase", | 1892 "new_passphrase", |
1884 true); | 1893 true); |
1885 EXPECT_TRUE( | 1894 EXPECT_EQ(CUSTOM_PASSPHRASE, |
1886 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 1895 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
1887 EXPECT_FALSE(EncryptEverythingEnabledForTest()); | 1896 EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
1888 { | 1897 { |
1889 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1898 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
1890 ReadNode password_node(&trans); | 1899 ReadNode password_node(&trans); |
1891 EXPECT_EQ(BaseNode::INIT_FAILED_DECRYPT_IF_NECESSARY, | 1900 EXPECT_EQ(BaseNode::INIT_FAILED_DECRYPT_IF_NECESSARY, |
1892 password_node.InitByClientTagLookup(PASSWORDS, | 1901 password_node.InitByClientTagLookup(PASSWORDS, |
1893 tag)); | 1902 tag)); |
1894 } | 1903 } |
1895 { | 1904 { |
1896 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 1905 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2096 specifics.encrypted())); | 2105 specifics.encrypted())); |
2097 } | 2106 } |
2098 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); | 2107 EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
2099 | 2108 |
2100 // Set a new passphrase. Should set is_unsynced. | 2109 // Set a new passphrase. Should set is_unsynced. |
2101 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); | 2110 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
2102 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 2111 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
2103 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 2112 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
2104 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 2113 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
2105 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 2114 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 2115 EXPECT_CALL(encryption_observer_, |
| 2116 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); |
2106 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 2117 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
2107 "new_passphrase", | 2118 "new_passphrase", |
2108 true); | 2119 true); |
2109 { | 2120 { |
2110 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2121 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2111 ReadNode node(&trans); | 2122 ReadNode node(&trans); |
2112 EXPECT_EQ(BaseNode::INIT_OK, | 2123 EXPECT_EQ(BaseNode::INIT_OK, |
2113 node.InitByClientTagLookup(BOOKMARKS, client_tag)); | 2124 node.InitByClientTagLookup(BOOKMARKS, client_tag)); |
2114 const syncable::Entry* node_entry = node.GetEntry(); | 2125 const syncable::Entry* node_entry = node.GetEntry(); |
2115 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS); | 2126 const sync_pb::EntitySpecifics& specifics = node_entry->Get(SPECIFICS); |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2292 entity_specifics); | 2303 entity_specifics); |
2293 // New node shouldn't start off unsynced. | 2304 // New node shouldn't start off unsynced. |
2294 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); | 2305 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
2295 | 2306 |
2296 // Set a new passphrase. Should set is_unsynced. | 2307 // Set a new passphrase. Should set is_unsynced. |
2297 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); | 2308 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
2298 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); | 2309 EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
2299 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 2310 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
2300 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 2311 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
2301 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 2312 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
| 2313 EXPECT_CALL(encryption_observer_, |
| 2314 OnPassphraseStateChanged(CUSTOM_PASSPHRASE)); |
2302 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( | 2315 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
2303 "new_passphrase", | 2316 "new_passphrase", |
2304 true); | 2317 true); |
2305 EXPECT_TRUE( | 2318 EXPECT_EQ(CUSTOM_PASSPHRASE, |
2306 sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); | 2319 sync_manager_.GetEncryptionHandler()->GetPassphraseState()); |
2307 EXPECT_TRUE(ResetUnsyncedEntry(PASSWORDS, client_tag)); | 2320 EXPECT_TRUE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
2308 } | 2321 } |
2309 | 2322 |
2310 // Passwords have their own handling for encryption. Verify it does not result | 2323 // Passwords have their own handling for encryption. Verify it does not result |
2311 // in unnecessary writes via ReencryptEverything. | 2324 // in unnecessary writes via ReencryptEverything. |
2312 TEST_F(SyncManagerTest, UpdatePasswordReencryptEverything) { | 2325 TEST_F(SyncManagerTest, UpdatePasswordReencryptEverything) { |
2313 std::string client_tag = "title"; | 2326 std::string client_tag = "title"; |
2314 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); | 2327 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); |
2315 sync_pb::EntitySpecifics entity_specifics; | 2328 sync_pb::EntitySpecifics entity_specifics; |
2316 { | 2329 { |
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2859 | 2872 |
2860 // Verify only the non-disabled types remain after cleanup. | 2873 // Verify only the non-disabled types remain after cleanup. |
2861 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); | 2874 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); |
2862 EXPECT_TRUE(new_enabled_types.Equals( | 2875 EXPECT_TRUE(new_enabled_types.Equals( |
2863 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types))); | 2876 Union(sync_manager_.InitialSyncEndedTypes(), partial_enabled_types))); |
2864 EXPECT_TRUE(disabled_types.Equals( | 2877 EXPECT_TRUE(disabled_types.Equals( |
2865 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); | 2878 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); |
2866 } | 2879 } |
2867 | 2880 |
2868 } // namespace | 2881 } // namespace |
OLD | NEW |