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

Side by Side Diff: components/cryptauth/cryptauth_enroller_impl_unittest.cc

Issue 2502343003: Moved //components/proximity_auth/cryptauth to //components/cryptauth. (Closed)
Patch Set: Fixed proto #includes. Created 4 years, 1 month 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_enroller_impl.h" 5 #include "components/cryptauth/cryptauth_enroller_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "components/proximity_auth/cryptauth/cryptauth_enrollment_utils.h" 10 #include "components/cryptauth/cryptauth_enrollment_utils.h"
11 #include "components/proximity_auth/cryptauth/fake_secure_message_delegate.h" 11 #include "components/cryptauth/fake_secure_message_delegate.h"
12 #include "components/proximity_auth/cryptauth/mock_cryptauth_client.h" 12 #include "components/cryptauth/mock_cryptauth_client.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 using ::testing::_; 15 using ::testing::_;
16 using ::testing::Return; 16 using ::testing::Return;
17 17
18 namespace proximity_auth { 18 namespace cryptauth {
19 19
20 namespace { 20 namespace {
21 21
22 const char kAccessTokenUsed[] = "access token used by CryptAuthClient"; 22 const char kAccessTokenUsed[] = "access token used by CryptAuthClient";
23 23
24 const char kClientSessionPublicKey[] = "throw away after one use"; 24 const char kClientSessionPublicKey[] = "throw away after one use";
25 const char kServerSessionPublicKey[] = "disposables are not eco-friendly"; 25 const char kServerSessionPublicKey[] = "disposables are not eco-friendly";
26 26
27 cryptauth::InvocationReason kInvocationReason = 27 cryptauth::InvocationReason kInvocationReason =
28 cryptauth::INVOCATION_REASON_MANUAL; 28 cryptauth::INVOCATION_REASON_MANUAL;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 bool verified, 91 bool verified,
92 const std::string& payload, 92 const std::string& payload,
93 const securemessage::Header& header) { 93 const securemessage::Header& header) {
94 *verified_out = verified; 94 *verified_out = verified;
95 *payload_out = payload; 95 *payload_out = payload;
96 *header_out = header; 96 *header_out = header;
97 } 97 }
98 98
99 } // namespace 99 } // namespace
100 100
101 class ProximityAuthCryptAuthEnrollerTest 101 class CryptAuthEnrollerTest
102 : public testing::Test, 102 : public testing::Test,
103 public MockCryptAuthClientFactory::Observer { 103 public MockCryptAuthClientFactory::Observer {
104 public: 104 public:
105 ProximityAuthCryptAuthEnrollerTest() 105 CryptAuthEnrollerTest()
106 : client_factory_(new MockCryptAuthClientFactory( 106 : client_factory_(new MockCryptAuthClientFactory(
107 MockCryptAuthClientFactory::MockType::MAKE_NICE_MOCKS)), 107 MockCryptAuthClientFactory::MockType::MAKE_NICE_MOCKS)),
108 secure_message_delegate_(new FakeSecureMessageDelegate()), 108 secure_message_delegate_(new FakeSecureMessageDelegate()),
109 enroller_(base::WrapUnique(client_factory_), 109 enroller_(base::WrapUnique(client_factory_),
110 base::WrapUnique(secure_message_delegate_)) { 110 base::WrapUnique(secure_message_delegate_)) {
111 client_factory_->AddObserver(this); 111 client_factory_->AddObserver(this);
112 112
113 // This call is actually synchronous. 113 // This call is actually synchronous.
114 secure_message_delegate_->GenerateKeyPair( 114 secure_message_delegate_->GenerateKeyPair(
115 base::Bind(&ProximityAuthCryptAuthEnrollerTest::OnKeyPairGenerated, 115 base::Bind(&CryptAuthEnrollerTest::OnKeyPairGenerated,
116 base::Unretained(this))); 116 base::Unretained(this)));
117 } 117 }
118 118
119 // Starts the enroller. 119 // Starts the enroller.
120 void StartEnroller(const cryptauth::GcmDeviceInfo& device_info) { 120 void StartEnroller(const cryptauth::GcmDeviceInfo& device_info) {
121 secure_message_delegate_->set_next_public_key(kClientSessionPublicKey); 121 secure_message_delegate_->set_next_public_key(kClientSessionPublicKey);
122 enroller_result_.reset(); 122 enroller_result_.reset();
123 enroller_.Enroll( 123 enroller_.Enroll(
124 user_public_key_, user_private_key_, device_info, kInvocationReason, 124 user_public_key_, user_private_key_, device_info, kInvocationReason,
125 base::Bind(&ProximityAuthCryptAuthEnrollerTest::OnEnrollerCompleted, 125 base::Bind(&CryptAuthEnrollerTest::OnEnrollerCompleted,
126 base::Unretained(this))); 126 base::Unretained(this)));
127 } 127 }
128 128
129 // Verifies that |serialized_message| is a valid SecureMessage sent with the 129 // Verifies that |serialized_message| is a valid SecureMessage sent with the
130 // FinishEnrollment API call. 130 // FinishEnrollment API call.
131 void ValidateEnrollmentMessage(const std::string& serialized_message) { 131 void ValidateEnrollmentMessage(const std::string& serialized_message) {
132 // Derive the session symmetric key. 132 // Derive the session symmetric key.
133 std::string server_session_private_key = 133 std::string server_session_private_key =
134 secure_message_delegate_->GetPrivateKeyForPublicKey( 134 secure_message_delegate_->GetPrivateKeyForPublicKey(
135 kServerSessionPublicKey); 135 kServerSessionPublicKey);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 EXPECT_EQ(user_public_key_, device_info.user_public_key()); 181 EXPECT_EQ(user_public_key_, device_info.user_public_key());
182 EXPECT_EQ(user_public_key_, device_info.key_handle()); 182 EXPECT_EQ(user_public_key_, device_info.key_handle());
183 EXPECT_EQ(kEnrollmentSessionId, device_info.enrollment_session_id()); 183 EXPECT_EQ(kEnrollmentSessionId, device_info.enrollment_session_id());
184 } 184 }
185 185
186 protected: 186 protected:
187 // MockCryptAuthClientFactory::Observer: 187 // MockCryptAuthClientFactory::Observer:
188 void OnCryptAuthClientCreated(MockCryptAuthClient* client) override { 188 void OnCryptAuthClientCreated(MockCryptAuthClient* client) override {
189 ON_CALL(*client, SetupEnrollment(_, _, _)) 189 ON_CALL(*client, SetupEnrollment(_, _, _))
190 .WillByDefault(Invoke( 190 .WillByDefault(Invoke(
191 this, &ProximityAuthCryptAuthEnrollerTest::OnSetupEnrollment)); 191 this, &CryptAuthEnrollerTest::OnSetupEnrollment));
192 192
193 ON_CALL(*client, FinishEnrollment(_, _, _)) 193 ON_CALL(*client, FinishEnrollment(_, _, _))
194 .WillByDefault(Invoke( 194 .WillByDefault(Invoke(
195 this, &ProximityAuthCryptAuthEnrollerTest::OnFinishEnrollment)); 195 this, &CryptAuthEnrollerTest::OnFinishEnrollment));
196 196
197 ON_CALL(*client, GetAccessTokenUsed()) 197 ON_CALL(*client, GetAccessTokenUsed())
198 .WillByDefault(Return(kAccessTokenUsed)); 198 .WillByDefault(Return(kAccessTokenUsed));
199 } 199 }
200 200
201 void OnKeyPairGenerated(const std::string& public_key, 201 void OnKeyPairGenerated(const std::string& public_key,
202 const std::string& private_key) { 202 const std::string& private_key) {
203 user_public_key_ = public_key; 203 user_public_key_ = public_key;
204 user_private_key_ = private_key; 204 user_private_key_ = private_key;
205 } 205 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 // Stores the result of running |enroller_|. 252 // Stores the result of running |enroller_|.
253 std::unique_ptr<bool> enroller_result_; 253 std::unique_ptr<bool> enroller_result_;
254 254
255 // Stored callbacks and requests for SetupEnrollment and FinishEnrollment. 255 // Stored callbacks and requests for SetupEnrollment and FinishEnrollment.
256 std::unique_ptr<cryptauth::SetupEnrollmentRequest> setup_request_; 256 std::unique_ptr<cryptauth::SetupEnrollmentRequest> setup_request_;
257 std::unique_ptr<cryptauth::FinishEnrollmentRequest> finish_request_; 257 std::unique_ptr<cryptauth::FinishEnrollmentRequest> finish_request_;
258 CryptAuthClient::SetupEnrollmentCallback setup_callback_; 258 CryptAuthClient::SetupEnrollmentCallback setup_callback_;
259 CryptAuthClient::FinishEnrollmentCallback finish_callback_; 259 CryptAuthClient::FinishEnrollmentCallback finish_callback_;
260 CryptAuthClient::ErrorCallback error_callback_; 260 CryptAuthClient::ErrorCallback error_callback_;
261 261
262 DISALLOW_COPY_AND_ASSIGN(ProximityAuthCryptAuthEnrollerTest); 262 DISALLOW_COPY_AND_ASSIGN(CryptAuthEnrollerTest);
263 }; 263 };
264 264
265 TEST_F(ProximityAuthCryptAuthEnrollerTest, EnrollmentSucceeds) { 265 TEST_F(CryptAuthEnrollerTest, EnrollmentSucceeds) {
266 StartEnroller(GetDeviceInfo()); 266 StartEnroller(GetDeviceInfo());
267 267
268 // Handle SetupEnrollment request. 268 // Handle SetupEnrollment request.
269 EXPECT_TRUE(setup_request_.get()); 269 EXPECT_TRUE(setup_request_.get());
270 EXPECT_EQ(kInvocationReason, setup_request_->invocation_reason()); 270 EXPECT_EQ(kInvocationReason, setup_request_->invocation_reason());
271 ASSERT_EQ(1, setup_request_->types_size()); 271 ASSERT_EQ(1, setup_request_->types_size());
272 EXPECT_EQ(kSupportedEnrollmentTypeGcmV1, setup_request_->types(0)); 272 EXPECT_EQ(kSupportedEnrollmentTypeGcmV1, setup_request_->types(0));
273 ASSERT_FALSE(setup_callback_.is_null()); 273 ASSERT_FALSE(setup_callback_.is_null());
274 setup_callback_.Run(GetSetupEnrollmentResponse(true)); 274 setup_callback_.Run(GetSetupEnrollmentResponse(true));
275 275
276 // Handle FinishEnrollment request. 276 // Handle FinishEnrollment request.
277 EXPECT_TRUE(finish_request_.get()); 277 EXPECT_TRUE(finish_request_.get());
278 EXPECT_EQ(kEnrollmentSessionId, finish_request_->enrollment_session_id()); 278 EXPECT_EQ(kEnrollmentSessionId, finish_request_->enrollment_session_id());
279 EXPECT_EQ(kClientSessionPublicKey, finish_request_->device_ephemeral_key()); 279 EXPECT_EQ(kClientSessionPublicKey, finish_request_->device_ephemeral_key());
280 ValidateEnrollmentMessage(finish_request_->enrollment_message()); 280 ValidateEnrollmentMessage(finish_request_->enrollment_message());
281 EXPECT_EQ(kInvocationReason, finish_request_->invocation_reason()); 281 EXPECT_EQ(kInvocationReason, finish_request_->invocation_reason());
282 282
283 ASSERT_FALSE(finish_callback_.is_null()); 283 ASSERT_FALSE(finish_callback_.is_null());
284 finish_callback_.Run(GetFinishEnrollmentResponse(true)); 284 finish_callback_.Run(GetFinishEnrollmentResponse(true));
285 285
286 ASSERT_TRUE(enroller_result_.get()); 286 ASSERT_TRUE(enroller_result_.get());
287 EXPECT_TRUE(*enroller_result_); 287 EXPECT_TRUE(*enroller_result_);
288 } 288 }
289 289
290 TEST_F(ProximityAuthCryptAuthEnrollerTest, SetupEnrollmentApiCallError) { 290 TEST_F(CryptAuthEnrollerTest, SetupEnrollmentApiCallError) {
291 StartEnroller(GetDeviceInfo()); 291 StartEnroller(GetDeviceInfo());
292 292
293 EXPECT_TRUE(setup_request_.get()); 293 EXPECT_TRUE(setup_request_.get());
294 ASSERT_FALSE(error_callback_.is_null()); 294 ASSERT_FALSE(error_callback_.is_null());
295 error_callback_.Run("Setup enrollment failed network"); 295 error_callback_.Run("Setup enrollment failed network");
296 296
297 EXPECT_TRUE(finish_callback_.is_null()); 297 EXPECT_TRUE(finish_callback_.is_null());
298 ASSERT_TRUE(enroller_result_.get()); 298 ASSERT_TRUE(enroller_result_.get());
299 EXPECT_FALSE(*enroller_result_); 299 EXPECT_FALSE(*enroller_result_);
300 } 300 }
301 301
302 TEST_F(ProximityAuthCryptAuthEnrollerTest, SetupEnrollmentBadStatus) { 302 TEST_F(CryptAuthEnrollerTest, SetupEnrollmentBadStatus) {
303 StartEnroller(GetDeviceInfo()); 303 StartEnroller(GetDeviceInfo());
304 304
305 EXPECT_TRUE(setup_request_.get()); 305 EXPECT_TRUE(setup_request_.get());
306 setup_callback_.Run(GetSetupEnrollmentResponse(false)); 306 setup_callback_.Run(GetSetupEnrollmentResponse(false));
307 307
308 EXPECT_TRUE(finish_callback_.is_null()); 308 EXPECT_TRUE(finish_callback_.is_null());
309 ASSERT_TRUE(enroller_result_.get()); 309 ASSERT_TRUE(enroller_result_.get());
310 EXPECT_FALSE(*enroller_result_); 310 EXPECT_FALSE(*enroller_result_);
311 } 311 }
312 312
313 TEST_F(ProximityAuthCryptAuthEnrollerTest, SetupEnrollmentNoInfosReturned) { 313 TEST_F(CryptAuthEnrollerTest, SetupEnrollmentNoInfosReturned) {
314 StartEnroller(GetDeviceInfo()); 314 StartEnroller(GetDeviceInfo());
315 EXPECT_TRUE(setup_request_.get()); 315 EXPECT_TRUE(setup_request_.get());
316 cryptauth::SetupEnrollmentResponse response; 316 cryptauth::SetupEnrollmentResponse response;
317 response.set_status(kResponseStatusOk); 317 response.set_status(kResponseStatusOk);
318 setup_callback_.Run(response); 318 setup_callback_.Run(response);
319 319
320 EXPECT_TRUE(finish_callback_.is_null()); 320 EXPECT_TRUE(finish_callback_.is_null());
321 ASSERT_TRUE(enroller_result_.get()); 321 ASSERT_TRUE(enroller_result_.get());
322 EXPECT_FALSE(*enroller_result_); 322 EXPECT_FALSE(*enroller_result_);
323 } 323 }
324 324
325 TEST_F(ProximityAuthCryptAuthEnrollerTest, FinishEnrollmentApiCallError) { 325 TEST_F(CryptAuthEnrollerTest, FinishEnrollmentApiCallError) {
326 StartEnroller(GetDeviceInfo()); 326 StartEnroller(GetDeviceInfo());
327 setup_callback_.Run(GetSetupEnrollmentResponse(true)); 327 setup_callback_.Run(GetSetupEnrollmentResponse(true));
328 ASSERT_FALSE(error_callback_.is_null()); 328 ASSERT_FALSE(error_callback_.is_null());
329 error_callback_.Run("finish enrollment oauth error"); 329 error_callback_.Run("finish enrollment oauth error");
330 ASSERT_TRUE(enroller_result_.get()); 330 ASSERT_TRUE(enroller_result_.get());
331 EXPECT_FALSE(*enroller_result_); 331 EXPECT_FALSE(*enroller_result_);
332 } 332 }
333 333
334 TEST_F(ProximityAuthCryptAuthEnrollerTest, FinishEnrollmentBadStatus) { 334 TEST_F(CryptAuthEnrollerTest, FinishEnrollmentBadStatus) {
335 StartEnroller(GetDeviceInfo()); 335 StartEnroller(GetDeviceInfo());
336 setup_callback_.Run(GetSetupEnrollmentResponse(true)); 336 setup_callback_.Run(GetSetupEnrollmentResponse(true));
337 ASSERT_FALSE(finish_callback_.is_null()); 337 ASSERT_FALSE(finish_callback_.is_null());
338 finish_callback_.Run(GetFinishEnrollmentResponse(false)); 338 finish_callback_.Run(GetFinishEnrollmentResponse(false));
339 ASSERT_TRUE(enroller_result_.get()); 339 ASSERT_TRUE(enroller_result_.get());
340 EXPECT_FALSE(*enroller_result_); 340 EXPECT_FALSE(*enroller_result_);
341 } 341 }
342 342
343 TEST_F(ProximityAuthCryptAuthEnrollerTest, ReuseEnroller) { 343 TEST_F(CryptAuthEnrollerTest, ReuseEnroller) {
344 StartEnroller(GetDeviceInfo()); 344 StartEnroller(GetDeviceInfo());
345 setup_callback_.Run(GetSetupEnrollmentResponse(true)); 345 setup_callback_.Run(GetSetupEnrollmentResponse(true));
346 finish_callback_.Run(GetFinishEnrollmentResponse(true)); 346 finish_callback_.Run(GetFinishEnrollmentResponse(true));
347 EXPECT_TRUE(*enroller_result_); 347 EXPECT_TRUE(*enroller_result_);
348 348
349 StartEnroller(GetDeviceInfo()); 349 StartEnroller(GetDeviceInfo());
350 EXPECT_FALSE(*enroller_result_); 350 EXPECT_FALSE(*enroller_result_);
351 } 351 }
352 352
353 TEST_F(ProximityAuthCryptAuthEnrollerTest, IncompleteDeviceInfo) { 353 TEST_F(CryptAuthEnrollerTest, IncompleteDeviceInfo) {
354 StartEnroller(cryptauth::GcmDeviceInfo()); 354 StartEnroller(cryptauth::GcmDeviceInfo());
355 ASSERT_TRUE(enroller_result_.get()); 355 ASSERT_TRUE(enroller_result_.get());
356 EXPECT_FALSE(*enroller_result_); 356 EXPECT_FALSE(*enroller_result_);
357 } 357 }
358 358
359 } // namespace proximity_auth 359 } // namespace cryptauth
OLDNEW
« no previous file with comments | « components/cryptauth/cryptauth_enroller_impl.cc ('k') | components/cryptauth/cryptauth_enrollment_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698