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

Side by Side Diff: components/sync/core_impl/sync_manager_impl_unittest.cc

Issue 2278333002: Supplimentary identifier for passwords specific (Closed)
Patch Set: Supplimentary identifier for passwords specific. Created 4 years, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | components/sync/protocol/password_specifics.proto » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "components/sync/core_impl/sync_manager_impl.h" 9 #include "components/sync/core_impl/sync_manager_impl.h"
10 10
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 return entry.GetMetahandle(); 214 return entry.GetMetahandle();
215 } 215 }
216 216
217 int GetTotalNodeCount(UserShare* share, int64_t root) { 217 int GetTotalNodeCount(UserShare* share, int64_t root) {
218 ReadTransaction trans(FROM_HERE, share); 218 ReadTransaction trans(FROM_HERE, share);
219 ReadNode node(&trans); 219 ReadNode node(&trans);
220 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(root)); 220 EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(root));
221 return node.GetTotalNodeCount(); 221 return node.GetTotalNodeCount();
222 } 222 }
223 223
224 const char kUrl[] = "example.com";
225 const char kPasswordValue[] = "secret";
226 const char kClientTag[] = "tag";
227
224 } // namespace 228 } // namespace
225 229
226 class SyncApiTest : public testing::Test { 230 class SyncApiTest : public testing::Test {
227 public: 231 public:
228 void SetUp() override { test_user_share_.SetUp(); } 232 void SetUp() override { test_user_share_.SetUp(); }
229 233
230 void TearDown() override { test_user_share_.TearDown(); } 234 void TearDown() override { test_user_share_.TearDown(); }
231 235
232 protected: 236 protected:
233 // Create an entry with the given |model_type|, |client_tag| and 237 // Create an entry with the given |model_type|, |client_tag| and
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 ReadTransaction trans(FROM_HERE, user_share()); 514 ReadTransaction trans(FROM_HERE, user_share());
511 trans.GetCryptographer()->AddKey(params); 515 trans.GetCryptographer()->AddKey(params);
512 } 516 }
513 { 517 {
514 WriteTransaction trans(FROM_HERE, user_share()); 518 WriteTransaction trans(FROM_HERE, user_share());
515 ReadNode root_node(&trans); 519 ReadNode root_node(&trans);
516 root_node.InitByRootLookup(); 520 root_node.InitByRootLookup();
517 521
518 WriteNode password_node(&trans); 522 WriteNode password_node(&trans);
519 WriteNode::InitUniqueByCreationResult result = 523 WriteNode::InitUniqueByCreationResult result =
520 password_node.InitUniqueByCreation(PASSWORDS, root_node, "foo"); 524 password_node.InitUniqueByCreation(PASSWORDS, root_node, kClientTag);
521 EXPECT_EQ(WriteNode::INIT_SUCCESS, result); 525 EXPECT_EQ(WriteNode::INIT_SUCCESS, result);
522 sync_pb::PasswordSpecificsData data; 526 sync_pb::PasswordSpecificsData data;
523 data.set_password_value("secret"); 527 data.set_password_value(kPasswordValue);
524 password_node.SetPasswordSpecifics(data); 528 password_node.SetPasswordSpecifics(data);
525 } 529 }
526 { 530 {
527 ReadTransaction trans(FROM_HERE, user_share()); 531 ReadTransaction trans(FROM_HERE, user_share());
528 532
529 ReadNode password_node(&trans); 533 ReadNode password_node(&trans);
530 EXPECT_EQ(BaseNode::INIT_OK, 534 EXPECT_EQ(BaseNode::INIT_OK,
531 password_node.InitByClientTagLookup(PASSWORDS, "foo")); 535 password_node.InitByClientTagLookup(PASSWORDS, kClientTag));
532 const sync_pb::PasswordSpecificsData& data = 536 const sync_pb::PasswordSpecificsData& data =
533 password_node.GetPasswordSpecifics(); 537 password_node.GetPasswordSpecifics();
534 EXPECT_EQ("secret", data.password_value()); 538 EXPECT_EQ(kPasswordValue, data.password_value());
539 // Check that nothing has appeared in the unencrypted field.
540 EXPECT_FALSE(password_node.GetEntitySpecifics()
541 .password()
542 .has_unencrypted_metadata());
535 } 543 }
536 } 544 }
537 545
538 TEST_F(SyncApiTest, WriteEncryptedTitle) { 546 TEST_F(SyncApiTest, WriteEncryptedTitle) {
539 KeyParams params = {"localhost", "username", "passphrase"}; 547 KeyParams params = {"localhost", "username", "passphrase"};
540 { 548 {
541 ReadTransaction trans(FROM_HERE, user_share()); 549 ReadTransaction trans(FROM_HERE, user_share());
542 trans.GetCryptographer()->AddKey(params); 550 trans.GetCryptographer()->AddKey(params);
543 } 551 }
544 encryption_handler()->EnableEncryptEverything(); 552 encryption_handler()->EnableEncryptEverything();
(...skipping 1491 matching lines...) Expand 10 before | Expand all | Expand 10 after
2036 data.set_password_value("secret2"); 2044 data.set_password_value("secret2");
2037 cryptographer->Encrypt( 2045 cryptographer->Encrypt(
2038 data, entity_specifics.mutable_password()->mutable_encrypted()); 2046 data, entity_specifics.mutable_password()->mutable_encrypted());
2039 node.SetPasswordSpecifics(data); 2047 node.SetPasswordSpecifics(data);
2040 const syncable::Entry* node_entry = node.GetEntry(); 2048 const syncable::Entry* node_entry = node.GetEntry();
2041 EXPECT_TRUE(node_entry->GetIsUnsynced()); 2049 EXPECT_TRUE(node_entry->GetIsUnsynced());
2042 } 2050 }
2043 } 2051 }
2044 2052
2045 // Passwords have their own handling for encryption. Verify setting a new 2053 // Passwords have their own handling for encryption. Verify setting a new
2046 // passphrase updates the data. 2054 // passphrase updates the data and clears the unencrypted metadta for passwords.
2047 TEST_F(SyncManagerTest, UpdatePasswordNewPassphrase) { 2055 TEST_F(SyncManagerTest, UpdatePasswordNewPassphrase) {
2048 std::string client_tag = "title";
2049 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 2056 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
2050 sync_pb::EntitySpecifics entity_specifics; 2057 sync_pb::EntitySpecifics entity_specifics;
2051 { 2058 {
2052 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2059 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2053 Cryptographer* cryptographer = trans.GetCryptographer(); 2060 Cryptographer* cryptographer = trans.GetCryptographer();
2054 sync_pb::PasswordSpecificsData data; 2061 sync_pb::PasswordSpecificsData data;
2055 data.set_password_value("secret"); 2062 data.set_password_value(kPasswordValue);
2063 entity_specifics.mutable_password()
2064 ->mutable_unencrypted_metadata()
2065 ->set_url(kUrl);
2056 cryptographer->Encrypt( 2066 cryptographer->Encrypt(
2057 data, entity_specifics.mutable_password()->mutable_encrypted()); 2067 data, entity_specifics.mutable_password()->mutable_encrypted());
2058 } 2068 }
2059 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, 2069 EXPECT_TRUE(entity_specifics.password().has_unencrypted_metadata());
2060 syncable::GenerateSyncableHash(PASSWORDS, client_tag), 2070 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, kClientTag,
2071 syncable::GenerateSyncableHash(PASSWORDS, kClientTag),
2061 entity_specifics); 2072 entity_specifics);
2062 // New node shouldn't start off unsynced. 2073 // New node shouldn't start off unsynced.
2063 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2074 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, kClientTag));
2064 2075
2065 // Set a new passphrase. Should set is_unsynced. 2076 // Set a new passphrase. Should set is_unsynced.
2066 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2077 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2067 EXPECT_CALL(encryption_observer_, 2078 EXPECT_CALL(encryption_observer_,
2068 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); 2079 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN));
2069 ExpectPassphraseAcceptance(); 2080 ExpectPassphraseAcceptance();
2070 SetCustomPassphraseAndCheck("new_passphrase"); 2081 SetCustomPassphraseAndCheck("new_passphrase");
2071 EXPECT_TRUE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2082 {
2083 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2084 Cryptographer* cryptographer = trans.GetCryptographer();
2085 EXPECT_TRUE(cryptographer->is_ready());
2086 ReadNode password_node(&trans);
2087 EXPECT_EQ(BaseNode::INIT_OK,
2088 password_node.InitByClientTagLookup(PASSWORDS, kClientTag));
2089 const sync_pb::PasswordSpecificsData& data =
2090 password_node.GetPasswordSpecifics();
2091 EXPECT_EQ(kPasswordValue, data.password_value());
2092 EXPECT_FALSE(password_node.GetEntitySpecifics()
2093 .password()
2094 .has_unencrypted_metadata());
2095 }
2096 EXPECT_TRUE(ResetUnsyncedEntry(PASSWORDS, kClientTag));
2072 } 2097 }
2073 2098
2074 // Passwords have their own handling for encryption. Verify it does not result 2099 // Passwords have their own handling for encryption. Verify it does not result
2075 // in unnecessary writes via ReencryptEverything. 2100 // in unnecessary writes via ReencryptEverything.
2076 TEST_F(SyncManagerTest, UpdatePasswordReencryptEverything) { 2101 TEST_F(SyncManagerTest, UpdatePasswordReencryptEverything) {
2077 std::string client_tag = "title"; 2102 std::string client_tag = "title";
2078 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); 2103 EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
2079 sync_pb::EntitySpecifics entity_specifics; 2104 sync_pb::EntitySpecifics entity_specifics;
2080 { 2105 {
2081 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2106 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
(...skipping 1252 matching lines...) Expand 10 before | Expand all | Expand 10 after
3334 // SyncManagerInitInvalidStorageTest::GetFactory will return 3359 // SyncManagerInitInvalidStorageTest::GetFactory will return
3335 // DirectoryBackingStore that ensures that SyncManagerImpl::OpenDirectory fails. 3360 // DirectoryBackingStore that ensures that SyncManagerImpl::OpenDirectory fails.
3336 // SyncManagerImpl initialization is done in SyncManagerTest::SetUp. This test's 3361 // SyncManagerImpl initialization is done in SyncManagerTest::SetUp. This test's
3337 // task is to ensure that SyncManagerImpl reported initialization failure in 3362 // task is to ensure that SyncManagerImpl reported initialization failure in
3338 // OnInitializationComplete callback. 3363 // OnInitializationComplete callback.
3339 TEST_F(SyncManagerInitInvalidStorageTest, FailToOpenDatabase) { 3364 TEST_F(SyncManagerInitInvalidStorageTest, FailToOpenDatabase) {
3340 EXPECT_FALSE(initialization_succeeded_); 3365 EXPECT_FALSE(initialization_succeeded_);
3341 } 3366 }
3342 3367
3343 } // namespace syncer 3368 } // namespace syncer
OLDNEW
« no previous file with comments | « no previous file | components/sync/protocol/password_specifics.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698