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

Unified Diff: sync/internal_api/sync_manager_impl_unittest.cc

Issue 10825137: FYI: Control Data + Per-Device Metadata (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add PER_USER_METADATA, refactor some encryption code 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 side-by-side diff with in-line comments
Download patch
Index: sync/internal_api/sync_manager_impl_unittest.cc
diff --git a/sync/internal_api/sync_manager_impl_unittest.cc b/sync/internal_api/sync_manager_impl_unittest.cc
index 841ffd05f3ea9e862115bb78c8cfa0e1defc9ae1..4765c67c7033653872bf6403b50a6edd7558acf9 100644
--- a/sync/internal_api/sync_manager_impl_unittest.cc
+++ b/sync/internal_api/sync_manager_impl_unittest.cc
@@ -796,7 +796,9 @@ class SyncManagerTest : public testing::Test,
}
void GetModelSafeRoutingInfo(ModelSafeRoutingInfo* out) {
- (*out)[NIGORI] = GROUP_PASSIVE;
+ (*out)[NIGORI] = GROUP_CONTROL;
+ (*out)[PER_DEVICE_METADATA] = GROUP_CONTROL;
+ (*out)[PER_USER_METADATA] = GROUP_CONTROL;
(*out)[BOOKMARKS] = GROUP_PASSIVE;
(*out)[THEMES] = GROUP_PASSIVE;
(*out)[SESSIONS] = GROUP_PASSIVE;
@@ -941,6 +943,14 @@ class SyncManagerTest : public testing::Test,
sync_manager_.directory()->set_initial_sync_ended_for_type(type, value);
}
+ void RefreshEncryption() {
+ sync_manager_.RefreshEncryption();
+ }
+
+ void UpdateDeviceInformation(std::string version, std::string session_name) {
+ sync_manager_.UpdateDeviceInformation(version, session_name);
+ }
+
private:
// Needed by |sync_manager_|.
MessageLoop message_loop_;
@@ -1185,7 +1195,7 @@ TEST_F(SyncManagerTest, GetChildNodeIds) {
const ListValue* nodes = NULL;
ASSERT_TRUE(return_args.Get().GetList(0, &nodes));
ASSERT_TRUE(nodes);
- EXPECT_EQ(6u, nodes->GetSize());
+ EXPECT_EQ(8u, nodes->GetSize());
}
TEST_F(SyncManagerTest, GetChildNodeIdsFailure) {
@@ -1345,12 +1355,99 @@ TEST_F(SyncManagerTest, OnIncomingNotification) {
PumpLoop();
}
+TEST_F(SyncManagerTest, CreateNewDeviceInformation) {
+ const std::string version("v1");
+ const std::string session_name("session");
+ const std::string cache_guid =
+ sync_manager_.GetUserShare()->directory->cache_guid();
+
+ {
+ ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
+ ReadNode node(&trans);
+ ASSERT_EQ(BaseNode::INIT_FAILED_ENTRY_NOT_GOOD,
+ node.InitByClientTagLookup(PER_DEVICE_METADATA, cache_guid));
+ }
+
+ UpdateDeviceInformation("v1", "session");
+
+ {
+ ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
+ ReadNode node(&trans);
+ ASSERT_EQ(BaseNode::INIT_OK,
+ node.InitByClientTagLookup(PER_DEVICE_METADATA, cache_guid));
+ sync_pb::PerDeviceSpecifics specifics = node.GetPerDeviceSpecifics();
+ ASSERT_TRUE(specifics.has_device_information());
+ const sync_pb::DeviceInformation& device_info =
+ specifics.device_information();
+
+ EXPECT_EQ(version, device_info.chrome_version());
+ EXPECT_EQ(session_name, device_info.name());
+ EXPECT_EQ(cache_guid, device_info.cache_guid());
+ }
+}
+
+TEST_F(SyncManagerTest, DontModifyExistingDeviceInformation) {
+ const std::string version("v1");
+ const std::string session_name("session");
+ const std::string cache_guid =
+ sync_manager_.GetUserShare()->directory->cache_guid();
+ sync_pb::DeviceInformation old_device_info;
+ sync_pb::DeviceInformation new_device_info;
+
+ UpdateDeviceInformation(version, session_name);
+
+ {
+ ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
+ ReadNode node(&trans);
+ ASSERT_EQ(BaseNode::INIT_OK,
+ node.InitByClientTagLookup(PER_DEVICE_METADATA, cache_guid));
+ sync_pb::PerDeviceSpecifics old_specifics = node.GetPerDeviceSpecifics();
+ }
+
+ UpdateDeviceInformation(version, session_name);
+
+ {
+ ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
+ ReadNode node(&trans);
+ ASSERT_EQ(BaseNode::INIT_OK,
+ node.InitByClientTagLookup(PER_DEVICE_METADATA, cache_guid));
+ sync_pb::PerDeviceSpecifics new_specifics = node.GetPerDeviceSpecifics();
+ }
+
+ EXPECT_EQ(old_device_info.chrome_version(), new_device_info.chrome_version());
+ EXPECT_EQ(old_device_info.name(), new_device_info.name());
+ EXPECT_EQ(old_device_info.cache_guid(), new_device_info.cache_guid());
+}
+
+TEST_F(SyncManagerTest, UpdateExistingDeviceInformation) {
+ const std::string old_version("v1");
+ const std::string new_version("v2");
+ const std::string session_name("session");
+ const std::string cache_guid =
+ sync_manager_.GetUserShare()->directory->cache_guid();
+
+ UpdateDeviceInformation(old_version, session_name);
+ UpdateDeviceInformation(new_version, session_name);
+
+ {
+ WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
+ WriteNode node(&trans);
+ ASSERT_EQ(BaseNode::INIT_OK,
+ node.InitByClientTagLookup(PER_DEVICE_METADATA, cache_guid));
+ sync_pb::PerDeviceSpecifics specifics = node.GetPerDeviceSpecifics();
+ ASSERT_TRUE(specifics.has_device_information());
+ const sync_pb::DeviceInformation& device_info =
+ specifics.device_information();
+
+ EXPECT_EQ(new_version, device_info.chrome_version());
+ }
+}
+
TEST_F(SyncManagerTest, RefreshEncryptionReady) {
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
- PumpLoop();
+ RefreshEncryption();
const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
EXPECT_TRUE(encrypted_types.Has(PASSWORDS));
@@ -1369,27 +1466,13 @@ TEST_F(SyncManagerTest, RefreshEncryptionReady) {
}
}
-// Attempt to refresh encryption when nigori not downloaded.
-TEST_F(SyncManagerTest, RefreshEncryptionNotReady) {
- // Don't set up encryption (no nigori node created).
-
- // Should fail.
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
- PumpLoop();
-
- const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
- EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded.
- EXPECT_FALSE(EncryptEverythingEnabledForTest());
-}
-
// Attempt to refresh encryption when nigori is empty.
TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) {
EXPECT_TRUE(SetUpEncryption(DONT_WRITE_NIGORI, DEFAULT_ENCRYPTION));
EXPECT_CALL(observer_, OnEncryptionComplete());
// Should write to nigori.
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
- PumpLoop();
+ RefreshEncryption();
const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
EXPECT_TRUE(encrypted_types.Has(PASSWORDS)); // Hardcoded.
@@ -1412,7 +1495,7 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithNoData) {
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
EXPECT_CALL(observer_,
OnEncryptedTypesChanged(
- HasModelTypes(ModelTypeSet::All()), true));
+ HasModelTypes(syncer::EncryptableTypes()), true));
EXPECT_CALL(observer_, OnEncryptionComplete());
sync_manager_.EnableEncryptEverything();
EXPECT_TRUE(EncryptEverythingEnabledForTest());
@@ -1469,14 +1552,14 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) {
EXPECT_CALL(observer_,
OnEncryptedTypesChanged(
- HasModelTypes(ModelTypeSet::All()), true));
+ HasModelTypes(syncer::EncryptableTypes()), true));
EXPECT_CALL(observer_, OnEncryptionComplete());
sync_manager_.EnableEncryptEverything();
EXPECT_TRUE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(
- ModelTypeSet::All()));
+ syncer::EncryptableTypes()));
EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
trans.GetWrappedTrans(),
trans.GetCryptographer(),
@@ -1503,7 +1586,7 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) {
EXPECT_TRUE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
- EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(ModelTypeSet::All()));
+ EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(syncer::EncryptableTypes()));
EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
trans.GetWrappedTrans(),
trans.GetCryptographer(),
@@ -1944,14 +2027,14 @@ TEST_F(SyncManagerTest, EncryptBookmarksWithLegacyData) {
EXPECT_CALL(observer_,
OnEncryptedTypesChanged(
- HasModelTypes(ModelTypeSet::All()), true));
+ HasModelTypes(syncer::EncryptableTypes()), true));
EXPECT_CALL(observer_, OnEncryptionComplete());
sync_manager_.EnableEncryptEverything();
EXPECT_TRUE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
- EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(ModelTypeSet::All()));
+ EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(syncer::EncryptableTypes()));
EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
trans.GetWrappedTrans(),
trans.GetCryptographer(),
@@ -2032,12 +2115,11 @@ TEST_F(SyncManagerTest, UpdateEntryWithEncryption) {
// Encrypt the datatatype, should set is_unsynced.
EXPECT_CALL(observer_,
OnEncryptedTypesChanged(
- HasModelTypes(ModelTypeSet::All()), true));
+ HasModelTypes(syncer::EncryptableTypes()), true));
EXPECT_CALL(observer_, OnEncryptionComplete());
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
- PumpLoop();
+ RefreshEncryption();
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
ReadNode node(&trans);
@@ -2080,9 +2162,7 @@ TEST_F(SyncManagerTest, UpdateEntryWithEncryption) {
testing::Mock::VerifyAndClearExpectations(&observer_);
EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
- PumpLoop();
-
+ RefreshEncryption();
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
ReadNode node(&trans);
@@ -2279,8 +2359,7 @@ TEST_F(SyncManagerTest, UpdatePasswordReencryptEverything) {
// Force a re-encrypt everything. Should not set is_unsynced.
testing::Mock::VerifyAndClearExpectations(&observer_);
EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
- PumpLoop();
+ RefreshEncryption();
EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
}
@@ -2337,11 +2416,10 @@ TEST_F(SyncManagerTest, SetBookmarkTitleWithEncryption) {
// Encrypt the datatatype, should set is_unsynced.
EXPECT_CALL(observer_,
OnEncryptedTypesChanged(
- HasModelTypes(ModelTypeSet::All()), true));
+ HasModelTypes(syncer::EncryptableTypes()), true));
EXPECT_CALL(observer_, OnEncryptionComplete());
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
- PumpLoop();
+ RefreshEncryption();
EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
// Manually change to the same title. Should not set is_unsynced.
@@ -2432,11 +2510,10 @@ TEST_F(SyncManagerTest, SetNonBookmarkTitleWithEncryption) {
// Encrypt the datatatype, should set is_unsynced.
EXPECT_CALL(observer_,
OnEncryptedTypesChanged(
- HasModelTypes(ModelTypeSet::All()), true));
+ HasModelTypes(syncer::EncryptableTypes()), true));
EXPECT_CALL(observer_, OnEncryptionComplete());
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
- PumpLoop();
+ RefreshEncryption();
EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag));
// Manually change to the same title. Should not set is_unsynced.

Powered by Google App Engine
This is Rietveld 408576698