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

Side by Side Diff: ios/web/net/cert_verifier_block_adapter_unittest.cc

Issue 2225483002: [ios] Removed CertVerifierBlockAdapter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed review comments Created 4 years, 4 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "ios/web/net/cert_verifier_block_adapter.h"
6
7 #include "base/message_loop/message_loop.h"
8 #include "base/test/ios/wait_util.h"
9 #include "ios/web/public/test/test_web_thread_bundle.h"
10 #include "net/base/net_errors.h"
11 #include "net/cert/cert_verifier.h"
12 #include "net/cert/cert_verify_result.h"
13 #include "net/cert/crl_set.h"
14 #include "net/cert/mock_cert_verifier.h"
15 #include "net/cert/x509_certificate.h"
16 #include "net/log/net_log.h"
17 #include "net/test/cert_test_util.h"
18 #include "net/test/test_data_directory.h"
19 #include "testing/platform_test.h"
20
21 namespace web {
22
23 namespace {
24 // Test cert filename.
25 const char kCertFileName[] = "ok_cert.pem";
26 // Test hostname for CertVerifier.
27 const char kHostName[] = "www.example.com";
28
29 } // namespace
30
31 // Test fixture to test CertVerifierBlockAdapter class.
32 class CertVerifierBlockAdapterTest : public PlatformTest {
33 protected:
34 void SetUp() override {
35 PlatformTest::SetUp();
36 cert_ =
37 net::ImportCertFromFile(net::GetTestCertsDirectory(), kCertFileName);
38 ASSERT_TRUE(cert_);
39 }
40
41 // Performs synchronous verification.
42 void Verify(CertVerifierBlockAdapter* cert_verifier_adapter,
43 CertVerifierBlockAdapter::Params params,
44 net::CertVerifyResult* result,
45 int* error) {
46 __block bool verification_completed = false;
47 cert_verifier_adapter->Verify(
48 params, ^(net::CertVerifyResult callback_result, int callback_error) {
49 *result = callback_result;
50 *error = callback_error;
51 verification_completed = true;
52 });
53 base::test::ios::WaitUntilCondition(^{
54 return verification_completed;
55 }, base::MessageLoop::current(), base::TimeDelta());
56 }
57
58 web::TestWebThreadBundle thread_bundle_;
59 scoped_refptr<net::X509Certificate> cert_;
60 net::NetLog net_log_;
61 };
62
63 // Tests |Verify| with default params and synchronous verification.
64 TEST_F(CertVerifierBlockAdapterTest, DefaultParamsAndSync) {
65 // Set up verifier mock.
66 net::MockCertVerifier verifier;
67 CertVerifierBlockAdapter test_adapter(&verifier, &net_log_);
68 const int kExpectedError = net::ERR_CERT_AUTHORITY_INVALID;
69 net::CertVerifyResult expected_result;
70 expected_result.cert_status = net::CERT_STATUS_AUTHORITY_INVALID;
71 expected_result.verified_cert = cert_;
72 verifier.AddResultForCertAndHost(cert_.get(), kHostName, expected_result,
73 kExpectedError);
74
75 // Call |Verify|.
76 net::CertVerifyResult actual_result;
77 int actual_error = -1;
78 CertVerifierBlockAdapter::Params params(cert_.get(), kHostName);
79 Verify(&test_adapter, params, &actual_result, &actual_error);
80
81 // Ensure that Verification results are correct.
82 EXPECT_EQ(kExpectedError, actual_error);
83 EXPECT_EQ(expected_result.cert_status, actual_result.cert_status);
84 }
85
86 // Tests |Verify| with default params and asynchronous verification using real
87 // net::CertVerifier and ok_cert.pem cert.
88 TEST_F(CertVerifierBlockAdapterTest, DefaultParamsAndAsync) {
89 // Call |Verify|.
90 std::unique_ptr<net::CertVerifier> verifier(
91 net::CertVerifier::CreateDefault());
92 CertVerifierBlockAdapter test_adapter(verifier.get(), &net_log_);
93 CertVerifierBlockAdapter::Params params(cert_.get(), kHostName);
94 net::CertVerifyResult actual_result;
95 int actual_error = -1;
96 Verify(&test_adapter, params, &actual_result, &actual_error);
97
98 // Ensure that Verification results are correct.
99 EXPECT_FALSE(actual_result.is_issued_by_known_root);
100 EXPECT_EQ(net::ERR_CERT_AUTHORITY_INVALID, actual_error);
101 }
102
103 // Tests |Verify| with invalid cert argument.
104 TEST_F(CertVerifierBlockAdapterTest, InvalidCert) {
105 // Call |Verify|.
106 net::MockCertVerifier verifier;
107 CertVerifierBlockAdapter test_adapter(&verifier, &net_log_);
108 net::CertVerifyResult actual_result;
109 int actual_error = -1;
110 CertVerifierBlockAdapter::Params params(nullptr, kHostName);
111 Verify(&test_adapter, params, &actual_result, &actual_error);
112
113 // Ensure that Verification results are correct.
114 EXPECT_EQ(net::ERR_INVALID_ARGUMENT, actual_error);
115 }
116
117 // Tests |Verify| with invalid hostname argument.
118 TEST_F(CertVerifierBlockAdapterTest, InvalidHostname) {
119 // Call |Verify|.
120 net::MockCertVerifier verifier;
121 CertVerifierBlockAdapter test_adapter(&verifier, &net_log_);
122 net::CertVerifyResult actual_result;
123 int actual_error = -1;
124 CertVerifierBlockAdapter::Params params(cert_.get(), std::string());
125 Verify(&test_adapter, params, &actual_result, &actual_error);
126
127 // Ensure that Verification results are correct.
128 EXPECT_EQ(net::ERR_INVALID_ARGUMENT, actual_error);
129 }
130
131 // Tests |Verify| with synchronous error.
132 TEST_F(CertVerifierBlockAdapterTest, DefaultParamsAndSyncError) {
133 // Set up expectation.
134 net::MockCertVerifier verifier;
135 CertVerifierBlockAdapter test_adapter(&verifier, &net_log_);
136 const int kExpectedError = net::ERR_INSUFFICIENT_RESOURCES;
137 net::CertVerifyResult expected_result;
138 expected_result.verified_cert = cert_;
139 verifier.AddResultForCertAndHost(cert_.get(), kHostName, expected_result,
140 kExpectedError);
141
142 // Call |Verify|.
143 net::CertVerifyResult actual_result;
144 int actual_error = -1;
145 CertVerifierBlockAdapter::Params params(cert_.get(), kHostName);
146 Verify(&test_adapter, params, &actual_result, &actual_error);
147
148 // Ensure that Verification results are correct.
149 EXPECT_EQ(kExpectedError, actual_error);
150 }
151
152 // Tests that the completion handler passed to |Verify()| is called, even if the
153 // adapter is destroyed.
154 TEST_F(CertVerifierBlockAdapterTest, CompletionHandlerIsAlwaysCalled) {
155 std::unique_ptr<net::CertVerifier> verifier(
156 net::CertVerifier::CreateDefault());
157 std::unique_ptr<CertVerifierBlockAdapter> test_adapter(
158 new CertVerifierBlockAdapter(verifier.get(), &net_log_));
159
160 // Call |Verify| and destroy the adapter.
161 CertVerifierBlockAdapter::Params params(cert_.get(), kHostName);
162 __block bool verification_completed = false;
163 test_adapter->Verify(params, ^(net::CertVerifyResult, int) {
164 verification_completed = true;
165 });
166 test_adapter.reset();
167
168 // Make sure that the completion handler is called.
169 base::test::ios::WaitUntilCondition(^{
170 return verification_completed;
171 }, base::MessageLoop::current(), base::TimeDelta());
172 }
173
174 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/net/cert_verifier_block_adapter.cc ('k') | ios/web/net/crw_cert_verification_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698