Index: components/proximity_auth/cryptauth/cryptauth_device_manager_unittest.cc |
diff --git a/components/proximity_auth/cryptauth/cryptauth_device_manager_unittest.cc b/components/proximity_auth/cryptauth/cryptauth_device_manager_unittest.cc |
index 907e81160c28bdf03a7fd9b7f8e99800dd61077c..d5240013e7cf3c09a3d6003ddde1011f338dbfe8 100644 |
--- a/components/proximity_auth/cryptauth/cryptauth_device_manager_unittest.cc |
+++ b/components/proximity_auth/cryptauth/cryptauth_device_manager_unittest.cc |
@@ -150,11 +150,7 @@ class ProximityAuthCryptAuthDeviceManagerTest |
: clock_(new base::SimpleTestClock()), |
client_factory_(new MockCryptAuthClientFactory( |
MockCryptAuthClientFactory::MockType::MAKE_STRICT_MOCKS)), |
- gcm_manager_("existing gcm registration id"), |
- device_manager_(make_scoped_ptr(clock_), |
- make_scoped_ptr(client_factory_), |
- &gcm_manager_, |
- &pref_service_) { |
+ gcm_manager_("existing gcm registration id") { |
client_factory_->AddObserver(this); |
} |
@@ -165,7 +161,6 @@ class ProximityAuthCryptAuthDeviceManagerTest |
// testing::Test: |
void SetUp() override { |
clock_->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds)); |
- device_manager_.AddObserver(this); |
CryptAuthDeviceManager::RegisterPrefs(pref_service_.registry()); |
pref_service_.SetUserPref( |
@@ -195,6 +190,11 @@ class ProximityAuthCryptAuthDeviceManagerTest |
update.Get()->Append(unlock_key_dictionary.Pass()); |
} |
+ device_manager_.reset(new TestCryptAuthDeviceManager( |
+ make_scoped_ptr(clock_), make_scoped_ptr(client_factory_), |
+ &gcm_manager_, &pref_service_)); |
+ device_manager_->AddObserver(this); |
+ |
cryptauth::ExternalDeviceInfo unlock_key; |
unlock_key.set_public_key(kPublicKey1); |
unlock_key.set_friendly_device_name(kDeviceName1); |
@@ -215,7 +215,7 @@ class ProximityAuthCryptAuthDeviceManagerTest |
.WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); |
} |
- void TearDown() override { device_manager_.RemoveObserver(this); } |
+ void TearDown() override { device_manager_->RemoveObserver(this); } |
// CryptAuthDeviceManager::Observer: |
void OnSyncStarted() override { OnSyncStartedProxy(); } |
@@ -235,10 +235,10 @@ class ProximityAuthCryptAuthDeviceManagerTest |
void FireSchedulerForSync( |
cryptauth::InvocationReason expected_invocation_reason) { |
SyncScheduler::Delegate* delegate = |
- static_cast<SyncScheduler::Delegate*>(&device_manager_); |
+ static_cast<SyncScheduler::Delegate*>(device_manager_.get()); |
scoped_ptr<SyncScheduler::SyncRequest> sync_request = make_scoped_ptr( |
- new SyncScheduler::SyncRequest(device_manager_.GetSyncScheduler())); |
+ new SyncScheduler::SyncRequest(device_manager_->GetSyncScheduler())); |
EXPECT_CALL(*this, OnSyncStartedProxy()); |
delegate->OnSyncRequested(sync_request.Pass()); |
@@ -261,7 +261,7 @@ class ProximityAuthCryptAuthDeviceManagerTest |
} |
MockSyncScheduler* sync_scheduler() { |
- return device_manager_.GetSyncScheduler().get(); |
+ return device_manager_->GetSyncScheduler().get(); |
} |
// Owned by |device_manager_|. |
@@ -274,7 +274,7 @@ class ProximityAuthCryptAuthDeviceManagerTest |
FakeCryptAuthGCMManager gcm_manager_; |
- TestCryptAuthDeviceManager device_manager_; |
+ scoped_ptr<TestCryptAuthDeviceManager> device_manager_; |
cryptauth::GetMyDevicesResponse get_my_devices_response_; |
@@ -300,28 +300,28 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, RegisterPrefs) { |
} |
TEST_F(ProximityAuthCryptAuthDeviceManagerTest, GetSyncState) { |
- device_manager_.Start(); |
+ device_manager_->Start(); |
ON_CALL(*sync_scheduler(), GetStrategy()) |
.WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); |
- EXPECT_FALSE(device_manager_.IsRecoveringFromFailure()); |
+ EXPECT_FALSE(device_manager_->IsRecoveringFromFailure()); |
ON_CALL(*sync_scheduler(), GetStrategy()) |
.WillByDefault(Return(SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); |
- EXPECT_TRUE(device_manager_.IsRecoveringFromFailure()); |
+ EXPECT_TRUE(device_manager_->IsRecoveringFromFailure()); |
base::TimeDelta time_to_next_sync = base::TimeDelta::FromMinutes(60); |
ON_CALL(*sync_scheduler(), GetTimeToNextSync()) |
.WillByDefault(Return(time_to_next_sync)); |
- EXPECT_EQ(time_to_next_sync, device_manager_.GetTimeToNextAttempt()); |
+ EXPECT_EQ(time_to_next_sync, device_manager_->GetTimeToNextAttempt()); |
ON_CALL(*sync_scheduler(), GetSyncState()) |
.WillByDefault(Return(SyncScheduler::SyncState::SYNC_IN_PROGRESS)); |
- EXPECT_TRUE(device_manager_.IsSyncInProgress()); |
+ EXPECT_TRUE(device_manager_->IsSyncInProgress()); |
ON_CALL(*sync_scheduler(), GetSyncState()) |
.WillByDefault(Return(SyncScheduler::SyncState::WAITING_FOR_REFRESH)); |
- EXPECT_FALSE(device_manager_.IsSyncInProgress()); |
+ EXPECT_FALSE(device_manager_->IsSyncInProgress()); |
} |
TEST_F(ProximityAuthCryptAuthDeviceManagerTest, InitWithDefaultPrefs) { |
@@ -352,11 +352,11 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, InitWithExistingPrefs) { |
Start(clock_->Now() - base::Time::FromDoubleT(kLastSyncTimeSeconds), |
SyncScheduler::Strategy::PERIODIC_REFRESH)); |
- device_manager_.Start(); |
+ device_manager_->Start(); |
EXPECT_EQ(base::Time::FromDoubleT(kLastSyncTimeSeconds), |
- device_manager_.GetLastSyncTime()); |
+ device_manager_->GetLastSyncTime()); |
- auto unlock_keys = device_manager_.unlock_keys(); |
+ auto unlock_keys = device_manager_->unlock_keys(); |
ASSERT_EQ(1u, unlock_keys.size()); |
EXPECT_EQ(kStoredPublicKey, unlock_keys[0].public_key()); |
EXPECT_EQ(kStoredDeviceName, unlock_keys[0].friendly_device_name()); |
@@ -366,7 +366,7 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, InitWithExistingPrefs) { |
TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncSucceedsForFirstTime) { |
pref_service_.ClearPref(prefs::kCryptAuthDeviceSyncLastSyncTimeSeconds); |
- device_manager_.Start(); |
+ device_manager_->Start(); |
FireSchedulerForSync(cryptauth::INVOCATION_REASON_INITIALIZATION); |
ASSERT_FALSE(success_callback_.is_null()); |
@@ -377,18 +377,19 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncSucceedsForFirstTime) { |
CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
success_callback_.Run(get_my_devices_response_); |
- EXPECT_EQ(clock_->Now(), device_manager_.GetLastSyncTime()); |
+ EXPECT_EQ(clock_->Now(), device_manager_->GetLastSyncTime()); |
ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( |
1, get_my_devices_response_.devices(0)), |
- device_manager_.unlock_keys(), pref_service_); |
+ device_manager_->unlock_keys(), |
+ pref_service_); |
} |
TEST_F(ProximityAuthCryptAuthDeviceManagerTest, ForceSync) { |
- device_manager_.Start(); |
+ device_manager_->Start(); |
EXPECT_CALL(*sync_scheduler(), ForceSync()); |
- device_manager_.ForceSyncNow(cryptauth::INVOCATION_REASON_MANUAL); |
+ device_manager_->ForceSyncNow(cryptauth::INVOCATION_REASON_MANUAL); |
FireSchedulerForSync(cryptauth::INVOCATION_REASON_MANUAL); |
@@ -397,22 +398,23 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, ForceSync) { |
CryptAuthDeviceManager::SyncResult::SUCCESS, |
CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
success_callback_.Run(get_my_devices_response_); |
- EXPECT_EQ(clock_->Now(), device_manager_.GetLastSyncTime()); |
+ EXPECT_EQ(clock_->Now(), device_manager_->GetLastSyncTime()); |
ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( |
1, get_my_devices_response_.devices(0)), |
- device_manager_.unlock_keys(), pref_service_); |
+ device_manager_->unlock_keys(), |
+ pref_service_); |
} |
TEST_F(ProximityAuthCryptAuthDeviceManagerTest, ForceSyncFailsThenSucceeds) { |
- device_manager_.Start(); |
+ device_manager_->Start(); |
EXPECT_FALSE(pref_service_.GetBoolean( |
prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); |
- base::Time old_sync_time = device_manager_.GetLastSyncTime(); |
+ base::Time old_sync_time = device_manager_->GetLastSyncTime(); |
// The first force sync fails. |
EXPECT_CALL(*sync_scheduler(), ForceSync()); |
- device_manager_.ForceSyncNow(cryptauth::INVOCATION_REASON_MANUAL); |
+ device_manager_->ForceSyncNow(cryptauth::INVOCATION_REASON_MANUAL); |
FireSchedulerForSync(cryptauth::INVOCATION_REASON_MANUAL); |
clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds)); |
EXPECT_CALL(*this, |
@@ -420,7 +422,7 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, ForceSyncFailsThenSucceeds) { |
CryptAuthDeviceManager::SyncResult::FAILURE, |
CryptAuthDeviceManager::DeviceChangeResult::UNCHANGED)); |
error_callback_.Run("404"); |
- EXPECT_EQ(old_sync_time, device_manager_.GetLastSyncTime()); |
+ EXPECT_EQ(old_sync_time, device_manager_->GetLastSyncTime()); |
EXPECT_TRUE(pref_service_.GetBoolean( |
prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); |
EXPECT_EQ(static_cast<int>(cryptauth::INVOCATION_REASON_MANUAL), |
@@ -435,11 +437,12 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, ForceSyncFailsThenSucceeds) { |
CryptAuthDeviceManager::SyncResult::SUCCESS, |
CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
success_callback_.Run(get_my_devices_response_); |
- EXPECT_EQ(clock_->Now(), device_manager_.GetLastSyncTime()); |
+ EXPECT_EQ(clock_->Now(), device_manager_->GetLastSyncTime()); |
ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( |
1, get_my_devices_response_.devices(0)), |
- device_manager_.unlock_keys(), pref_service_); |
+ device_manager_->unlock_keys(), |
+ pref_service_); |
EXPECT_FLOAT_EQ( |
clock_->Now().ToDoubleT(), |
@@ -451,8 +454,8 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, ForceSyncFailsThenSucceeds) { |
} |
TEST_F(ProximityAuthCryptAuthDeviceManagerTest, PeriodicSyncFailsThenSucceeds) { |
- device_manager_.Start(); |
- base::Time old_sync_time = device_manager_.GetLastSyncTime(); |
+ device_manager_->Start(); |
+ base::Time old_sync_time = device_manager_->GetLastSyncTime(); |
// The first periodic sync fails. |
FireSchedulerForSync(cryptauth::INVOCATION_REASON_PERIODIC); |
@@ -462,7 +465,7 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, PeriodicSyncFailsThenSucceeds) { |
CryptAuthDeviceManager::SyncResult::FAILURE, |
CryptAuthDeviceManager::DeviceChangeResult::UNCHANGED)); |
error_callback_.Run("401"); |
- EXPECT_EQ(old_sync_time, device_manager_.GetLastSyncTime()); |
+ EXPECT_EQ(old_sync_time, device_manager_->GetLastSyncTime()); |
EXPECT_TRUE(pref_service_.GetBoolean( |
prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); |
@@ -475,11 +478,12 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, PeriodicSyncFailsThenSucceeds) { |
CryptAuthDeviceManager::SyncResult::SUCCESS, |
CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
success_callback_.Run(get_my_devices_response_); |
- EXPECT_EQ(clock_->Now(), device_manager_.GetLastSyncTime()); |
+ EXPECT_EQ(clock_->Now(), device_manager_->GetLastSyncTime()); |
ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( |
1, get_my_devices_response_.devices(0)), |
- device_manager_.unlock_keys(), pref_service_); |
+ device_manager_->unlock_keys(), |
+ pref_service_); |
EXPECT_FLOAT_EQ( |
clock_->Now().ToDoubleT(), |
@@ -489,32 +493,8 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, PeriodicSyncFailsThenSucceeds) { |
} |
TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncSameDevice) { |
- // Set the same unlock key in the user prefs as the one that would be synced. |
- { |
- scoped_ptr<base::DictionaryValue> unlock_key_dictionary( |
- new base::DictionaryValue()); |
- std::string public_key_b64, device_name_b64, bluetooth_address_b64; |
- Base64UrlEncode(kPublicKey1, &public_key_b64); |
- Base64UrlEncode(kDeviceName1, &device_name_b64); |
- Base64UrlEncode(kBluetoothAddress1, &bluetooth_address_b64); |
- unlock_key_dictionary->SetString("public_key", public_key_b64); |
- unlock_key_dictionary->SetString("device_name", device_name_b64); |
- unlock_key_dictionary->SetString("bluetooth_address", |
- bluetooth_address_b64); |
- |
- ListPrefUpdate update(&pref_service_, |
- prefs::kCryptAuthDeviceSyncUnlockKeys); |
- update.Get()->Clear(); |
- update.Get()->Append(unlock_key_dictionary.Pass()); |
- } |
- |
- // Check unlock keys before sync. |
- device_manager_.Start(); |
- auto original_unlock_keys = device_manager_.unlock_keys(); |
- ASSERT_EQ(1u, original_unlock_keys.size()); |
- EXPECT_EQ(kPublicKey1, original_unlock_keys[0].public_key()); |
- EXPECT_EQ(kDeviceName1, original_unlock_keys[0].friendly_device_name()); |
- EXPECT_EQ(kBluetoothAddress1, original_unlock_keys[0].bluetooth_address()); |
+ device_manager_->Start(); |
+ auto original_unlock_keys = device_manager_->unlock_keys(); |
// Sync new devices. |
FireSchedulerForSync(cryptauth::INVOCATION_REASON_PERIODIC); |
@@ -523,18 +503,28 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncSameDevice) { |
OnSyncFinishedProxy( |
CryptAuthDeviceManager::SyncResult::SUCCESS, |
CryptAuthDeviceManager::DeviceChangeResult::UNCHANGED)); |
- success_callback_.Run(get_my_devices_response_); |
+ |
+ // Sync the same device. |
+ cryptauth::ExternalDeviceInfo synced_unlock_key; |
+ synced_unlock_key.set_public_key(kStoredPublicKey); |
+ synced_unlock_key.set_friendly_device_name(kStoredDeviceName); |
+ synced_unlock_key.set_bluetooth_address(kStoredBluetoothAddress); |
+ synced_unlock_key.set_unlock_key(true); |
+ synced_unlock_key.set_unlockable(false); |
+ cryptauth::GetMyDevicesResponse get_my_devices_response; |
+ get_my_devices_response.add_devices()->CopyFrom(synced_unlock_key); |
+ success_callback_.Run(get_my_devices_response); |
// Check that unlock keys are still the same after sync. |
- ExpectUnlockKeysAndPrefAreEqual(original_unlock_keys, |
- device_manager_.unlock_keys(), pref_service_); |
+ ExpectUnlockKeysAndPrefAreEqual( |
+ original_unlock_keys, device_manager_->unlock_keys(), pref_service_); |
} |
TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncEmptyDeviceList) { |
cryptauth::GetMyDevicesResponse empty_response; |
- device_manager_.Start(); |
- EXPECT_EQ(1u, device_manager_.unlock_keys().size()); |
+ device_manager_->Start(); |
+ EXPECT_EQ(1u, device_manager_->unlock_keys().size()); |
FireSchedulerForSync(cryptauth::INVOCATION_REASON_PERIODIC); |
ASSERT_FALSE(success_callback_.is_null()); |
@@ -544,7 +534,8 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncEmptyDeviceList) { |
success_callback_.Run(empty_response); |
ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>(), |
- device_manager_.unlock_keys(), pref_service_); |
+ device_manager_->unlock_keys(), |
+ pref_service_); |
} |
TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncTwoUnlockKeys) { |
@@ -560,8 +551,8 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncTwoUnlockKeys) { |
expected_unlock_keys.push_back(get_my_devices_response_.devices(0)); |
expected_unlock_keys.push_back(unlock_key2); |
- device_manager_.Start(); |
- EXPECT_EQ(1u, device_manager_.unlock_keys().size()); |
+ device_manager_->Start(); |
+ EXPECT_EQ(1u, device_manager_->unlock_keys().size()); |
EXPECT_EQ(1u, pref_service_.GetList(prefs::kCryptAuthDeviceSyncUnlockKeys) |
->GetSize()); |
@@ -572,12 +563,12 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncTwoUnlockKeys) { |
CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
success_callback_.Run(response); |
- ExpectUnlockKeysAndPrefAreEqual(expected_unlock_keys, |
- device_manager_.unlock_keys(), pref_service_); |
+ ExpectUnlockKeysAndPrefAreEqual( |
+ expected_unlock_keys, device_manager_->unlock_keys(), pref_service_); |
} |
TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncOnGCMPushMessage) { |
- device_manager_.Start(); |
+ device_manager_->Start(); |
EXPECT_CALL(*sync_scheduler(), ForceSync()); |
gcm_manager_.PushResyncMessage(); |
@@ -591,7 +582,8 @@ TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncOnGCMPushMessage) { |
ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( |
1, get_my_devices_response_.devices(0)), |
- device_manager_.unlock_keys(), pref_service_); |
+ device_manager_->unlock_keys(), |
+ pref_service_); |
} |
} // namespace proximity_auth |