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

Side by Side Diff: net/socket/ssl_client_socket_unittest.cc

Issue 4130005: Cleanup style nits in SSLClientSocketTest (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Upload before commit Created 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/socket/ssl_client_socket.h" 5 #include "net/socket/ssl_client_socket.h"
6 6
7 #include "net/base/address_list.h" 7 #include "net/base/address_list.h"
8 #include "net/base/host_resolver.h" 8 #include "net/base/host_resolver.h"
9 #include "net/base/io_buffer.h" 9 #include "net/base/io_buffer.h"
10 #include "net/base/net_log.h" 10 #include "net/base/net_log.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 TestCompletionCallback callback; 59 TestCompletionCallback callback;
60 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); 60 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
61 net::ClientSocket* transport = new net::TCPClientSocket( 61 net::ClientSocket* transport = new net::TCPClientSocket(
62 addr, &log, net::NetLog::Source()); 62 addr, &log, net::NetLog::Source());
63 int rv = transport->Connect(&callback); 63 int rv = transport->Connect(&callback);
64 if (rv == net::ERR_IO_PENDING) 64 if (rv == net::ERR_IO_PENDING)
65 rv = callback.WaitForResult(); 65 rv = callback.WaitForResult();
66 EXPECT_EQ(net::OK, rv); 66 EXPECT_EQ(net::OK, rv);
67 67
68 scoped_ptr<net::SSLClientSocket> sock( 68 scoped_ptr<net::SSLClientSocket> sock(
69 socket_factory_->CreateSSLClientSocket(transport, 69 socket_factory_->CreateSSLClientSocket(
70 test_server.host_port_pair().host(), kDefaultSSLConfig, 70 transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
71 NULL /* ssl_host_info */)); 71 NULL));
72 72
73 EXPECT_FALSE(sock->IsConnected()); 73 EXPECT_FALSE(sock->IsConnected());
74 74
75 rv = sock->Connect(&callback); 75 rv = sock->Connect(&callback);
76 EXPECT_TRUE(net::LogContainsBeginEvent( 76 EXPECT_TRUE(net::LogContainsBeginEvent(
77 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); 77 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
78 if (rv != net::OK) { 78 if (rv == net::ERR_IO_PENDING)
79 ASSERT_EQ(net::ERR_IO_PENDING, rv);
80 EXPECT_FALSE(sock->IsConnected());
81 EXPECT_FALSE(net::LogContainsEndEvent(
82 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
83
84 rv = callback.WaitForResult(); 79 rv = callback.WaitForResult();
85 EXPECT_EQ(net::OK, rv); 80 EXPECT_EQ(net::OK, rv);
86 }
87
88 EXPECT_TRUE(sock->IsConnected()); 81 EXPECT_TRUE(sock->IsConnected());
89 EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1)); 82 EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1));
90 83
91 sock->Disconnect(); 84 sock->Disconnect();
92 EXPECT_FALSE(sock->IsConnected()); 85 EXPECT_FALSE(sock->IsConnected());
93 } 86 }
94 87
95 TEST_F(SSLClientSocketTest, ConnectExpired) { 88 TEST_F(SSLClientSocketTest, ConnectExpired) {
96 net::TestServer::HTTPSOptions https_options( 89 net::TestServer::HTTPSOptions https_options(
97 net::TestServer::HTTPSOptions::CERT_EXPIRED); 90 net::TestServer::HTTPSOptions::CERT_EXPIRED);
98 net::TestServer test_server(https_options, FilePath()); 91 net::TestServer test_server(https_options, FilePath());
99 ASSERT_TRUE(test_server.Start()); 92 ASSERT_TRUE(test_server.Start());
100 93
101 net::AddressList addr; 94 net::AddressList addr;
102 ASSERT_TRUE(test_server.GetAddressList(&addr)); 95 ASSERT_TRUE(test_server.GetAddressList(&addr));
103 96
104 TestCompletionCallback callback; 97 TestCompletionCallback callback;
105 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); 98 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
106 net::ClientSocket* transport = new net::TCPClientSocket( 99 net::ClientSocket* transport = new net::TCPClientSocket(
107 addr, &log, net::NetLog::Source()); 100 addr, &log, net::NetLog::Source());
108 int rv = transport->Connect(&callback); 101 int rv = transport->Connect(&callback);
109 if (rv == net::ERR_IO_PENDING) 102 if (rv == net::ERR_IO_PENDING)
110 rv = callback.WaitForResult(); 103 rv = callback.WaitForResult();
111 EXPECT_EQ(net::OK, rv); 104 EXPECT_EQ(net::OK, rv);
112 105
113 scoped_ptr<net::SSLClientSocket> sock( 106 scoped_ptr<net::SSLClientSocket> sock(
114 socket_factory_->CreateSSLClientSocket(transport, 107 socket_factory_->CreateSSLClientSocket(
115 test_server.host_port_pair().host(), kDefaultSSLConfig, 108 transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
116 NULL /* ssl_host_info */)); 109 NULL));
117 110
118 EXPECT_FALSE(sock->IsConnected()); 111 EXPECT_FALSE(sock->IsConnected());
119 112
120 rv = sock->Connect(&callback); 113 rv = sock->Connect(&callback);
121 EXPECT_TRUE(net::LogContainsBeginEvent( 114 EXPECT_TRUE(net::LogContainsBeginEvent(
122 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); 115 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
123 if (rv != net::OK) { 116 if (rv == net::ERR_IO_PENDING)
124 ASSERT_EQ(net::ERR_IO_PENDING, rv); 117 rv = callback.WaitForResult();
125 EXPECT_FALSE(sock->IsConnected());
126 EXPECT_FALSE(net::LogContainsEndEvent(
127 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
128 118
129 rv = callback.WaitForResult(); 119 EXPECT_EQ(net::ERR_CERT_DATE_INVALID, rv);
130 EXPECT_EQ(net::ERR_CERT_DATE_INVALID, rv);
131 }
132 120
133 // We cannot test sock->IsConnected(), as the NSS implementation disconnects 121 // Rather than testing whether or not the underlying socket is connected,
134 // the socket when it encounters an error, whereas other implementations 122 // test that the handshake has finished. This is because it may be
135 // leave it connected. 123 // desirable to disconnect the socket before showing a user prompt, since
124 // the user may take indefinitely long to respond.
136 EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1)); 125 EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1));
137 } 126 }
138 127
139 TEST_F(SSLClientSocketTest, ConnectMismatched) { 128 TEST_F(SSLClientSocketTest, ConnectMismatched) {
140 net::TestServer::HTTPSOptions https_options( 129 net::TestServer::HTTPSOptions https_options(
141 net::TestServer::HTTPSOptions::CERT_MISMATCHED_NAME); 130 net::TestServer::HTTPSOptions::CERT_MISMATCHED_NAME);
142 net::TestServer test_server(https_options, FilePath()); 131 net::TestServer test_server(https_options, FilePath());
143 ASSERT_TRUE(test_server.Start()); 132 ASSERT_TRUE(test_server.Start());
144 133
145 net::AddressList addr; 134 net::AddressList addr;
146 ASSERT_TRUE(test_server.GetAddressList(&addr)); 135 ASSERT_TRUE(test_server.GetAddressList(&addr));
147 136
148 TestCompletionCallback callback; 137 TestCompletionCallback callback;
149 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); 138 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
150 net::ClientSocket* transport = new net::TCPClientSocket( 139 net::ClientSocket* transport = new net::TCPClientSocket(
151 addr, &log, net::NetLog::Source()); 140 addr, &log, net::NetLog::Source());
152 int rv = transport->Connect(&callback); 141 int rv = transport->Connect(&callback);
153 if (rv == net::ERR_IO_PENDING) 142 if (rv == net::ERR_IO_PENDING)
154 rv = callback.WaitForResult(); 143 rv = callback.WaitForResult();
155 EXPECT_EQ(net::OK, rv); 144 EXPECT_EQ(net::OK, rv);
156 145
157 scoped_ptr<net::SSLClientSocket> sock( 146 scoped_ptr<net::SSLClientSocket> sock(
158 socket_factory_->CreateSSLClientSocket(transport, 147 socket_factory_->CreateSSLClientSocket(
159 test_server.host_port_pair().host(), kDefaultSSLConfig, 148 transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
160 NULL /* ssl_host_info */)); 149 NULL));
161 150
162 EXPECT_FALSE(sock->IsConnected()); 151 EXPECT_FALSE(sock->IsConnected());
163 152
164 rv = sock->Connect(&callback); 153 rv = sock->Connect(&callback);
165 154
166 EXPECT_TRUE(net::LogContainsBeginEvent( 155 EXPECT_TRUE(net::LogContainsBeginEvent(
167 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); 156 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
168 if (rv != net::ERR_CERT_COMMON_NAME_INVALID) { 157 if (rv == net::ERR_IO_PENDING)
169 ASSERT_EQ(net::ERR_IO_PENDING, rv); 158 rv = callback.WaitForResult();
170 EXPECT_FALSE(sock->IsConnected());
171 EXPECT_FALSE(net::LogContainsEndEvent(
172 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
173 159
174 rv = callback.WaitForResult(); 160 EXPECT_EQ(net::ERR_CERT_COMMON_NAME_INVALID, rv);
175 EXPECT_EQ(net::ERR_CERT_COMMON_NAME_INVALID, rv);
176 }
177 161
178 // We cannot test sock->IsConnected(), as the NSS implementation disconnects 162 // Rather than testing whether or not the underlying socket is connected,
179 // the socket when it encounters an error, whereas other implementations 163 // test that the handshake has finished. This is because it may be
180 // leave it connected. 164 // desirable to disconnect the socket before showing a user prompt, since
165 // the user may take indefinitely long to respond.
181 EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1)); 166 EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1));
182 } 167 }
183 168
184 // Attempt to connect to a page which requests a client certificate. It should 169 // Attempt to connect to a page which requests a client certificate. It should
185 // return an error code on connect. 170 // return an error code on connect.
186 // Flaky: http://crbug.com/54445 171 // Flaky: http://crbug.com/54445
187 TEST_F(SSLClientSocketTest, FLAKY_ConnectClientAuthCertRequested) { 172 TEST_F(SSLClientSocketTest, FLAKY_ConnectClientAuthCertRequested) {
188 net::TestServer::HTTPSOptions https_options; 173 net::TestServer::HTTPSOptions https_options;
189 https_options.request_client_certificate = true; 174 https_options.request_client_certificate = true;
190 net::TestServer test_server(https_options, FilePath()); 175 net::TestServer test_server(https_options, FilePath());
191 ASSERT_TRUE(test_server.Start()); 176 ASSERT_TRUE(test_server.Start());
192 177
193 net::AddressList addr; 178 net::AddressList addr;
194 ASSERT_TRUE(test_server.GetAddressList(&addr)); 179 ASSERT_TRUE(test_server.GetAddressList(&addr));
195 180
196 TestCompletionCallback callback; 181 TestCompletionCallback callback;
197 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); 182 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
198 net::ClientSocket* transport = new net::TCPClientSocket( 183 net::ClientSocket* transport = new net::TCPClientSocket(
199 addr, &log, net::NetLog::Source()); 184 addr, &log, net::NetLog::Source());
200 int rv = transport->Connect(&callback); 185 int rv = transport->Connect(&callback);
201 if (rv == net::ERR_IO_PENDING) 186 if (rv == net::ERR_IO_PENDING)
202 rv = callback.WaitForResult(); 187 rv = callback.WaitForResult();
203 EXPECT_EQ(net::OK, rv); 188 EXPECT_EQ(net::OK, rv);
204 189
205 scoped_ptr<net::SSLClientSocket> sock( 190 scoped_ptr<net::SSLClientSocket> sock(
206 socket_factory_->CreateSSLClientSocket(transport, 191 socket_factory_->CreateSSLClientSocket(
207 test_server.host_port_pair().host(), kDefaultSSLConfig, 192 transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
208 NULL /* ssl_host_info */)); 193 NULL));
209 194
210 EXPECT_FALSE(sock->IsConnected()); 195 EXPECT_FALSE(sock->IsConnected());
211 196
212 rv = sock->Connect(&callback); 197 rv = sock->Connect(&callback);
213 EXPECT_TRUE(net::LogContainsBeginEvent( 198 EXPECT_TRUE(net::LogContainsBeginEvent(
214 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); 199 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
215 if (rv != net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { 200 if (rv == net::ERR_IO_PENDING)
216 ASSERT_EQ(net::ERR_IO_PENDING, rv); 201 rv = callback.WaitForResult();
217 EXPECT_FALSE(sock->IsConnected());
218 EXPECT_FALSE(net::LogContainsEndEvent(
219 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
220 202
221 rv = callback.WaitForResult(); 203 EXPECT_EQ(net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED, rv);
222 EXPECT_EQ(net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED, rv); 204 EXPECT_FALSE(sock->IsConnected());
223 }
224
225 // We cannot test sock->IsConnected(), as the NSS implementation disconnects
226 // the socket when it encounters an error, whereas other implementations
227 // leave it connected.
228 EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1));
229 } 205 }
230 206
231 // Connect to a server requesting optional client authentication. Send it a 207 // Connect to a server requesting optional client authentication. Send it a
232 // null certificate. It should allow the connection. 208 // null certificate. It should allow the connection.
233 // 209 //
234 // TODO(davidben): Also test providing an actual certificate. 210 // TODO(davidben): Also test providing an actual certificate.
235 TEST_F(SSLClientSocketTest, ConnectClientAuthSendNullCert) { 211 TEST_F(SSLClientSocketTest, ConnectClientAuthSendNullCert) {
236 net::TestServer::HTTPSOptions https_options; 212 net::TestServer::HTTPSOptions https_options;
237 https_options.request_client_certificate = true; 213 https_options.request_client_certificate = true;
238 net::TestServer test_server(https_options, FilePath()); 214 net::TestServer test_server(https_options, FilePath());
239 ASSERT_TRUE(test_server.Start()); 215 ASSERT_TRUE(test_server.Start());
240 216
241 net::AddressList addr; 217 net::AddressList addr;
242 ASSERT_TRUE(test_server.GetAddressList(&addr)); 218 ASSERT_TRUE(test_server.GetAddressList(&addr));
243 219
244 TestCompletionCallback callback; 220 TestCompletionCallback callback;
245 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); 221 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
246 net::ClientSocket* transport = new net::TCPClientSocket( 222 net::ClientSocket* transport = new net::TCPClientSocket(
247 addr, &log, net::NetLog::Source()); 223 addr, &log, net::NetLog::Source());
248 int rv = transport->Connect(&callback); 224 int rv = transport->Connect(&callback);
249 if (rv == net::ERR_IO_PENDING) 225 if (rv == net::ERR_IO_PENDING)
250 rv = callback.WaitForResult(); 226 rv = callback.WaitForResult();
251 EXPECT_EQ(net::OK, rv); 227 EXPECT_EQ(net::OK, rv);
252 228
253 net::SSLConfig ssl_config = kDefaultSSLConfig; 229 net::SSLConfig ssl_config = kDefaultSSLConfig;
254 ssl_config.send_client_cert = true; 230 ssl_config.send_client_cert = true;
255 ssl_config.client_cert = NULL; 231 ssl_config.client_cert = NULL;
256 232
257 scoped_ptr<net::SSLClientSocket> sock( 233 scoped_ptr<net::SSLClientSocket> sock(
258 socket_factory_->CreateSSLClientSocket(transport, 234 socket_factory_->CreateSSLClientSocket(
259 test_server.host_port_pair().host(), ssl_config, 235 transport, test_server.host_port_pair().host(), ssl_config,
260 NULL /* ssl_host_info */)); 236 NULL));
261 237
262 EXPECT_FALSE(sock->IsConnected()); 238 EXPECT_FALSE(sock->IsConnected());
263 239
264 // Our test server accepts certificate-less connections. 240 // Our test server accepts certificate-less connections.
265 // TODO(davidben): Add a test which requires them and verify the error. 241 // TODO(davidben): Add a test which requires them and verify the error.
266 rv = sock->Connect(&callback); 242 rv = sock->Connect(&callback);
267 EXPECT_TRUE(net::LogContainsBeginEvent( 243 EXPECT_TRUE(net::LogContainsBeginEvent(
268 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); 244 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
269 if (rv != net::OK) { 245 if (rv == net::ERR_IO_PENDING)
270 ASSERT_EQ(net::ERR_IO_PENDING, rv); 246 rv = callback.WaitForResult();
271 EXPECT_FALSE(sock->IsConnected());
272 EXPECT_FALSE(net::LogContainsEndEvent(
273 log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
274 247
275 rv = callback.WaitForResult(); 248 EXPECT_EQ(net::OK, rv);
276 EXPECT_EQ(net::OK, rv);
277 }
278
279 EXPECT_TRUE(sock->IsConnected()); 249 EXPECT_TRUE(sock->IsConnected());
280 EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1)); 250 EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1));
281 251
282 sock->Disconnect(); 252 sock->Disconnect();
283 EXPECT_FALSE(sock->IsConnected()); 253 EXPECT_FALSE(sock->IsConnected());
284 } 254 }
285 255
286 // TODO(wtc): Add unit tests for IsConnectedAndIdle: 256 // TODO(wtc): Add unit tests for IsConnectedAndIdle:
287 // - Server closes an SSL connection (with a close_notify alert message). 257 // - Server closes an SSL connection (with a close_notify alert message).
288 // - Server closes the underlying TCP connection directly. 258 // - Server closes the underlying TCP connection directly.
289 // - Server sends data unexpectedly. 259 // - Server sends data unexpectedly.
290 260
291 TEST_F(SSLClientSocketTest, Read) { 261 TEST_F(SSLClientSocketTest, Read) {
292 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); 262 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath());
293 ASSERT_TRUE(test_server.Start()); 263 ASSERT_TRUE(test_server.Start());
294 264
295 net::AddressList addr; 265 net::AddressList addr;
296 ASSERT_TRUE(test_server.GetAddressList(&addr)); 266 ASSERT_TRUE(test_server.GetAddressList(&addr));
297 267
298 TestCompletionCallback callback; 268 TestCompletionCallback callback;
299 net::ClientSocket* transport = new net::TCPClientSocket( 269 net::ClientSocket* transport = new net::TCPClientSocket(
300 addr, NULL, net::NetLog::Source()); 270 addr, NULL, net::NetLog::Source());
301 int rv = transport->Connect(&callback); 271 int rv = transport->Connect(&callback);
302 if (rv == net::ERR_IO_PENDING) 272 if (rv == net::ERR_IO_PENDING)
303 rv = callback.WaitForResult(); 273 rv = callback.WaitForResult();
304 EXPECT_EQ(net::OK, rv); 274 EXPECT_EQ(net::OK, rv);
305 275
306 scoped_ptr<net::SSLClientSocket> sock( 276 scoped_ptr<net::SSLClientSocket> sock(
307 socket_factory_->CreateSSLClientSocket( 277 socket_factory_->CreateSSLClientSocket(
308 transport, 278 transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
309 test_server.host_port_pair().host(), 279 NULL));
310 kDefaultSSLConfig,
311 NULL /* ssl_host_info */));
312 280
313 rv = sock->Connect(&callback); 281 rv = sock->Connect(&callback);
314 if (rv != net::OK) { 282 if (rv == net::ERR_IO_PENDING)
315 ASSERT_EQ(net::ERR_IO_PENDING, rv);
316
317 rv = callback.WaitForResult(); 283 rv = callback.WaitForResult();
318 EXPECT_EQ(net::OK, rv); 284 EXPECT_EQ(net::OK, rv);
319 }
320 EXPECT_TRUE(sock->IsConnected()); 285 EXPECT_TRUE(sock->IsConnected());
321 286
322 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 287 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
323 scoped_refptr<net::IOBuffer> request_buffer( 288 scoped_refptr<net::IOBuffer> request_buffer(
324 new net::IOBuffer(arraysize(request_text) - 1)); 289 new net::IOBuffer(arraysize(request_text) - 1));
325 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); 290 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1);
326 291
327 rv = sock->Write(request_buffer, arraysize(request_text) - 1, &callback); 292 rv = sock->Write(request_buffer, arraysize(request_text) - 1, &callback);
328 EXPECT_TRUE(rv >= 0 || rv == net::ERR_IO_PENDING); 293 EXPECT_TRUE(rv >= 0 || rv == net::ERR_IO_PENDING);
329 294
(...skipping 29 matching lines...) Expand all
359 324
360 net::ClientSocket* transport = new net::TCPClientSocket( 325 net::ClientSocket* transport = new net::TCPClientSocket(
361 addr, NULL, net::NetLog::Source()); 326 addr, NULL, net::NetLog::Source());
362 int rv = transport->Connect(&callback); 327 int rv = transport->Connect(&callback);
363 if (rv == net::ERR_IO_PENDING) 328 if (rv == net::ERR_IO_PENDING)
364 rv = callback.WaitForResult(); 329 rv = callback.WaitForResult();
365 EXPECT_EQ(net::OK, rv); 330 EXPECT_EQ(net::OK, rv);
366 331
367 scoped_ptr<net::SSLClientSocket> sock( 332 scoped_ptr<net::SSLClientSocket> sock(
368 socket_factory_->CreateSSLClientSocket( 333 socket_factory_->CreateSSLClientSocket(
369 transport, 334 transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
370 test_server.host_port_pair().host(), 335 NULL));
371 kDefaultSSLConfig,
372 NULL /* ssl_host_info */));
373 336
374 rv = sock->Connect(&callback); 337 rv = sock->Connect(&callback);
375 if (rv != net::OK) { 338 if (rv == net::ERR_IO_PENDING)
376 ASSERT_EQ(net::ERR_IO_PENDING, rv);
377
378 rv = callback.WaitForResult(); 339 rv = callback.WaitForResult();
379 EXPECT_EQ(net::OK, rv); 340 EXPECT_EQ(net::OK, rv);
380 }
381 EXPECT_TRUE(sock->IsConnected()); 341 EXPECT_TRUE(sock->IsConnected());
382 342
383 // Issue a "hanging" Read first. 343 // Issue a "hanging" Read first.
384 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(4096)); 344 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(4096));
385 rv = sock->Read(buf, 4096, &callback); 345 rv = sock->Read(buf, 4096, &callback);
386 // We haven't written the request, so there should be no response yet. 346 // We haven't written the request, so there should be no response yet.
387 ASSERT_EQ(net::ERR_IO_PENDING, rv); 347 ASSERT_EQ(net::ERR_IO_PENDING, rv);
388 348
389 // Write the request. 349 // Write the request.
390 // The request is padded with a User-Agent header to a size that causes the 350 // The request is padded with a User-Agent header to a size that causes the
(...skipping 27 matching lines...) Expand all
418 378
419 TestCompletionCallback callback; 379 TestCompletionCallback callback;
420 net::ClientSocket* transport = new net::TCPClientSocket( 380 net::ClientSocket* transport = new net::TCPClientSocket(
421 addr, NULL, net::NetLog::Source()); 381 addr, NULL, net::NetLog::Source());
422 int rv = transport->Connect(&callback); 382 int rv = transport->Connect(&callback);
423 if (rv == net::ERR_IO_PENDING) 383 if (rv == net::ERR_IO_PENDING)
424 rv = callback.WaitForResult(); 384 rv = callback.WaitForResult();
425 EXPECT_EQ(net::OK, rv); 385 EXPECT_EQ(net::OK, rv);
426 386
427 scoped_ptr<net::SSLClientSocket> sock( 387 scoped_ptr<net::SSLClientSocket> sock(
428 socket_factory_->CreateSSLClientSocket(transport, 388 socket_factory_->CreateSSLClientSocket(
429 test_server.host_port_pair().host(), kDefaultSSLConfig, 389 transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
430 NULL /* ssl_host_info */)); 390 NULL));
431 391
432 rv = sock->Connect(&callback); 392 rv = sock->Connect(&callback);
433 if (rv != net::OK) { 393 if (rv == net::ERR_IO_PENDING)
434 ASSERT_EQ(net::ERR_IO_PENDING, rv);
435
436 rv = callback.WaitForResult(); 394 rv = callback.WaitForResult();
437 EXPECT_EQ(net::OK, rv); 395 EXPECT_EQ(net::OK, rv);
438 }
439 396
440 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 397 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
441 scoped_refptr<net::IOBuffer> request_buffer( 398 scoped_refptr<net::IOBuffer> request_buffer(
442 new net::IOBuffer(arraysize(request_text) - 1)); 399 new net::IOBuffer(arraysize(request_text) - 1));
443 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); 400 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1);
444 401
445 rv = sock->Write(request_buffer, arraysize(request_text) - 1, &callback); 402 rv = sock->Write(request_buffer, arraysize(request_text) - 1, &callback);
446 EXPECT_TRUE(rv >= 0 || rv == net::ERR_IO_PENDING); 403 EXPECT_TRUE(rv >= 0 || rv == net::ERR_IO_PENDING);
447 404
448 if (rv == net::ERR_IO_PENDING) 405 if (rv == net::ERR_IO_PENDING)
(...skipping 23 matching lines...) Expand all
472 429
473 TestCompletionCallback callback; 430 TestCompletionCallback callback;
474 net::ClientSocket* transport = new net::TCPClientSocket( 431 net::ClientSocket* transport = new net::TCPClientSocket(
475 addr, NULL, net::NetLog::Source()); 432 addr, NULL, net::NetLog::Source());
476 int rv = transport->Connect(&callback); 433 int rv = transport->Connect(&callback);
477 if (rv == net::ERR_IO_PENDING) 434 if (rv == net::ERR_IO_PENDING)
478 rv = callback.WaitForResult(); 435 rv = callback.WaitForResult();
479 EXPECT_EQ(net::OK, rv); 436 EXPECT_EQ(net::OK, rv);
480 437
481 scoped_ptr<net::SSLClientSocket> sock( 438 scoped_ptr<net::SSLClientSocket> sock(
482 socket_factory_->CreateSSLClientSocket(transport, 439 socket_factory_->CreateSSLClientSocket(
483 test_server.host_port_pair().host(), kDefaultSSLConfig, 440 transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
484 NULL /* ssl_host_info */)); 441 NULL));
485 442
486 rv = sock->Connect(&callback); 443 rv = sock->Connect(&callback);
487 if (rv != net::OK) { 444 if (rv == net::ERR_IO_PENDING)
488 ASSERT_EQ(net::ERR_IO_PENDING, rv);
489
490 rv = callback.WaitForResult(); 445 rv = callback.WaitForResult();
491 EXPECT_EQ(net::OK, rv); 446 EXPECT_EQ(net::OK, rv);
492 }
493 447
494 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 448 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
495 scoped_refptr<net::IOBuffer> request_buffer( 449 scoped_refptr<net::IOBuffer> request_buffer(
496 new net::IOBuffer(arraysize(request_text) - 1)); 450 new net::IOBuffer(arraysize(request_text) - 1));
497 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); 451 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1);
498 452
499 rv = sock->Write(request_buffer, arraysize(request_text) - 1, &callback); 453 rv = sock->Write(request_buffer, arraysize(request_text) - 1, &callback);
500 EXPECT_TRUE(rv >= 0 || rv == net::ERR_IO_PENDING); 454 EXPECT_TRUE(rv >= 0 || rv == net::ERR_IO_PENDING);
501 455
502 if (rv == net::ERR_IO_PENDING) 456 if (rv == net::ERR_IO_PENDING)
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 net::ClientSocket* transport = 502 net::ClientSocket* transport =
549 new net::MockTCPClientSocket(addr, NULL, &data); 503 new net::MockTCPClientSocket(addr, NULL, &data);
550 int rv = transport->Connect(&callback); 504 int rv = transport->Connect(&callback);
551 if (rv == net::ERR_IO_PENDING) 505 if (rv == net::ERR_IO_PENDING)
552 rv = callback.WaitForResult(); 506 rv = callback.WaitForResult();
553 EXPECT_EQ(net::OK, rv); 507 EXPECT_EQ(net::OK, rv);
554 508
555 scoped_ptr<net::SSLClientSocket> sock( 509 scoped_ptr<net::SSLClientSocket> sock(
556 socket_factory_->CreateSSLClientSocket( 510 socket_factory_->CreateSSLClientSocket(
557 transport, test_server.host_port_pair().host(), kDefaultSSLConfig, 511 transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
558 NULL /* ssl_host_info */)); 512 NULL));
559 513
560 rv = sock->Connect(&callback); 514 rv = sock->Connect(&callback);
561 EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, rv); 515 EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, rv);
562 } 516 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698