OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
8 #include "chromeos/attestation/mock_attestation_flow.h" | 8 #include "chromeos/attestation/mock_attestation_flow.h" |
9 #include "chromeos/cryptohome/mock_async_method_caller.h" | 9 #include "chromeos/cryptohome/mock_async_method_caller.h" |
10 #include "chromeos/dbus/mock_cryptohome_client.h" | 10 #include "chromeos/dbus/mock_cryptohome_client.h" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 | 92 |
93 std::string fake_enroll_response = | 93 std::string fake_enroll_response = |
94 cryptohome::MockAsyncMethodCaller::kFakeAttestationEnrollRequest; | 94 cryptohome::MockAsyncMethodCaller::kFakeAttestationEnrollRequest; |
95 fake_enroll_response += "_response"; | 95 fake_enroll_response += "_response"; |
96 EXPECT_CALL(async_caller, AsyncTpmAttestationEnroll(fake_enroll_response, _)) | 96 EXPECT_CALL(async_caller, AsyncTpmAttestationEnroll(fake_enroll_response, _)) |
97 .Times(1) | 97 .Times(1) |
98 .InSequence(flow_order); | 98 .InSequence(flow_order); |
99 | 99 |
100 EXPECT_CALL( | 100 EXPECT_CALL( |
101 async_caller, | 101 async_caller, |
102 AsyncTpmAttestationCreateCertRequest(CERTIFICATE_INCLUDE_DEVICE_STATE, _)) | 102 AsyncTpmAttestationCreateCertRequest(PROFILE_ENTERPRISE_USER_CERTIFICATE, |
| 103 "fake_email", "fake_origin", _)) |
103 .Times(1) | 104 .Times(1) |
104 .InSequence(flow_order); | 105 .InSequence(flow_order); |
105 | 106 |
106 EXPECT_CALL(*proxy, SendCertificateRequest( | 107 EXPECT_CALL(*proxy, SendCertificateRequest( |
107 cryptohome::MockAsyncMethodCaller::kFakeAttestationCertRequest, | 108 cryptohome::MockAsyncMethodCaller::kFakeAttestationCertRequest, |
108 _)).Times(1) | 109 _)).Times(1) |
109 .InSequence(flow_order); | 110 .InSequence(flow_order); |
110 | 111 |
111 std::string fake_cert_response = | 112 std::string fake_cert_response = |
112 cryptohome::MockAsyncMethodCaller::kFakeAttestationCertRequest; | 113 cryptohome::MockAsyncMethodCaller::kFakeAttestationCertRequest; |
(...skipping 11 matching lines...) Expand all Loading... |
124 true, | 125 true, |
125 cryptohome::MockAsyncMethodCaller::kFakeAttestationCert)) | 126 cryptohome::MockAsyncMethodCaller::kFakeAttestationCert)) |
126 .Times(1) | 127 .Times(1) |
127 .InSequence(flow_order); | 128 .InSequence(flow_order); |
128 AttestationFlow::CertificateCallback mock_callback = base::Bind( | 129 AttestationFlow::CertificateCallback mock_callback = base::Bind( |
129 &MockObserver::MockCertificateCallback, | 130 &MockObserver::MockCertificateCallback, |
130 base::Unretained(&observer)); | 131 base::Unretained(&observer)); |
131 | 132 |
132 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); | 133 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); |
133 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); | 134 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); |
134 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, true, mock_callback); | 135 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, "fake_email", |
| 136 "fake_origin", true, mock_callback); |
135 Run(); | 137 Run(); |
136 } | 138 } |
137 | 139 |
138 TEST_F(AttestationFlowTest, GetCertificate_NoEK) { | 140 TEST_F(AttestationFlowTest, GetCertificate_NoEK) { |
139 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; | 141 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; |
140 async_caller.SetUp(false, cryptohome::MOUNT_ERROR_NONE); | 142 async_caller.SetUp(false, cryptohome::MOUNT_ERROR_NONE); |
141 EXPECT_CALL(async_caller, AsyncTpmAttestationCreateEnrollRequest(_)) | 143 EXPECT_CALL(async_caller, AsyncTpmAttestationCreateEnrollRequest(_)) |
142 .Times(1); | 144 .Times(1); |
143 | 145 |
144 chromeos::MockCryptohomeClient client; | 146 chromeos::MockCryptohomeClient client; |
145 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) | 147 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) |
146 .WillRepeatedly(Invoke(DBusCallbackFalse)); | 148 .WillRepeatedly(Invoke(DBusCallbackFalse)); |
147 | 149 |
148 // We're not expecting any server calls in this case; StrictMock will verify. | 150 // We're not expecting any server calls in this case; StrictMock will verify. |
149 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); | 151 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); |
150 | 152 |
151 StrictMock<MockObserver> observer; | 153 StrictMock<MockObserver> observer; |
152 EXPECT_CALL(observer, MockCertificateCallback(false, "")) | 154 EXPECT_CALL(observer, MockCertificateCallback(false, "")) |
153 .Times(1); | 155 .Times(1); |
154 AttestationFlow::CertificateCallback mock_callback = base::Bind( | 156 AttestationFlow::CertificateCallback mock_callback = base::Bind( |
155 &MockObserver::MockCertificateCallback, | 157 &MockObserver::MockCertificateCallback, |
156 base::Unretained(&observer)); | 158 base::Unretained(&observer)); |
157 | 159 |
158 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); | 160 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); |
159 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); | 161 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); |
160 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, true, mock_callback); | 162 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, "", "", true, |
| 163 mock_callback); |
161 Run(); | 164 Run(); |
162 } | 165 } |
163 | 166 |
164 TEST_F(AttestationFlowTest, GetCertificate_EKRejected) { | 167 TEST_F(AttestationFlowTest, GetCertificate_EKRejected) { |
165 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; | 168 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; |
166 async_caller.SetUp(true, cryptohome::MOUNT_ERROR_NONE); | 169 async_caller.SetUp(true, cryptohome::MOUNT_ERROR_NONE); |
167 EXPECT_CALL(async_caller, AsyncTpmAttestationCreateEnrollRequest(_)) | 170 EXPECT_CALL(async_caller, AsyncTpmAttestationCreateEnrollRequest(_)) |
168 .Times(1); | 171 .Times(1); |
169 | 172 |
170 chromeos::MockCryptohomeClient client; | 173 chromeos::MockCryptohomeClient client; |
171 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) | 174 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) |
172 .WillRepeatedly(Invoke(DBusCallbackFalse)); | 175 .WillRepeatedly(Invoke(DBusCallbackFalse)); |
173 | 176 |
174 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); | 177 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); |
175 proxy->DeferToFake(false); | 178 proxy->DeferToFake(false); |
176 EXPECT_CALL(*proxy, SendEnrollRequest( | 179 EXPECT_CALL(*proxy, SendEnrollRequest( |
177 cryptohome::MockAsyncMethodCaller::kFakeAttestationEnrollRequest, | 180 cryptohome::MockAsyncMethodCaller::kFakeAttestationEnrollRequest, |
178 _)).Times(1); | 181 _)).Times(1); |
179 | 182 |
180 StrictMock<MockObserver> observer; | 183 StrictMock<MockObserver> observer; |
181 EXPECT_CALL(observer, MockCertificateCallback(false, "")) | 184 EXPECT_CALL(observer, MockCertificateCallback(false, "")) |
182 .Times(1); | 185 .Times(1); |
183 AttestationFlow::CertificateCallback mock_callback = base::Bind( | 186 AttestationFlow::CertificateCallback mock_callback = base::Bind( |
184 &MockObserver::MockCertificateCallback, | 187 &MockObserver::MockCertificateCallback, |
185 base::Unretained(&observer)); | 188 base::Unretained(&observer)); |
186 | 189 |
187 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); | 190 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); |
188 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); | 191 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); |
189 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, true, mock_callback); | 192 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, "", "", true, |
| 193 mock_callback); |
190 Run(); | 194 Run(); |
191 } | 195 } |
192 | 196 |
193 TEST_F(AttestationFlowTest, GetCertificate_FailEnroll) { | 197 TEST_F(AttestationFlowTest, GetCertificate_FailEnroll) { |
194 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; | 198 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; |
195 async_caller.SetUp(true, cryptohome::MOUNT_ERROR_NONE); | 199 async_caller.SetUp(true, cryptohome::MOUNT_ERROR_NONE); |
196 EXPECT_CALL(async_caller, AsyncTpmAttestationCreateEnrollRequest(_)) | 200 EXPECT_CALL(async_caller, AsyncTpmAttestationCreateEnrollRequest(_)) |
197 .Times(1); | 201 .Times(1); |
198 std::string fake_enroll_response = | 202 std::string fake_enroll_response = |
199 cryptohome::MockAsyncMethodCaller::kFakeAttestationEnrollRequest; | 203 cryptohome::MockAsyncMethodCaller::kFakeAttestationEnrollRequest; |
(...skipping 12 matching lines...) Expand all Loading... |
212 _)).Times(1); | 216 _)).Times(1); |
213 | 217 |
214 StrictMock<MockObserver> observer; | 218 StrictMock<MockObserver> observer; |
215 EXPECT_CALL(observer, MockCertificateCallback(false, "")).Times(1); | 219 EXPECT_CALL(observer, MockCertificateCallback(false, "")).Times(1); |
216 AttestationFlow::CertificateCallback mock_callback = base::Bind( | 220 AttestationFlow::CertificateCallback mock_callback = base::Bind( |
217 &MockObserver::MockCertificateCallback, | 221 &MockObserver::MockCertificateCallback, |
218 base::Unretained(&observer)); | 222 base::Unretained(&observer)); |
219 | 223 |
220 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); | 224 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); |
221 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); | 225 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); |
222 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, true, mock_callback); | 226 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, "", "", true, |
| 227 mock_callback); |
223 Run(); | 228 Run(); |
224 } | 229 } |
225 | 230 |
226 TEST_F(AttestationFlowTest, GetMachineCertificateAlreadyEnrolled) { | 231 TEST_F(AttestationFlowTest, GetMachineCertificateAlreadyEnrolled) { |
227 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; | 232 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; |
228 async_caller.SetUp(true, cryptohome::MOUNT_ERROR_NONE); | 233 async_caller.SetUp(true, cryptohome::MOUNT_ERROR_NONE); |
229 int options = CERTIFICATE_INCLUDE_DEVICE_STATE | | 234 EXPECT_CALL(async_caller, |
230 CERTIFICATE_INCLUDE_STABLE_ID; | 235 AsyncTpmAttestationCreateCertRequest( |
231 EXPECT_CALL(async_caller, AsyncTpmAttestationCreateCertRequest(options, _)) | 236 PROFILE_ENTERPRISE_MACHINE_CERTIFICATE, "", "", _)) |
232 .Times(1); | 237 .Times(1); |
233 std::string fake_cert_response = | 238 std::string fake_cert_response = |
234 cryptohome::MockAsyncMethodCaller::kFakeAttestationCertRequest; | 239 cryptohome::MockAsyncMethodCaller::kFakeAttestationCertRequest; |
235 fake_cert_response += "_response"; | 240 fake_cert_response += "_response"; |
236 EXPECT_CALL(async_caller, | 241 EXPECT_CALL(async_caller, |
237 AsyncTpmAttestationFinishCertRequest(fake_cert_response, | 242 AsyncTpmAttestationFinishCertRequest(fake_cert_response, |
238 KEY_DEVICE, | 243 KEY_DEVICE, |
239 kEnterpriseMachineKey, | 244 kEnterpriseMachineKey, |
240 _)) | 245 _)) |
241 .Times(1); | 246 .Times(1); |
(...skipping 11 matching lines...) Expand all Loading... |
253 StrictMock<MockObserver> observer; | 258 StrictMock<MockObserver> observer; |
254 EXPECT_CALL(observer, MockCertificateCallback( | 259 EXPECT_CALL(observer, MockCertificateCallback( |
255 true, | 260 true, |
256 cryptohome::MockAsyncMethodCaller::kFakeAttestationCert)).Times(1); | 261 cryptohome::MockAsyncMethodCaller::kFakeAttestationCert)).Times(1); |
257 AttestationFlow::CertificateCallback mock_callback = base::Bind( | 262 AttestationFlow::CertificateCallback mock_callback = base::Bind( |
258 &MockObserver::MockCertificateCallback, | 263 &MockObserver::MockCertificateCallback, |
259 base::Unretained(&observer)); | 264 base::Unretained(&observer)); |
260 | 265 |
261 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); | 266 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); |
262 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); | 267 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); |
263 flow.GetCertificate(PROFILE_ENTERPRISE_MACHINE_CERTIFICATE, | 268 flow.GetCertificate(PROFILE_ENTERPRISE_MACHINE_CERTIFICATE, "", "", true, |
264 true, mock_callback); | 269 mock_callback); |
265 Run(); | 270 Run(); |
266 } | 271 } |
267 | 272 |
268 TEST_F(AttestationFlowTest, GetCertificate_FailCreateCertRequest) { | 273 TEST_F(AttestationFlowTest, GetCertificate_FailCreateCertRequest) { |
269 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; | 274 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; |
270 async_caller.SetUp(false, cryptohome::MOUNT_ERROR_NONE); | 275 async_caller.SetUp(false, cryptohome::MOUNT_ERROR_NONE); |
271 int options = CERTIFICATE_INCLUDE_DEVICE_STATE; | |
272 EXPECT_CALL(async_caller, | 276 EXPECT_CALL(async_caller, |
273 AsyncTpmAttestationCreateCertRequest(options, _)) | 277 AsyncTpmAttestationCreateCertRequest( |
| 278 PROFILE_ENTERPRISE_USER_CERTIFICATE, "", "", _)) |
274 .Times(1); | 279 .Times(1); |
275 | 280 |
276 chromeos::MockCryptohomeClient client; | 281 chromeos::MockCryptohomeClient client; |
277 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) | 282 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) |
278 .WillRepeatedly(Invoke(DBusCallbackTrue)); | 283 .WillRepeatedly(Invoke(DBusCallbackTrue)); |
279 | 284 |
280 // We're not expecting any server calls in this case; StrictMock will verify. | 285 // We're not expecting any server calls in this case; StrictMock will verify. |
281 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); | 286 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); |
282 | 287 |
283 StrictMock<MockObserver> observer; | 288 StrictMock<MockObserver> observer; |
284 EXPECT_CALL(observer, MockCertificateCallback(false, "")).Times(1); | 289 EXPECT_CALL(observer, MockCertificateCallback(false, "")).Times(1); |
285 AttestationFlow::CertificateCallback mock_callback = base::Bind( | 290 AttestationFlow::CertificateCallback mock_callback = base::Bind( |
286 &MockObserver::MockCertificateCallback, | 291 &MockObserver::MockCertificateCallback, |
287 base::Unretained(&observer)); | 292 base::Unretained(&observer)); |
288 | 293 |
289 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); | 294 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); |
290 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); | 295 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); |
291 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, true, mock_callback); | 296 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, "", "", true, |
| 297 mock_callback); |
292 Run(); | 298 Run(); |
293 } | 299 } |
294 | 300 |
295 TEST_F(AttestationFlowTest, GetCertificate_CertRequestRejected) { | 301 TEST_F(AttestationFlowTest, GetCertificate_CertRequestRejected) { |
296 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; | 302 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; |
297 async_caller.SetUp(true, cryptohome::MOUNT_ERROR_NONE); | 303 async_caller.SetUp(true, cryptohome::MOUNT_ERROR_NONE); |
298 int options = CERTIFICATE_INCLUDE_DEVICE_STATE; | |
299 EXPECT_CALL(async_caller, | 304 EXPECT_CALL(async_caller, |
300 AsyncTpmAttestationCreateCertRequest(options, _)) | 305 AsyncTpmAttestationCreateCertRequest( |
| 306 PROFILE_ENTERPRISE_USER_CERTIFICATE, "", "", _)) |
301 .Times(1); | 307 .Times(1); |
302 | 308 |
303 chromeos::MockCryptohomeClient client; | 309 chromeos::MockCryptohomeClient client; |
304 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) | 310 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) |
305 .WillRepeatedly(Invoke(DBusCallbackTrue)); | 311 .WillRepeatedly(Invoke(DBusCallbackTrue)); |
306 | 312 |
307 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); | 313 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); |
308 proxy->DeferToFake(false); | 314 proxy->DeferToFake(false); |
309 EXPECT_CALL(*proxy, SendCertificateRequest( | 315 EXPECT_CALL(*proxy, SendCertificateRequest( |
310 cryptohome::MockAsyncMethodCaller::kFakeAttestationCertRequest, | 316 cryptohome::MockAsyncMethodCaller::kFakeAttestationCertRequest, |
311 _)).Times(1); | 317 _)).Times(1); |
312 | 318 |
313 StrictMock<MockObserver> observer; | 319 StrictMock<MockObserver> observer; |
314 EXPECT_CALL(observer, MockCertificateCallback(false, "")).Times(1); | 320 EXPECT_CALL(observer, MockCertificateCallback(false, "")).Times(1); |
315 AttestationFlow::CertificateCallback mock_callback = base::Bind( | 321 AttestationFlow::CertificateCallback mock_callback = base::Bind( |
316 &MockObserver::MockCertificateCallback, | 322 &MockObserver::MockCertificateCallback, |
317 base::Unretained(&observer)); | 323 base::Unretained(&observer)); |
318 | 324 |
319 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); | 325 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); |
320 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); | 326 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); |
321 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, true, mock_callback); | 327 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, "", "", true, |
| 328 mock_callback); |
322 Run(); | 329 Run(); |
323 } | 330 } |
324 | 331 |
325 TEST_F(AttestationFlowTest, GetCertificate_FailIsEnrolled) { | 332 TEST_F(AttestationFlowTest, GetCertificate_FailIsEnrolled) { |
326 // We're not expecting any async calls in this case; StrictMock will verify. | 333 // We're not expecting any async calls in this case; StrictMock will verify. |
327 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; | 334 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; |
328 | 335 |
329 chromeos::MockCryptohomeClient client; | 336 chromeos::MockCryptohomeClient client; |
330 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) | 337 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) |
331 .WillRepeatedly(Invoke(DBusCallbackFail)); | 338 .WillRepeatedly(Invoke(DBusCallbackFail)); |
332 | 339 |
333 // We're not expecting any server calls in this case; StrictMock will verify. | 340 // We're not expecting any server calls in this case; StrictMock will verify. |
334 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); | 341 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); |
335 | 342 |
336 StrictMock<MockObserver> observer; | 343 StrictMock<MockObserver> observer; |
337 EXPECT_CALL(observer, MockCertificateCallback(false, "")).Times(1); | 344 EXPECT_CALL(observer, MockCertificateCallback(false, "")).Times(1); |
338 AttestationFlow::CertificateCallback mock_callback = base::Bind( | 345 AttestationFlow::CertificateCallback mock_callback = base::Bind( |
339 &MockObserver::MockCertificateCallback, | 346 &MockObserver::MockCertificateCallback, |
340 base::Unretained(&observer)); | 347 base::Unretained(&observer)); |
341 | 348 |
342 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); | 349 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); |
343 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); | 350 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); |
344 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, true, mock_callback); | 351 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, "", "", true, |
| 352 mock_callback); |
345 Run(); | 353 Run(); |
346 } | 354 } |
347 | 355 |
348 TEST_F(AttestationFlowTest, GetCertificate_CheckExisting) { | 356 TEST_F(AttestationFlowTest, GetCertificate_CheckExisting) { |
349 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; | 357 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; |
350 async_caller.SetUp(true, cryptohome::MOUNT_ERROR_NONE); | 358 async_caller.SetUp(true, cryptohome::MOUNT_ERROR_NONE); |
351 int options = CERTIFICATE_INCLUDE_DEVICE_STATE; | 359 EXPECT_CALL(async_caller, |
352 EXPECT_CALL(async_caller, AsyncTpmAttestationCreateCertRequest(options, _)) | 360 AsyncTpmAttestationCreateCertRequest( |
| 361 PROFILE_ENTERPRISE_USER_CERTIFICATE, "", "", _)) |
353 .Times(1); | 362 .Times(1); |
354 std::string fake_cert_response = | 363 std::string fake_cert_response = |
355 cryptohome::MockAsyncMethodCaller::kFakeAttestationCertRequest; | 364 cryptohome::MockAsyncMethodCaller::kFakeAttestationCertRequest; |
356 fake_cert_response += "_response"; | 365 fake_cert_response += "_response"; |
357 EXPECT_CALL(async_caller, | 366 EXPECT_CALL(async_caller, |
358 AsyncTpmAttestationFinishCertRequest(fake_cert_response, | 367 AsyncTpmAttestationFinishCertRequest(fake_cert_response, |
359 KEY_USER, | 368 KEY_USER, |
360 kEnterpriseUserKey, | 369 kEnterpriseUserKey, |
361 _)) | 370 _)) |
362 .Times(1); | 371 .Times(1); |
(...skipping 14 matching lines...) Expand all Loading... |
377 StrictMock<MockObserver> observer; | 386 StrictMock<MockObserver> observer; |
378 EXPECT_CALL(observer, MockCertificateCallback( | 387 EXPECT_CALL(observer, MockCertificateCallback( |
379 true, | 388 true, |
380 cryptohome::MockAsyncMethodCaller::kFakeAttestationCert)).Times(1); | 389 cryptohome::MockAsyncMethodCaller::kFakeAttestationCert)).Times(1); |
381 AttestationFlow::CertificateCallback mock_callback = base::Bind( | 390 AttestationFlow::CertificateCallback mock_callback = base::Bind( |
382 &MockObserver::MockCertificateCallback, | 391 &MockObserver::MockCertificateCallback, |
383 base::Unretained(&observer)); | 392 base::Unretained(&observer)); |
384 | 393 |
385 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); | 394 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); |
386 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); | 395 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); |
387 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, | 396 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, "", "", false, |
388 false, mock_callback); | 397 mock_callback); |
389 Run(); | 398 Run(); |
390 } | 399 } |
391 | 400 |
392 TEST_F(AttestationFlowTest, GetCertificate_AlreadyExists) { | 401 TEST_F(AttestationFlowTest, GetCertificate_AlreadyExists) { |
393 // We're not expecting any async calls in this case; StrictMock will verify. | 402 // We're not expecting any async calls in this case; StrictMock will verify. |
394 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; | 403 StrictMock<cryptohome::MockAsyncMethodCaller> async_caller; |
395 | 404 |
396 chromeos::MockCryptohomeClient client; | 405 chromeos::MockCryptohomeClient client; |
397 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) | 406 EXPECT_CALL(client, TpmAttestationIsEnrolled(_)) |
398 .WillRepeatedly(Invoke(DBusCallbackTrue)); | 407 .WillRepeatedly(Invoke(DBusCallbackTrue)); |
399 EXPECT_CALL(client, | 408 EXPECT_CALL(client, |
400 TpmAttestationDoesKeyExist(KEY_USER, kEnterpriseUserKey, _)) | 409 TpmAttestationDoesKeyExist(KEY_USER, kEnterpriseUserKey, _)) |
401 .WillRepeatedly(WithArgs<2>(Invoke(DBusCallbackTrue))); | 410 .WillRepeatedly(WithArgs<2>(Invoke(DBusCallbackTrue))); |
402 EXPECT_CALL(client, | 411 EXPECT_CALL(client, |
403 TpmAttestationGetCertificate(KEY_USER, kEnterpriseUserKey, _)) | 412 TpmAttestationGetCertificate(KEY_USER, kEnterpriseUserKey, _)) |
404 .WillRepeatedly(WithArgs<2>(Invoke(FakeDBusData("fake_cert")))); | 413 .WillRepeatedly(WithArgs<2>(Invoke(FakeDBusData("fake_cert")))); |
405 | 414 |
406 // We're not expecting any server calls in this case; StrictMock will verify. | 415 // We're not expecting any server calls in this case; StrictMock will verify. |
407 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); | 416 scoped_ptr<MockServerProxy> proxy(new StrictMock<MockServerProxy>()); |
408 | 417 |
409 StrictMock<MockObserver> observer; | 418 StrictMock<MockObserver> observer; |
410 EXPECT_CALL(observer, MockCertificateCallback(true, "fake_cert")).Times(1); | 419 EXPECT_CALL(observer, MockCertificateCallback(true, "fake_cert")).Times(1); |
411 AttestationFlow::CertificateCallback mock_callback = base::Bind( | 420 AttestationFlow::CertificateCallback mock_callback = base::Bind( |
412 &MockObserver::MockCertificateCallback, | 421 &MockObserver::MockCertificateCallback, |
413 base::Unretained(&observer)); | 422 base::Unretained(&observer)); |
414 | 423 |
415 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); | 424 scoped_ptr<ServerProxy> proxy_interface(proxy.release()); |
416 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); | 425 AttestationFlow flow(&async_caller, &client, proxy_interface.Pass()); |
417 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, | 426 flow.GetCertificate(PROFILE_ENTERPRISE_USER_CERTIFICATE, "", "", false, |
418 false, mock_callback); | 427 mock_callback); |
419 Run(); | 428 Run(); |
420 } | 429 } |
421 | 430 |
422 } // namespace attestation | 431 } // namespace attestation |
423 } // namespace chromeos | 432 } // namespace chromeos |
OLD | NEW |