| 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_enrollment_manager.h" | 5 #include "components/cryptauth/cryptauth_enrollment_manager.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/base64url.h" | 9 #include "base/base64url.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| 11 #include "base/memory/ptr_util.h" | 11 #include "base/memory/ptr_util.h" |
| 12 #include "base/memory/weak_ptr.h" | 12 #include "base/memory/weak_ptr.h" |
| 13 #include "base/test/simple_test_clock.h" | 13 #include "base/test/simple_test_clock.h" |
| 14 #include "base/time/clock.h" | 14 #include "base/time/clock.h" |
| 15 #include "base/time/time.h" | 15 #include "base/time/time.h" |
| 16 #include "components/cryptauth/cryptauth_enroller.h" |
| 17 #include "components/cryptauth/fake_cryptauth_gcm_manager.h" |
| 18 #include "components/cryptauth/fake_secure_message_delegate.h" |
| 19 #include "components/cryptauth/mock_sync_scheduler.h" |
| 20 #include "components/cryptauth/pref_names.h" |
| 16 #include "components/prefs/testing_pref_service.h" | 21 #include "components/prefs/testing_pref_service.h" |
| 17 #include "components/proximity_auth/cryptauth/cryptauth_enroller.h" | |
| 18 #include "components/proximity_auth/cryptauth/fake_cryptauth_gcm_manager.h" | |
| 19 #include "components/proximity_auth/cryptauth/fake_secure_message_delegate.h" | |
| 20 #include "components/proximity_auth/cryptauth/mock_sync_scheduler.h" | |
| 21 #include "components/proximity_auth/cryptauth/pref_names.h" | |
| 22 #include "testing/gmock/include/gmock/gmock.h" | 22 #include "testing/gmock/include/gmock/gmock.h" |
| 23 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
| 24 | 24 |
| 25 using ::testing::_; | 25 using ::testing::_; |
| 26 using ::testing::NiceMock; | 26 using ::testing::NiceMock; |
| 27 using ::testing::Return; | 27 using ::testing::Return; |
| 28 using ::testing::SaveArg; | 28 using ::testing::SaveArg; |
| 29 | 29 |
| 30 namespace proximity_auth { | 30 namespace cryptauth { |
| 31 | 31 |
| 32 namespace { | 32 namespace { |
| 33 | 33 |
| 34 // The GCM registration id from a successful registration. | 34 // The GCM registration id from a successful registration. |
| 35 const char kGCMRegistrationId[] = "new gcm registration id"; | 35 const char kGCMRegistrationId[] = "new gcm registration id"; |
| 36 | 36 |
| 37 // The user's persistent public key identifying the local device. | 37 // The user's persistent public key identifying the local device. |
| 38 const char kUserPublicKey[] = "user public key"; | 38 const char kUserPublicKey[] = "user public key"; |
| 39 | 39 |
| 40 // The initial "Now" time for testing. | 40 // The initial "Now" time for testing. |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 // the super class. | 134 // the super class. |
| 135 // This should be safe because the life-time this SyncScheduler will always be | 135 // This should be safe because the life-time this SyncScheduler will always be |
| 136 // within the life of the TestCryptAuthEnrollmentManager object. | 136 // within the life of the TestCryptAuthEnrollmentManager object. |
| 137 base::WeakPtrFactory<MockSyncScheduler> weak_sync_scheduler_factory_; | 137 base::WeakPtrFactory<MockSyncScheduler> weak_sync_scheduler_factory_; |
| 138 | 138 |
| 139 DISALLOW_COPY_AND_ASSIGN(TestCryptAuthEnrollmentManager); | 139 DISALLOW_COPY_AND_ASSIGN(TestCryptAuthEnrollmentManager); |
| 140 }; | 140 }; |
| 141 | 141 |
| 142 } // namespace | 142 } // namespace |
| 143 | 143 |
| 144 class ProximityAuthCryptAuthEnrollmentManagerTest | 144 class CryptAuthEnrollmentManagerTest |
| 145 : public testing::Test, | 145 : public testing::Test, |
| 146 public CryptAuthEnrollmentManager::Observer { | 146 public CryptAuthEnrollmentManager::Observer { |
| 147 protected: | 147 protected: |
| 148 ProximityAuthCryptAuthEnrollmentManagerTest() | 148 CryptAuthEnrollmentManagerTest() |
| 149 : public_key_(kUserPublicKey), | 149 : public_key_(kUserPublicKey), |
| 150 clock_(new base::SimpleTestClock()), | 150 clock_(new base::SimpleTestClock()), |
| 151 enroller_factory_(new MockCryptAuthEnrollerFactory()), | 151 enroller_factory_(new MockCryptAuthEnrollerFactory()), |
| 152 secure_message_delegate_(new FakeSecureMessageDelegate()), | 152 secure_message_delegate_(new FakeSecureMessageDelegate()), |
| 153 gcm_manager_(kGCMRegistrationId), | 153 gcm_manager_(kGCMRegistrationId), |
| 154 enrollment_manager_(base::WrapUnique(clock_), | 154 enrollment_manager_(base::WrapUnique(clock_), |
| 155 base::WrapUnique(enroller_factory_), | 155 base::WrapUnique(enroller_factory_), |
| 156 base::WrapUnique(secure_message_delegate_), | 156 base::WrapUnique(secure_message_delegate_), |
| 157 device_info_, | 157 device_info_, |
| 158 &gcm_manager_, | 158 &gcm_manager_, |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 FakeSecureMessageDelegate* secure_message_delegate_; | 254 FakeSecureMessageDelegate* secure_message_delegate_; |
| 255 | 255 |
| 256 cryptauth::GcmDeviceInfo device_info_; | 256 cryptauth::GcmDeviceInfo device_info_; |
| 257 | 257 |
| 258 TestingPrefServiceSimple pref_service_; | 258 TestingPrefServiceSimple pref_service_; |
| 259 | 259 |
| 260 FakeCryptAuthGCMManager gcm_manager_; | 260 FakeCryptAuthGCMManager gcm_manager_; |
| 261 | 261 |
| 262 TestCryptAuthEnrollmentManager enrollment_manager_; | 262 TestCryptAuthEnrollmentManager enrollment_manager_; |
| 263 | 263 |
| 264 DISALLOW_COPY_AND_ASSIGN(ProximityAuthCryptAuthEnrollmentManagerTest); | 264 DISALLOW_COPY_AND_ASSIGN(CryptAuthEnrollmentManagerTest); |
| 265 }; | 265 }; |
| 266 | 266 |
| 267 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, RegisterPrefs) { | 267 TEST_F(CryptAuthEnrollmentManagerTest, RegisterPrefs) { |
| 268 TestingPrefServiceSimple pref_service; | 268 TestingPrefServiceSimple pref_service; |
| 269 CryptAuthEnrollmentManager::RegisterPrefs(pref_service.registry()); | 269 CryptAuthEnrollmentManager::RegisterPrefs(pref_service.registry()); |
| 270 EXPECT_TRUE(pref_service.FindPreference( | 270 EXPECT_TRUE(pref_service.FindPreference( |
| 271 prefs::kCryptAuthEnrollmentLastEnrollmentTimeSeconds)); | 271 prefs::kCryptAuthEnrollmentLastEnrollmentTimeSeconds)); |
| 272 EXPECT_TRUE(pref_service.FindPreference( | 272 EXPECT_TRUE(pref_service.FindPreference( |
| 273 prefs::kCryptAuthEnrollmentIsRecoveringFromFailure)); | 273 prefs::kCryptAuthEnrollmentIsRecoveringFromFailure)); |
| 274 EXPECT_TRUE(pref_service.FindPreference(prefs::kCryptAuthEnrollmentReason)); | 274 EXPECT_TRUE(pref_service.FindPreference(prefs::kCryptAuthEnrollmentReason)); |
| 275 } | 275 } |
| 276 | 276 |
| 277 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, GetEnrollmentState) { | 277 TEST_F(CryptAuthEnrollmentManagerTest, GetEnrollmentState) { |
| 278 enrollment_manager_.Start(); | 278 enrollment_manager_.Start(); |
| 279 | 279 |
| 280 ON_CALL(*sync_scheduler(), GetStrategy()) | 280 ON_CALL(*sync_scheduler(), GetStrategy()) |
| 281 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); | 281 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); |
| 282 EXPECT_FALSE(enrollment_manager_.IsRecoveringFromFailure()); | 282 EXPECT_FALSE(enrollment_manager_.IsRecoveringFromFailure()); |
| 283 | 283 |
| 284 ON_CALL(*sync_scheduler(), GetStrategy()) | 284 ON_CALL(*sync_scheduler(), GetStrategy()) |
| 285 .WillByDefault(Return(SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); | 285 .WillByDefault(Return(SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); |
| 286 EXPECT_TRUE(enrollment_manager_.IsRecoveringFromFailure()); | 286 EXPECT_TRUE(enrollment_manager_.IsRecoveringFromFailure()); |
| 287 | 287 |
| 288 base::TimeDelta time_to_next_sync = base::TimeDelta::FromMinutes(60); | 288 base::TimeDelta time_to_next_sync = base::TimeDelta::FromMinutes(60); |
| 289 ON_CALL(*sync_scheduler(), GetTimeToNextSync()) | 289 ON_CALL(*sync_scheduler(), GetTimeToNextSync()) |
| 290 .WillByDefault(Return(time_to_next_sync)); | 290 .WillByDefault(Return(time_to_next_sync)); |
| 291 EXPECT_EQ(time_to_next_sync, enrollment_manager_.GetTimeToNextAttempt()); | 291 EXPECT_EQ(time_to_next_sync, enrollment_manager_.GetTimeToNextAttempt()); |
| 292 | 292 |
| 293 ON_CALL(*sync_scheduler(), GetSyncState()) | 293 ON_CALL(*sync_scheduler(), GetSyncState()) |
| 294 .WillByDefault(Return(SyncScheduler::SyncState::SYNC_IN_PROGRESS)); | 294 .WillByDefault(Return(SyncScheduler::SyncState::SYNC_IN_PROGRESS)); |
| 295 EXPECT_TRUE(enrollment_manager_.IsEnrollmentInProgress()); | 295 EXPECT_TRUE(enrollment_manager_.IsEnrollmentInProgress()); |
| 296 | 296 |
| 297 ON_CALL(*sync_scheduler(), GetSyncState()) | 297 ON_CALL(*sync_scheduler(), GetSyncState()) |
| 298 .WillByDefault(Return(SyncScheduler::SyncState::WAITING_FOR_REFRESH)); | 298 .WillByDefault(Return(SyncScheduler::SyncState::WAITING_FOR_REFRESH)); |
| 299 EXPECT_FALSE(enrollment_manager_.IsEnrollmentInProgress()); | 299 EXPECT_FALSE(enrollment_manager_.IsEnrollmentInProgress()); |
| 300 } | 300 } |
| 301 | 301 |
| 302 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, InitWithDefaultPrefs) { | 302 TEST_F(CryptAuthEnrollmentManagerTest, InitWithDefaultPrefs) { |
| 303 std::unique_ptr<base::SimpleTestClock> clock(new base::SimpleTestClock()); | 303 std::unique_ptr<base::SimpleTestClock> clock(new base::SimpleTestClock()); |
| 304 clock->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds)); | 304 clock->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds)); |
| 305 base::TimeDelta elapsed_time = clock->Now() - base::Time::FromDoubleT(0); | 305 base::TimeDelta elapsed_time = clock->Now() - base::Time::FromDoubleT(0); |
| 306 | 306 |
| 307 TestingPrefServiceSimple pref_service; | 307 TestingPrefServiceSimple pref_service; |
| 308 CryptAuthEnrollmentManager::RegisterPrefs(pref_service.registry()); | 308 CryptAuthEnrollmentManager::RegisterPrefs(pref_service.registry()); |
| 309 | 309 |
| 310 TestCryptAuthEnrollmentManager enrollment_manager( | 310 TestCryptAuthEnrollmentManager enrollment_manager( |
| 311 std::move(clock), base::MakeUnique<MockCryptAuthEnrollerFactory>(), | 311 std::move(clock), base::MakeUnique<MockCryptAuthEnrollerFactory>(), |
| 312 base::MakeUnique<FakeSecureMessageDelegate>(), device_info_, | 312 base::MakeUnique<FakeSecureMessageDelegate>(), device_info_, |
| 313 &gcm_manager_, &pref_service); | 313 &gcm_manager_, &pref_service); |
| 314 | 314 |
| 315 EXPECT_CALL( | 315 EXPECT_CALL( |
| 316 *enrollment_manager.GetSyncScheduler(), | 316 *enrollment_manager.GetSyncScheduler(), |
| 317 Start(elapsed_time, SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); | 317 Start(elapsed_time, SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); |
| 318 enrollment_manager.Start(); | 318 enrollment_manager.Start(); |
| 319 | 319 |
| 320 EXPECT_FALSE(enrollment_manager.IsEnrollmentValid()); | 320 EXPECT_FALSE(enrollment_manager.IsEnrollmentValid()); |
| 321 EXPECT_TRUE(enrollment_manager.GetLastEnrollmentTime().is_null()); | 321 EXPECT_TRUE(enrollment_manager.GetLastEnrollmentTime().is_null()); |
| 322 } | 322 } |
| 323 | 323 |
| 324 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, InitWithExistingPrefs) { | 324 TEST_F(CryptAuthEnrollmentManagerTest, InitWithExistingPrefs) { |
| 325 EXPECT_CALL( | 325 EXPECT_CALL( |
| 326 *sync_scheduler(), | 326 *sync_scheduler(), |
| 327 Start(clock_->Now() - base::Time::FromDoubleT(kLastEnrollmentTimeSeconds), | 327 Start(clock_->Now() - base::Time::FromDoubleT(kLastEnrollmentTimeSeconds), |
| 328 SyncScheduler::Strategy::PERIODIC_REFRESH)); | 328 SyncScheduler::Strategy::PERIODIC_REFRESH)); |
| 329 | 329 |
| 330 enrollment_manager_.Start(); | 330 enrollment_manager_.Start(); |
| 331 EXPECT_TRUE(enrollment_manager_.IsEnrollmentValid()); | 331 EXPECT_TRUE(enrollment_manager_.IsEnrollmentValid()); |
| 332 EXPECT_EQ(base::Time::FromDoubleT(kLastEnrollmentTimeSeconds), | 332 EXPECT_EQ(base::Time::FromDoubleT(kLastEnrollmentTimeSeconds), |
| 333 enrollment_manager_.GetLastEnrollmentTime()); | 333 enrollment_manager_.GetLastEnrollmentTime()); |
| 334 } | 334 } |
| 335 | 335 |
| 336 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, InitWithExpiredEnrollment) { | 336 TEST_F(CryptAuthEnrollmentManagerTest, InitWithExpiredEnrollment) { |
| 337 pref_service_.SetUserPref( | 337 pref_service_.SetUserPref( |
| 338 prefs::kCryptAuthEnrollmentLastEnrollmentTimeSeconds, | 338 prefs::kCryptAuthEnrollmentLastEnrollmentTimeSeconds, |
| 339 new base::FundamentalValue(kLastExpiredEnrollmentTimeSeconds)); | 339 new base::FundamentalValue(kLastExpiredEnrollmentTimeSeconds)); |
| 340 | 340 |
| 341 EXPECT_CALL(*sync_scheduler(), | 341 EXPECT_CALL(*sync_scheduler(), |
| 342 Start(clock_->Now() - base::Time::FromDoubleT( | 342 Start(clock_->Now() - base::Time::FromDoubleT( |
| 343 kLastExpiredEnrollmentTimeSeconds), | 343 kLastExpiredEnrollmentTimeSeconds), |
| 344 SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); | 344 SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); |
| 345 | 345 |
| 346 enrollment_manager_.Start(); | 346 enrollment_manager_.Start(); |
| 347 EXPECT_FALSE(enrollment_manager_.IsEnrollmentValid()); | 347 EXPECT_FALSE(enrollment_manager_.IsEnrollmentValid()); |
| 348 EXPECT_EQ(base::Time::FromDoubleT(kLastExpiredEnrollmentTimeSeconds), | 348 EXPECT_EQ(base::Time::FromDoubleT(kLastExpiredEnrollmentTimeSeconds), |
| 349 enrollment_manager_.GetLastEnrollmentTime()); | 349 enrollment_manager_.GetLastEnrollmentTime()); |
| 350 } | 350 } |
| 351 | 351 |
| 352 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, ForceEnrollment) { | 352 TEST_F(CryptAuthEnrollmentManagerTest, ForceEnrollment) { |
| 353 enrollment_manager_.Start(); | 353 enrollment_manager_.Start(); |
| 354 | 354 |
| 355 EXPECT_CALL(*sync_scheduler(), ForceSync()); | 355 EXPECT_CALL(*sync_scheduler(), ForceSync()); |
| 356 enrollment_manager_.ForceEnrollmentNow( | 356 enrollment_manager_.ForceEnrollmentNow( |
| 357 cryptauth::INVOCATION_REASON_SERVER_INITIATED); | 357 cryptauth::INVOCATION_REASON_SERVER_INITIATED); |
| 358 | 358 |
| 359 auto completion_callback = | 359 auto completion_callback = |
| 360 FireSchedulerForEnrollment(cryptauth::INVOCATION_REASON_SERVER_INITIATED); | 360 FireSchedulerForEnrollment(cryptauth::INVOCATION_REASON_SERVER_INITIATED); |
| 361 | 361 |
| 362 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNow)); | 362 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNow)); |
| 363 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(true)); | 363 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(true)); |
| 364 completion_callback.Run(true); | 364 completion_callback.Run(true); |
| 365 EXPECT_EQ(clock_->Now(), enrollment_manager_.GetLastEnrollmentTime()); | 365 EXPECT_EQ(clock_->Now(), enrollment_manager_.GetLastEnrollmentTime()); |
| 366 } | 366 } |
| 367 | 367 |
| 368 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, | 368 TEST_F(CryptAuthEnrollmentManagerTest, |
| 369 EnrollmentFailsThenSucceeds) { | 369 EnrollmentFailsThenSucceeds) { |
| 370 enrollment_manager_.Start(); | 370 enrollment_manager_.Start(); |
| 371 base::Time old_enrollment_time = enrollment_manager_.GetLastEnrollmentTime(); | 371 base::Time old_enrollment_time = enrollment_manager_.GetLastEnrollmentTime(); |
| 372 | 372 |
| 373 // The first periodic enrollment fails. | 373 // The first periodic enrollment fails. |
| 374 ON_CALL(*sync_scheduler(), GetStrategy()) | 374 ON_CALL(*sync_scheduler(), GetStrategy()) |
| 375 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); | 375 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); |
| 376 auto completion_callback = | 376 auto completion_callback = |
| 377 FireSchedulerForEnrollment(cryptauth::INVOCATION_REASON_PERIODIC); | 377 FireSchedulerForEnrollment(cryptauth::INVOCATION_REASON_PERIODIC); |
| 378 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNow)); | 378 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNow)); |
| 379 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(false)); | 379 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(false)); |
| 380 completion_callback.Run(false); | 380 completion_callback.Run(false); |
| 381 EXPECT_EQ(old_enrollment_time, enrollment_manager_.GetLastEnrollmentTime()); | 381 EXPECT_EQ(old_enrollment_time, enrollment_manager_.GetLastEnrollmentTime()); |
| 382 EXPECT_TRUE(pref_service_.GetBoolean( | 382 EXPECT_TRUE(pref_service_.GetBoolean( |
| 383 prefs::kCryptAuthEnrollmentIsRecoveringFromFailure)); | 383 prefs::kCryptAuthEnrollmentIsRecoveringFromFailure)); |
| 384 | 384 |
| 385 // The second recovery enrollment succeeds. | 385 // The second recovery enrollment succeeds. |
| 386 ON_CALL(*sync_scheduler(), GetStrategy()) | 386 ON_CALL(*sync_scheduler(), GetStrategy()) |
| 387 .WillByDefault(Return(SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); | 387 .WillByDefault(Return(SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); |
| 388 completion_callback = | 388 completion_callback = |
| 389 FireSchedulerForEnrollment(cryptauth::INVOCATION_REASON_FAILURE_RECOVERY); | 389 FireSchedulerForEnrollment(cryptauth::INVOCATION_REASON_FAILURE_RECOVERY); |
| 390 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNow + 30)); | 390 clock_->SetNow(base::Time::FromDoubleT(kLaterTimeNow + 30)); |
| 391 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(true)); | 391 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(true)); |
| 392 completion_callback.Run(true); | 392 completion_callback.Run(true); |
| 393 EXPECT_EQ(clock_->Now(), enrollment_manager_.GetLastEnrollmentTime()); | 393 EXPECT_EQ(clock_->Now(), enrollment_manager_.GetLastEnrollmentTime()); |
| 394 EXPECT_FALSE(pref_service_.GetBoolean( | 394 EXPECT_FALSE(pref_service_.GetBoolean( |
| 395 prefs::kCryptAuthEnrollmentIsRecoveringFromFailure)); | 395 prefs::kCryptAuthEnrollmentIsRecoveringFromFailure)); |
| 396 } | 396 } |
| 397 | 397 |
| 398 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, | 398 TEST_F(CryptAuthEnrollmentManagerTest, |
| 399 EnrollmentSucceedsForFirstTime) { | 399 EnrollmentSucceedsForFirstTime) { |
| 400 // Initialize |enrollment_manager_|. | 400 // Initialize |enrollment_manager_|. |
| 401 ON_CALL(*sync_scheduler(), GetStrategy()) | 401 ON_CALL(*sync_scheduler(), GetStrategy()) |
| 402 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); | 402 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); |
| 403 gcm_manager_.set_registration_id(std::string()); | 403 gcm_manager_.set_registration_id(std::string()); |
| 404 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentUserPublicKey); | 404 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentUserPublicKey); |
| 405 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentUserPrivateKey); | 405 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentUserPrivateKey); |
| 406 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentLastEnrollmentTimeSeconds); | 406 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentLastEnrollmentTimeSeconds); |
| 407 enrollment_manager_.Start(); | 407 enrollment_manager_.Start(); |
| 408 EXPECT_FALSE(enrollment_manager_.IsEnrollmentValid()); | 408 EXPECT_FALSE(enrollment_manager_.IsEnrollmentValid()); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 429 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(true)); | 429 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(true)); |
| 430 enrollment_callback.Run(true); | 430 enrollment_callback.Run(true); |
| 431 EXPECT_EQ(clock_->Now(), enrollment_manager_.GetLastEnrollmentTime()); | 431 EXPECT_EQ(clock_->Now(), enrollment_manager_.GetLastEnrollmentTime()); |
| 432 EXPECT_TRUE(enrollment_manager_.IsEnrollmentValid()); | 432 EXPECT_TRUE(enrollment_manager_.IsEnrollmentValid()); |
| 433 | 433 |
| 434 // Check that CryptAuthEnrollmentManager returns the expected key-pair. | 434 // Check that CryptAuthEnrollmentManager returns the expected key-pair. |
| 435 EXPECT_EQ(public_key_, enrollment_manager_.GetUserPublicKey()); | 435 EXPECT_EQ(public_key_, enrollment_manager_.GetUserPublicKey()); |
| 436 EXPECT_EQ(private_key_, enrollment_manager_.GetUserPrivateKey()); | 436 EXPECT_EQ(private_key_, enrollment_manager_.GetUserPrivateKey()); |
| 437 } | 437 } |
| 438 | 438 |
| 439 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, GCMRegistrationFails) { | 439 TEST_F(CryptAuthEnrollmentManagerTest, GCMRegistrationFails) { |
| 440 // Initialize |enrollment_manager_|. | 440 // Initialize |enrollment_manager_|. |
| 441 ON_CALL(*sync_scheduler(), GetStrategy()) | 441 ON_CALL(*sync_scheduler(), GetStrategy()) |
| 442 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); | 442 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); |
| 443 gcm_manager_.set_registration_id(std::string()); | 443 gcm_manager_.set_registration_id(std::string()); |
| 444 enrollment_manager_.Start(); | 444 enrollment_manager_.Start(); |
| 445 | 445 |
| 446 // Trigger a sync request. | 446 // Trigger a sync request. |
| 447 EXPECT_CALL(*this, OnEnrollmentStartedProxy()); | 447 EXPECT_CALL(*this, OnEnrollmentStartedProxy()); |
| 448 auto sync_request = base::MakeUnique<SyncScheduler::SyncRequest>( | 448 auto sync_request = base::MakeUnique<SyncScheduler::SyncRequest>( |
| 449 enrollment_manager_.GetSyncScheduler()); | 449 enrollment_manager_.GetSyncScheduler()); |
| 450 static_cast<SyncScheduler::Delegate*>(&enrollment_manager_) | 450 static_cast<SyncScheduler::Delegate*>(&enrollment_manager_) |
| 451 ->OnSyncRequested(std::move(sync_request)); | 451 ->OnSyncRequested(std::move(sync_request)); |
| 452 | 452 |
| 453 // Complete GCM registration with failure. | 453 // Complete GCM registration with failure. |
| 454 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(false)); | 454 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(false)); |
| 455 gcm_manager_.CompleteRegistration(std::string()); | 455 gcm_manager_.CompleteRegistration(std::string()); |
| 456 } | 456 } |
| 457 | 457 |
| 458 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, ReenrollOnGCMPushMessage) { | 458 TEST_F(CryptAuthEnrollmentManagerTest, ReenrollOnGCMPushMessage) { |
| 459 enrollment_manager_.Start(); | 459 enrollment_manager_.Start(); |
| 460 | 460 |
| 461 // Simulate receiving a GCM push message, forcing the device to re-enroll. | 461 // Simulate receiving a GCM push message, forcing the device to re-enroll. |
| 462 gcm_manager_.PushReenrollMessage(); | 462 gcm_manager_.PushReenrollMessage(); |
| 463 auto completion_callback = | 463 auto completion_callback = |
| 464 FireSchedulerForEnrollment(cryptauth::INVOCATION_REASON_SERVER_INITIATED); | 464 FireSchedulerForEnrollment(cryptauth::INVOCATION_REASON_SERVER_INITIATED); |
| 465 | 465 |
| 466 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(true)); | 466 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(true)); |
| 467 completion_callback.Run(true); | 467 completion_callback.Run(true); |
| 468 } | 468 } |
| 469 | 469 |
| 470 } // namespace proximity_auth | 470 } // namespace cryptauth |
| OLD | NEW |