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

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

Issue 2278043003: Thread-safe version of PassphraseType. (Closed)
Patch Set: Thread-safe version of PassphraseType. 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
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 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 // tombstone. 247 // tombstone.
248 void ReplaceWithTombstone(const ModelType& model_type, 248 void ReplaceWithTombstone(const ModelType& model_type,
249 const std::string& client_tag); 249 const std::string& client_tag);
250 250
251 // Save changes to the Directory, destroy it then reload it. 251 // Save changes to the Directory, destroy it then reload it.
252 bool ReloadDir(); 252 bool ReloadDir();
253 253
254 UserShare* user_share(); 254 UserShare* user_share();
255 syncable::Directory* dir(); 255 syncable::Directory* dir();
256 SyncEncryptionHandler* encryption_handler(); 256 SyncEncryptionHandler* encryption_handler();
257 PassphraseType GetPassphraseType(BaseTransaction* trans);
257 258
258 private: 259 private:
259 base::MessageLoop message_loop_; 260 base::MessageLoop message_loop_;
260 TestUserShare test_user_share_; 261 TestUserShare test_user_share_;
261 }; 262 };
262 263
263 UserShare* SyncApiTest::user_share() { 264 UserShare* SyncApiTest::user_share() {
264 return test_user_share_.user_share(); 265 return test_user_share_.user_share();
265 } 266 }
266 267
267 syncable::Directory* SyncApiTest::dir() { 268 syncable::Directory* SyncApiTest::dir() {
268 return test_user_share_.user_share()->directory.get(); 269 return test_user_share_.user_share()->directory.get();
269 } 270 }
270 271
271 SyncEncryptionHandler* SyncApiTest::encryption_handler() { 272 SyncEncryptionHandler* SyncApiTest::encryption_handler() {
272 return test_user_share_.encryption_handler(); 273 return test_user_share_.encryption_handler();
273 } 274 }
274 275
276 PassphraseType SyncApiTest::GetPassphraseType(BaseTransaction* trans) {
277 return dir()->GetNigoriHandler()->GetPassphraseType(trans->GetWrappedTrans());
278 }
279
275 bool SyncApiTest::ReloadDir() { 280 bool SyncApiTest::ReloadDir() {
276 return test_user_share_.Reload(); 281 return test_user_share_.Reload();
277 } 282 }
278 283
279 void SyncApiTest::CreateEntryWithAttachmentMetadata( 284 void SyncApiTest::CreateEntryWithAttachmentMetadata(
280 const ModelType& model_type, 285 const ModelType& model_type,
281 const std::string& client_tag, 286 const std::string& client_tag,
282 const sync_pb::AttachmentMetadata& attachment_metadata) { 287 const sync_pb::AttachmentMetadata& attachment_metadata) {
283 syncer::WriteTransaction trans(FROM_HERE, user_share()); 288 syncer::WriteTransaction trans(FROM_HERE, user_share());
284 syncer::ReadNode root_node(&trans); 289 syncer::ReadNode root_node(&trans);
(...skipping 834 matching lines...) Expand 10 before | Expand all | Expand 10 after
1119 ModelTypeSet GetEncryptedTypes() { 1124 ModelTypeSet GetEncryptedTypes() {
1120 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1125 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1121 return GetEncryptedTypesWithTrans(&trans); 1126 return GetEncryptedTypesWithTrans(&trans);
1122 } 1127 }
1123 1128
1124 ModelTypeSet GetEncryptedTypesWithTrans(BaseTransaction* trans) { 1129 ModelTypeSet GetEncryptedTypesWithTrans(BaseTransaction* trans) {
1125 return trans->GetDirectory()->GetNigoriHandler()->GetEncryptedTypes( 1130 return trans->GetDirectory()->GetNigoriHandler()->GetEncryptedTypes(
1126 trans->GetWrappedTrans()); 1131 trans->GetWrappedTrans());
1127 } 1132 }
1128 1133
1134 PassphraseType GetPassphraseType() {
1135 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1136 return GetPassphraseTypeWithTrans(&trans);
1137 }
1138
1139 PassphraseType GetPassphraseTypeWithTrans(BaseTransaction* trans) {
1140 return trans->GetDirectory()->GetNigoriHandler()->GetPassphraseType(
1141 trans->GetWrappedTrans());
1142 }
1143
1129 void SimulateInvalidatorEnabledForTest(bool is_enabled) { 1144 void SimulateInvalidatorEnabledForTest(bool is_enabled) {
1130 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread()); 1145 DCHECK(sync_manager_.thread_checker_.CalledOnValidThread());
1131 sync_manager_.SetInvalidatorEnabled(is_enabled); 1146 sync_manager_.SetInvalidatorEnabled(is_enabled);
1132 } 1147 }
1133 1148
1134 void SetProgressMarkerForType(ModelType type, bool set) { 1149 void SetProgressMarkerForType(ModelType type, bool set) {
1135 if (set) { 1150 if (set) {
1136 sync_pb::DataTypeProgressMarker marker; 1151 sync_pb::DataTypeProgressMarker marker;
1137 marker.set_token("token"); 1152 marker.set_token("token");
1138 marker.set_data_type_id(GetSpecificsFieldNumberFromModelType(type)); 1153 marker.set_data_type_id(GetSpecificsFieldNumberFromModelType(type));
1139 sync_manager_.directory()->SetDownloadProgress(type, marker); 1154 sync_manager_.directory()->SetDownloadProgress(type, marker);
1140 } else { 1155 } else {
1141 sync_pb::DataTypeProgressMarker marker; 1156 sync_pb::DataTypeProgressMarker marker;
1142 sync_manager_.directory()->SetDownloadProgress(type, marker); 1157 sync_manager_.directory()->SetDownloadProgress(type, marker);
1143 } 1158 }
1144 } 1159 }
1145 1160
1146 InternalComponentsFactory::Switches GetSwitches() const { return switches_; } 1161 InternalComponentsFactory::Switches GetSwitches() const { return switches_; }
1147 1162
1148 void ExpectPassphraseAcceptance() { 1163 void ExpectPassphraseAcceptance() {
1149 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); 1164 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
1150 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 1165 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
1151 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 1166 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
1152 } 1167 }
1153 1168
1154 void SetImplicitPassphraseAndCheck(const std::string& passphrase) { 1169 void SetImplicitPassphraseAndCheck(const std::string& passphrase) {
1155 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(passphrase, 1170 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(passphrase,
1156 false); 1171 false);
1157 EXPECT_EQ(PassphraseType::IMPLICIT_PASSPHRASE, 1172 EXPECT_EQ(PassphraseType::IMPLICIT_PASSPHRASE, GetPassphraseType());
1158 sync_manager_.GetEncryptionHandler()->GetPassphraseType());
1159 } 1173 }
1160 1174
1161 void SetCustomPassphraseAndCheck(const std::string& passphrase) { 1175 void SetCustomPassphraseAndCheck(const std::string& passphrase) {
1162 EXPECT_CALL(encryption_observer_, 1176 EXPECT_CALL(encryption_observer_,
1163 OnPassphraseTypeChanged(PassphraseType::CUSTOM_PASSPHRASE, _)); 1177 OnPassphraseTypeChanged(PassphraseType::CUSTOM_PASSPHRASE, _));
1164 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(passphrase, 1178 sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(passphrase,
1165 true); 1179 true);
1166 EXPECT_EQ(PassphraseType::CUSTOM_PASSPHRASE, 1180 EXPECT_EQ(PassphraseType::CUSTOM_PASSPHRASE, GetPassphraseType());
1167 sync_manager_.GetEncryptionHandler()->GetPassphraseType());
1168 } 1181 }
1169 1182
1170 bool HasUnrecoverableError() { 1183 bool HasUnrecoverableError() {
1171 return mock_unrecoverable_error_handler_.invocation_count() > 0; 1184 return mock_unrecoverable_error_handler_.invocation_count() > 0;
1172 } 1185 }
1173 1186
1174 private: 1187 private:
1175 // Needed by |sync_manager_|. 1188 // Needed by |sync_manager_|.
1176 base::MessageLoop message_loop_; 1189 base::MessageLoop message_loop_;
1177 // Needed by |sync_manager_|. 1190 // Needed by |sync_manager_|.
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
1473 sync_pb::NigoriSpecifics nigori; 1486 sync_pb::NigoriSpecifics nigori;
1474 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); 1487 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag());
1475 cryptographer->SetPendingKeys(nigori.encryption_keybag()); 1488 cryptographer->SetPendingKeys(nigori.encryption_keybag());
1476 EXPECT_TRUE(cryptographer->has_pending_keys()); 1489 EXPECT_TRUE(cryptographer->has_pending_keys());
1477 node.SetNigoriSpecifics(nigori); 1490 node.SetNigoriSpecifics(nigori);
1478 } 1491 }
1479 EXPECT_CALL(encryption_observer_, 1492 EXPECT_CALL(encryption_observer_,
1480 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); 1493 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN));
1481 ExpectPassphraseAcceptance(); 1494 ExpectPassphraseAcceptance();
1482 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("passphrase2"); 1495 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("passphrase2");
1483 EXPECT_EQ(PassphraseType::IMPLICIT_PASSPHRASE, 1496 EXPECT_EQ(PassphraseType::IMPLICIT_PASSPHRASE, GetPassphraseType());
1484 sync_manager_.GetEncryptionHandler()->GetPassphraseType());
1485 EXPECT_FALSE(IsEncryptEverythingEnabledForTest()); 1497 EXPECT_FALSE(IsEncryptEverythingEnabledForTest());
1486 { 1498 {
1487 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1499 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1488 Cryptographer* cryptographer = trans.GetCryptographer(); 1500 Cryptographer* cryptographer = trans.GetCryptographer();
1489 EXPECT_TRUE(cryptographer->is_ready()); 1501 EXPECT_TRUE(cryptographer->is_ready());
1490 // Verify we're encrypting with the new key. 1502 // Verify we're encrypting with the new key.
1491 sync_pb::EncryptedData encrypted; 1503 sync_pb::EncryptedData encrypted;
1492 cryptographer->GetKeys(&encrypted); 1504 cryptographer->GetKeys(&encrypted);
1493 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted)); 1505 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted));
1494 } 1506 }
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
1599 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 1611 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
1600 EXPECT_CALL(encryption_observer_, 1612 EXPECT_CALL(encryption_observer_,
1601 OnPassphraseTypeChanged(PassphraseType::CUSTOM_PASSPHRASE, _)); 1613 OnPassphraseTypeChanged(PassphraseType::CUSTOM_PASSPHRASE, _));
1602 EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_, _)); 1614 EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_, _));
1603 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false)); 1615 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
1604 sync_manager_.GetEncryptionHandler()->Init(); 1616 sync_manager_.GetEncryptionHandler()->Init();
1605 EXPECT_CALL(encryption_observer_, 1617 EXPECT_CALL(encryption_observer_,
1606 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); 1618 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN));
1607 ExpectPassphraseAcceptance(); 1619 ExpectPassphraseAcceptance();
1608 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("explicit"); 1620 sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("explicit");
1609 EXPECT_EQ(PassphraseType::CUSTOM_PASSPHRASE, 1621 EXPECT_EQ(PassphraseType::CUSTOM_PASSPHRASE, GetPassphraseType());
1610 sync_manager_.GetEncryptionHandler()->GetPassphraseType());
1611 EXPECT_FALSE(IsEncryptEverythingEnabledForTest()); 1622 EXPECT_FALSE(IsEncryptEverythingEnabledForTest());
1612 { 1623 {
1613 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 1624 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
1614 Cryptographer* cryptographer = trans.GetCryptographer(); 1625 Cryptographer* cryptographer = trans.GetCryptographer();
1615 EXPECT_TRUE(cryptographer->is_ready()); 1626 EXPECT_TRUE(cryptographer->is_ready());
1616 // Verify we're encrypting with the new key. 1627 // Verify we're encrypting with the new key.
1617 sync_pb::EncryptedData encrypted; 1628 sync_pb::EncryptedData encrypted;
1618 cryptographer->GetKeys(&encrypted); 1629 cryptographer->GetKeys(&encrypted);
1619 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted)); 1630 EXPECT_TRUE(other_cryptographer.CanDecrypt(encrypted));
1620 } 1631 }
(...skipping 1702 matching lines...) Expand 10 before | Expand all | Expand 10 after
3323 // SyncManagerInitInvalidStorageTest::GetFactory will return 3334 // SyncManagerInitInvalidStorageTest::GetFactory will return
3324 // DirectoryBackingStore that ensures that SyncManagerImpl::OpenDirectory fails. 3335 // DirectoryBackingStore that ensures that SyncManagerImpl::OpenDirectory fails.
3325 // SyncManagerImpl initialization is done in SyncManagerTest::SetUp. This test's 3336 // SyncManagerImpl initialization is done in SyncManagerTest::SetUp. This test's
3326 // task is to ensure that SyncManagerImpl reported initialization failure in 3337 // task is to ensure that SyncManagerImpl reported initialization failure in
3327 // OnInitializationComplete callback. 3338 // OnInitializationComplete callback.
3328 TEST_F(SyncManagerInitInvalidStorageTest, FailToOpenDatabase) { 3339 TEST_F(SyncManagerInitInvalidStorageTest, FailToOpenDatabase) {
3329 EXPECT_FALSE(initialization_succeeded_); 3340 EXPECT_FALSE(initialization_succeeded_);
3330 } 3341 }
3331 3342
3332 } // namespace syncer 3343 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/core_impl/sync_encryption_handler_impl_unittest.cc ('k') | components/sync/syncable/nigori_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698