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

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

Issue 3039028: Make HttpAuthController not reference counted. (Closed)
Patch Set: Created 10 years, 5 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 | « net/http/http_proxy_client_socket_pool.cc ('k') | net/socket/socket_test_util.h » ('j') | 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/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 "net/base/net_errors.h" 9 #include "net/base/net_errors.h"
10 #include "net/base/test_completion_callback.h" 10 #include "net/base/test_completion_callback.h"
(...skipping 14 matching lines...) Expand all
25 protected: 25 protected:
26 HttpProxyClientSocketPoolTest() 26 HttpProxyClientSocketPoolTest()
27 : ignored_tcp_socket_params_(new TCPSocketParams( 27 : ignored_tcp_socket_params_(new TCPSocketParams(
28 HostPortPair("proxy", 80), MEDIUM, GURL(), false)), 28 HostPortPair("proxy", 80), MEDIUM, GURL(), false)),
29 tcp_histograms_(new ClientSocketPoolHistograms("MockTCP")), 29 tcp_histograms_(new ClientSocketPoolHistograms("MockTCP")),
30 tcp_socket_pool_(new MockTCPClientSocketPool(kMaxSockets, 30 tcp_socket_pool_(new MockTCPClientSocketPool(kMaxSockets,
31 kMaxSocketsPerGroup, tcp_histograms_, &tcp_client_socket_factory_)), 31 kMaxSocketsPerGroup, tcp_histograms_, &tcp_client_socket_factory_)),
32 notunnel_socket_params_(new HttpProxySocketParams( 32 notunnel_socket_params_(new HttpProxySocketParams(
33 ignored_tcp_socket_params_, GURL("http://host"), 33 ignored_tcp_socket_params_, GURL("http://host"),
34 HostPortPair("host", 80), NULL, false)), 34 HostPortPair("host", 80), NULL, false)),
35 auth_controller_(new MockHttpAuthController),
36 tunnel_socket_params_(new HttpProxySocketParams( 35 tunnel_socket_params_(new HttpProxySocketParams(
37 ignored_tcp_socket_params_, GURL("http://host"), 36 ignored_tcp_socket_params_, GURL("http://host"),
38 HostPortPair("host", 80), auth_controller_, true)), 37 HostPortPair("host", 80), NULL, true)),
39 http_proxy_histograms_( 38 http_proxy_histograms_(
40 new ClientSocketPoolHistograms("HttpProxyUnitTest")), 39 new ClientSocketPoolHistograms("HttpProxyUnitTest")),
41 pool_(new HttpProxyClientSocketPool(kMaxSockets, kMaxSocketsPerGroup, 40 pool_(new HttpProxyClientSocketPool(kMaxSockets, kMaxSocketsPerGroup,
42 http_proxy_histograms_, NULL, tcp_socket_pool_, NULL)) { 41 http_proxy_histograms_, NULL, tcp_socket_pool_, NULL)) {
43 } 42 }
44 43
45 int StartRequest(const std::string& group_name, RequestPriority priority) { 44 int StartRequest(const std::string& group_name, RequestPriority priority) {
46 return StartRequestUsingPool( 45 return StartRequestUsingPool(
47 pool_, group_name, priority, tunnel_socket_params_); 46 pool_, group_name, priority, tunnel_socket_params_);
48 } 47 }
49 48
49 void SetAuthControllerData(struct MockHttpAuthControllerData* data,
50 size_t count) {
51 MockHttpAuthController* auth_controller = new MockHttpAuthController;
52 auth_controller->SetMockAuthControllerData(data, count);
53 tunnel_socket_params_->set_auth_controller(auth_controller);
54 }
55
50 scoped_refptr<TCPSocketParams> ignored_tcp_socket_params_; 56 scoped_refptr<TCPSocketParams> ignored_tcp_socket_params_;
51 scoped_refptr<ClientSocketPoolHistograms> tcp_histograms_; 57 scoped_refptr<ClientSocketPoolHistograms> tcp_histograms_;
52 MockClientSocketFactory tcp_client_socket_factory_; 58 MockClientSocketFactory tcp_client_socket_factory_;
53 scoped_refptr<MockTCPClientSocketPool> tcp_socket_pool_; 59 scoped_refptr<MockTCPClientSocketPool> tcp_socket_pool_;
54 60
55 scoped_refptr<HttpProxySocketParams> notunnel_socket_params_; 61 scoped_refptr<HttpProxySocketParams> notunnel_socket_params_;
56 scoped_refptr<MockHttpAuthController> auth_controller_;
57 scoped_refptr<HttpProxySocketParams> tunnel_socket_params_; 62 scoped_refptr<HttpProxySocketParams> tunnel_socket_params_;
58 scoped_refptr<ClientSocketPoolHistograms> http_proxy_histograms_; 63 scoped_refptr<ClientSocketPoolHistograms> http_proxy_histograms_;
59 scoped_refptr<HttpProxyClientSocketPool> pool_; 64 scoped_refptr<HttpProxyClientSocketPool> pool_;
60 }; 65 };
61 66
62 TEST_F(HttpProxyClientSocketPoolTest, NoTunnel) { 67 TEST_F(HttpProxyClientSocketPoolTest, NoTunnel) {
63 StaticSocketDataProvider data; 68 StaticSocketDataProvider data;
64 data.set_connect_data(MockConnect(false, 0)); 69 data.set_connect_data(MockConnect(false, 0));
65 tcp_client_socket_factory_.AddSocketDataProvider(&data); 70 tcp_client_socket_factory_.AddSocketDataProvider(&data);
66 71
(...skipping 19 matching lines...) Expand all
86 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 91 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
87 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 92 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
88 MockRead("Content-Length: 10\r\n\r\n"), 93 MockRead("Content-Length: 10\r\n\r\n"),
89 MockRead("0123456789"), 94 MockRead("0123456789"),
90 }; 95 };
91 StaticSocketDataProvider data(reads, arraysize(reads), writes, 96 StaticSocketDataProvider data(reads, arraysize(reads), writes,
92 arraysize(writes)); 97 arraysize(writes));
93 98
94 tcp_client_socket_factory_.AddSocketDataProvider(&data); 99 tcp_client_socket_factory_.AddSocketDataProvider(&data);
95 MockHttpAuthControllerData auth_data[] = { 100 MockHttpAuthControllerData auth_data[] = {
96 MockHttpAuthControllerData(""), 101 MockHttpAuthControllerData("", "", ""),
97 }; 102 };
98 auth_controller_->SetMockAuthControllerData(auth_data, arraysize(auth_data)); 103 SetAuthControllerData(auth_data, arraysize(auth_data));
99 104
100 ClientSocketHandle handle; 105 ClientSocketHandle handle;
101 TestCompletionCallback callback; 106 TestCompletionCallback callback;
102 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_, 107 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_,
103 BoundNetLog()); 108 BoundNetLog());
104 EXPECT_EQ(ERR_IO_PENDING, rv); 109 EXPECT_EQ(ERR_IO_PENDING, rv);
105 EXPECT_FALSE(handle.is_initialized()); 110 EXPECT_FALSE(handle.is_initialized());
106 EXPECT_FALSE(handle.socket()); 111 EXPECT_FALSE(handle.socket());
107 112
108 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult()); 113 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult());
(...skipping 14 matching lines...) Expand all
123 }; 128 };
124 MockRead reads[] = { 129 MockRead reads[] = {
125 MockRead(false, "HTTP/1.1 200 Connection Established\r\n\r\n"), 130 MockRead(false, "HTTP/1.1 200 Connection Established\r\n\r\n"),
126 }; 131 };
127 StaticSocketDataProvider data(reads, arraysize(reads), writes, 132 StaticSocketDataProvider data(reads, arraysize(reads), writes,
128 arraysize(writes)); 133 arraysize(writes));
129 data.set_connect_data(MockConnect(false, 0)); 134 data.set_connect_data(MockConnect(false, 0));
130 135
131 tcp_client_socket_factory_.AddSocketDataProvider(&data); 136 tcp_client_socket_factory_.AddSocketDataProvider(&data);
132 MockHttpAuthControllerData auth_data[] = { 137 MockHttpAuthControllerData auth_data[] = {
133 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="), 138 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg==", "",
139 ""),
134 }; 140 };
135 auth_controller_->SetMockAuthControllerData(auth_data, arraysize(auth_data)); 141 SetAuthControllerData(auth_data, arraysize(auth_data));
136 142
137 ClientSocketHandle handle; 143 ClientSocketHandle handle;
138 TestCompletionCallback callback; 144 TestCompletionCallback callback;
139 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_, 145 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_,
140 BoundNetLog()); 146 BoundNetLog());
141 EXPECT_EQ(OK, rv); 147 EXPECT_EQ(OK, rv);
142 EXPECT_TRUE(handle.is_initialized()); 148 EXPECT_TRUE(handle.is_initialized());
143 EXPECT_TRUE(handle.socket()); 149 EXPECT_TRUE(handle.socket());
144 HttpProxyClientSocket* tunnel_socket = 150 HttpProxyClientSocket* tunnel_socket =
145 static_cast<HttpProxyClientSocket*>(handle.socket()); 151 static_cast<HttpProxyClientSocket*>(handle.socket());
146 EXPECT_FALSE(tunnel_socket->NeedsRestartWithAuth()); 152 EXPECT_FALSE(tunnel_socket->NeedsRestartWithAuth());
147 } 153 }
148 154
149 TEST_F(HttpProxyClientSocketPoolTest, AsyncHaveAuth) { 155 TEST_F(HttpProxyClientSocketPoolTest, AsyncHaveAuth) {
150 MockWrite writes[] = { 156 MockWrite writes[] = {
151 MockWrite("CONNECT host:80 HTTP/1.1\r\n" 157 MockWrite("CONNECT host:80 HTTP/1.1\r\n"
152 "Host: host\r\n" 158 "Host: host\r\n"
153 "Proxy-Connection: keep-alive\r\n" 159 "Proxy-Connection: keep-alive\r\n"
154 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"), 160 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"),
155 }; 161 };
156 MockRead reads[] = { 162 MockRead reads[] = {
157 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 163 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
158 }; 164 };
159 StaticSocketDataProvider data(reads, arraysize(reads), writes, 165 StaticSocketDataProvider data(reads, arraysize(reads), writes,
160 arraysize(writes)); 166 arraysize(writes));
161 167
162 tcp_client_socket_factory_.AddSocketDataProvider(&data); 168 tcp_client_socket_factory_.AddSocketDataProvider(&data);
163 MockHttpAuthControllerData auth_data[] = { 169 MockHttpAuthControllerData auth_data[] = {
164 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="), 170 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg==", "",
171 ""),
165 }; 172 };
166 auth_controller_->SetMockAuthControllerData(auth_data, arraysize(auth_data)); 173 SetAuthControllerData(auth_data, arraysize(auth_data));
167 174
168 ClientSocketHandle handle; 175 ClientSocketHandle handle;
169 TestCompletionCallback callback; 176 TestCompletionCallback callback;
170 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_, 177 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_,
171 BoundNetLog()); 178 BoundNetLog());
172 EXPECT_EQ(ERR_IO_PENDING, rv); 179 EXPECT_EQ(ERR_IO_PENDING, rv);
173 EXPECT_FALSE(handle.is_initialized()); 180 EXPECT_FALSE(handle.is_initialized());
174 EXPECT_FALSE(handle.socket()); 181 EXPECT_FALSE(handle.socket());
175 182
176 EXPECT_EQ(OK, callback.WaitForResult()); 183 EXPECT_EQ(OK, callback.WaitForResult());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 }; 216 };
210 MockRead reads[] = { 217 MockRead reads[] = {
211 MockRead("HTTP/1.1 200 Conn"), 218 MockRead("HTTP/1.1 200 Conn"),
212 MockRead(true, ERR_CONNECTION_CLOSED), 219 MockRead(true, ERR_CONNECTION_CLOSED),
213 }; 220 };
214 StaticSocketDataProvider data(reads, arraysize(reads), writes, 221 StaticSocketDataProvider data(reads, arraysize(reads), writes,
215 arraysize(writes)); 222 arraysize(writes));
216 223
217 tcp_client_socket_factory_.AddSocketDataProvider(&data); 224 tcp_client_socket_factory_.AddSocketDataProvider(&data);
218 MockHttpAuthControllerData auth_data[] = { 225 MockHttpAuthControllerData auth_data[] = {
219 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="), 226 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg==", "",
227 ""),
220 }; 228 };
221 auth_controller_->SetMockAuthControllerData(auth_data, arraysize(auth_data)); 229 SetAuthControllerData(auth_data, arraysize(auth_data));
222 230
223 ClientSocketHandle handle; 231 ClientSocketHandle handle;
224 TestCompletionCallback callback; 232 TestCompletionCallback callback;
225 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_, 233 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_,
226 BoundNetLog()); 234 BoundNetLog());
227 EXPECT_EQ(ERR_IO_PENDING, rv); 235 EXPECT_EQ(ERR_IO_PENDING, rv);
228 EXPECT_FALSE(handle.is_initialized()); 236 EXPECT_FALSE(handle.is_initialized());
229 EXPECT_FALSE(handle.socket()); 237 EXPECT_FALSE(handle.socket());
230 238
231 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); 239 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult());
232 EXPECT_FALSE(handle.is_initialized()); 240 EXPECT_FALSE(handle.is_initialized());
233 EXPECT_FALSE(handle.socket()); 241 EXPECT_FALSE(handle.socket());
234 } 242 }
235 243
236 TEST_F(HttpProxyClientSocketPoolTest, TunnelSetupError) { 244 TEST_F(HttpProxyClientSocketPoolTest, TunnelSetupError) {
237 MockWrite writes[] = { 245 MockWrite writes[] = {
238 MockWrite("CONNECT host:80 HTTP/1.1\r\n" 246 MockWrite("CONNECT host:80 HTTP/1.1\r\n"
239 "Host: host\r\n" 247 "Host: host\r\n"
240 "Proxy-Connection: keep-alive\r\n" 248 "Proxy-Connection: keep-alive\r\n"
241 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"), 249 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"),
242 }; 250 };
243 MockRead reads[] = { 251 MockRead reads[] = {
244 MockRead("HTTP/1.1 304 Not Modified\r\n\r\n"), 252 MockRead("HTTP/1.1 304 Not Modified\r\n\r\n"),
245 }; 253 };
246 StaticSocketDataProvider data(reads, arraysize(reads), writes, 254 StaticSocketDataProvider data(reads, arraysize(reads), writes,
247 arraysize(writes)); 255 arraysize(writes));
248 256
249 tcp_client_socket_factory_.AddSocketDataProvider(&data); 257 tcp_client_socket_factory_.AddSocketDataProvider(&data);
250 MockHttpAuthControllerData auth_data[] = { 258 MockHttpAuthControllerData auth_data[] = {
251 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="), 259 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg==", "",
260 ""),
252 }; 261 };
253 auth_controller_->SetMockAuthControllerData(auth_data, arraysize(auth_data)); 262 SetAuthControllerData(auth_data, arraysize(auth_data));
254 263
255 ClientSocketHandle handle; 264 ClientSocketHandle handle;
256 TestCompletionCallback callback; 265 TestCompletionCallback callback;
257 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_, 266 int rv = handle.Init("a", tunnel_socket_params_, LOW, &callback, pool_,
258 BoundNetLog()); 267 BoundNetLog());
259 EXPECT_EQ(ERR_IO_PENDING, rv); 268 EXPECT_EQ(ERR_IO_PENDING, rv);
260 EXPECT_FALSE(handle.is_initialized()); 269 EXPECT_FALSE(handle.is_initialized());
261 EXPECT_FALSE(handle.socket()); 270 EXPECT_FALSE(handle.socket());
262 271
263 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, callback.WaitForResult()); 272 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, callback.WaitForResult());
264 EXPECT_FALSE(handle.is_initialized()); 273 EXPECT_FALSE(handle.is_initialized());
265 EXPECT_FALSE(handle.socket()); 274 EXPECT_FALSE(handle.socket());
266 } 275 }
267 276
268 // It would be nice to also test the timeouts in HttpProxyClientSocketPool. 277 // It would be nice to also test the timeouts in HttpProxyClientSocketPool.
269 278
270 } // namespace 279 } // namespace
271 280
272 } // namespace net 281 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_proxy_client_socket_pool.cc ('k') | net/socket/socket_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698