| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "components/proximity_auth/cryptauth/cryptauth_device_manager.h" | 5 #include "components/proximity_auth/cryptauth/cryptauth_device_manager.h" |
| 6 | 6 |
| 7 #include "base/memory/weak_ptr.h" | 7 #include "base/memory/weak_ptr.h" |
| 8 #include "base/prefs/scoped_user_pref_update.h" | 8 #include "base/prefs/scoped_user_pref_update.h" |
| 9 #include "base/prefs/testing_pref_service.h" | 9 #include "base/prefs/testing_pref_service.h" |
| 10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 | 143 |
| 144 class ProximityAuthCryptAuthDeviceManagerTest | 144 class ProximityAuthCryptAuthDeviceManagerTest |
| 145 : public testing::Test, | 145 : public testing::Test, |
| 146 public CryptAuthDeviceManager::Observer, | 146 public CryptAuthDeviceManager::Observer, |
| 147 public MockCryptAuthClientFactory::Observer { | 147 public MockCryptAuthClientFactory::Observer { |
| 148 protected: | 148 protected: |
| 149 ProximityAuthCryptAuthDeviceManagerTest() | 149 ProximityAuthCryptAuthDeviceManagerTest() |
| 150 : clock_(new base::SimpleTestClock()), | 150 : clock_(new base::SimpleTestClock()), |
| 151 client_factory_(new MockCryptAuthClientFactory( | 151 client_factory_(new MockCryptAuthClientFactory( |
| 152 MockCryptAuthClientFactory::MockType::MAKE_STRICT_MOCKS)), | 152 MockCryptAuthClientFactory::MockType::MAKE_STRICT_MOCKS)), |
| 153 gcm_manager_("existing gcm registration id"), | 153 gcm_manager_("existing gcm registration id") { |
| 154 device_manager_(make_scoped_ptr(clock_), | |
| 155 make_scoped_ptr(client_factory_), | |
| 156 &gcm_manager_, | |
| 157 &pref_service_) { | |
| 158 client_factory_->AddObserver(this); | 154 client_factory_->AddObserver(this); |
| 159 } | 155 } |
| 160 | 156 |
| 161 ~ProximityAuthCryptAuthDeviceManagerTest() { | 157 ~ProximityAuthCryptAuthDeviceManagerTest() { |
| 162 client_factory_->RemoveObserver(this); | 158 client_factory_->RemoveObserver(this); |
| 163 } | 159 } |
| 164 | 160 |
| 165 // testing::Test: | 161 // testing::Test: |
| 166 void SetUp() override { | 162 void SetUp() override { |
| 167 clock_->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds)); | 163 clock_->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds)); |
| 168 device_manager_.AddObserver(this); | |
| 169 | 164 |
| 170 CryptAuthDeviceManager::RegisterPrefs(pref_service_.registry()); | 165 CryptAuthDeviceManager::RegisterPrefs(pref_service_.registry()); |
| 171 pref_service_.SetUserPref( | 166 pref_service_.SetUserPref( |
| 172 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure, | 167 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure, |
| 173 new base::FundamentalValue(false)); | 168 new base::FundamentalValue(false)); |
| 174 pref_service_.SetUserPref(prefs::kCryptAuthDeviceSyncLastSyncTimeSeconds, | 169 pref_service_.SetUserPref(prefs::kCryptAuthDeviceSyncLastSyncTimeSeconds, |
| 175 new base::FundamentalValue(kLastSyncTimeSeconds)); | 170 new base::FundamentalValue(kLastSyncTimeSeconds)); |
| 176 pref_service_.SetUserPref( | 171 pref_service_.SetUserPref( |
| 177 prefs::kCryptAuthDeviceSyncReason, | 172 prefs::kCryptAuthDeviceSyncReason, |
| 178 new base::FundamentalValue(cryptauth::INVOCATION_REASON_UNKNOWN)); | 173 new base::FundamentalValue(cryptauth::INVOCATION_REASON_UNKNOWN)); |
| 179 | 174 |
| 180 scoped_ptr<base::DictionaryValue> unlock_key_dictionary( | 175 scoped_ptr<base::DictionaryValue> unlock_key_dictionary( |
| 181 new base::DictionaryValue()); | 176 new base::DictionaryValue()); |
| 182 | 177 |
| 183 std::string public_key_b64, device_name_b64, bluetooth_address_b64; | 178 std::string public_key_b64, device_name_b64, bluetooth_address_b64; |
| 184 Base64UrlEncode(kStoredPublicKey, &public_key_b64); | 179 Base64UrlEncode(kStoredPublicKey, &public_key_b64); |
| 185 Base64UrlEncode(kStoredDeviceName, &device_name_b64); | 180 Base64UrlEncode(kStoredDeviceName, &device_name_b64); |
| 186 Base64UrlEncode(kStoredBluetoothAddress, &bluetooth_address_b64); | 181 Base64UrlEncode(kStoredBluetoothAddress, &bluetooth_address_b64); |
| 187 | 182 |
| 188 unlock_key_dictionary->SetString("public_key", public_key_b64); | 183 unlock_key_dictionary->SetString("public_key", public_key_b64); |
| 189 unlock_key_dictionary->SetString("device_name", device_name_b64); | 184 unlock_key_dictionary->SetString("device_name", device_name_b64); |
| 190 unlock_key_dictionary->SetString("bluetooth_address", | 185 unlock_key_dictionary->SetString("bluetooth_address", |
| 191 bluetooth_address_b64); | 186 bluetooth_address_b64); |
| 192 { | 187 { |
| 193 ListPrefUpdate update(&pref_service_, | 188 ListPrefUpdate update(&pref_service_, |
| 194 prefs::kCryptAuthDeviceSyncUnlockKeys); | 189 prefs::kCryptAuthDeviceSyncUnlockKeys); |
| 195 update.Get()->Append(unlock_key_dictionary.Pass()); | 190 update.Get()->Append(unlock_key_dictionary.Pass()); |
| 196 } | 191 } |
| 197 | 192 |
| 193 device_manager_.reset(new TestCryptAuthDeviceManager( |
| 194 make_scoped_ptr(clock_), make_scoped_ptr(client_factory_), |
| 195 &gcm_manager_, &pref_service_)); |
| 196 device_manager_->AddObserver(this); |
| 197 |
| 198 cryptauth::ExternalDeviceInfo unlock_key; | 198 cryptauth::ExternalDeviceInfo unlock_key; |
| 199 unlock_key.set_public_key(kPublicKey1); | 199 unlock_key.set_public_key(kPublicKey1); |
| 200 unlock_key.set_friendly_device_name(kDeviceName1); | 200 unlock_key.set_friendly_device_name(kDeviceName1); |
| 201 unlock_key.set_bluetooth_address(kBluetoothAddress1); | 201 unlock_key.set_bluetooth_address(kBluetoothAddress1); |
| 202 unlock_key.set_unlock_key(true); | 202 unlock_key.set_unlock_key(true); |
| 203 unlock_key.set_unlockable(false); | 203 unlock_key.set_unlockable(false); |
| 204 | 204 |
| 205 cryptauth::ExternalDeviceInfo unlockable_device; | 205 cryptauth::ExternalDeviceInfo unlockable_device; |
| 206 unlockable_device.set_public_key(kPublicKey2); | 206 unlockable_device.set_public_key(kPublicKey2); |
| 207 unlockable_device.set_friendly_device_name(kDeviceName2); | 207 unlockable_device.set_friendly_device_name(kDeviceName2); |
| 208 unlockable_device.set_unlock_key(false); | 208 unlockable_device.set_unlock_key(false); |
| 209 unlockable_device.set_unlockable(true); | 209 unlockable_device.set_unlockable(true); |
| 210 | 210 |
| 211 get_my_devices_response_.add_devices()->CopyFrom(unlock_key); | 211 get_my_devices_response_.add_devices()->CopyFrom(unlock_key); |
| 212 get_my_devices_response_.add_devices()->CopyFrom(unlockable_device); | 212 get_my_devices_response_.add_devices()->CopyFrom(unlockable_device); |
| 213 | 213 |
| 214 ON_CALL(*sync_scheduler(), GetStrategy()) | 214 ON_CALL(*sync_scheduler(), GetStrategy()) |
| 215 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); | 215 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); |
| 216 } | 216 } |
| 217 | 217 |
| 218 void TearDown() override { device_manager_.RemoveObserver(this); } | 218 void TearDown() override { device_manager_->RemoveObserver(this); } |
| 219 | 219 |
| 220 // CryptAuthDeviceManager::Observer: | 220 // CryptAuthDeviceManager::Observer: |
| 221 void OnSyncStarted() override { OnSyncStartedProxy(); } | 221 void OnSyncStarted() override { OnSyncStartedProxy(); } |
| 222 | 222 |
| 223 void OnSyncFinished(CryptAuthDeviceManager::SyncResult sync_result, | 223 void OnSyncFinished(CryptAuthDeviceManager::SyncResult sync_result, |
| 224 CryptAuthDeviceManager::DeviceChangeResult | 224 CryptAuthDeviceManager::DeviceChangeResult |
| 225 device_change_result) override { | 225 device_change_result) override { |
| 226 OnSyncFinishedProxy(sync_result, device_change_result); | 226 OnSyncFinishedProxy(sync_result, device_change_result); |
| 227 } | 227 } |
| 228 | 228 |
| 229 MOCK_METHOD0(OnSyncStartedProxy, void()); | 229 MOCK_METHOD0(OnSyncStartedProxy, void()); |
| 230 MOCK_METHOD2(OnSyncFinishedProxy, | 230 MOCK_METHOD2(OnSyncFinishedProxy, |
| 231 void(CryptAuthDeviceManager::SyncResult, | 231 void(CryptAuthDeviceManager::SyncResult, |
| 232 CryptAuthDeviceManager::DeviceChangeResult)); | 232 CryptAuthDeviceManager::DeviceChangeResult)); |
| 233 | 233 |
| 234 // Simulates firing the SyncScheduler to trigger a device sync attempt. | 234 // Simulates firing the SyncScheduler to trigger a device sync attempt. |
| 235 void FireSchedulerForSync( | 235 void FireSchedulerForSync( |
| 236 cryptauth::InvocationReason expected_invocation_reason) { | 236 cryptauth::InvocationReason expected_invocation_reason) { |
| 237 SyncScheduler::Delegate* delegate = | 237 SyncScheduler::Delegate* delegate = |
| 238 static_cast<SyncScheduler::Delegate*>(&device_manager_); | 238 static_cast<SyncScheduler::Delegate*>(device_manager_.get()); |
| 239 | 239 |
| 240 scoped_ptr<SyncScheduler::SyncRequest> sync_request = make_scoped_ptr( | 240 scoped_ptr<SyncScheduler::SyncRequest> sync_request = make_scoped_ptr( |
| 241 new SyncScheduler::SyncRequest(device_manager_.GetSyncScheduler())); | 241 new SyncScheduler::SyncRequest(device_manager_->GetSyncScheduler())); |
| 242 EXPECT_CALL(*this, OnSyncStartedProxy()); | 242 EXPECT_CALL(*this, OnSyncStartedProxy()); |
| 243 delegate->OnSyncRequested(sync_request.Pass()); | 243 delegate->OnSyncRequested(sync_request.Pass()); |
| 244 | 244 |
| 245 EXPECT_EQ(expected_invocation_reason, | 245 EXPECT_EQ(expected_invocation_reason, |
| 246 get_my_devices_request_.invocation_reason()); | 246 get_my_devices_request_.invocation_reason()); |
| 247 | 247 |
| 248 // The allow_stale_read flag is set if the sync was not forced. | 248 // The allow_stale_read flag is set if the sync was not forced. |
| 249 bool allow_stale_read = | 249 bool allow_stale_read = |
| 250 pref_service_.GetInteger(prefs::kCryptAuthDeviceSyncReason) != | 250 pref_service_.GetInteger(prefs::kCryptAuthDeviceSyncReason) != |
| 251 cryptauth::INVOCATION_REASON_UNKNOWN; | 251 cryptauth::INVOCATION_REASON_UNKNOWN; |
| 252 EXPECT_EQ(allow_stale_read, get_my_devices_request_.allow_stale_read()); | 252 EXPECT_EQ(allow_stale_read, get_my_devices_request_.allow_stale_read()); |
| 253 } | 253 } |
| 254 | 254 |
| 255 // MockCryptAuthClientFactory::Observer: | 255 // MockCryptAuthClientFactory::Observer: |
| 256 void OnCryptAuthClientCreated(MockCryptAuthClient* client) override { | 256 void OnCryptAuthClientCreated(MockCryptAuthClient* client) override { |
| 257 EXPECT_CALL(*client, GetMyDevices(_, _, _)) | 257 EXPECT_CALL(*client, GetMyDevices(_, _, _)) |
| 258 .WillOnce(DoAll(SaveArg<0>(&get_my_devices_request_), | 258 .WillOnce(DoAll(SaveArg<0>(&get_my_devices_request_), |
| 259 SaveArg<1>(&success_callback_), | 259 SaveArg<1>(&success_callback_), |
| 260 SaveArg<2>(&error_callback_))); | 260 SaveArg<2>(&error_callback_))); |
| 261 } | 261 } |
| 262 | 262 |
| 263 MockSyncScheduler* sync_scheduler() { | 263 MockSyncScheduler* sync_scheduler() { |
| 264 return device_manager_.GetSyncScheduler().get(); | 264 return device_manager_->GetSyncScheduler().get(); |
| 265 } | 265 } |
| 266 | 266 |
| 267 // Owned by |device_manager_|. | 267 // Owned by |device_manager_|. |
| 268 base::SimpleTestClock* clock_; | 268 base::SimpleTestClock* clock_; |
| 269 | 269 |
| 270 // Owned by |device_manager_|. | 270 // Owned by |device_manager_|. |
| 271 MockCryptAuthClientFactory* client_factory_; | 271 MockCryptAuthClientFactory* client_factory_; |
| 272 | 272 |
| 273 TestingPrefServiceSimple pref_service_; | 273 TestingPrefServiceSimple pref_service_; |
| 274 | 274 |
| 275 FakeCryptAuthGCMManager gcm_manager_; | 275 FakeCryptAuthGCMManager gcm_manager_; |
| 276 | 276 |
| 277 TestCryptAuthDeviceManager device_manager_; | 277 scoped_ptr<TestCryptAuthDeviceManager> device_manager_; |
| 278 | 278 |
| 279 cryptauth::GetMyDevicesResponse get_my_devices_response_; | 279 cryptauth::GetMyDevicesResponse get_my_devices_response_; |
| 280 | 280 |
| 281 cryptauth::GetMyDevicesRequest get_my_devices_request_; | 281 cryptauth::GetMyDevicesRequest get_my_devices_request_; |
| 282 | 282 |
| 283 CryptAuthClient::GetMyDevicesCallback success_callback_; | 283 CryptAuthClient::GetMyDevicesCallback success_callback_; |
| 284 | 284 |
| 285 CryptAuthClient::ErrorCallback error_callback_; | 285 CryptAuthClient::ErrorCallback error_callback_; |
| 286 | 286 |
| 287 DISALLOW_COPY_AND_ASSIGN(ProximityAuthCryptAuthDeviceManagerTest); | 287 DISALLOW_COPY_AND_ASSIGN(ProximityAuthCryptAuthDeviceManagerTest); |
| 288 }; | 288 }; |
| 289 | 289 |
| 290 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, RegisterPrefs) { | 290 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, RegisterPrefs) { |
| 291 TestingPrefServiceSimple pref_service; | 291 TestingPrefServiceSimple pref_service; |
| 292 CryptAuthDeviceManager::RegisterPrefs(pref_service.registry()); | 292 CryptAuthDeviceManager::RegisterPrefs(pref_service.registry()); |
| 293 EXPECT_TRUE(pref_service.FindPreference( | 293 EXPECT_TRUE(pref_service.FindPreference( |
| 294 prefs::kCryptAuthDeviceSyncLastSyncTimeSeconds)); | 294 prefs::kCryptAuthDeviceSyncLastSyncTimeSeconds)); |
| 295 EXPECT_TRUE(pref_service.FindPreference( | 295 EXPECT_TRUE(pref_service.FindPreference( |
| 296 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); | 296 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); |
| 297 EXPECT_TRUE(pref_service.FindPreference(prefs::kCryptAuthDeviceSyncReason)); | 297 EXPECT_TRUE(pref_service.FindPreference(prefs::kCryptAuthDeviceSyncReason)); |
| 298 EXPECT_TRUE( | 298 EXPECT_TRUE( |
| 299 pref_service.FindPreference(prefs::kCryptAuthDeviceSyncUnlockKeys)); | 299 pref_service.FindPreference(prefs::kCryptAuthDeviceSyncUnlockKeys)); |
| 300 } | 300 } |
| 301 | 301 |
| 302 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, GetSyncState) { | 302 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, GetSyncState) { |
| 303 device_manager_.Start(); | 303 device_manager_->Start(); |
| 304 | 304 |
| 305 ON_CALL(*sync_scheduler(), GetStrategy()) | 305 ON_CALL(*sync_scheduler(), GetStrategy()) |
| 306 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); | 306 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); |
| 307 EXPECT_FALSE(device_manager_.IsRecoveringFromFailure()); | 307 EXPECT_FALSE(device_manager_->IsRecoveringFromFailure()); |
| 308 | 308 |
| 309 ON_CALL(*sync_scheduler(), GetStrategy()) | 309 ON_CALL(*sync_scheduler(), GetStrategy()) |
| 310 .WillByDefault(Return(SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); | 310 .WillByDefault(Return(SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); |
| 311 EXPECT_TRUE(device_manager_.IsRecoveringFromFailure()); | 311 EXPECT_TRUE(device_manager_->IsRecoveringFromFailure()); |
| 312 | 312 |
| 313 base::TimeDelta time_to_next_sync = base::TimeDelta::FromMinutes(60); | 313 base::TimeDelta time_to_next_sync = base::TimeDelta::FromMinutes(60); |
| 314 ON_CALL(*sync_scheduler(), GetTimeToNextSync()) | 314 ON_CALL(*sync_scheduler(), GetTimeToNextSync()) |
| 315 .WillByDefault(Return(time_to_next_sync)); | 315 .WillByDefault(Return(time_to_next_sync)); |
| 316 EXPECT_EQ(time_to_next_sync, device_manager_.GetTimeToNextAttempt()); | 316 EXPECT_EQ(time_to_next_sync, device_manager_->GetTimeToNextAttempt()); |
| 317 | 317 |
| 318 ON_CALL(*sync_scheduler(), GetSyncState()) | 318 ON_CALL(*sync_scheduler(), GetSyncState()) |
| 319 .WillByDefault(Return(SyncScheduler::SyncState::SYNC_IN_PROGRESS)); | 319 .WillByDefault(Return(SyncScheduler::SyncState::SYNC_IN_PROGRESS)); |
| 320 EXPECT_TRUE(device_manager_.IsSyncInProgress()); | 320 EXPECT_TRUE(device_manager_->IsSyncInProgress()); |
| 321 | 321 |
| 322 ON_CALL(*sync_scheduler(), GetSyncState()) | 322 ON_CALL(*sync_scheduler(), GetSyncState()) |
| 323 .WillByDefault(Return(SyncScheduler::SyncState::WAITING_FOR_REFRESH)); | 323 .WillByDefault(Return(SyncScheduler::SyncState::WAITING_FOR_REFRESH)); |
| 324 EXPECT_FALSE(device_manager_.IsSyncInProgress()); | 324 EXPECT_FALSE(device_manager_->IsSyncInProgress()); |
| 325 } | 325 } |
| 326 | 326 |
| 327 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, InitWithDefaultPrefs) { | 327 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, InitWithDefaultPrefs) { |
| 328 scoped_ptr<base::SimpleTestClock> clock(new base::SimpleTestClock); | 328 scoped_ptr<base::SimpleTestClock> clock(new base::SimpleTestClock); |
| 329 clock->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds)); | 329 clock->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds)); |
| 330 base::TimeDelta elapsed_time = clock->Now() - base::Time::FromDoubleT(0); | 330 base::TimeDelta elapsed_time = clock->Now() - base::Time::FromDoubleT(0); |
| 331 | 331 |
| 332 TestingPrefServiceSimple pref_service; | 332 TestingPrefServiceSimple pref_service; |
| 333 CryptAuthDeviceManager::RegisterPrefs(pref_service.registry()); | 333 CryptAuthDeviceManager::RegisterPrefs(pref_service.registry()); |
| 334 | 334 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 345 EXPECT_TRUE(device_manager.GetLastSyncTime().is_null()); | 345 EXPECT_TRUE(device_manager.GetLastSyncTime().is_null()); |
| 346 EXPECT_EQ(0u, device_manager.unlock_keys().size()); | 346 EXPECT_EQ(0u, device_manager.unlock_keys().size()); |
| 347 } | 347 } |
| 348 | 348 |
| 349 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, InitWithExistingPrefs) { | 349 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, InitWithExistingPrefs) { |
| 350 EXPECT_CALL( | 350 EXPECT_CALL( |
| 351 *sync_scheduler(), | 351 *sync_scheduler(), |
| 352 Start(clock_->Now() - base::Time::FromDoubleT(kLastSyncTimeSeconds), | 352 Start(clock_->Now() - base::Time::FromDoubleT(kLastSyncTimeSeconds), |
| 353 SyncScheduler::Strategy::PERIODIC_REFRESH)); | 353 SyncScheduler::Strategy::PERIODIC_REFRESH)); |
| 354 | 354 |
| 355 device_manager_.Start(); | 355 device_manager_->Start(); |
| 356 EXPECT_EQ(base::Time::FromDoubleT(kLastSyncTimeSeconds), | 356 EXPECT_EQ(base::Time::FromDoubleT(kLastSyncTimeSeconds), |
| 357 device_manager_.GetLastSyncTime()); | 357 device_manager_->GetLastSyncTime()); |
| 358 | 358 |
| 359 auto unlock_keys = device_manager_.unlock_keys(); | 359 auto unlock_keys = device_manager_->unlock_keys(); |
| 360 ASSERT_EQ(1u, unlock_keys.size()); | 360 ASSERT_EQ(1u, unlock_keys.size()); |
| 361 EXPECT_EQ(kStoredPublicKey, unlock_keys[0].public_key()); | 361 EXPECT_EQ(kStoredPublicKey, unlock_keys[0].public_key()); |
| 362 EXPECT_EQ(kStoredDeviceName, unlock_keys[0].friendly_device_name()); | 362 EXPECT_EQ(kStoredDeviceName, unlock_keys[0].friendly_device_name()); |
| 363 EXPECT_EQ(kStoredBluetoothAddress, unlock_keys[0].bluetooth_address()); | 363 EXPECT_EQ(kStoredBluetoothAddress, unlock_keys[0].bluetooth_address()); |
| 364 EXPECT_TRUE(unlock_keys[0].unlock_key()); | 364 EXPECT_TRUE(unlock_keys[0].unlock_key()); |
| 365 } | 365 } |
| 366 | 366 |
| 367 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncSucceedsForFirstTime) { | 367 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncSucceedsForFirstTime) { |
| 368 pref_service_.ClearPref(prefs::kCryptAuthDeviceSyncLastSyncTimeSeconds); | 368 pref_service_.ClearPref(prefs::kCryptAuthDeviceSyncLastSyncTimeSeconds); |
| 369 device_manager_.Start(); | 369 device_manager_->Start(); |
| 370 | 370 |
| 371 FireSchedulerForSync(cryptauth::INVOCATION_REASON_INITIALIZATION); | 371 FireSchedulerForSync(cryptauth::INVOCATION_REASON_INITIALIZATION); |
| 372 ASSERT_FALSE(success_callback_.is_null()); | 372 ASSERT_FALSE(success_callback_.is_null()); |
| 373 | 373 |
| 374 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds)); | 374 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds)); |
| 375 EXPECT_CALL(*this, OnSyncFinishedProxy( | 375 EXPECT_CALL(*this, OnSyncFinishedProxy( |
| 376 CryptAuthDeviceManager::SyncResult::SUCCESS, | 376 CryptAuthDeviceManager::SyncResult::SUCCESS, |
| 377 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); | 377 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
| 378 | 378 |
| 379 success_callback_.Run(get_my_devices_response_); | 379 success_callback_.Run(get_my_devices_response_); |
| 380 EXPECT_EQ(clock_->Now(), device_manager_.GetLastSyncTime()); | 380 EXPECT_EQ(clock_->Now(), device_manager_->GetLastSyncTime()); |
| 381 | 381 |
| 382 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( | 382 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( |
| 383 1, get_my_devices_response_.devices(0)), | 383 1, get_my_devices_response_.devices(0)), |
| 384 device_manager_.unlock_keys(), pref_service_); | 384 device_manager_->unlock_keys(), |
| 385 pref_service_); |
| 385 } | 386 } |
| 386 | 387 |
| 387 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, ForceSync) { | 388 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, ForceSync) { |
| 388 device_manager_.Start(); | 389 device_manager_->Start(); |
| 389 | 390 |
| 390 EXPECT_CALL(*sync_scheduler(), ForceSync()); | 391 EXPECT_CALL(*sync_scheduler(), ForceSync()); |
| 391 device_manager_.ForceSyncNow(cryptauth::INVOCATION_REASON_MANUAL); | 392 device_manager_->ForceSyncNow(cryptauth::INVOCATION_REASON_MANUAL); |
| 392 | 393 |
| 393 FireSchedulerForSync(cryptauth::INVOCATION_REASON_MANUAL); | 394 FireSchedulerForSync(cryptauth::INVOCATION_REASON_MANUAL); |
| 394 | 395 |
| 395 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds)); | 396 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds)); |
| 396 EXPECT_CALL(*this, OnSyncFinishedProxy( | 397 EXPECT_CALL(*this, OnSyncFinishedProxy( |
| 397 CryptAuthDeviceManager::SyncResult::SUCCESS, | 398 CryptAuthDeviceManager::SyncResult::SUCCESS, |
| 398 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); | 399 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
| 399 success_callback_.Run(get_my_devices_response_); | 400 success_callback_.Run(get_my_devices_response_); |
| 400 EXPECT_EQ(clock_->Now(), device_manager_.GetLastSyncTime()); | 401 EXPECT_EQ(clock_->Now(), device_manager_->GetLastSyncTime()); |
| 401 | 402 |
| 402 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( | 403 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( |
| 403 1, get_my_devices_response_.devices(0)), | 404 1, get_my_devices_response_.devices(0)), |
| 404 device_manager_.unlock_keys(), pref_service_); | 405 device_manager_->unlock_keys(), |
| 406 pref_service_); |
| 405 } | 407 } |
| 406 | 408 |
| 407 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, ForceSyncFailsThenSucceeds) { | 409 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, ForceSyncFailsThenSucceeds) { |
| 408 device_manager_.Start(); | 410 device_manager_->Start(); |
| 409 EXPECT_FALSE(pref_service_.GetBoolean( | 411 EXPECT_FALSE(pref_service_.GetBoolean( |
| 410 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); | 412 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); |
| 411 base::Time old_sync_time = device_manager_.GetLastSyncTime(); | 413 base::Time old_sync_time = device_manager_->GetLastSyncTime(); |
| 412 | 414 |
| 413 // The first force sync fails. | 415 // The first force sync fails. |
| 414 EXPECT_CALL(*sync_scheduler(), ForceSync()); | 416 EXPECT_CALL(*sync_scheduler(), ForceSync()); |
| 415 device_manager_.ForceSyncNow(cryptauth::INVOCATION_REASON_MANUAL); | 417 device_manager_->ForceSyncNow(cryptauth::INVOCATION_REASON_MANUAL); |
| 416 FireSchedulerForSync(cryptauth::INVOCATION_REASON_MANUAL); | 418 FireSchedulerForSync(cryptauth::INVOCATION_REASON_MANUAL); |
| 417 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds)); | 419 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds)); |
| 418 EXPECT_CALL(*this, | 420 EXPECT_CALL(*this, |
| 419 OnSyncFinishedProxy( | 421 OnSyncFinishedProxy( |
| 420 CryptAuthDeviceManager::SyncResult::FAILURE, | 422 CryptAuthDeviceManager::SyncResult::FAILURE, |
| 421 CryptAuthDeviceManager::DeviceChangeResult::UNCHANGED)); | 423 CryptAuthDeviceManager::DeviceChangeResult::UNCHANGED)); |
| 422 error_callback_.Run("404"); | 424 error_callback_.Run("404"); |
| 423 EXPECT_EQ(old_sync_time, device_manager_.GetLastSyncTime()); | 425 EXPECT_EQ(old_sync_time, device_manager_->GetLastSyncTime()); |
| 424 EXPECT_TRUE(pref_service_.GetBoolean( | 426 EXPECT_TRUE(pref_service_.GetBoolean( |
| 425 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); | 427 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); |
| 426 EXPECT_EQ(static_cast<int>(cryptauth::INVOCATION_REASON_MANUAL), | 428 EXPECT_EQ(static_cast<int>(cryptauth::INVOCATION_REASON_MANUAL), |
| 427 pref_service_.GetInteger(prefs::kCryptAuthDeviceSyncReason)); | 429 pref_service_.GetInteger(prefs::kCryptAuthDeviceSyncReason)); |
| 428 | 430 |
| 429 // The second recovery sync succeeds. | 431 // The second recovery sync succeeds. |
| 430 ON_CALL(*sync_scheduler(), GetStrategy()) | 432 ON_CALL(*sync_scheduler(), GetStrategy()) |
| 431 .WillByDefault(Return(SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); | 433 .WillByDefault(Return(SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); |
| 432 FireSchedulerForSync(cryptauth::INVOCATION_REASON_MANUAL); | 434 FireSchedulerForSync(cryptauth::INVOCATION_REASON_MANUAL); |
| 433 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds + 30)); | 435 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds + 30)); |
| 434 EXPECT_CALL(*this, OnSyncFinishedProxy( | 436 EXPECT_CALL(*this, OnSyncFinishedProxy( |
| 435 CryptAuthDeviceManager::SyncResult::SUCCESS, | 437 CryptAuthDeviceManager::SyncResult::SUCCESS, |
| 436 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); | 438 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
| 437 success_callback_.Run(get_my_devices_response_); | 439 success_callback_.Run(get_my_devices_response_); |
| 438 EXPECT_EQ(clock_->Now(), device_manager_.GetLastSyncTime()); | 440 EXPECT_EQ(clock_->Now(), device_manager_->GetLastSyncTime()); |
| 439 | 441 |
| 440 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( | 442 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( |
| 441 1, get_my_devices_response_.devices(0)), | 443 1, get_my_devices_response_.devices(0)), |
| 442 device_manager_.unlock_keys(), pref_service_); | 444 device_manager_->unlock_keys(), |
| 445 pref_service_); |
| 443 | 446 |
| 444 EXPECT_FLOAT_EQ( | 447 EXPECT_FLOAT_EQ( |
| 445 clock_->Now().ToDoubleT(), | 448 clock_->Now().ToDoubleT(), |
| 446 pref_service_.GetDouble(prefs::kCryptAuthDeviceSyncLastSyncTimeSeconds)); | 449 pref_service_.GetDouble(prefs::kCryptAuthDeviceSyncLastSyncTimeSeconds)); |
| 447 EXPECT_EQ(static_cast<int>(cryptauth::INVOCATION_REASON_UNKNOWN), | 450 EXPECT_EQ(static_cast<int>(cryptauth::INVOCATION_REASON_UNKNOWN), |
| 448 pref_service_.GetInteger(prefs::kCryptAuthDeviceSyncReason)); | 451 pref_service_.GetInteger(prefs::kCryptAuthDeviceSyncReason)); |
| 449 EXPECT_FALSE(pref_service_.GetBoolean( | 452 EXPECT_FALSE(pref_service_.GetBoolean( |
| 450 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); | 453 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); |
| 451 } | 454 } |
| 452 | 455 |
| 453 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, PeriodicSyncFailsThenSucceeds) { | 456 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, PeriodicSyncFailsThenSucceeds) { |
| 454 device_manager_.Start(); | 457 device_manager_->Start(); |
| 455 base::Time old_sync_time = device_manager_.GetLastSyncTime(); | 458 base::Time old_sync_time = device_manager_->GetLastSyncTime(); |
| 456 | 459 |
| 457 // The first periodic sync fails. | 460 // The first periodic sync fails. |
| 458 FireSchedulerForSync(cryptauth::INVOCATION_REASON_PERIODIC); | 461 FireSchedulerForSync(cryptauth::INVOCATION_REASON_PERIODIC); |
| 459 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds)); | 462 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds)); |
| 460 EXPECT_CALL(*this, | 463 EXPECT_CALL(*this, |
| 461 OnSyncFinishedProxy( | 464 OnSyncFinishedProxy( |
| 462 CryptAuthDeviceManager::SyncResult::FAILURE, | 465 CryptAuthDeviceManager::SyncResult::FAILURE, |
| 463 CryptAuthDeviceManager::DeviceChangeResult::UNCHANGED)); | 466 CryptAuthDeviceManager::DeviceChangeResult::UNCHANGED)); |
| 464 error_callback_.Run("401"); | 467 error_callback_.Run("401"); |
| 465 EXPECT_EQ(old_sync_time, device_manager_.GetLastSyncTime()); | 468 EXPECT_EQ(old_sync_time, device_manager_->GetLastSyncTime()); |
| 466 EXPECT_TRUE(pref_service_.GetBoolean( | 469 EXPECT_TRUE(pref_service_.GetBoolean( |
| 467 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); | 470 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); |
| 468 | 471 |
| 469 // The second recovery sync succeeds. | 472 // The second recovery sync succeeds. |
| 470 ON_CALL(*sync_scheduler(), GetStrategy()) | 473 ON_CALL(*sync_scheduler(), GetStrategy()) |
| 471 .WillByDefault(Return(SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); | 474 .WillByDefault(Return(SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); |
| 472 FireSchedulerForSync(cryptauth::INVOCATION_REASON_FAILURE_RECOVERY); | 475 FireSchedulerForSync(cryptauth::INVOCATION_REASON_FAILURE_RECOVERY); |
| 473 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds + 30)); | 476 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNowSeconds + 30)); |
| 474 EXPECT_CALL(*this, OnSyncFinishedProxy( | 477 EXPECT_CALL(*this, OnSyncFinishedProxy( |
| 475 CryptAuthDeviceManager::SyncResult::SUCCESS, | 478 CryptAuthDeviceManager::SyncResult::SUCCESS, |
| 476 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); | 479 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
| 477 success_callback_.Run(get_my_devices_response_); | 480 success_callback_.Run(get_my_devices_response_); |
| 478 EXPECT_EQ(clock_->Now(), device_manager_.GetLastSyncTime()); | 481 EXPECT_EQ(clock_->Now(), device_manager_->GetLastSyncTime()); |
| 479 | 482 |
| 480 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( | 483 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( |
| 481 1, get_my_devices_response_.devices(0)), | 484 1, get_my_devices_response_.devices(0)), |
| 482 device_manager_.unlock_keys(), pref_service_); | 485 device_manager_->unlock_keys(), |
| 486 pref_service_); |
| 483 | 487 |
| 484 EXPECT_FLOAT_EQ( | 488 EXPECT_FLOAT_EQ( |
| 485 clock_->Now().ToDoubleT(), | 489 clock_->Now().ToDoubleT(), |
| 486 pref_service_.GetDouble(prefs::kCryptAuthDeviceSyncLastSyncTimeSeconds)); | 490 pref_service_.GetDouble(prefs::kCryptAuthDeviceSyncLastSyncTimeSeconds)); |
| 487 EXPECT_FALSE(pref_service_.GetBoolean( | 491 EXPECT_FALSE(pref_service_.GetBoolean( |
| 488 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); | 492 prefs::kCryptAuthDeviceSyncIsRecoveringFromFailure)); |
| 489 } | 493 } |
| 490 | 494 |
| 491 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncSameDevice) { | 495 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncSameDevice) { |
| 492 // Set the same unlock key in the user prefs as the one that would be synced. | 496 device_manager_->Start(); |
| 493 { | 497 auto original_unlock_keys = device_manager_->unlock_keys(); |
| 494 scoped_ptr<base::DictionaryValue> unlock_key_dictionary( | |
| 495 new base::DictionaryValue()); | |
| 496 std::string public_key_b64, device_name_b64, bluetooth_address_b64; | |
| 497 Base64UrlEncode(kPublicKey1, &public_key_b64); | |
| 498 Base64UrlEncode(kDeviceName1, &device_name_b64); | |
| 499 Base64UrlEncode(kBluetoothAddress1, &bluetooth_address_b64); | |
| 500 unlock_key_dictionary->SetString("public_key", public_key_b64); | |
| 501 unlock_key_dictionary->SetString("device_name", device_name_b64); | |
| 502 unlock_key_dictionary->SetString("bluetooth_address", | |
| 503 bluetooth_address_b64); | |
| 504 | |
| 505 ListPrefUpdate update(&pref_service_, | |
| 506 prefs::kCryptAuthDeviceSyncUnlockKeys); | |
| 507 update.Get()->Clear(); | |
| 508 update.Get()->Append(unlock_key_dictionary.Pass()); | |
| 509 } | |
| 510 | |
| 511 // Check unlock keys before sync. | |
| 512 device_manager_.Start(); | |
| 513 auto original_unlock_keys = device_manager_.unlock_keys(); | |
| 514 ASSERT_EQ(1u, original_unlock_keys.size()); | |
| 515 EXPECT_EQ(kPublicKey1, original_unlock_keys[0].public_key()); | |
| 516 EXPECT_EQ(kDeviceName1, original_unlock_keys[0].friendly_device_name()); | |
| 517 EXPECT_EQ(kBluetoothAddress1, original_unlock_keys[0].bluetooth_address()); | |
| 518 | 498 |
| 519 // Sync new devices. | 499 // Sync new devices. |
| 520 FireSchedulerForSync(cryptauth::INVOCATION_REASON_PERIODIC); | 500 FireSchedulerForSync(cryptauth::INVOCATION_REASON_PERIODIC); |
| 521 ASSERT_FALSE(success_callback_.is_null()); | 501 ASSERT_FALSE(success_callback_.is_null()); |
| 522 EXPECT_CALL(*this, | 502 EXPECT_CALL(*this, |
| 523 OnSyncFinishedProxy( | 503 OnSyncFinishedProxy( |
| 524 CryptAuthDeviceManager::SyncResult::SUCCESS, | 504 CryptAuthDeviceManager::SyncResult::SUCCESS, |
| 525 CryptAuthDeviceManager::DeviceChangeResult::UNCHANGED)); | 505 CryptAuthDeviceManager::DeviceChangeResult::UNCHANGED)); |
| 526 success_callback_.Run(get_my_devices_response_); | 506 |
| 507 // Sync the same device. |
| 508 cryptauth::ExternalDeviceInfo synced_unlock_key; |
| 509 synced_unlock_key.set_public_key(kStoredPublicKey); |
| 510 synced_unlock_key.set_friendly_device_name(kStoredDeviceName); |
| 511 synced_unlock_key.set_bluetooth_address(kStoredBluetoothAddress); |
| 512 synced_unlock_key.set_unlock_key(true); |
| 513 synced_unlock_key.set_unlockable(false); |
| 514 cryptauth::GetMyDevicesResponse get_my_devices_response; |
| 515 get_my_devices_response.add_devices()->CopyFrom(synced_unlock_key); |
| 516 success_callback_.Run(get_my_devices_response); |
| 527 | 517 |
| 528 // Check that unlock keys are still the same after sync. | 518 // Check that unlock keys are still the same after sync. |
| 529 ExpectUnlockKeysAndPrefAreEqual(original_unlock_keys, | 519 ExpectUnlockKeysAndPrefAreEqual( |
| 530 device_manager_.unlock_keys(), pref_service_); | 520 original_unlock_keys, device_manager_->unlock_keys(), pref_service_); |
| 531 } | 521 } |
| 532 | 522 |
| 533 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncEmptyDeviceList) { | 523 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncEmptyDeviceList) { |
| 534 cryptauth::GetMyDevicesResponse empty_response; | 524 cryptauth::GetMyDevicesResponse empty_response; |
| 535 | 525 |
| 536 device_manager_.Start(); | 526 device_manager_->Start(); |
| 537 EXPECT_EQ(1u, device_manager_.unlock_keys().size()); | 527 EXPECT_EQ(1u, device_manager_->unlock_keys().size()); |
| 538 | 528 |
| 539 FireSchedulerForSync(cryptauth::INVOCATION_REASON_PERIODIC); | 529 FireSchedulerForSync(cryptauth::INVOCATION_REASON_PERIODIC); |
| 540 ASSERT_FALSE(success_callback_.is_null()); | 530 ASSERT_FALSE(success_callback_.is_null()); |
| 541 EXPECT_CALL(*this, OnSyncFinishedProxy( | 531 EXPECT_CALL(*this, OnSyncFinishedProxy( |
| 542 CryptAuthDeviceManager::SyncResult::SUCCESS, | 532 CryptAuthDeviceManager::SyncResult::SUCCESS, |
| 543 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); | 533 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
| 544 success_callback_.Run(empty_response); | 534 success_callback_.Run(empty_response); |
| 545 | 535 |
| 546 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>(), | 536 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>(), |
| 547 device_manager_.unlock_keys(), pref_service_); | 537 device_manager_->unlock_keys(), |
| 538 pref_service_); |
| 548 } | 539 } |
| 549 | 540 |
| 550 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncTwoUnlockKeys) { | 541 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncTwoUnlockKeys) { |
| 551 cryptauth::GetMyDevicesResponse response(get_my_devices_response_); | 542 cryptauth::GetMyDevicesResponse response(get_my_devices_response_); |
| 552 cryptauth::ExternalDeviceInfo unlock_key2; | 543 cryptauth::ExternalDeviceInfo unlock_key2; |
| 553 unlock_key2.set_public_key("new public key"); | 544 unlock_key2.set_public_key("new public key"); |
| 554 unlock_key2.set_friendly_device_name("new device name"); | 545 unlock_key2.set_friendly_device_name("new device name"); |
| 555 unlock_key2.set_bluetooth_address("aa:bb:cc:dd:ee:ff"); | 546 unlock_key2.set_bluetooth_address("aa:bb:cc:dd:ee:ff"); |
| 556 unlock_key2.set_unlock_key(true); | 547 unlock_key2.set_unlock_key(true); |
| 557 response.add_devices()->CopyFrom(unlock_key2); | 548 response.add_devices()->CopyFrom(unlock_key2); |
| 558 | 549 |
| 559 std::vector<cryptauth::ExternalDeviceInfo> expected_unlock_keys; | 550 std::vector<cryptauth::ExternalDeviceInfo> expected_unlock_keys; |
| 560 expected_unlock_keys.push_back(get_my_devices_response_.devices(0)); | 551 expected_unlock_keys.push_back(get_my_devices_response_.devices(0)); |
| 561 expected_unlock_keys.push_back(unlock_key2); | 552 expected_unlock_keys.push_back(unlock_key2); |
| 562 | 553 |
| 563 device_manager_.Start(); | 554 device_manager_->Start(); |
| 564 EXPECT_EQ(1u, device_manager_.unlock_keys().size()); | 555 EXPECT_EQ(1u, device_manager_->unlock_keys().size()); |
| 565 EXPECT_EQ(1u, pref_service_.GetList(prefs::kCryptAuthDeviceSyncUnlockKeys) | 556 EXPECT_EQ(1u, pref_service_.GetList(prefs::kCryptAuthDeviceSyncUnlockKeys) |
| 566 ->GetSize()); | 557 ->GetSize()); |
| 567 | 558 |
| 568 FireSchedulerForSync(cryptauth::INVOCATION_REASON_PERIODIC); | 559 FireSchedulerForSync(cryptauth::INVOCATION_REASON_PERIODIC); |
| 569 ASSERT_FALSE(success_callback_.is_null()); | 560 ASSERT_FALSE(success_callback_.is_null()); |
| 570 EXPECT_CALL(*this, OnSyncFinishedProxy( | 561 EXPECT_CALL(*this, OnSyncFinishedProxy( |
| 571 CryptAuthDeviceManager::SyncResult::SUCCESS, | 562 CryptAuthDeviceManager::SyncResult::SUCCESS, |
| 572 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); | 563 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
| 573 success_callback_.Run(response); | 564 success_callback_.Run(response); |
| 574 | 565 |
| 575 ExpectUnlockKeysAndPrefAreEqual(expected_unlock_keys, | 566 ExpectUnlockKeysAndPrefAreEqual( |
| 576 device_manager_.unlock_keys(), pref_service_); | 567 expected_unlock_keys, device_manager_->unlock_keys(), pref_service_); |
| 577 } | 568 } |
| 578 | 569 |
| 579 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncOnGCMPushMessage) { | 570 TEST_F(ProximityAuthCryptAuthDeviceManagerTest, SyncOnGCMPushMessage) { |
| 580 device_manager_.Start(); | 571 device_manager_->Start(); |
| 581 | 572 |
| 582 EXPECT_CALL(*sync_scheduler(), ForceSync()); | 573 EXPECT_CALL(*sync_scheduler(), ForceSync()); |
| 583 gcm_manager_.PushResyncMessage(); | 574 gcm_manager_.PushResyncMessage(); |
| 584 | 575 |
| 585 FireSchedulerForSync(cryptauth::INVOCATION_REASON_SERVER_INITIATED); | 576 FireSchedulerForSync(cryptauth::INVOCATION_REASON_SERVER_INITIATED); |
| 586 | 577 |
| 587 EXPECT_CALL(*this, OnSyncFinishedProxy( | 578 EXPECT_CALL(*this, OnSyncFinishedProxy( |
| 588 CryptAuthDeviceManager::SyncResult::SUCCESS, | 579 CryptAuthDeviceManager::SyncResult::SUCCESS, |
| 589 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); | 580 CryptAuthDeviceManager::DeviceChangeResult::CHANGED)); |
| 590 success_callback_.Run(get_my_devices_response_); | 581 success_callback_.Run(get_my_devices_response_); |
| 591 | 582 |
| 592 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( | 583 ExpectUnlockKeysAndPrefAreEqual(std::vector<cryptauth::ExternalDeviceInfo>( |
| 593 1, get_my_devices_response_.devices(0)), | 584 1, get_my_devices_response_.devices(0)), |
| 594 device_manager_.unlock_keys(), pref_service_); | 585 device_manager_->unlock_keys(), |
| 586 pref_service_); |
| 595 } | 587 } |
| 596 | 588 |
| 597 } // namespace proximity_auth | 589 } // namespace proximity_auth |
| OLD | NEW |