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 |