OLD | NEW |
1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2008 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/proxy/proxy_script_fetcher.h" | 5 #include "net/proxy/proxy_script_fetcher.h" |
6 | 6 |
7 #include "base/file_path.h" | 7 #include "base/file_path.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
10 #include "net/base/net_util.h" | 10 #include "net/base/net_util.h" |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 { // Fetch a file that exists. | 174 { // Fetch a file that exists. |
175 FetchResult result = pac_fetcher.Fetch(GetTestFileUrl("pac.txt")); | 175 FetchResult result = pac_fetcher.Fetch(GetTestFileUrl("pac.txt")); |
176 EXPECT_EQ(net::OK, result.code); | 176 EXPECT_EQ(net::OK, result.code); |
177 EXPECT_EQ("-pac.txt-\n", result.bytes); | 177 EXPECT_EQ("-pac.txt-\n", result.bytes); |
178 } | 178 } |
179 } | 179 } |
180 | 180 |
181 // Note that all mime types are allowed for PAC file, to be consistent | 181 // Note that all mime types are allowed for PAC file, to be consistent |
182 // with other browsers. | 182 // with other browsers. |
183 TEST_F(ProxyScriptFetcherTest, HttpMimeType) { | 183 TEST_F(ProxyScriptFetcherTest, HttpMimeType) { |
184 scoped_refptr<HTTPTestServer> server = | 184 TestServer server(kDocRoot); |
185 HTTPTestServer::CreateServer(kDocRoot); | |
186 ASSERT_TRUE(NULL != server.get()); | |
187 SynchFetcher pac_fetcher; | 185 SynchFetcher pac_fetcher; |
188 | 186 |
189 { // Fetch a PAC with mime type "text/plain" | 187 { // Fetch a PAC with mime type "text/plain" |
190 GURL url = server->TestServerPage("files/pac.txt"); | 188 GURL url = server.TestServerPage("files/pac.txt"); |
191 FetchResult result = pac_fetcher.Fetch(url); | 189 FetchResult result = pac_fetcher.Fetch(url); |
192 EXPECT_EQ(net::OK, result.code); | 190 EXPECT_EQ(net::OK, result.code); |
193 EXPECT_EQ("-pac.txt-\n", result.bytes); | 191 EXPECT_EQ("-pac.txt-\n", result.bytes); |
194 } | 192 } |
195 { // Fetch a PAC with mime type "text/html" | 193 { // Fetch a PAC with mime type "text/html" |
196 GURL url = server->TestServerPage("files/pac.html"); | 194 GURL url = server.TestServerPage("files/pac.html"); |
197 FetchResult result = pac_fetcher.Fetch(url); | 195 FetchResult result = pac_fetcher.Fetch(url); |
198 EXPECT_EQ(net::OK, result.code); | 196 EXPECT_EQ(net::OK, result.code); |
199 EXPECT_EQ("-pac.html-\n", result.bytes); | 197 EXPECT_EQ("-pac.html-\n", result.bytes); |
200 } | 198 } |
201 { // Fetch a PAC with mime type "application/x-ns-proxy-autoconfig" | 199 { // Fetch a PAC with mime type "application/x-ns-proxy-autoconfig" |
202 GURL url = server->TestServerPage("files/pac.nsproxy"); | 200 GURL url = server.TestServerPage("files/pac.nsproxy"); |
203 FetchResult result = pac_fetcher.Fetch(url); | 201 FetchResult result = pac_fetcher.Fetch(url); |
204 EXPECT_EQ(net::OK, result.code); | 202 EXPECT_EQ(net::OK, result.code); |
205 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); | 203 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); |
206 } | 204 } |
207 } | 205 } |
208 | 206 |
209 TEST_F(ProxyScriptFetcherTest, HttpStatusCode) { | 207 TEST_F(ProxyScriptFetcherTest, HttpStatusCode) { |
210 scoped_refptr<HTTPTestServer> server = | 208 TestServer server(kDocRoot); |
211 HTTPTestServer::CreateServer(kDocRoot); | |
212 ASSERT_TRUE(NULL != server.get()); | |
213 SynchFetcher pac_fetcher; | 209 SynchFetcher pac_fetcher; |
214 | 210 |
215 { // Fetch a PAC which gives a 500 -- FAIL | 211 { // Fetch a PAC which gives a 500 -- FAIL |
216 GURL url = server->TestServerPage("files/500.pac"); | 212 GURL url = server.TestServerPage("files/500.pac"); |
217 FetchResult result = pac_fetcher.Fetch(url); | 213 FetchResult result = pac_fetcher.Fetch(url); |
218 EXPECT_EQ(net::ERR_PAC_STATUS_NOT_OK, result.code); | 214 EXPECT_EQ(net::ERR_PAC_STATUS_NOT_OK, result.code); |
219 EXPECT_TRUE(result.bytes.empty()); | 215 EXPECT_TRUE(result.bytes.empty()); |
220 } | 216 } |
221 { // Fetch a PAC which gives a 404 -- FAIL | 217 { // Fetch a PAC which gives a 404 -- FAIL |
222 GURL url = server->TestServerPage("files/404.pac"); | 218 GURL url = server.TestServerPage("files/404.pac"); |
223 FetchResult result = pac_fetcher.Fetch(url); | 219 FetchResult result = pac_fetcher.Fetch(url); |
224 EXPECT_EQ(net::ERR_PAC_STATUS_NOT_OK, result.code); | 220 EXPECT_EQ(net::ERR_PAC_STATUS_NOT_OK, result.code); |
225 EXPECT_TRUE(result.bytes.empty()); | 221 EXPECT_TRUE(result.bytes.empty()); |
226 } | 222 } |
227 } | 223 } |
228 | 224 |
229 TEST_F(ProxyScriptFetcherTest, ContentDisposition) { | 225 TEST_F(ProxyScriptFetcherTest, ContentDisposition) { |
230 scoped_refptr<HTTPTestServer> server = | 226 TestServer server(kDocRoot); |
231 HTTPTestServer::CreateServer(kDocRoot); | |
232 ASSERT_TRUE(NULL != server.get()); | |
233 SynchFetcher pac_fetcher; | 227 SynchFetcher pac_fetcher; |
234 | 228 |
235 // Fetch PAC scripts via HTTP with a Content-Disposition header -- should | 229 // Fetch PAC scripts via HTTP with a Content-Disposition header -- should |
236 // have no effect. | 230 // have no effect. |
237 GURL url = server->TestServerPage("files/downloadable.pac"); | 231 GURL url = server.TestServerPage("files/downloadable.pac"); |
238 FetchResult result = pac_fetcher.Fetch(url); | 232 FetchResult result = pac_fetcher.Fetch(url); |
239 EXPECT_EQ(net::OK, result.code); | 233 EXPECT_EQ(net::OK, result.code); |
240 EXPECT_EQ("-downloadable.pac-\n", result.bytes); | 234 EXPECT_EQ("-downloadable.pac-\n", result.bytes); |
241 } | 235 } |
242 | 236 |
243 TEST_F(ProxyScriptFetcherTest, TooLarge) { | 237 TEST_F(ProxyScriptFetcherTest, TooLarge) { |
244 scoped_refptr<HTTPTestServer> server = | 238 TestServer server(kDocRoot); |
245 HTTPTestServer::CreateServer(kDocRoot); | |
246 ASSERT_TRUE(NULL != server.get()); | |
247 SynchFetcher pac_fetcher; | 239 SynchFetcher pac_fetcher; |
248 | 240 |
249 // Set the maximum response size to 50 bytes. | 241 // Set the maximum response size to 50 bytes. |
250 int prev_size = net::ProxyScriptFetcher::SetSizeConstraintForUnittest(50); | 242 int prev_size = net::ProxyScriptFetcher::SetSizeConstraintForUnittest(50); |
251 | 243 |
252 // These two URLs are the same file, but are http:// vs file:// | 244 // These two URLs are the same file, but are http:// vs file:// |
253 GURL urls[] = { | 245 GURL urls[] = { |
254 server->TestServerPage("files/large-pac.nsproxy"), | 246 server.TestServerPage("files/large-pac.nsproxy"), |
255 GetTestFileUrl("large-pac.nsproxy") | 247 GetTestFileUrl("large-pac.nsproxy") |
256 }; | 248 }; |
257 | 249 |
258 // Try fetching URLs that are 101 bytes large. We should abort the request | 250 // Try fetching URLs that are 101 bytes large. We should abort the request |
259 // after 50 bytes have been read, and fail with a too large error. | 251 // after 50 bytes have been read, and fail with a too large error. |
260 for (size_t i = 0; i < arraysize(urls); ++i) { | 252 for (size_t i = 0; i < arraysize(urls); ++i) { |
261 const GURL& url = urls[i]; | 253 const GURL& url = urls[i]; |
262 FetchResult result = pac_fetcher.Fetch(url); | 254 FetchResult result = pac_fetcher.Fetch(url); |
263 EXPECT_EQ(net::ERR_FILE_TOO_BIG, result.code); | 255 EXPECT_EQ(net::ERR_FILE_TOO_BIG, result.code); |
264 EXPECT_TRUE(result.bytes.empty()); | 256 EXPECT_TRUE(result.bytes.empty()); |
265 } | 257 } |
266 | 258 |
267 // Restore the original size bound. | 259 // Restore the original size bound. |
268 net::ProxyScriptFetcher::SetSizeConstraintForUnittest(prev_size); | 260 net::ProxyScriptFetcher::SetSizeConstraintForUnittest(prev_size); |
269 | 261 |
270 { // Make sure we can still fetch regular URLs. | 262 { // Make sure we can still fetch regular URLs. |
271 GURL url = server->TestServerPage("files/pac.nsproxy"); | 263 GURL url = server.TestServerPage("files/pac.nsproxy"); |
272 FetchResult result = pac_fetcher.Fetch(url); | 264 FetchResult result = pac_fetcher.Fetch(url); |
273 EXPECT_EQ(net::OK, result.code); | 265 EXPECT_EQ(net::OK, result.code); |
274 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); | 266 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); |
275 } | 267 } |
276 } | 268 } |
277 | 269 |
278 TEST_F(ProxyScriptFetcherTest, Hang) { | 270 TEST_F(ProxyScriptFetcherTest, Hang) { |
279 scoped_refptr<HTTPTestServer> server = | 271 TestServer server(kDocRoot); |
280 HTTPTestServer::CreateServer(kDocRoot); | |
281 ASSERT_TRUE(NULL != server.get()); | |
282 SynchFetcher pac_fetcher; | 272 SynchFetcher pac_fetcher; |
283 | 273 |
284 // Set the timeout period to 0.5 seconds. | 274 // Set the timeout period to 0.5 seconds. |
285 int prev_timeout = | 275 int prev_timeout = |
286 net::ProxyScriptFetcher::SetTimeoutConstraintForUnittest(500); | 276 net::ProxyScriptFetcher::SetTimeoutConstraintForUnittest(500); |
287 | 277 |
288 // Try fetching a URL which takes 1.2 seconds. We should abort the request | 278 // Try fetching a URL which takes 1.2 seconds. We should abort the request |
289 // after 500 ms, and fail with a timeout error. | 279 // after 500 ms, and fail with a timeout error. |
290 { GURL url = server->TestServerPage("slow/proxy.pac?1.2"); | 280 { GURL url = server.TestServerPage("slow/proxy.pac?1.2"); |
291 FetchResult result = pac_fetcher.Fetch(url); | 281 FetchResult result = pac_fetcher.Fetch(url); |
292 EXPECT_EQ(net::ERR_TIMED_OUT, result.code); | 282 EXPECT_EQ(net::ERR_TIMED_OUT, result.code); |
293 EXPECT_TRUE(result.bytes.empty()); | 283 EXPECT_TRUE(result.bytes.empty()); |
294 } | 284 } |
295 | 285 |
296 // Restore the original timeout period. | 286 // Restore the original timeout period. |
297 net::ProxyScriptFetcher::SetTimeoutConstraintForUnittest(prev_timeout); | 287 net::ProxyScriptFetcher::SetTimeoutConstraintForUnittest(prev_timeout); |
298 | 288 |
299 { // Make sure we can still fetch regular URLs. | 289 { // Make sure we can still fetch regular URLs. |
300 GURL url = server->TestServerPage("files/pac.nsproxy"); | 290 GURL url = server.TestServerPage("files/pac.nsproxy"); |
301 FetchResult result = pac_fetcher.Fetch(url); | 291 FetchResult result = pac_fetcher.Fetch(url); |
302 EXPECT_EQ(net::OK, result.code); | 292 EXPECT_EQ(net::OK, result.code); |
303 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); | 293 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); |
304 } | 294 } |
305 } | 295 } |
306 | 296 |
307 } // namespace net | 297 } // namespace net |
OLD | NEW |