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

Unified Diff: chrome/browser/sync/engine/syncapi_unittest.cc

Issue 7108067: [Sync] Ensure cryptographer ready before encrypting. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Split bootstrap encryption and add ReloadNigori method Created 9 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/engine/syncapi_unittest.cc
diff --git a/chrome/browser/sync/engine/syncapi_unittest.cc b/chrome/browser/sync/engine/syncapi_unittest.cc
index 95a3ada183ac9d155c55cb9964d100ee6e36eb3d..9fccb7b06c5f5a76cea3a3758a5adc50b1e034f2 100644
--- a/chrome/browser/sync/engine/syncapi_unittest.cc
+++ b/chrome/browser/sync/engine/syncapi_unittest.cc
@@ -1240,6 +1240,23 @@ TEST_F(SyncManagerTest, OnIncomingNotification) {
sync_manager_.TriggerOnIncomingNotificationForTest(model_types);
}
+TEST_F(SyncManagerTest, ReloadNigoriReady) {
+ EXPECT_TRUE(SetUpEncryption());
+ sync_manager_.ReloadNigori();
+ syncable::ModelTypeSet encrypted_types =
+ sync_manager_.GetEncryptedDataTypes();
+ EXPECT_EQ(1U, encrypted_types.count(syncable::PASSWORDS));
+}
+
+// Attempt to reload nigori when nigori not downloaded.
+TEST_F(SyncManagerTest, ReloadNigoriNotReady) {
+ // Don't set up encryption.
+ sync_manager_.ReloadNigori(); // Should fail.
+ syncable::ModelTypeSet encrypted_types =
+ sync_manager_.GetEncryptedDataTypes();
+ EXPECT_EQ(1U, encrypted_types.count(syncable::PASSWORDS)); // Hardcoded.
+}
+
TEST_F(SyncManagerTest, EncryptDataTypesWithNoData) {
EXPECT_TRUE(SetUpEncryption());
ModelTypeSet encrypted_types;
@@ -1321,6 +1338,73 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) {
}
}
+TEST_F(SyncManagerTest, SetPassphraseWithPassword) {
+ EXPECT_TRUE(SetUpEncryption());
+ {
+ WriteTransaction trans(sync_manager_.GetUserShare());
+ ReadNode root_node(&trans);
+ root_node.InitByRootLookup();
+
+ WriteNode password_node(&trans);
+ EXPECT_TRUE(password_node.InitUniqueByCreation(syncable::PASSWORDS,
+ root_node, "foo"));
+ sync_pb::PasswordSpecificsData data;
+ data.set_password_value("secret");
+ password_node.SetPasswordSpecifics(data);
+ }
+ EXPECT_CALL(observer_, OnPassphraseAccepted(_));
+ EXPECT_CALL(observer_, OnEncryptionComplete(_));
+ sync_manager_.SetPassphrase("new_passphrase", true);
+ {
+ ReadTransaction trans(sync_manager_.GetUserShare());
+ ReadNode root_node(&trans);
+ root_node.InitByRootLookup();
+
+ ReadNode password_node(&trans);
+ EXPECT_TRUE(password_node.InitByClientTagLookup(syncable::PASSWORDS,
+ "foo"));
+ const sync_pb::PasswordSpecificsData& data =
+ password_node.GetPasswordSpecifics();
+ EXPECT_EQ("secret", data.password_value());
+ }
+}
+
+TEST_F(SyncManagerTest, SetPassphraseWithEmptyPasswordNode) {
+ EXPECT_TRUE(SetUpEncryption());
+ int64 node_id = 0;
+ std::string tag = "foo";
+ {
+ WriteTransaction trans(sync_manager_.GetUserShare());
+ ReadNode root_node(&trans);
+ root_node.InitByRootLookup();
+
+ WriteNode password_node(&trans);
+ EXPECT_TRUE(password_node.InitUniqueByCreation(syncable::PASSWORDS,
+ root_node, tag));
+ node_id = password_node.GetId();
+ }
+ EXPECT_CALL(observer_, OnPassphraseAccepted(_));
+ EXPECT_CALL(observer_, OnEncryptionComplete(_));
+ sync_manager_.SetPassphrase("new_passphrase", true);
+ {
+ ReadTransaction trans(sync_manager_.GetUserShare());
+ ReadNode root_node(&trans);
+ root_node.InitByRootLookup();
+
+ ReadNode password_node(&trans);
+ EXPECT_FALSE(password_node.InitByClientTagLookup(syncable::PASSWORDS,
+ tag));
+ }
+ {
+ ReadTransaction trans(sync_manager_.GetUserShare());
+ ReadNode root_node(&trans);
+ root_node.InitByRootLookup();
+
+ ReadNode password_node(&trans);
+ EXPECT_FALSE(password_node.InitByIdLookup(node_id));
+ }
+}
+
} // namespace
} // namespace browser_sync

Powered by Google App Engine
This is Rietveld 408576698