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

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

Issue 3056040: Revert 54405 - Fix late binding induced mismatch of Socket and AuthController... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 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 | Annotate | Revision Log
« no previous file with comments | « net/http/http_proxy_client_socket_pool.cc ('k') | net/socket/client_socket_handle.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:mergeinfo
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/http/http_proxy_client_socket_pool.h" 5 #include "net/http/http_proxy_client_socket_pool.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/string_util.h"
10 #include "net/base/mock_host_resolver.h"
11 #include "net/base/net_errors.h" 9 #include "net/base/net_errors.h"
12 #include "net/base/ssl_config_service_defaults.h"
13 #include "net/base/test_completion_callback.h" 10 #include "net/base/test_completion_callback.h"
14 #include "net/http/http_auth_handler_factory.h"
15 #include "net/http/http_network_session.h"
16 #include "net/http/http_proxy_client_socket.h" 11 #include "net/http/http_proxy_client_socket.h"
17 #include "net/proxy/proxy_service.h"
18 #include "net/socket/client_socket_handle.h" 12 #include "net/socket/client_socket_handle.h"
19 #include "net/socket/client_socket_pool_histograms.h" 13 #include "net/socket/client_socket_pool_histograms.h"
20 #include "net/socket/socket_test_util.h" 14 #include "net/socket/socket_test_util.h"
21 #include "net/spdy/spdy_session_pool.h"
22 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
23 16
24 namespace net { 17 namespace net {
25 18
26 namespace { 19 namespace {
27 20
28 const int kMaxSockets = 32; 21 const int kMaxSockets = 32;
29 const int kMaxSocketsPerGroup = 6; 22 const int kMaxSocketsPerGroup = 6;
30 23
31 class HttpProxyClientSocketPoolTest : public ClientSocketPoolTest { 24 class HttpProxyClientSocketPoolTest : public ClientSocketPoolTest {
32 protected: 25 protected:
33 HttpProxyClientSocketPoolTest() 26 HttpProxyClientSocketPoolTest()
34 : ignored_tcp_socket_params_(new TCPSocketParams( 27 : ignored_tcp_socket_params_(new TCPSocketParams(
35 HostPortPair("proxy", 80), MEDIUM, GURL(), false)), 28 HostPortPair("proxy", 80), MEDIUM, GURL(), false)),
36 tcp_histograms_(new ClientSocketPoolHistograms("MockTCP")), 29 tcp_histograms_(new ClientSocketPoolHistograms("MockTCP")),
37 tcp_socket_pool_(new MockTCPClientSocketPool(kMaxSockets, 30 tcp_socket_pool_(new MockTCPClientSocketPool(kMaxSockets,
38 kMaxSocketsPerGroup, tcp_histograms_, &tcp_client_socket_factory_)), 31 kMaxSocketsPerGroup, tcp_histograms_, &tcp_client_socket_factory_)),
39 http_auth_handler_factory_(HttpAuthHandlerFactory::CreateDefault()),
40 session_(new HttpNetworkSession(new MockHostResolver,
41 ProxyService::CreateNull(),
42 &socket_factory_,
43 new SSLConfigServiceDefaults,
44 new SpdySessionPool(),
45 http_auth_handler_factory_.get(),
46 NULL,
47 NULL)),
48 notunnel_socket_params_(new HttpProxySocketParams( 32 notunnel_socket_params_(new HttpProxySocketParams(
49 ignored_tcp_socket_params_, GURL("http://host"), 33 ignored_tcp_socket_params_, GURL("http://host"),
50 HostPortPair("host", 80), NULL, false)), 34 HostPortPair("host", 80), NULL, false)),
35 auth_controller_(new MockHttpAuthController),
51 tunnel_socket_params_(new HttpProxySocketParams( 36 tunnel_socket_params_(new HttpProxySocketParams(
52 ignored_tcp_socket_params_, GURL("http://host"), 37 ignored_tcp_socket_params_, GURL("http://host"),
53 HostPortPair("host", 80), session_, true)), 38 HostPortPair("host", 80), auth_controller_, true)),
54 http_proxy_histograms_( 39 http_proxy_histograms_(
55 new ClientSocketPoolHistograms("HttpProxyUnitTest")), 40 new ClientSocketPoolHistograms("HttpProxyUnitTest")),
56 pool_(new HttpProxyClientSocketPool(kMaxSockets, kMaxSocketsPerGroup, 41 pool_(new HttpProxyClientSocketPool(kMaxSockets, kMaxSocketsPerGroup,
57 http_proxy_histograms_, NULL, tcp_socket_pool_, NULL)) { 42 http_proxy_histograms_, NULL, tcp_socket_pool_, NULL)) {
58 } 43 }
59 44
60 void AddAuthToCache() {
61 const string16 kFoo(ASCIIToUTF16("foo"));
62 const string16 kBar(ASCIIToUTF16("bar"));
63 session_->auth_cache()->Add(GURL("http://proxy/"), "MyRealm1", "Basic",
64 "Basic realm=MyRealm1", kFoo, kBar, "/");
65 }
66
67 int StartRequest(const std::string& group_name, RequestPriority priority) { 45 int StartRequest(const std::string& group_name, RequestPriority priority) {
68 return StartRequestUsingPool( 46 return StartRequestUsingPool(
69 pool_, group_name, priority, tunnel_socket_params_); 47 pool_, group_name, priority, tunnel_socket_params_);
70 } 48 }
71 49
72 scoped_refptr<TCPSocketParams> ignored_tcp_socket_params_; 50 scoped_refptr<TCPSocketParams> ignored_tcp_socket_params_;
73 scoped_refptr<ClientSocketPoolHistograms> tcp_histograms_; 51 scoped_refptr<ClientSocketPoolHistograms> tcp_histograms_;
74 MockClientSocketFactory tcp_client_socket_factory_; 52 MockClientSocketFactory tcp_client_socket_factory_;
75 scoped_refptr<MockTCPClientSocketPool> tcp_socket_pool_; 53 scoped_refptr<MockTCPClientSocketPool> tcp_socket_pool_;
76 54
77 MockClientSocketFactory socket_factory_;
78 scoped_ptr<HttpAuthHandlerFactory> http_auth_handler_factory_;
79 scoped_refptr<HttpNetworkSession> session_;
80 scoped_refptr<HttpProxySocketParams> notunnel_socket_params_; 55 scoped_refptr<HttpProxySocketParams> notunnel_socket_params_;
56 scoped_refptr<MockHttpAuthController> auth_controller_;
81 scoped_refptr<HttpProxySocketParams> tunnel_socket_params_; 57 scoped_refptr<HttpProxySocketParams> tunnel_socket_params_;
82 scoped_refptr<ClientSocketPoolHistograms> http_proxy_histograms_; 58 scoped_refptr<ClientSocketPoolHistograms> http_proxy_histograms_;
83 scoped_refptr<HttpProxyClientSocketPool> pool_; 59 scoped_refptr<HttpProxyClientSocketPool> pool_;
84 }; 60 };
85 61
86 TEST_F(HttpProxyClientSocketPoolTest, NoTunnel) { 62 TEST_F(HttpProxyClientSocketPoolTest, NoTunnel) {
87 StaticSocketDataProvider data; 63 StaticSocketDataProvider data;
88 data.set_connect_data(MockConnect(false, 0)); 64 data.set_connect_data(MockConnect(false, 0));
89 tcp_client_socket_factory_.AddSocketDataProvider(&data); 65 tcp_client_socket_factory_.AddSocketDataProvider(&data);
90 66
91 ClientSocketHandle handle; 67 ClientSocketHandle handle;
92 int rv = handle.Init("a", notunnel_socket_params_, LOW, NULL, pool_, 68 int rv = handle.Init("a", notunnel_socket_params_, LOW, NULL, pool_,
93 BoundNetLog()); 69 BoundNetLog());
94 EXPECT_EQ(OK, rv); 70 EXPECT_EQ(OK, rv);
95 EXPECT_TRUE(handle.is_initialized()); 71 EXPECT_TRUE(handle.is_initialized());
96 EXPECT_TRUE(handle.socket()); 72 EXPECT_TRUE(handle.socket());
97 HttpProxyClientSocket* tunnel_socket = 73 HttpProxyClientSocket* tunnel_socket =
98 static_cast<HttpProxyClientSocket*>(handle.socket()); 74 static_cast<HttpProxyClientSocket*>(handle.socket());
99 EXPECT_TRUE(tunnel_socket->IsConnected()); 75 EXPECT_FALSE(tunnel_socket->NeedsRestartWithAuth());
100 } 76 }
101 77
102 TEST_F(HttpProxyClientSocketPoolTest, NeedAuth) { 78 TEST_F(HttpProxyClientSocketPoolTest, NeedAuth) {
103 MockWrite writes[] = { 79 MockWrite writes[] = {
104 MockWrite("CONNECT host:80 HTTP/1.1\r\n" 80 MockWrite("CONNECT host:80 HTTP/1.1\r\n"
105 "Host: host\r\n" 81 "Host: host\r\n"
106 "Proxy-Connection: keep-alive\r\n\r\n"), 82 "Proxy-Connection: keep-alive\r\n\r\n"),
107 }; 83 };
108 MockRead reads[] = { 84 MockRead reads[] = {
109 // No credentials. 85 // No credentials.
110 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 86 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
111 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 87 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
112 MockRead("Content-Length: 10\r\n\r\n"), 88 MockRead("Content-Length: 10\r\n\r\n"),
113 MockRead("0123456789"), 89 MockRead("0123456789"),
114 }; 90 };
115 StaticSocketDataProvider data(reads, arraysize(reads), writes, 91 StaticSocketDataProvider data(reads, arraysize(reads), writes,
116 arraysize(writes)); 92 arraysize(writes));
117 93
118 tcp_client_socket_factory_.AddSocketDataProvider(&data); 94 tcp_client_socket_factory_.AddSocketDataProvider(&data);
95 MockHttpAuthControllerData auth_data[] = {
96 MockHttpAuthControllerData(""),
97 };
98 auth_controller_->SetMockAuthControllerData(auth_data, arraysize(auth_data));
119 99
120 ClientSocketHandle handle; 100 ClientSocketHandle handle;
121 TestCompletionCallback callback; 101 TestCompletionCallback callback;
122 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_, 102 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_,
123 BoundNetLog()); 103 BoundNetLog());
124 EXPECT_EQ(ERR_IO_PENDING, rv); 104 EXPECT_EQ(ERR_IO_PENDING, rv);
125 EXPECT_FALSE(handle.is_initialized()); 105 EXPECT_FALSE(handle.is_initialized());
126 EXPECT_FALSE(handle.socket()); 106 EXPECT_FALSE(handle.socket());
127 107
128 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult()); 108 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult());
129 EXPECT_TRUE(handle.is_initialized()); 109 EXPECT_TRUE(handle.is_initialized());
130 EXPECT_TRUE(handle.socket()); 110 EXPECT_TRUE(handle.socket());
131 HttpProxyClientSocket* tunnel_socket = 111 HttpProxyClientSocket* tunnel_socket =
132 static_cast<HttpProxyClientSocket*>(handle.socket()); 112 static_cast<HttpProxyClientSocket*>(handle.socket());
133 EXPECT_FALSE(tunnel_socket->IsConnected()); 113 EXPECT_TRUE(tunnel_socket->NeedsRestartWithAuth());
134 } 114 }
135 115
136 TEST_F(HttpProxyClientSocketPoolTest, HaveAuth) { 116 TEST_F(HttpProxyClientSocketPoolTest, HaveAuth) {
137 MockWrite writes[] = { 117 MockWrite writes[] = {
138 MockWrite(false, 118 MockWrite(false,
139 "CONNECT host:80 HTTP/1.1\r\n" 119 "CONNECT host:80 HTTP/1.1\r\n"
140 "Host: host\r\n" 120 "Host: host\r\n"
141 "Proxy-Connection: keep-alive\r\n" 121 "Proxy-Connection: keep-alive\r\n"
142 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 122 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"),
143 }; 123 };
144 MockRead reads[] = { 124 MockRead reads[] = {
145 MockRead(false, "HTTP/1.1 200 Connection Established\r\n\r\n"), 125 MockRead(false, "HTTP/1.1 200 Connection Established\r\n\r\n"),
146 }; 126 };
147 StaticSocketDataProvider data(reads, arraysize(reads), writes, 127 StaticSocketDataProvider data(reads, arraysize(reads), writes,
148 arraysize(writes)); 128 arraysize(writes));
149 data.set_connect_data(MockConnect(false, 0)); 129 data.set_connect_data(MockConnect(false, 0));
150 130
151 tcp_client_socket_factory_.AddSocketDataProvider(&data); 131 tcp_client_socket_factory_.AddSocketDataProvider(&data);
152 AddAuthToCache(); 132 MockHttpAuthControllerData auth_data[] = {
133 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="),
134 };
135 auth_controller_->SetMockAuthControllerData(auth_data, arraysize(auth_data));
153 136
154 ClientSocketHandle handle; 137 ClientSocketHandle handle;
155 TestCompletionCallback callback; 138 TestCompletionCallback callback;
156 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_, 139 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_,
157 BoundNetLog()); 140 BoundNetLog());
158 EXPECT_EQ(OK, rv); 141 EXPECT_EQ(OK, rv);
159 EXPECT_TRUE(handle.is_initialized()); 142 EXPECT_TRUE(handle.is_initialized());
160 EXPECT_TRUE(handle.socket()); 143 EXPECT_TRUE(handle.socket());
161 HttpProxyClientSocket* tunnel_socket = 144 HttpProxyClientSocket* tunnel_socket =
162 static_cast<HttpProxyClientSocket*>(handle.socket()); 145 static_cast<HttpProxyClientSocket*>(handle.socket());
163 EXPECT_TRUE(tunnel_socket->IsConnected()); 146 EXPECT_FALSE(tunnel_socket->NeedsRestartWithAuth());
164 } 147 }
165 148
166 TEST_F(HttpProxyClientSocketPoolTest, AsyncHaveAuth) { 149 TEST_F(HttpProxyClientSocketPoolTest, AsyncHaveAuth) {
167 MockWrite writes[] = { 150 MockWrite writes[] = {
168 MockWrite("CONNECT host:80 HTTP/1.1\r\n" 151 MockWrite("CONNECT host:80 HTTP/1.1\r\n"
169 "Host: host\r\n" 152 "Host: host\r\n"
170 "Proxy-Connection: keep-alive\r\n" 153 "Proxy-Connection: keep-alive\r\n"
171 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 154 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"),
172 }; 155 };
173 MockRead reads[] = { 156 MockRead reads[] = {
174 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 157 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
175 }; 158 };
176 StaticSocketDataProvider data(reads, arraysize(reads), writes, 159 StaticSocketDataProvider data(reads, arraysize(reads), writes,
177 arraysize(writes)); 160 arraysize(writes));
178 161
179 tcp_client_socket_factory_.AddSocketDataProvider(&data); 162 tcp_client_socket_factory_.AddSocketDataProvider(&data);
180 AddAuthToCache(); 163 MockHttpAuthControllerData auth_data[] = {
164 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="),
165 };
166 auth_controller_->SetMockAuthControllerData(auth_data, arraysize(auth_data));
181 167
182 ClientSocketHandle handle; 168 ClientSocketHandle handle;
183 TestCompletionCallback callback; 169 TestCompletionCallback callback;
184 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_, 170 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_,
185 BoundNetLog()); 171 BoundNetLog());
186 EXPECT_EQ(ERR_IO_PENDING, rv); 172 EXPECT_EQ(ERR_IO_PENDING, rv);
187 EXPECT_FALSE(handle.is_initialized()); 173 EXPECT_FALSE(handle.is_initialized());
188 EXPECT_FALSE(handle.socket()); 174 EXPECT_FALSE(handle.socket());
189 175
190 EXPECT_EQ(OK, callback.WaitForResult()); 176 EXPECT_EQ(OK, callback.WaitForResult());
191 EXPECT_TRUE(handle.is_initialized()); 177 EXPECT_TRUE(handle.is_initialized());
192 EXPECT_TRUE(handle.socket()); 178 EXPECT_TRUE(handle.socket());
193 HttpProxyClientSocket* tunnel_socket = 179 HttpProxyClientSocket* tunnel_socket =
194 static_cast<HttpProxyClientSocket*>(handle.socket()); 180 static_cast<HttpProxyClientSocket*>(handle.socket());
195 EXPECT_TRUE(tunnel_socket->IsConnected()); 181 EXPECT_FALSE(tunnel_socket->NeedsRestartWithAuth());
196 } 182 }
197 183
198 TEST_F(HttpProxyClientSocketPoolTest, TCPError) { 184 TEST_F(HttpProxyClientSocketPoolTest, TCPError) {
199 StaticSocketDataProvider data; 185 StaticSocketDataProvider data;
200 data.set_connect_data(MockConnect(true, ERR_CONNECTION_CLOSED)); 186 data.set_connect_data(MockConnect(true, ERR_CONNECTION_CLOSED));
201 187
202 tcp_client_socket_factory_.AddSocketDataProvider(&data); 188 tcp_client_socket_factory_.AddSocketDataProvider(&data);
203 189
204 ClientSocketHandle handle; 190 ClientSocketHandle handle;
205 TestCompletionCallback callback; 191 TestCompletionCallback callback;
206 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_, 192 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_,
207 BoundNetLog()); 193 BoundNetLog());
208 EXPECT_EQ(ERR_IO_PENDING, rv); 194 EXPECT_EQ(ERR_IO_PENDING, rv);
209 EXPECT_FALSE(handle.is_initialized()); 195 EXPECT_FALSE(handle.is_initialized());
210 EXPECT_FALSE(handle.socket()); 196 EXPECT_FALSE(handle.socket());
211 197
212 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); 198 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult());
213 EXPECT_FALSE(handle.is_initialized()); 199 EXPECT_FALSE(handle.is_initialized());
214 EXPECT_FALSE(handle.socket()); 200 EXPECT_FALSE(handle.socket());
215 } 201 }
216 202
217 TEST_F(HttpProxyClientSocketPoolTest, TunnelUnexpectedClose) { 203 TEST_F(HttpProxyClientSocketPoolTest, TunnelUnexpectedClose) {
218 MockWrite writes[] = { 204 MockWrite writes[] = {
219 MockWrite("CONNECT host:80 HTTP/1.1\r\n" 205 MockWrite("CONNECT host:80 HTTP/1.1\r\n"
220 "Host: host\r\n" 206 "Host: host\r\n"
221 "Proxy-Connection: keep-alive\r\n" 207 "Proxy-Connection: keep-alive\r\n"
222 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 208 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"),
223 }; 209 };
224 MockRead reads[] = { 210 MockRead reads[] = {
225 MockRead("HTTP/1.1 200 Conn"), 211 MockRead("HTTP/1.1 200 Conn"),
226 MockRead(true, ERR_CONNECTION_CLOSED), 212 MockRead(true, ERR_CONNECTION_CLOSED),
227 }; 213 };
228 StaticSocketDataProvider data(reads, arraysize(reads), writes, 214 StaticSocketDataProvider data(reads, arraysize(reads), writes,
229 arraysize(writes)); 215 arraysize(writes));
230 216
231 tcp_client_socket_factory_.AddSocketDataProvider(&data); 217 tcp_client_socket_factory_.AddSocketDataProvider(&data);
232 AddAuthToCache(); 218 MockHttpAuthControllerData auth_data[] = {
219 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="),
220 };
221 auth_controller_->SetMockAuthControllerData(auth_data, arraysize(auth_data));
233 222
234 ClientSocketHandle handle; 223 ClientSocketHandle handle;
235 TestCompletionCallback callback; 224 TestCompletionCallback callback;
236 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_, 225 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_,
237 BoundNetLog()); 226 BoundNetLog());
238 EXPECT_EQ(ERR_IO_PENDING, rv); 227 EXPECT_EQ(ERR_IO_PENDING, rv);
239 EXPECT_FALSE(handle.is_initialized()); 228 EXPECT_FALSE(handle.is_initialized());
240 EXPECT_FALSE(handle.socket()); 229 EXPECT_FALSE(handle.socket());
241 230
242 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); 231 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult());
243 EXPECT_FALSE(handle.is_initialized()); 232 EXPECT_FALSE(handle.is_initialized());
244 EXPECT_FALSE(handle.socket()); 233 EXPECT_FALSE(handle.socket());
245 } 234 }
246 235
247 TEST_F(HttpProxyClientSocketPoolTest, TunnelSetupError) { 236 TEST_F(HttpProxyClientSocketPoolTest, TunnelSetupError) {
248 MockWrite writes[] = { 237 MockWrite writes[] = {
249 MockWrite("CONNECT host:80 HTTP/1.1\r\n" 238 MockWrite("CONNECT host:80 HTTP/1.1\r\n"
250 "Host: host\r\n" 239 "Host: host\r\n"
251 "Proxy-Connection: keep-alive\r\n" 240 "Proxy-Connection: keep-alive\r\n"
252 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 241 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"),
253 }; 242 };
254 MockRead reads[] = { 243 MockRead reads[] = {
255 MockRead("HTTP/1.1 304 Not Modified\r\n\r\n"), 244 MockRead("HTTP/1.1 304 Not Modified\r\n\r\n"),
256 }; 245 };
257 StaticSocketDataProvider data(reads, arraysize(reads), writes, 246 StaticSocketDataProvider data(reads, arraysize(reads), writes,
258 arraysize(writes)); 247 arraysize(writes));
259 248
260 tcp_client_socket_factory_.AddSocketDataProvider(&data); 249 tcp_client_socket_factory_.AddSocketDataProvider(&data);
261 AddAuthToCache(); 250 MockHttpAuthControllerData auth_data[] = {
251 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="),
252 };
253 auth_controller_->SetMockAuthControllerData(auth_data, arraysize(auth_data));
262 254
263 ClientSocketHandle handle; 255 ClientSocketHandle handle;
264 TestCompletionCallback callback; 256 TestCompletionCallback callback;
265 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_, 257 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_,
266 BoundNetLog()); 258 BoundNetLog());
267 EXPECT_EQ(ERR_IO_PENDING, rv); 259 EXPECT_EQ(ERR_IO_PENDING, rv);
268 EXPECT_FALSE(handle.is_initialized()); 260 EXPECT_FALSE(handle.is_initialized());
269 EXPECT_FALSE(handle.socket()); 261 EXPECT_FALSE(handle.socket());
270 262
271 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, callback.WaitForResult()); 263 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, callback.WaitForResult());
272 EXPECT_FALSE(handle.is_initialized()); 264 EXPECT_FALSE(handle.is_initialized());
273 EXPECT_FALSE(handle.socket()); 265 EXPECT_FALSE(handle.socket());
274 } 266 }
275 267
276 // It would be nice to also test the timeouts in HttpProxyClientSocketPool. 268 // It would be nice to also test the timeouts in HttpProxyClientSocketPool.
277 269
278 } // namespace 270 } // namespace
279 271
280 } // namespace net 272 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_proxy_client_socket_pool.cc ('k') | net/socket/client_socket_handle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698