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

Side by Side Diff: net/http/http_network_transaction_ssl_unittest.cc

Issue 2532153002: Cleanup in HttpNetworkTransactionSSLTest. (Closed)
Patch Set: Created 4 years 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 | « net/http/http_network_transaction.h ('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 <memory> 5 #include <memory>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/deferred_sequenced_task_runner.h" 9 #include "base/deferred_sequenced_task_runner.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 19 matching lines...) Expand all
30 #include "testing/gmock/include/gmock/gmock.h" 30 #include "testing/gmock/include/gmock/gmock.h"
31 #include "testing/gtest/include/gtest/gtest.h" 31 #include "testing/gtest/include/gtest/gtest.h"
32 32
33 using net::test::IsError; 33 using net::test::IsError;
34 using net::test::IsOk; 34 using net::test::IsOk;
35 35
36 namespace net { 36 namespace net {
37 37
38 namespace { 38 namespace {
39 39
40 class TLS10SSLConfigService : public SSLConfigService {
41 public:
42 TLS10SSLConfigService() {
43 ssl_config_.version_min = SSL_PROTOCOL_VERSION_TLS1;
44 ssl_config_.version_max = SSL_PROTOCOL_VERSION_TLS1;
45 }
46
47 void GetSSLConfig(SSLConfig* config) override { *config = ssl_config_; }
48
49 private:
50 ~TLS10SSLConfigService() override {}
51
52 SSLConfig ssl_config_;
53 };
54
55 class TLS12SSLConfigService : public SSLConfigService {
56 public:
57 TLS12SSLConfigService() {
58 ssl_config_.version_min = SSL_PROTOCOL_VERSION_TLS1;
59 ssl_config_.version_max = SSL_PROTOCOL_VERSION_TLS1_2;
60 }
61
62 void GetSSLConfig(SSLConfig* config) override { *config = ssl_config_; }
63
64 private:
65 ~TLS12SSLConfigService() override {}
66
67 SSLConfig ssl_config_;
68 };
69
70 class TokenBindingSSLConfigService : public SSLConfigService { 40 class TokenBindingSSLConfigService : public SSLConfigService {
71 public: 41 public:
72 TokenBindingSSLConfigService() { 42 TokenBindingSSLConfigService() {
73 ssl_config_.token_binding_params.push_back(TB_PARAM_ECDSAP256); 43 ssl_config_.token_binding_params.push_back(TB_PARAM_ECDSAP256);
74 } 44 }
75 45
76 void GetSSLConfig(SSLConfig* config) override { *config = ssl_config_; } 46 void GetSSLConfig(SSLConfig* config) override { *config = ssl_config_; }
77 47
78 private: 48 private:
79 ~TokenBindingSSLConfigService() override {} 49 ~TokenBindingSSLConfigService() override {}
80 50
81 SSLConfig ssl_config_; 51 SSLConfig ssl_config_;
82 }; 52 };
83 53
84 } // namespace 54 } // namespace
85 55
86 class HttpNetworkTransactionSSLTest : public testing::Test { 56 class HttpNetworkTransactionSSLTest : public testing::Test {
87 protected: 57 protected:
88 void SetUp() override { 58 void SetUp() override {
89 ssl_config_service_ = new TLS10SSLConfigService; 59 ssl_config_service_ = new TokenBindingSSLConfigService;
90 session_params_.ssl_config_service = ssl_config_service_.get(); 60 session_params_.ssl_config_service = ssl_config_service_.get();
91 61
92 auth_handler_factory_.reset(new HttpAuthHandlerMock::Factory()); 62 auth_handler_factory_.reset(new HttpAuthHandlerMock::Factory());
93 session_params_.http_auth_handler_factory = auth_handler_factory_.get(); 63 session_params_.http_auth_handler_factory = auth_handler_factory_.get();
94 64
95 proxy_service_ = ProxyService::CreateDirect(); 65 proxy_service_ = ProxyService::CreateDirect();
96 session_params_.proxy_service = proxy_service_.get(); 66 session_params_.proxy_service = proxy_service_.get();
97 67
98 session_params_.client_socket_factory = &mock_socket_factory_; 68 session_params_.client_socket_factory = &mock_socket_factory_;
99 session_params_.host_resolver = &mock_resolver_; 69 session_params_.host_resolver = &mock_resolver_;
100 session_params_.http_server_properties = &http_server_properties_; 70 session_params_.http_server_properties = &http_server_properties_;
101 session_params_.cert_verifier = &cert_verifier_; 71 session_params_.cert_verifier = &cert_verifier_;
102 session_params_.transport_security_state = &transport_security_state_; 72 session_params_.transport_security_state = &transport_security_state_;
103 session_params_.cert_transparency_verifier = &ct_verifier_; 73 session_params_.cert_transparency_verifier = &ct_verifier_;
104 session_params_.ct_policy_enforcer = &ct_policy_enforcer_; 74 session_params_.ct_policy_enforcer = &ct_policy_enforcer_;
105 } 75 }
106 76
107 HttpRequestInfo* GetRequestInfo(const std::string& url) { 77 HttpRequestInfo* GetRequestInfo(const std::string& url) {
108 HttpRequestInfo* request_info = new HttpRequestInfo; 78 HttpRequestInfo* request_info = new HttpRequestInfo;
109 request_info->url = GURL(url); 79 request_info->url = GURL(url);
110 request_info->method = "GET"; 80 request_info->method = "GET";
111 request_info_vector_.push_back(base::WrapUnique(request_info)); 81 request_info_vector_.push_back(base::WrapUnique(request_info));
112 return request_info; 82 return request_info;
113 } 83 }
114 84
115 SSLConfig& GetServerSSLConfig(HttpNetworkTransaction* trans) {
116 return trans->server_ssl_config_;
117 }
118
119 scoped_refptr<SSLConfigService> ssl_config_service_; 85 scoped_refptr<SSLConfigService> ssl_config_service_;
120 std::unique_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory_; 86 std::unique_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory_;
121 std::unique_ptr<ProxyService> proxy_service_; 87 std::unique_ptr<ProxyService> proxy_service_;
122 88
123 MockClientSocketFactory mock_socket_factory_; 89 MockClientSocketFactory mock_socket_factory_;
124 MockHostResolver mock_resolver_; 90 MockHostResolver mock_resolver_;
125 HttpServerPropertiesImpl http_server_properties_; 91 HttpServerPropertiesImpl http_server_properties_;
126 MockCertVerifier cert_verifier_; 92 MockCertVerifier cert_verifier_;
127 TransportSecurityState transport_security_state_; 93 TransportSecurityState transport_security_state_;
128 MultiLogCTVerifier ct_verifier_; 94 MultiLogCTVerifier ct_verifier_;
129 CTPolicyEnforcer ct_policy_enforcer_; 95 CTPolicyEnforcer ct_policy_enforcer_;
130 HttpNetworkSession::Params session_params_; 96 HttpNetworkSession::Params session_params_;
131 std::vector<std::unique_ptr<HttpRequestInfo>> request_info_vector_; 97 std::vector<std::unique_ptr<HttpRequestInfo>> request_info_vector_;
132 }; 98 };
133 99
134 #if !defined(OS_IOS) 100 #if !defined(OS_IOS)
135 TEST_F(HttpNetworkTransactionSSLTest, TokenBinding) { 101 TEST_F(HttpNetworkTransactionSSLTest, TokenBinding) {
136 ssl_config_service_ = new TokenBindingSSLConfigService;
137 session_params_.ssl_config_service = ssl_config_service_.get();
138 ChannelIDService channel_id_service(new DefaultChannelIDStore(NULL), 102 ChannelIDService channel_id_service(new DefaultChannelIDStore(NULL),
139 base::ThreadTaskRunnerHandle::Get()); 103 base::ThreadTaskRunnerHandle::Get());
140 session_params_.channel_id_service = &channel_id_service; 104 session_params_.channel_id_service = &channel_id_service;
141 105
142 SSLSocketDataProvider ssl_data(ASYNC, OK); 106 SSLSocketDataProvider ssl_data(ASYNC, OK);
143 ssl_data.token_binding_negotiated = true; 107 ssl_data.token_binding_negotiated = true;
144 ssl_data.token_binding_key_param = TB_PARAM_ECDSAP256; 108 ssl_data.token_binding_key_param = TB_PARAM_ECDSAP256;
145 mock_socket_factory_.AddSSLSocketDataProvider(&ssl_data); 109 mock_socket_factory_.AddSSLSocketDataProvider(&ssl_data);
146 MockRead mock_reads[] = {MockRead("HTTP/1.1 200 OK\r\n\r\n"), 110 MockRead mock_reads[] = {MockRead("HTTP/1.1 200 OK\r\n\r\n"),
147 MockRead(SYNCHRONOUS, OK)}; 111 MockRead(SYNCHRONOUS, OK)};
(...skipping 30 matching lines...) Expand all
178 HttpRequestHeaders headers2; 142 HttpRequestHeaders headers2;
179 ASSERT_TRUE(trans2.GetFullRequestHeaders(&headers2)); 143 ASSERT_TRUE(trans2.GetFullRequestHeaders(&headers2));
180 std::string token_binding_header2; 144 std::string token_binding_header2;
181 EXPECT_TRUE(headers2.GetHeader(HttpRequestHeaders::kTokenBinding, 145 EXPECT_TRUE(headers2.GetHeader(HttpRequestHeaders::kTokenBinding,
182 &token_binding_header2)); 146 &token_binding_header2));
183 147
184 EXPECT_EQ(token_binding_header1, token_binding_header2); 148 EXPECT_EQ(token_binding_header1, token_binding_header2);
185 } 149 }
186 150
187 TEST_F(HttpNetworkTransactionSSLTest, NoTokenBindingOverHttp) { 151 TEST_F(HttpNetworkTransactionSSLTest, NoTokenBindingOverHttp) {
188 ssl_config_service_ = new TokenBindingSSLConfigService;
189 session_params_.ssl_config_service = ssl_config_service_.get();
190 ChannelIDService channel_id_service(new DefaultChannelIDStore(NULL), 152 ChannelIDService channel_id_service(new DefaultChannelIDStore(NULL),
191 base::ThreadTaskRunnerHandle::Get()); 153 base::ThreadTaskRunnerHandle::Get());
192 session_params_.channel_id_service = &channel_id_service; 154 session_params_.channel_id_service = &channel_id_service;
193 155
194 SSLSocketDataProvider ssl_data(ASYNC, OK); 156 SSLSocketDataProvider ssl_data(ASYNC, OK);
195 ssl_data.token_binding_negotiated = true; 157 ssl_data.token_binding_negotiated = true;
196 ssl_data.token_binding_key_param = TB_PARAM_ECDSAP256; 158 ssl_data.token_binding_key_param = TB_PARAM_ECDSAP256;
197 mock_socket_factory_.AddSSLSocketDataProvider(&ssl_data); 159 mock_socket_factory_.AddSSLSocketDataProvider(&ssl_data);
198 MockRead mock_reads[] = {MockRead("HTTP/1.1 200 OK\r\n\r\n"), 160 MockRead mock_reads[] = {MockRead("HTTP/1.1 200 OK\r\n\r\n"),
199 MockRead(SYNCHRONOUS, OK)}; 161 MockRead(SYNCHRONOUS, OK)};
(...skipping 11 matching lines...) Expand all
211 173
212 HttpRequestHeaders headers; 174 HttpRequestHeaders headers;
213 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); 175 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers));
214 std::string token_binding_header; 176 std::string token_binding_header;
215 EXPECT_FALSE(headers.GetHeader(HttpRequestHeaders::kTokenBinding, 177 EXPECT_FALSE(headers.GetHeader(HttpRequestHeaders::kTokenBinding,
216 &token_binding_header)); 178 &token_binding_header));
217 } 179 }
218 180
219 // Regression test for https://crbug.com/667683. 181 // Regression test for https://crbug.com/667683.
220 TEST_F(HttpNetworkTransactionSSLTest, TokenBindingAsync) { 182 TEST_F(HttpNetworkTransactionSSLTest, TokenBindingAsync) {
221 ssl_config_service_ = new TokenBindingSSLConfigService;
222 session_params_.ssl_config_service = ssl_config_service_.get();
223
224 // Create a separate thread for ChannelIDService 183 // Create a separate thread for ChannelIDService
225 // so that asynchronous Channel ID creation can be delayed. 184 // so that asynchronous Channel ID creation can be delayed.
226 base::Thread channel_id_thread("ThreadForChannelIDService"); 185 base::Thread channel_id_thread("ThreadForChannelIDService");
227 channel_id_thread.Start(); 186 channel_id_thread.Start();
228 scoped_refptr<base::DeferredSequencedTaskRunner> channel_id_runner = 187 scoped_refptr<base::DeferredSequencedTaskRunner> channel_id_runner =
229 new base::DeferredSequencedTaskRunner(channel_id_thread.task_runner()); 188 new base::DeferredSequencedTaskRunner(channel_id_thread.task_runner());
230 ChannelIDService channel_id_service(new DefaultChannelIDStore(nullptr), 189 ChannelIDService channel_id_service(new DefaultChannelIDStore(nullptr),
231 channel_id_runner); 190 channel_id_runner);
232 session_params_.channel_id_service = &channel_id_service; 191 session_params_.channel_id_service = &channel_id_service;
233 192
(...skipping 24 matching lines...) Expand all
258 // When ChannelIdService calls back to HttpNetworkSession, 217 // When ChannelIdService calls back to HttpNetworkSession,
259 // SpdyHttpStream should not crash. 218 // SpdyHttpStream should not crash.
260 channel_id_runner->Start(); 219 channel_id_runner->Start();
261 220
262 rv = callback.WaitForResult(); 221 rv = callback.WaitForResult();
263 EXPECT_THAT(rv, IsError(ERR_CONNECTION_CLOSED)); 222 EXPECT_THAT(rv, IsError(ERR_CONNECTION_CLOSED));
264 } 223 }
265 #endif // !defined(OS_IOS) 224 #endif // !defined(OS_IOS)
266 225
267 } // namespace net 226 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698