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

Unified Diff: sync/internal_api/sync_manager_impl_unittest.cc

Issue 10827266: [Sync] Add SyncEncryptionHandler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments. 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 bd2ffeff0ad07d9f90775a906c44fdbf12e7fc7d..9ad8642cbb39434c0f71533245c99f7bf0ced480 100644
--- a/sync/internal_api/sync_manager_impl_unittest.cc
+++ b/sync/internal_api/sync_manager_impl_unittest.cc
@@ -36,6 +36,7 @@
#include "sync/internal_api/public/test/test_user_share.h"
#include "sync/internal_api/public/write_node.h"
#include "sync/internal_api/public/write_transaction.h"
+#include "sync/internal_api/sync_encryption_handler_impl.h"
#include "sync/internal_api/sync_manager_impl.h"
#include "sync/internal_api/syncapi_internal.h"
#include "sync/js/js_arg_list.h"
@@ -77,6 +78,7 @@ using testing::AtLeast;
using testing::DoAll;
using testing::InSequence;
using testing::Invoke;
+using testing::NiceMock;
using testing::Return;
using testing::SaveArg;
using testing::StrictMock;
@@ -225,15 +227,25 @@ class SyncApiTest : public testing::Test {
public:
virtual void SetUp() {
test_user_share_.SetUp();
+ SetUpEncryption();
}
virtual void TearDown() {
test_user_share_.TearDown();
}
+ void SetUpEncryption() {
+ ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
+ encryption_handler_.reset(
+ new SyncEncryptionHandlerImpl(test_user_share_.user_share(),
+ trans.GetCryptographer()));
+ trans.GetCryptographer()->SetNigoriHandler(encryption_handler_.get());
+ }
+
protected:
MessageLoop message_loop_;
TestUserShare test_user_share_;
+ scoped_ptr<SyncEncryptionHandlerImpl> encryption_handler_;
};
TEST_F(SyncApiTest, SanityCheckTest) {
@@ -472,8 +484,8 @@ TEST_F(SyncApiTest, WriteEncryptedTitle) {
{
ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
trans.GetCryptographer()->AddKey(params);
- trans.GetCryptographer()->set_encrypt_everything();
}
+ encryption_handler_->EnableEncryptEverything();
{
WriteTransaction trans(FROM_HERE, test_user_share_.user_share());
ReadNode root_node(&trans);
@@ -680,18 +692,24 @@ class SyncManagerObserverMock : public SyncManager::Observer {
void(const WeakHandle<JsBackend>&, bool,
syncer::ModelTypeSet)); // NOLINT
MOCK_METHOD1(OnConnectionStatusChange, void(ConnectionStatus)); // NOLINT
+ MOCK_METHOD0(OnStopSyncingPermanently, void()); // NOLINT
+ MOCK_METHOD1(OnUpdatedToken, void(const std::string&)); // NOLINT
+ MOCK_METHOD1(OnActionableError,
+ void(const SyncProtocolError&)); // NOLINT
+};
+
+class SyncEncryptionHandlerObserverMock
+ : public SyncEncryptionHandler::Observer {
+ public:
MOCK_METHOD2(OnPassphraseRequired,
void(PassphraseRequiredReason,
const sync_pb::EncryptedData&)); // NOLINT
MOCK_METHOD0(OnPassphraseAccepted, void()); // NOLINT
MOCK_METHOD1(OnBootstrapTokenUpdated, void(const std::string&)); // NOLINT
- MOCK_METHOD0(OnStopSyncingPermanently, void()); // NOLINT
- MOCK_METHOD1(OnUpdatedToken, void(const std::string&)); // NOLINT
MOCK_METHOD2(OnEncryptedTypesChanged,
void(ModelTypeSet, bool)); // NOLINT
MOCK_METHOD0(OnEncryptionComplete, void()); // NOLINT
- MOCK_METHOD1(OnActionableError,
- void(const SyncProtocolError&)); // NOLINT
+ MOCK_METHOD1(OnCryptographerStateChanged, void(Cryptographer*)); // NOLINT
};
class SyncNotifierMock : public SyncNotifier {
@@ -743,8 +761,8 @@ class SyncManagerTest : public testing::Test,
EXPECT_CALL(*sync_notifier_mock_,
UpdateCredentials(credentials.email, credentials.sync_token));
- sync_manager_.AddObserver(&observer_);
- EXPECT_CALL(observer_, OnInitializationComplete(_, _, _)).
+ sync_manager_.AddObserver(&manager_observer_);
+ EXPECT_CALL(manager_observer_, OnInitializationComplete(_, _, _)).
WillOnce(SaveArg<0>(&js_backend_));
EXPECT_FALSE(js_backend_.IsInitialized());
@@ -770,6 +788,8 @@ class SyncManagerTest : public testing::Test,
&handler_,
NULL);
+ sync_manager_.GetEncryptionHandler()->AddObserver(&encryption_observer_);
+
EXPECT_TRUE(js_backend_.IsInitialized());
for (ModelSafeRoutingInfo::iterator i = routing_info.begin();
@@ -781,7 +801,7 @@ class SyncManagerTest : public testing::Test,
}
void TearDown() {
- sync_manager_.RemoveObserver(&observer_);
+ sync_manager_.RemoveObserver(&manager_observer_);
EXPECT_CALL(*sync_notifier_mock_, UpdateRegisteredIds(_, ObjectIdSet()));
sync_manager_.ShutdownOnSyncThread();
sync_notifier_mock_ = NULL;
@@ -816,6 +836,9 @@ class SyncManagerTest : public testing::Test,
return false;
// Set the nigori cryptographer information.
+ if (encryption_status == FULL_ENCRYPTION)
+ sync_manager_.GetEncryptionHandler()->EnableEncryptEverything();
+
WriteTransaction trans(FROM_HERE, share);
Cryptographer* cryptographer = trans.GetCryptographer();
if (!cryptographer)
@@ -826,8 +849,6 @@ class SyncManagerTest : public testing::Test,
} else {
DCHECK_NE(nigori_status, WRITE_TO_NIGORI);
}
- if (encryption_status == FULL_ENCRYPTION)
- cryptographer->set_encrypt_everything();
if (nigori_status == WRITE_TO_NIGORI) {
sync_pb::NigoriSpecifics nigori;
cryptographer->GetKeys(nigori.mutable_encrypted());
@@ -887,8 +908,7 @@ class SyncManagerTest : public testing::Test,
// Returns true if we are currently encrypting all sync data. May
// be called on any thread.
bool EncryptEverythingEnabledForTest() {
- ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
- return trans.GetCryptographer()->encrypt_everything();
+ return sync_manager_.GetEncryptionHandler()->EncryptEverythingEnabled();
}
// Gets the set of encrypted types from the cryptographer
@@ -949,7 +969,8 @@ class SyncManagerTest : public testing::Test,
StrictMock<SyncNotifierMock>* sync_notifier_mock_;
SyncManagerImpl sync_manager_;
WeakHandle<JsBackend> js_backend_;
- StrictMock<SyncManagerObserverMock> observer_;
+ StrictMock<SyncManagerObserverMock> manager_observer_;
+ StrictMock<SyncEncryptionHandlerObserverMock> encryption_observer_;
};
TEST_F(SyncManagerTest, UpdateEnabledTypes) {
@@ -1330,9 +1351,10 @@ TEST_F(SyncManagerTest, OnIncomingNotification) {
TEST_F(SyncManagerTest, RefreshEncryptionReady) {
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
- EXPECT_CALL(observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
+ sync_manager_.GetEncryptionHandler()->ReloadNigori();
PumpLoop();
const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
@@ -1356,8 +1378,11 @@ TEST_F(SyncManagerTest, RefreshEncryptionReady) {
TEST_F(SyncManagerTest, RefreshEncryptionNotReady) {
// Don't set up encryption (no nigori node created).
- // Should fail.
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
+ // Should fail. Triggers an OnPassphraseRequired because the cryptographer
+ // is not ready.
+ EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_, _)).Times(1);
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->ReloadNigori();
PumpLoop();
const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
@@ -1368,10 +1393,11 @@ TEST_F(SyncManagerTest, RefreshEncryptionNotReady) {
// Attempt to refresh encryption when nigori is empty.
TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) {
EXPECT_TRUE(SetUpEncryption(DONT_WRITE_NIGORI, DEFAULT_ENCRYPTION));
- EXPECT_CALL(observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(1);
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
// Should write to nigori.
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
+ sync_manager_.GetEncryptionHandler()->ReloadNigori();
PumpLoop();
const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
@@ -1393,11 +1419,11 @@ TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) {
TEST_F(SyncManagerTest, EncryptDataTypesWithNoData) {
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION));
- EXPECT_CALL(observer_,
+ EXPECT_CALL(encryption_observer_,
OnEncryptedTypesChanged(
HasModelTypes(ModelTypeSet::All()), true));
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.EnableEncryptEverything();
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ sync_manager_.GetEncryptionHandler()->EnableEncryptEverything();
EXPECT_TRUE(EncryptEverythingEnabledForTest());
}
@@ -1432,7 +1458,7 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) {
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
EXPECT_TRUE(GetEncryptedTypes(&trans).Equals(
- Cryptographer::SensitiveTypes()));
+ SyncEncryptionHandler::SensitiveTypes()));
EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest(
trans.GetWrappedTrans(),
trans.GetCryptographer(),
@@ -1450,11 +1476,11 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) {
false /* not encrypted */));
}
- EXPECT_CALL(observer_,
+ EXPECT_CALL(encryption_observer_,
OnEncryptedTypesChanged(
HasModelTypes(ModelTypeSet::All()), true));
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.EnableEncryptEverything();
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ sync_manager_.GetEncryptionHandler()->EnableEncryptEverything();
EXPECT_TRUE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
@@ -1478,11 +1504,13 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) {
}
// Trigger's a ReEncryptEverything with new passphrase.
- testing::Mock::VerifyAndClearExpectations(&observer_);
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
- EXPECT_CALL(observer_, OnPassphraseAccepted());
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.SetEncryptionPassphrase("new_passphrase", true);
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
+ "new_passphrase", true);
EXPECT_TRUE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
@@ -1505,12 +1533,11 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) {
}
// Calling EncryptDataTypes with an empty encrypted types should not trigger
// a reencryption and should just notify immediately.
- // TODO(zea): add logic to ensure nothing was written.
- testing::Mock::VerifyAndClearExpectations(&observer_);
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)).Times(0);
- EXPECT_CALL(observer_, OnPassphraseAccepted()).Times(0);
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.EnableEncryptEverything();
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)).Times(0);
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()).Times(0);
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(0);
+ sync_manager_.GetEncryptionHandler()->EnableEncryptEverything();
}
// Test that when there are no pending keys and the cryptographer is not
@@ -1518,10 +1545,15 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) {
// (case 1 in SyncManager::SyncInternal::SetEncryptionPassphrase)
TEST_F(SyncManagerTest, SetInitialGaiaPass) {
EXPECT_FALSE(SetUpEncryption(DONT_WRITE_NIGORI, UNINITIALIZED));
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
- EXPECT_CALL(observer_, OnPassphraseAccepted());
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.SetEncryptionPassphrase("new_passphrase", false);
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
+ "new_passphrase",
+ false);
+ EXPECT_FALSE(
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase());
EXPECT_FALSE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
@@ -1547,10 +1579,15 @@ TEST_F(SyncManagerTest, UpdateGaiaPass) {
cryptographer->GetBootstrapToken(&bootstrap_token);
verifier.Bootstrap(bootstrap_token);
}
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
- EXPECT_CALL(observer_, OnPassphraseAccepted());
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.SetEncryptionPassphrase("new_passphrase", false);
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
+ "new_passphrase",
+ false);
+ EXPECT_FALSE(
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase());
EXPECT_FALSE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
@@ -1589,10 +1626,15 @@ TEST_F(SyncManagerTest, SetPassphraseWithPassword) {
data.set_password_value("secret");
password_node.SetPasswordSpecifics(data);
}
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
- EXPECT_CALL(observer_, OnPassphraseAccepted());
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.SetEncryptionPassphrase("new_passphrase", true);
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
+ "new_passphrase",
+ true);
+ EXPECT_TRUE(
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase());
EXPECT_FALSE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
@@ -1635,14 +1677,17 @@ TEST_F(SyncManagerTest, SupplyPendingGAIAPass) {
EXPECT_EQ(BaseNode::INIT_OK, node.InitByTagLookup(kNigoriTag));
sync_pb::NigoriSpecifics nigori;
other_cryptographer.GetKeys(nigori.mutable_encrypted());
- cryptographer->Update(nigori);
+ cryptographer->SetPendingKeys(nigori.encrypted());
EXPECT_TRUE(cryptographer->has_pending_keys());
node.SetNigoriSpecifics(nigori);
}
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
- EXPECT_CALL(observer_, OnPassphraseAccepted());
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.SetDecryptionPassphrase("passphrase2");
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("passphrase2");
+ EXPECT_FALSE(
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase());
EXPECT_FALSE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
@@ -1680,7 +1725,7 @@ TEST_F(SyncManagerTest, SupplyPendingOldGAIAPass) {
sync_pb::NigoriSpecifics nigori;
other_cryptographer.GetKeys(nigori.mutable_encrypted());
node.SetNigoriSpecifics(nigori);
- cryptographer->Update(nigori);
+ cryptographer->SetPendingKeys(nigori.encrypted());
// other_cryptographer now contains all encryption keys, and is encrypting
// with the newest gaia.
@@ -1690,12 +1735,17 @@ TEST_F(SyncManagerTest, SupplyPendingOldGAIAPass) {
// The bootstrap token should have been updated. Save it to ensure it's based
// on the new GAIA password.
std::string bootstrap_token;
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_))
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_))
.WillOnce(SaveArg<0>(&bootstrap_token));
- EXPECT_CALL(observer_, OnPassphraseRequired(_,_));
- sync_manager_.SetEncryptionPassphrase("new_gaia", false);
+ EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_,_));
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
+ "new_gaia",
+ false);
+ EXPECT_FALSE(
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase());
EXPECT_FALSE(EncryptEverythingEnabledForTest());
- testing::Mock::VerifyAndClearExpectations(&observer_);
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
Cryptographer* cryptographer = trans.GetCryptographer();
@@ -1707,10 +1757,15 @@ TEST_F(SyncManagerTest, SupplyPendingOldGAIAPass) {
other_cryptographer.GetKeys(&encrypted);
EXPECT_TRUE(cryptographer->CanDecrypt(encrypted));
}
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
- EXPECT_CALL(observer_, OnPassphraseAccepted());
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.SetEncryptionPassphrase("old_gaia", false);
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
+ "old_gaia",
+ false);
+ EXPECT_FALSE(
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
Cryptographer* cryptographer = trans.GetCryptographer();
@@ -1750,15 +1805,18 @@ TEST_F(SyncManagerTest, SupplyPendingExplicitPass) {
EXPECT_EQ(BaseNode::INIT_OK, node.InitByTagLookup(kNigoriTag));
sync_pb::NigoriSpecifics nigori;
other_cryptographer.GetKeys(nigori.mutable_encrypted());
- cryptographer->Update(nigori);
+ cryptographer->SetPendingKeys(nigori.encrypted());
EXPECT_TRUE(cryptographer->has_pending_keys());
nigori.set_using_explicit_passphrase(true);
node.SetNigoriSpecifics(nigori);
}
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
- EXPECT_CALL(observer_, OnPassphraseAccepted());
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.SetDecryptionPassphrase("explicit");
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("explicit");
+ EXPECT_TRUE(
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase());
EXPECT_FALSE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
@@ -1790,13 +1848,18 @@ TEST_F(SyncManagerTest, SupplyPendingGAIAPassUserProvided) {
sync_pb::NigoriSpecifics nigori;
other_cryptographer.GetKeys(nigori.mutable_encrypted());
node.SetNigoriSpecifics(nigori);
- cryptographer->Update(nigori);
+ cryptographer->SetPendingKeys(nigori.encrypted());
EXPECT_FALSE(cryptographer->is_ready());
}
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
- EXPECT_CALL(observer_, OnPassphraseAccepted());
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.SetEncryptionPassphrase("passphrase", false);
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
+ "passphrase",
+ false);
+ EXPECT_FALSE(
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase());
EXPECT_FALSE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
@@ -1820,10 +1883,15 @@ TEST_F(SyncManagerTest, SetPassphraseWithEmptyPasswordNode) {
EXPECT_EQ(WriteNode::INIT_SUCCESS, result);
node_id = password_node.GetId();
}
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
- EXPECT_CALL(observer_, OnPassphraseAccepted());
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.SetEncryptionPassphrase("new_passphrase", true);
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
+ "new_passphrase",
+ true);
+ EXPECT_TRUE(
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase());
EXPECT_FALSE(EncryptEverythingEnabledForTest());
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
@@ -1925,11 +1993,11 @@ TEST_F(SyncManagerTest, EncryptBookmarksWithLegacyData) {
false /* not encrypted */));
}
- EXPECT_CALL(observer_,
+ EXPECT_CALL(encryption_observer_,
OnEncryptedTypesChanged(
HasModelTypes(ModelTypeSet::All()), true));
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.EnableEncryptEverything();
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ sync_manager_.GetEncryptionHandler()->EnableEncryptEverything();
EXPECT_TRUE(EncryptEverythingEnabledForTest());
{
@@ -2013,13 +2081,14 @@ TEST_F(SyncManagerTest, UpdateEntryWithEncryption) {
EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
// Encrypt the datatatype, should set is_unsynced.
- EXPECT_CALL(observer_,
+ EXPECT_CALL(encryption_observer_,
OnEncryptedTypesChanged(
HasModelTypes(ModelTypeSet::All()), true));
- EXPECT_CALL(observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->ReloadNigori();
PumpLoop();
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
@@ -2038,11 +2107,14 @@ TEST_F(SyncManagerTest, UpdateEntryWithEncryption) {
EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
// Set a new passphrase. Should set is_unsynced.
- testing::Mock::VerifyAndClearExpectations(&observer_);
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
- EXPECT_CALL(observer_, OnPassphraseAccepted());
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.SetEncryptionPassphrase("new_passphrase", true);
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
+ "new_passphrase",
+ true);
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
ReadNode node(&trans);
@@ -2060,10 +2132,11 @@ TEST_F(SyncManagerTest, UpdateEntryWithEncryption) {
EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
// Force a re-encrypt everything. Should not set is_unsynced.
- testing::Mock::VerifyAndClearExpectations(&observer_);
- EXPECT_CALL(observer_, OnEncryptionComplete());
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
+ sync_manager_.GetEncryptionHandler()->ReloadNigori();
PumpLoop();
{
@@ -2229,11 +2302,16 @@ TEST_F(SyncManagerTest, UpdatePasswordNewPassphrase) {
EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
// Set a new passphrase. Should set is_unsynced.
- testing::Mock::VerifyAndClearExpectations(&observer_);
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_));
- EXPECT_CALL(observer_, OnPassphraseAccepted());
- EXPECT_CALL(observer_, OnEncryptionComplete());
- sync_manager_.SetEncryptionPassphrase("new_passphrase", true);
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_));
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase(
+ "new_passphrase",
+ true);
+ EXPECT_TRUE(
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase());
EXPECT_TRUE(ResetUnsyncedEntry(PASSWORDS, client_tag));
}
@@ -2260,9 +2338,10 @@ TEST_F(SyncManagerTest, UpdatePasswordReencryptEverything) {
EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
// 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));
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->ReloadNigori();
PumpLoop();
EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
}
@@ -2318,12 +2397,13 @@ TEST_F(SyncManagerTest, SetBookmarkTitleWithEncryption) {
EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
// Encrypt the datatatype, should set is_unsynced.
- EXPECT_CALL(observer_,
+ EXPECT_CALL(encryption_observer_,
OnEncryptedTypesChanged(
HasModelTypes(ModelTypeSet::All()), true));
- EXPECT_CALL(observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->ReloadNigori();
PumpLoop();
EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
@@ -2413,12 +2493,13 @@ TEST_F(SyncManagerTest, SetNonBookmarkTitleWithEncryption) {
EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag));
// Encrypt the datatatype, should set is_unsynced.
- EXPECT_CALL(observer_,
+ EXPECT_CALL(encryption_observer_,
OnEncryptedTypesChanged(
HasModelTypes(ModelTypeSet::All()), true));
- EXPECT_CALL(observer_, OnEncryptionComplete());
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION));
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing));
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
+ sync_manager_.GetEncryptionHandler()->ReloadNigori();
PumpLoop();
EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag));

Powered by Google App Engine
This is Rietveld 408576698