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

Side by Side Diff: components/proximity_auth/cryptauth/cryptauth_enrollment_manager_unittest.cc

Issue 1912433002: Convert //components/proximity_auth from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/proximity_auth/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/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
12 #include "base/test/simple_test_clock.h" 13 #include "base/test/simple_test_clock.h"
13 #include "base/time/clock.h" 14 #include "base/time/clock.h"
14 #include "base/time/time.h" 15 #include "base/time/time.h"
15 #include "components/prefs/testing_pref_service.h" 16 #include "components/prefs/testing_pref_service.h"
16 #include "components/proximity_auth/cryptauth/cryptauth_enroller.h" 17 #include "components/proximity_auth/cryptauth/cryptauth_enroller.h"
17 #include "components/proximity_auth/cryptauth/fake_cryptauth_gcm_manager.h" 18 #include "components/proximity_auth/cryptauth/fake_cryptauth_gcm_manager.h"
18 #include "components/proximity_auth/cryptauth/fake_secure_message_delegate.h" 19 #include "components/proximity_auth/cryptauth/fake_secure_message_delegate.h"
19 #include "components/proximity_auth/cryptauth/mock_sync_scheduler.h" 20 #include "components/proximity_auth/cryptauth/mock_sync_scheduler.h"
20 #include "components/proximity_auth/cryptauth/pref_names.h" 21 #include "components/proximity_auth/cryptauth/pref_names.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 70
70 // Creates MockCryptAuthEnroller instances, and allows expecations to be set 71 // Creates MockCryptAuthEnroller instances, and allows expecations to be set
71 // before they are returned. 72 // before they are returned.
72 class MockCryptAuthEnrollerFactory : public CryptAuthEnrollerFactory { 73 class MockCryptAuthEnrollerFactory : public CryptAuthEnrollerFactory {
73 public: 74 public:
74 MockCryptAuthEnrollerFactory() 75 MockCryptAuthEnrollerFactory()
75 : next_cryptauth_enroller_(new NiceMock<MockCryptAuthEnroller>()) {} 76 : next_cryptauth_enroller_(new NiceMock<MockCryptAuthEnroller>()) {}
76 ~MockCryptAuthEnrollerFactory() override {} 77 ~MockCryptAuthEnrollerFactory() override {}
77 78
78 // CryptAuthEnrollerFactory: 79 // CryptAuthEnrollerFactory:
79 scoped_ptr<CryptAuthEnroller> CreateInstance() override { 80 std::unique_ptr<CryptAuthEnroller> CreateInstance() override {
80 auto passed_cryptauth_enroller = std::move(next_cryptauth_enroller_); 81 auto passed_cryptauth_enroller = std::move(next_cryptauth_enroller_);
81 next_cryptauth_enroller_.reset(new NiceMock<MockCryptAuthEnroller>()); 82 next_cryptauth_enroller_.reset(new NiceMock<MockCryptAuthEnroller>());
82 return std::move(passed_cryptauth_enroller); 83 return std::move(passed_cryptauth_enroller);
83 } 84 }
84 85
85 MockCryptAuthEnroller* next_cryptauth_enroller() { 86 MockCryptAuthEnroller* next_cryptauth_enroller() {
86 return next_cryptauth_enroller_.get(); 87 return next_cryptauth_enroller_.get();
87 } 88 }
88 89
89 private: 90 private:
90 // Stores the next CryptAuthEnroller to be created. 91 // Stores the next CryptAuthEnroller to be created.
91 // Ownership is passed to the caller of |CreateInstance()|. 92 // Ownership is passed to the caller of |CreateInstance()|.
92 scoped_ptr<MockCryptAuthEnroller> next_cryptauth_enroller_; 93 std::unique_ptr<MockCryptAuthEnroller> next_cryptauth_enroller_;
93 94
94 DISALLOW_COPY_AND_ASSIGN(MockCryptAuthEnrollerFactory); 95 DISALLOW_COPY_AND_ASSIGN(MockCryptAuthEnrollerFactory);
95 }; 96 };
96 97
97 // Harness for testing CryptAuthEnrollmentManager. 98 // Harness for testing CryptAuthEnrollmentManager.
98 class TestCryptAuthEnrollmentManager : public CryptAuthEnrollmentManager { 99 class TestCryptAuthEnrollmentManager : public CryptAuthEnrollmentManager {
99 public: 100 public:
100 TestCryptAuthEnrollmentManager( 101 TestCryptAuthEnrollmentManager(
101 scoped_ptr<base::Clock> clock, 102 std::unique_ptr<base::Clock> clock,
102 scoped_ptr<CryptAuthEnrollerFactory> enroller_factory, 103 std::unique_ptr<CryptAuthEnrollerFactory> enroller_factory,
103 scoped_ptr<SecureMessageDelegate> secure_message_delegate, 104 std::unique_ptr<SecureMessageDelegate> secure_message_delegate,
104 const cryptauth::GcmDeviceInfo& device_info, 105 const cryptauth::GcmDeviceInfo& device_info,
105 CryptAuthGCMManager* gcm_manager, 106 CryptAuthGCMManager* gcm_manager,
106 PrefService* pref_service) 107 PrefService* pref_service)
107 : CryptAuthEnrollmentManager(std::move(clock), 108 : CryptAuthEnrollmentManager(std::move(clock),
108 std::move(enroller_factory), 109 std::move(enroller_factory),
109 std::move(secure_message_delegate), 110 std::move(secure_message_delegate),
110 device_info, 111 device_info,
111 gcm_manager, 112 gcm_manager,
112 pref_service), 113 pref_service),
113 scoped_sync_scheduler_(new NiceMock<MockSyncScheduler>()), 114 scoped_sync_scheduler_(new NiceMock<MockSyncScheduler>()),
114 weak_sync_scheduler_factory_(scoped_sync_scheduler_.get()) {} 115 weak_sync_scheduler_factory_(scoped_sync_scheduler_.get()) {}
115 116
116 ~TestCryptAuthEnrollmentManager() override {} 117 ~TestCryptAuthEnrollmentManager() override {}
117 118
118 scoped_ptr<SyncScheduler> CreateSyncScheduler() override { 119 std::unique_ptr<SyncScheduler> CreateSyncScheduler() override {
119 EXPECT_TRUE(scoped_sync_scheduler_); 120 EXPECT_TRUE(scoped_sync_scheduler_);
120 return std::move(scoped_sync_scheduler_); 121 return std::move(scoped_sync_scheduler_);
121 } 122 }
122 123
123 base::WeakPtr<MockSyncScheduler> GetSyncScheduler() { 124 base::WeakPtr<MockSyncScheduler> GetSyncScheduler() {
124 return weak_sync_scheduler_factory_.GetWeakPtr(); 125 return weak_sync_scheduler_factory_.GetWeakPtr();
125 } 126 }
126 127
127 private: 128 private:
128 // Ownership is passed to |CryptAuthEnrollmentManager| super class when 129 // Ownership is passed to |CryptAuthEnrollmentManager| super class when
129 // |CreateSyncScheduler()| is called. 130 // |CreateSyncScheduler()| is called.
130 scoped_ptr<MockSyncScheduler> scoped_sync_scheduler_; 131 std::unique_ptr<MockSyncScheduler> scoped_sync_scheduler_;
131 132
132 // Stores the pointer of |scoped_sync_scheduler_| after ownership is passed to 133 // Stores the pointer of |scoped_sync_scheduler_| after ownership is passed to
133 // the super class. 134 // the super class.
134 // 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
135 // within the life of the TestCryptAuthEnrollmentManager object. 136 // within the life of the TestCryptAuthEnrollmentManager object.
136 base::WeakPtrFactory<MockSyncScheduler> weak_sync_scheduler_factory_; 137 base::WeakPtrFactory<MockSyncScheduler> weak_sync_scheduler_factory_;
137 138
138 DISALLOW_COPY_AND_ASSIGN(TestCryptAuthEnrollmentManager); 139 DISALLOW_COPY_AND_ASSIGN(TestCryptAuthEnrollmentManager);
139 }; 140 };
140 141
141 } // namespace 142 } // namespace
142 143
143 class ProximityAuthCryptAuthEnrollmentManagerTest 144 class ProximityAuthCryptAuthEnrollmentManagerTest
144 : public testing::Test, 145 : public testing::Test,
145 public CryptAuthEnrollmentManager::Observer { 146 public CryptAuthEnrollmentManager::Observer {
146 protected: 147 protected:
147 ProximityAuthCryptAuthEnrollmentManagerTest() 148 ProximityAuthCryptAuthEnrollmentManagerTest()
148 : public_key_(kUserPublicKey), 149 : public_key_(kUserPublicKey),
149 clock_(new base::SimpleTestClock()), 150 clock_(new base::SimpleTestClock()),
150 enroller_factory_(new MockCryptAuthEnrollerFactory()), 151 enroller_factory_(new MockCryptAuthEnrollerFactory()),
151 secure_message_delegate_(new FakeSecureMessageDelegate()), 152 secure_message_delegate_(new FakeSecureMessageDelegate()),
152 gcm_manager_(kGCMRegistrationId), 153 gcm_manager_(kGCMRegistrationId),
153 enrollment_manager_(make_scoped_ptr(clock_), 154 enrollment_manager_(base::WrapUnique(clock_),
154 make_scoped_ptr(enroller_factory_), 155 base::WrapUnique(enroller_factory_),
155 make_scoped_ptr(secure_message_delegate_), 156 base::WrapUnique(secure_message_delegate_),
156 device_info_, 157 device_info_,
157 &gcm_manager_, 158 &gcm_manager_,
158 &pref_service_) {} 159 &pref_service_) {}
159 160
160 // testing::Test: 161 // testing::Test:
161 void SetUp() override { 162 void SetUp() override {
162 clock_->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds)); 163 clock_->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds));
163 enrollment_manager_.AddObserver(this); 164 enrollment_manager_.AddObserver(this);
164 165
165 private_key_ = 166 private_key_ =
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 214
214 // Simulates firing the SyncScheduler to trigger an enrollment attempt. 215 // Simulates firing the SyncScheduler to trigger an enrollment attempt.
215 CryptAuthEnroller::EnrollmentFinishedCallback FireSchedulerForEnrollment( 216 CryptAuthEnroller::EnrollmentFinishedCallback FireSchedulerForEnrollment(
216 cryptauth::InvocationReason expected_invocation_reason) { 217 cryptauth::InvocationReason expected_invocation_reason) {
217 CryptAuthEnroller::EnrollmentFinishedCallback completion_callback; 218 CryptAuthEnroller::EnrollmentFinishedCallback completion_callback;
218 EXPECT_CALL( 219 EXPECT_CALL(
219 *next_cryptauth_enroller(), 220 *next_cryptauth_enroller(),
220 Enroll(public_key_, private_key_, _, expected_invocation_reason, _)) 221 Enroll(public_key_, private_key_, _, expected_invocation_reason, _))
221 .WillOnce(SaveArg<4>(&completion_callback)); 222 .WillOnce(SaveArg<4>(&completion_callback));
222 223
223 auto sync_request = make_scoped_ptr( 224 auto sync_request = base::WrapUnique(
224 new SyncScheduler::SyncRequest(enrollment_manager_.GetSyncScheduler())); 225 new SyncScheduler::SyncRequest(enrollment_manager_.GetSyncScheduler()));
225 EXPECT_CALL(*this, OnEnrollmentStartedProxy()); 226 EXPECT_CALL(*this, OnEnrollmentStartedProxy());
226 227
227 SyncScheduler::Delegate* delegate = 228 SyncScheduler::Delegate* delegate =
228 static_cast<SyncScheduler::Delegate*>(&enrollment_manager_); 229 static_cast<SyncScheduler::Delegate*>(&enrollment_manager_);
229 delegate->OnSyncRequested(std::move(sync_request)); 230 delegate->OnSyncRequested(std::move(sync_request));
230 231
231 return completion_callback; 232 return completion_callback;
232 } 233 }
233 234
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 ON_CALL(*sync_scheduler(), GetSyncState()) 293 ON_CALL(*sync_scheduler(), GetSyncState())
293 .WillByDefault(Return(SyncScheduler::SyncState::SYNC_IN_PROGRESS)); 294 .WillByDefault(Return(SyncScheduler::SyncState::SYNC_IN_PROGRESS));
294 EXPECT_TRUE(enrollment_manager_.IsEnrollmentInProgress()); 295 EXPECT_TRUE(enrollment_manager_.IsEnrollmentInProgress());
295 296
296 ON_CALL(*sync_scheduler(), GetSyncState()) 297 ON_CALL(*sync_scheduler(), GetSyncState())
297 .WillByDefault(Return(SyncScheduler::SyncState::WAITING_FOR_REFRESH)); 298 .WillByDefault(Return(SyncScheduler::SyncState::WAITING_FOR_REFRESH));
298 EXPECT_FALSE(enrollment_manager_.IsEnrollmentInProgress()); 299 EXPECT_FALSE(enrollment_manager_.IsEnrollmentInProgress());
299 } 300 }
300 301
301 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, InitWithDefaultPrefs) { 302 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, InitWithDefaultPrefs) {
302 scoped_ptr<base::SimpleTestClock> clock(new base::SimpleTestClock()); 303 std::unique_ptr<base::SimpleTestClock> clock(new base::SimpleTestClock());
303 clock->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds)); 304 clock->SetNow(base::Time::FromDoubleT(kInitialTimeNowSeconds));
304 base::TimeDelta elapsed_time = clock->Now() - base::Time::FromDoubleT(0); 305 base::TimeDelta elapsed_time = clock->Now() - base::Time::FromDoubleT(0);
305 306
306 TestingPrefServiceSimple pref_service; 307 TestingPrefServiceSimple pref_service;
307 CryptAuthEnrollmentManager::RegisterPrefs(pref_service.registry()); 308 CryptAuthEnrollmentManager::RegisterPrefs(pref_service.registry());
308 309
309 TestCryptAuthEnrollmentManager enrollment_manager( 310 TestCryptAuthEnrollmentManager enrollment_manager(
310 std::move(clock), make_scoped_ptr(new MockCryptAuthEnrollerFactory()), 311 std::move(clock), base::WrapUnique(new MockCryptAuthEnrollerFactory()),
311 make_scoped_ptr(new FakeSecureMessageDelegate()), device_info_, 312 base::WrapUnique(new FakeSecureMessageDelegate()), device_info_,
312 &gcm_manager_, &pref_service); 313 &gcm_manager_, &pref_service);
313 314
314 EXPECT_CALL( 315 EXPECT_CALL(
315 *enrollment_manager.GetSyncScheduler(), 316 *enrollment_manager.GetSyncScheduler(),
316 Start(elapsed_time, SyncScheduler::Strategy::AGGRESSIVE_RECOVERY)); 317 Start(elapsed_time, SyncScheduler::Strategy::AGGRESSIVE_RECOVERY));
317 enrollment_manager.Start(); 318 enrollment_manager.Start();
318 319
319 EXPECT_FALSE(enrollment_manager.IsEnrollmentValid()); 320 EXPECT_FALSE(enrollment_manager.IsEnrollmentValid());
320 EXPECT_TRUE(enrollment_manager.GetLastEnrollmentTime().is_null()); 321 EXPECT_TRUE(enrollment_manager.GetLastEnrollmentTime().is_null());
321 } 322 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); 402 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH));
402 gcm_manager_.set_registration_id(std::string()); 403 gcm_manager_.set_registration_id(std::string());
403 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentUserPublicKey); 404 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentUserPublicKey);
404 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentUserPrivateKey); 405 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentUserPrivateKey);
405 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentLastEnrollmentTimeSeconds); 406 pref_service_.ClearPref(prefs::kCryptAuthEnrollmentLastEnrollmentTimeSeconds);
406 enrollment_manager_.Start(); 407 enrollment_manager_.Start();
407 EXPECT_FALSE(enrollment_manager_.IsEnrollmentValid()); 408 EXPECT_FALSE(enrollment_manager_.IsEnrollmentValid());
408 409
409 // Trigger a sync request. 410 // Trigger a sync request.
410 EXPECT_CALL(*this, OnEnrollmentStartedProxy()); 411 EXPECT_CALL(*this, OnEnrollmentStartedProxy());
411 auto sync_request = make_scoped_ptr( 412 auto sync_request = base::WrapUnique(
412 new SyncScheduler::SyncRequest(enrollment_manager_.GetSyncScheduler())); 413 new SyncScheduler::SyncRequest(enrollment_manager_.GetSyncScheduler()));
413 static_cast<SyncScheduler::Delegate*>(&enrollment_manager_) 414 static_cast<SyncScheduler::Delegate*>(&enrollment_manager_)
414 ->OnSyncRequested(std::move(sync_request)); 415 ->OnSyncRequested(std::move(sync_request));
415 416
416 // Complete GCM registration successfully, and expect an enrollment. 417 // Complete GCM registration successfully, and expect an enrollment.
417 CryptAuthEnroller::EnrollmentFinishedCallback enrollment_callback; 418 CryptAuthEnroller::EnrollmentFinishedCallback enrollment_callback;
418 EXPECT_CALL(*next_cryptauth_enroller(), 419 EXPECT_CALL(*next_cryptauth_enroller(),
419 Enroll(public_key_, private_key_, _, 420 Enroll(public_key_, private_key_, _,
420 cryptauth::INVOCATION_REASON_INITIALIZATION, _)) 421 cryptauth::INVOCATION_REASON_INITIALIZATION, _))
421 .WillOnce(SaveArg<4>(&enrollment_callback)); 422 .WillOnce(SaveArg<4>(&enrollment_callback));
(...skipping 15 matching lines...) Expand all
437 438
438 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, GCMRegistrationFails) { 439 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, GCMRegistrationFails) {
439 // Initialize |enrollment_manager_|. 440 // Initialize |enrollment_manager_|.
440 ON_CALL(*sync_scheduler(), GetStrategy()) 441 ON_CALL(*sync_scheduler(), GetStrategy())
441 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH)); 442 .WillByDefault(Return(SyncScheduler::Strategy::PERIODIC_REFRESH));
442 gcm_manager_.set_registration_id(std::string()); 443 gcm_manager_.set_registration_id(std::string());
443 enrollment_manager_.Start(); 444 enrollment_manager_.Start();
444 445
445 // Trigger a sync request. 446 // Trigger a sync request.
446 EXPECT_CALL(*this, OnEnrollmentStartedProxy()); 447 EXPECT_CALL(*this, OnEnrollmentStartedProxy());
447 auto sync_request = make_scoped_ptr( 448 auto sync_request = base::WrapUnique(
448 new SyncScheduler::SyncRequest(enrollment_manager_.GetSyncScheduler())); 449 new SyncScheduler::SyncRequest(enrollment_manager_.GetSyncScheduler()));
449 static_cast<SyncScheduler::Delegate*>(&enrollment_manager_) 450 static_cast<SyncScheduler::Delegate*>(&enrollment_manager_)
450 ->OnSyncRequested(std::move(sync_request)); 451 ->OnSyncRequested(std::move(sync_request));
451 452
452 // Complete GCM registration with failure. 453 // Complete GCM registration with failure.
453 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(false)); 454 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(false));
454 gcm_manager_.CompleteRegistration(std::string()); 455 gcm_manager_.CompleteRegistration(std::string());
455 } 456 }
456 457
457 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, ReenrollOnGCMPushMessage) { 458 TEST_F(ProximityAuthCryptAuthEnrollmentManagerTest, ReenrollOnGCMPushMessage) {
458 enrollment_manager_.Start(); 459 enrollment_manager_.Start();
459 460
460 // 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.
461 gcm_manager_.PushReenrollMessage(); 462 gcm_manager_.PushReenrollMessage();
462 auto completion_callback = 463 auto completion_callback =
463 FireSchedulerForEnrollment(cryptauth::INVOCATION_REASON_SERVER_INITIATED); 464 FireSchedulerForEnrollment(cryptauth::INVOCATION_REASON_SERVER_INITIATED);
464 465
465 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(true)); 466 EXPECT_CALL(*this, OnEnrollmentFinishedProxy(true));
466 completion_callback.Run(true); 467 completion_callback.Run(true);
467 } 468 }
468 469
469 } // namespace proximity_auth 470 } // namespace proximity_auth
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698