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

Side by Side Diff: net/cert/multi_threaded_cert_verifier_unittest.cc

Issue 1132103004: Rename variables "request_handle" to "request" in CertVerifier tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cert_refactor
Patch Set: rebase onto master Created 5 years, 7 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
« no previous file with comments | « chrome/browser/chromeos/policy/policy_cert_verifier_browsertest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "net/cert/multi_threaded_cert_verifier.h" 5 #include "net/cert/multi_threaded_cert_verifier.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/debug/leak_annotations.h" 8 #include "base/debug/leak_annotations.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/format_macros.h" 10 #include "base/format_macros.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 78
79 TEST_F(MultiThreadedCertVerifierTest, CacheHit) { 79 TEST_F(MultiThreadedCertVerifierTest, CacheHit) {
80 base::FilePath certs_dir = GetTestCertsDirectory(); 80 base::FilePath certs_dir = GetTestCertsDirectory();
81 scoped_refptr<X509Certificate> test_cert( 81 scoped_refptr<X509Certificate> test_cert(
82 ImportCertFromFile(certs_dir, "ok_cert.pem")); 82 ImportCertFromFile(certs_dir, "ok_cert.pem"));
83 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); 83 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get());
84 84
85 int error; 85 int error;
86 CertVerifyResult verify_result; 86 CertVerifyResult verify_result;
87 TestCompletionCallback callback; 87 TestCompletionCallback callback;
88 scoped_ptr<CertVerifier::Request> request_handle; 88 scoped_ptr<CertVerifier::Request> request;
89 89
90 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, 90 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0,
91 NULL, &verify_result, callback.callback(), 91 NULL, &verify_result, callback.callback(), &request,
92 &request_handle, BoundNetLog()); 92 BoundNetLog());
93 ASSERT_EQ(ERR_IO_PENDING, error); 93 ASSERT_EQ(ERR_IO_PENDING, error);
94 EXPECT_TRUE(request_handle); 94 EXPECT_TRUE(request);
95 error = callback.WaitForResult(); 95 error = callback.WaitForResult();
96 ASSERT_TRUE(IsCertificateError(error)); 96 ASSERT_TRUE(IsCertificateError(error));
97 ASSERT_EQ(1u, verifier_.requests()); 97 ASSERT_EQ(1u, verifier_.requests());
98 ASSERT_EQ(0u, verifier_.cache_hits()); 98 ASSERT_EQ(0u, verifier_.cache_hits());
99 ASSERT_EQ(0u, verifier_.inflight_joins()); 99 ASSERT_EQ(0u, verifier_.inflight_joins());
100 ASSERT_EQ(1u, verifier_.GetCacheSize()); 100 ASSERT_EQ(1u, verifier_.GetCacheSize());
101 101
102 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, 102 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0,
103 NULL, &verify_result, callback.callback(), 103 NULL, &verify_result, callback.callback(), &request,
104 &request_handle, BoundNetLog()); 104 BoundNetLog());
105 // Synchronous completion. 105 // Synchronous completion.
106 ASSERT_NE(ERR_IO_PENDING, error); 106 ASSERT_NE(ERR_IO_PENDING, error);
107 ASSERT_TRUE(IsCertificateError(error)); 107 ASSERT_TRUE(IsCertificateError(error));
108 ASSERT_TRUE(request_handle == NULL); 108 ASSERT_FALSE(request);
109 ASSERT_EQ(2u, verifier_.requests()); 109 ASSERT_EQ(2u, verifier_.requests());
110 ASSERT_EQ(1u, verifier_.cache_hits()); 110 ASSERT_EQ(1u, verifier_.cache_hits());
111 ASSERT_EQ(0u, verifier_.inflight_joins()); 111 ASSERT_EQ(0u, verifier_.inflight_joins());
112 ASSERT_EQ(1u, verifier_.GetCacheSize()); 112 ASSERT_EQ(1u, verifier_.GetCacheSize());
113 } 113 }
114 114
115 // Tests the same server certificate with different intermediate CA 115 // Tests the same server certificate with different intermediate CA
116 // certificates. These should be treated as different certificate chains even 116 // certificates. These should be treated as different certificate chains even
117 // though the two X509Certificate objects contain the same server certificate. 117 // though the two X509Certificate objects contain the same server certificate.
118 TEST_F(MultiThreadedCertVerifierTest, DifferentCACerts) { 118 TEST_F(MultiThreadedCertVerifierTest, DifferentCACerts) {
(...skipping 19 matching lines...) Expand all
138 138
139 intermediates.clear(); 139 intermediates.clear();
140 intermediates.push_back(intermediate_cert2->os_cert_handle()); 140 intermediates.push_back(intermediate_cert2->os_cert_handle());
141 scoped_refptr<X509Certificate> cert_chain2 = 141 scoped_refptr<X509Certificate> cert_chain2 =
142 X509Certificate::CreateFromHandle(server_cert->os_cert_handle(), 142 X509Certificate::CreateFromHandle(server_cert->os_cert_handle(),
143 intermediates); 143 intermediates);
144 144
145 int error; 145 int error;
146 CertVerifyResult verify_result; 146 CertVerifyResult verify_result;
147 TestCompletionCallback callback; 147 TestCompletionCallback callback;
148 scoped_ptr<CertVerifier::Request> request_handle; 148 scoped_ptr<CertVerifier::Request> request;
149 149
150 error = verifier_.Verify(cert_chain1.get(), "www.example.com", std::string(), 150 error = verifier_.Verify(cert_chain1.get(), "www.example.com", std::string(),
151 0, NULL, &verify_result, callback.callback(), 151 0, NULL, &verify_result, callback.callback(),
152 &request_handle, BoundNetLog()); 152 &request, BoundNetLog());
153 ASSERT_EQ(ERR_IO_PENDING, error); 153 ASSERT_EQ(ERR_IO_PENDING, error);
154 EXPECT_TRUE(request_handle); 154 EXPECT_TRUE(request);
155 error = callback.WaitForResult(); 155 error = callback.WaitForResult();
156 ASSERT_TRUE(IsCertificateError(error)); 156 ASSERT_TRUE(IsCertificateError(error));
157 ASSERT_EQ(1u, verifier_.requests()); 157 ASSERT_EQ(1u, verifier_.requests());
158 ASSERT_EQ(0u, verifier_.cache_hits()); 158 ASSERT_EQ(0u, verifier_.cache_hits());
159 ASSERT_EQ(0u, verifier_.inflight_joins()); 159 ASSERT_EQ(0u, verifier_.inflight_joins());
160 ASSERT_EQ(1u, verifier_.GetCacheSize()); 160 ASSERT_EQ(1u, verifier_.GetCacheSize());
161 161
162 error = verifier_.Verify(cert_chain2.get(), "www.example.com", std::string(), 162 error = verifier_.Verify(cert_chain2.get(), "www.example.com", std::string(),
163 0, NULL, &verify_result, callback.callback(), 163 0, NULL, &verify_result, callback.callback(),
164 &request_handle, BoundNetLog()); 164 &request, BoundNetLog());
165 ASSERT_EQ(ERR_IO_PENDING, error); 165 ASSERT_EQ(ERR_IO_PENDING, error);
166 EXPECT_TRUE(request_handle); 166 EXPECT_TRUE(request);
167 error = callback.WaitForResult(); 167 error = callback.WaitForResult();
168 ASSERT_TRUE(IsCertificateError(error)); 168 ASSERT_TRUE(IsCertificateError(error));
169 ASSERT_EQ(2u, verifier_.requests()); 169 ASSERT_EQ(2u, verifier_.requests());
170 ASSERT_EQ(0u, verifier_.cache_hits()); 170 ASSERT_EQ(0u, verifier_.cache_hits());
171 ASSERT_EQ(0u, verifier_.inflight_joins()); 171 ASSERT_EQ(0u, verifier_.inflight_joins());
172 ASSERT_EQ(2u, verifier_.GetCacheSize()); 172 ASSERT_EQ(2u, verifier_.GetCacheSize());
173 } 173 }
174 174
175 // Tests an inflight join. 175 // Tests an inflight join.
176 TEST_F(MultiThreadedCertVerifierTest, InflightJoin) { 176 TEST_F(MultiThreadedCertVerifierTest, InflightJoin) {
177 base::FilePath certs_dir = GetTestCertsDirectory(); 177 base::FilePath certs_dir = GetTestCertsDirectory();
178 scoped_refptr<X509Certificate> test_cert( 178 scoped_refptr<X509Certificate> test_cert(
179 ImportCertFromFile(certs_dir, "ok_cert.pem")); 179 ImportCertFromFile(certs_dir, "ok_cert.pem"));
180 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); 180 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get());
181 181
182 int error; 182 int error;
183 CertVerifyResult verify_result; 183 CertVerifyResult verify_result;
184 TestCompletionCallback callback; 184 TestCompletionCallback callback;
185 scoped_ptr<CertVerifier::Request> request_handle; 185 scoped_ptr<CertVerifier::Request> request;
186 CertVerifyResult verify_result2; 186 CertVerifyResult verify_result2;
187 TestCompletionCallback callback2; 187 TestCompletionCallback callback2;
188 scoped_ptr<CertVerifier::Request> request_handle2; 188 scoped_ptr<CertVerifier::Request> request2;
189 189
190 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, 190 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0,
191 NULL, &verify_result, callback.callback(), 191 NULL, &verify_result, callback.callback(), &request,
192 &request_handle, BoundNetLog()); 192 BoundNetLog());
193 ASSERT_EQ(ERR_IO_PENDING, error); 193 ASSERT_EQ(ERR_IO_PENDING, error);
194 EXPECT_TRUE(request_handle); 194 EXPECT_TRUE(request);
195 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, 195 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0,
196 NULL, &verify_result2, callback2.callback(), 196 NULL, &verify_result2, callback2.callback(),
197 &request_handle2, BoundNetLog()); 197 &request2, BoundNetLog());
198 EXPECT_EQ(ERR_IO_PENDING, error); 198 EXPECT_EQ(ERR_IO_PENDING, error);
199 EXPECT_TRUE(request_handle2); 199 EXPECT_TRUE(request2);
200 error = callback.WaitForResult(); 200 error = callback.WaitForResult();
201 EXPECT_TRUE(IsCertificateError(error)); 201 EXPECT_TRUE(IsCertificateError(error));
202 error = callback2.WaitForResult(); 202 error = callback2.WaitForResult();
203 ASSERT_TRUE(IsCertificateError(error)); 203 ASSERT_TRUE(IsCertificateError(error));
204 ASSERT_EQ(2u, verifier_.requests()); 204 ASSERT_EQ(2u, verifier_.requests());
205 ASSERT_EQ(0u, verifier_.cache_hits()); 205 ASSERT_EQ(0u, verifier_.cache_hits());
206 ASSERT_EQ(1u, verifier_.inflight_joins()); 206 ASSERT_EQ(1u, verifier_.inflight_joins());
207 } 207 }
208 208
209 // Tests that the callback of a canceled request is never made. 209 // Tests that the callback of a canceled request is never made.
210 TEST_F(MultiThreadedCertVerifierTest, CancelRequest) { 210 TEST_F(MultiThreadedCertVerifierTest, CancelRequest) {
211 base::FilePath certs_dir = GetTestCertsDirectory(); 211 base::FilePath certs_dir = GetTestCertsDirectory();
212 scoped_refptr<X509Certificate> test_cert( 212 scoped_refptr<X509Certificate> test_cert(
213 ImportCertFromFile(certs_dir, "ok_cert.pem")); 213 ImportCertFromFile(certs_dir, "ok_cert.pem"));
214 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); 214 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get());
215 215
216 int error; 216 int error;
217 CertVerifyResult verify_result; 217 CertVerifyResult verify_result;
218 scoped_ptr<CertVerifier::Request> request_handle; 218 scoped_ptr<CertVerifier::Request> request;
219 219
220 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, 220 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0,
221 NULL, &verify_result, base::Bind(&FailTest), 221 NULL, &verify_result, base::Bind(&FailTest),
222 &request_handle, BoundNetLog()); 222 &request, BoundNetLog());
223 ASSERT_EQ(ERR_IO_PENDING, error); 223 ASSERT_EQ(ERR_IO_PENDING, error);
224 ASSERT_TRUE(request_handle); 224 ASSERT_TRUE(request);
225 request_handle.reset(); 225 request.reset();
226 226
227 // Issue a few more requests to the worker pool and wait for their 227 // Issue a few more requests to the worker pool and wait for their
228 // completion, so that the task of the canceled request (which runs on a 228 // completion, so that the task of the canceled request (which runs on a
229 // worker thread) is likely to complete by the end of this test. 229 // worker thread) is likely to complete by the end of this test.
230 TestCompletionCallback callback; 230 TestCompletionCallback callback;
231 for (int i = 0; i < 5; ++i) { 231 for (int i = 0; i < 5; ++i) {
232 error = verifier_.Verify(test_cert.get(), "www2.example.com", std::string(), 232 error = verifier_.Verify(test_cert.get(), "www2.example.com", std::string(),
233 0, NULL, &verify_result, callback.callback(), 233 0, NULL, &verify_result, callback.callback(),
234 &request_handle, BoundNetLog()); 234 &request, BoundNetLog());
235 ASSERT_EQ(ERR_IO_PENDING, error); 235 ASSERT_EQ(ERR_IO_PENDING, error);
236 EXPECT_TRUE(request_handle); 236 EXPECT_TRUE(request);
237 error = callback.WaitForResult(); 237 error = callback.WaitForResult();
238 verifier_.ClearCache(); 238 verifier_.ClearCache();
239 } 239 }
240 } 240 }
241 241
242 // Tests that a canceled request is not leaked. 242 // Tests that a canceled request is not leaked.
243 TEST_F(MultiThreadedCertVerifierTest, CancelRequestThenQuit) { 243 TEST_F(MultiThreadedCertVerifierTest, CancelRequestThenQuit) {
244 base::FilePath certs_dir = GetTestCertsDirectory(); 244 base::FilePath certs_dir = GetTestCertsDirectory();
245 scoped_refptr<X509Certificate> test_cert( 245 scoped_refptr<X509Certificate> test_cert(
246 ImportCertFromFile(certs_dir, "ok_cert.pem")); 246 ImportCertFromFile(certs_dir, "ok_cert.pem"));
247 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); 247 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get());
248 248
249 int error; 249 int error;
250 CertVerifyResult verify_result; 250 CertVerifyResult verify_result;
251 TestCompletionCallback callback; 251 TestCompletionCallback callback;
252 scoped_ptr<CertVerifier::Request> request_handle; 252 scoped_ptr<CertVerifier::Request> request;
253 253
254 { 254 {
255 // Because shutdown intentionally doesn't join worker threads, a 255 // Because shutdown intentionally doesn't join worker threads, a
256 // CertVerifyWorker may be leaked if the main thread shuts down before the 256 // CertVerifyWorker may be leaked if the main thread shuts down before the
257 // worker thread. 257 // worker thread.
258 ANNOTATE_SCOPED_MEMORY_LEAK; 258 ANNOTATE_SCOPED_MEMORY_LEAK;
259 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 259 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(),
260 0, NULL, &verify_result, callback.callback(), 260 0, NULL, &verify_result, callback.callback(),
261 &request_handle, BoundNetLog()); 261 &request, BoundNetLog());
262 } 262 }
263 ASSERT_EQ(ERR_IO_PENDING, error); 263 ASSERT_EQ(ERR_IO_PENDING, error);
264 EXPECT_TRUE(request_handle); 264 EXPECT_TRUE(request);
265 request_handle.reset(); 265 request.reset();
266 // Destroy |verifier| by going out of scope. 266 // Destroy |verifier| by going out of scope.
267 } 267 }
268 268
269 TEST_F(MultiThreadedCertVerifierTest, RequestParamsComparators) { 269 TEST_F(MultiThreadedCertVerifierTest, RequestParamsComparators) {
270 SHA1HashValue a_key; 270 SHA1HashValue a_key;
271 memset(a_key.data, 'a', sizeof(a_key.data)); 271 memset(a_key.data, 'a', sizeof(a_key.data));
272 272
273 SHA1HashValue z_key; 273 SHA1HashValue z_key;
274 memset(z_key.data, 'z', sizeof(z_key.data)); 274 memset(z_key.data, 'z', sizeof(z_key.data));
275 275
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 386
387 const CertificateList empty_cert_list; 387 const CertificateList empty_cert_list;
388 CertificateList cert_list; 388 CertificateList cert_list;
389 cert_list.push_back(test_cert); 389 cert_list.push_back(test_cert);
390 390
391 // Check that Verify() asks the |trust_provider| for the current list of 391 // Check that Verify() asks the |trust_provider| for the current list of
392 // additional trust anchors. 392 // additional trust anchors.
393 int error; 393 int error;
394 CertVerifyResult verify_result; 394 CertVerifyResult verify_result;
395 TestCompletionCallback callback; 395 TestCompletionCallback callback;
396 scoped_ptr<CertVerifier::Request> request_handle; 396 scoped_ptr<CertVerifier::Request> request;
397 EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors()) 397 EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors())
398 .WillOnce(ReturnRef(empty_cert_list)); 398 .WillOnce(ReturnRef(empty_cert_list));
399 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, 399 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0,
400 NULL, &verify_result, callback.callback(), 400 NULL, &verify_result, callback.callback(), &request,
401 &request_handle, BoundNetLog()); 401 BoundNetLog());
402 Mock::VerifyAndClearExpectations(&trust_provider); 402 Mock::VerifyAndClearExpectations(&trust_provider);
403 ASSERT_EQ(ERR_IO_PENDING, error); 403 ASSERT_EQ(ERR_IO_PENDING, error);
404 EXPECT_TRUE(request_handle); 404 EXPECT_TRUE(request);
405 error = callback.WaitForResult(); 405 error = callback.WaitForResult();
406 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); 406 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error);
407 ASSERT_EQ(1u, verifier_.requests()); 407 ASSERT_EQ(1u, verifier_.requests());
408 ASSERT_EQ(0u, verifier_.cache_hits()); 408 ASSERT_EQ(0u, verifier_.cache_hits());
409 409
410 // The next Verify() uses the cached result. 410 // The next Verify() uses the cached result.
411 EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors()) 411 EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors())
412 .WillOnce(ReturnRef(empty_cert_list)); 412 .WillOnce(ReturnRef(empty_cert_list));
413 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, 413 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0,
414 NULL, &verify_result, callback.callback(), 414 NULL, &verify_result, callback.callback(), &request,
415 &request_handle, BoundNetLog()); 415 BoundNetLog());
416 Mock::VerifyAndClearExpectations(&trust_provider); 416 Mock::VerifyAndClearExpectations(&trust_provider);
417 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); 417 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error);
418 EXPECT_FALSE(request_handle); 418 EXPECT_FALSE(request);
419 ASSERT_EQ(2u, verifier_.requests()); 419 ASSERT_EQ(2u, verifier_.requests());
420 ASSERT_EQ(1u, verifier_.cache_hits()); 420 ASSERT_EQ(1u, verifier_.cache_hits());
421 421
422 // Another Verify() for the same certificate but with a different list of 422 // Another Verify() for the same certificate but with a different list of
423 // trust anchors will not reuse the cache. 423 // trust anchors will not reuse the cache.
424 EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors()) 424 EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors())
425 .WillOnce(ReturnRef(cert_list)); 425 .WillOnce(ReturnRef(cert_list));
426 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, 426 error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0,
427 NULL, &verify_result, callback.callback(), 427 NULL, &verify_result, callback.callback(), &request,
428 &request_handle, BoundNetLog()); 428 BoundNetLog());
429 Mock::VerifyAndClearExpectations(&trust_provider); 429 Mock::VerifyAndClearExpectations(&trust_provider);
430 ASSERT_EQ(ERR_IO_PENDING, error); 430 ASSERT_EQ(ERR_IO_PENDING, error);
431 EXPECT_TRUE(request_handle); 431 EXPECT_TRUE(request);
432 error = callback.WaitForResult(); 432 error = callback.WaitForResult();
433 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); 433 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error);
434 ASSERT_EQ(3u, verifier_.requests()); 434 ASSERT_EQ(3u, verifier_.requests());
435 ASSERT_EQ(1u, verifier_.cache_hits()); 435 ASSERT_EQ(1u, verifier_.cache_hits());
436 } 436 }
437 437
438 // Tests de-duplication of requests. 438 // Tests de-duplication of requests.
439 // Starts up 5 requests, of which 3 are unique. 439 // Starts up 5 requests, of which 3 are unique.
440 TEST_F(MultiThreadedCertVerifierTest, MultipleInflightJoin) { 440 TEST_F(MultiThreadedCertVerifierTest, MultipleInflightJoin) {
441 base::FilePath certs_dir = GetTestCertsDirectory(); 441 base::FilePath certs_dir = GetTestCertsDirectory();
442 scoped_refptr<X509Certificate> test_cert( 442 scoped_refptr<X509Certificate> test_cert(
443 ImportCertFromFile(certs_dir, "ok_cert.pem")); 443 ImportCertFromFile(certs_dir, "ok_cert.pem"));
444 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); 444 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get());
445 445
446 int error; 446 int error;
447 CertVerifyResult verify_result1; 447 CertVerifyResult verify_result1;
448 TestCompletionCallback callback1; 448 TestCompletionCallback callback1;
449 scoped_ptr<CertVerifier::Request> request_handle1; 449 scoped_ptr<CertVerifier::Request> request1;
450 CertVerifyResult verify_result2; 450 CertVerifyResult verify_result2;
451 TestCompletionCallback callback2; 451 TestCompletionCallback callback2;
452 scoped_ptr<CertVerifier::Request> request_handle2; 452 scoped_ptr<CertVerifier::Request> request2;
453 CertVerifyResult verify_result3; 453 CertVerifyResult verify_result3;
454 TestCompletionCallback callback3; 454 TestCompletionCallback callback3;
455 scoped_ptr<CertVerifier::Request> request_handle3; 455 scoped_ptr<CertVerifier::Request> request3;
456 CertVerifyResult verify_result4; 456 CertVerifyResult verify_result4;
457 TestCompletionCallback callback4; 457 TestCompletionCallback callback4;
458 scoped_ptr<CertVerifier::Request> request_handle4; 458 scoped_ptr<CertVerifier::Request> request4;
459 CertVerifyResult verify_result5; 459 CertVerifyResult verify_result5;
460 TestCompletionCallback callback5; 460 TestCompletionCallback callback5;
461 scoped_ptr<CertVerifier::Request> request_handle5; 461 scoped_ptr<CertVerifier::Request> request5;
462 462
463 const char domain1[] = "www.example1.com"; 463 const char domain1[] = "www.example1.com";
464 const char domain2[] = "www.exampleB.com"; 464 const char domain2[] = "www.exampleB.com";
465 const char domain3[] = "www.example3.com"; 465 const char domain3[] = "www.example3.com";
466 466
467 // Start 3 unique requests. 467 // Start 3 unique requests.
468 error = verifier_.Verify(test_cert.get(), domain2, std::string(), 0, nullptr, 468 error = verifier_.Verify(test_cert.get(), domain2, std::string(), 0, nullptr,
469 &verify_result1, callback1.callback(), 469 &verify_result1, callback1.callback(), &request1,
470 &request_handle1, BoundNetLog()); 470 BoundNetLog());
471 ASSERT_EQ(ERR_IO_PENDING, error); 471 ASSERT_EQ(ERR_IO_PENDING, error);
472 EXPECT_TRUE(request_handle1); 472 EXPECT_TRUE(request1);
473 473
474 error = verifier_.Verify(test_cert.get(), domain2, std::string(), 0, nullptr, 474 error = verifier_.Verify(test_cert.get(), domain2, std::string(), 0, nullptr,
475 &verify_result2, callback2.callback(), 475 &verify_result2, callback2.callback(), &request2,
476 &request_handle2, BoundNetLog()); 476 BoundNetLog());
477 EXPECT_EQ(ERR_IO_PENDING, error); 477 EXPECT_EQ(ERR_IO_PENDING, error);
478 EXPECT_TRUE(request_handle2); 478 EXPECT_TRUE(request2);
479 479
480 error = verifier_.Verify(test_cert.get(), domain3, std::string(), 0, nullptr, 480 error = verifier_.Verify(test_cert.get(), domain3, std::string(), 0, nullptr,
481 &verify_result3, callback3.callback(), 481 &verify_result3, callback3.callback(), &request3,
482 &request_handle3, BoundNetLog()); 482 BoundNetLog());
483 EXPECT_EQ(ERR_IO_PENDING, error); 483 EXPECT_EQ(ERR_IO_PENDING, error);
484 EXPECT_TRUE(request_handle3); 484 EXPECT_TRUE(request3);
485 485
486 // Start duplicate requests (which should join to existing jobs). 486 // Start duplicate requests (which should join to existing jobs).
487 error = verifier_.Verify(test_cert.get(), domain1, std::string(), 0, nullptr, 487 error = verifier_.Verify(test_cert.get(), domain1, std::string(), 0, nullptr,
488 &verify_result4, callback4.callback(), 488 &verify_result4, callback4.callback(), &request4,
489 &request_handle4, BoundNetLog()); 489 BoundNetLog());
490 EXPECT_EQ(ERR_IO_PENDING, error); 490 EXPECT_EQ(ERR_IO_PENDING, error);
491 EXPECT_TRUE(request_handle4); 491 EXPECT_TRUE(request4);
492 492
493 error = verifier_.Verify(test_cert.get(), domain2, std::string(), 0, nullptr, 493 error = verifier_.Verify(test_cert.get(), domain2, std::string(), 0, nullptr,
494 &verify_result5, callback5.callback(), 494 &verify_result5, callback5.callback(), &request5,
495 &request_handle5, BoundNetLog()); 495 BoundNetLog());
496 EXPECT_EQ(ERR_IO_PENDING, error); 496 EXPECT_EQ(ERR_IO_PENDING, error);
497 EXPECT_TRUE(request_handle5); 497 EXPECT_TRUE(request5);
498 498
499 error = callback1.WaitForResult(); 499 error = callback1.WaitForResult();
500 EXPECT_TRUE(IsCertificateError(error)); 500 EXPECT_TRUE(IsCertificateError(error));
501 error = callback2.WaitForResult(); 501 error = callback2.WaitForResult();
502 ASSERT_TRUE(IsCertificateError(error)); 502 ASSERT_TRUE(IsCertificateError(error));
503 error = callback4.WaitForResult(); 503 error = callback4.WaitForResult();
504 ASSERT_TRUE(IsCertificateError(error)); 504 ASSERT_TRUE(IsCertificateError(error));
505 505
506 // Let the other requests automatically cancel. 506 // Let the other requests automatically cancel.
507 ASSERT_EQ(5u, verifier_.requests()); 507 ASSERT_EQ(5u, verifier_.requests());
508 ASSERT_EQ(0u, verifier_.cache_hits()); 508 ASSERT_EQ(0u, verifier_.cache_hits());
509 ASSERT_EQ(2u, verifier_.inflight_joins()); 509 ASSERT_EQ(2u, verifier_.inflight_joins());
510 } 510 }
511 511
512 } // namespace net 512 } // namespace net
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/policy/policy_cert_verifier_browsertest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698