| 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 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 GURL GetTestFileUrl(const std::string& relpath) { | 153 GURL GetTestFileUrl(const std::string& relpath) { |
| 154 FilePath path; | 154 FilePath path; |
| 155 PathService::Get(base::DIR_SOURCE_ROOT, &path); | 155 PathService::Get(base::DIR_SOURCE_ROOT, &path); |
| 156 path = path.Append(FILE_PATH_LITERAL("net")); | 156 path = path.Append(FILE_PATH_LITERAL("net")); |
| 157 path = path.Append(FILE_PATH_LITERAL("data")); | 157 path = path.Append(FILE_PATH_LITERAL("data")); |
| 158 path = path.Append(FILE_PATH_LITERAL("proxy_script_fetcher_unittest")); | 158 path = path.Append(FILE_PATH_LITERAL("proxy_script_fetcher_unittest")); |
| 159 GURL base_url = net::FilePathToFileURL(path); | 159 GURL base_url = net::FilePathToFileURL(path); |
| 160 return GURL(base_url.spec() + "/" + relpath); | 160 return GURL(base_url.spec() + "/" + relpath); |
| 161 } | 161 } |
| 162 | 162 |
| 163 TEST(ProxyScriptFetcherTest, DISABLED_FileUrl) { | 163 TEST(ProxyScriptFetcherTest, FileUrl) { |
| 164 SynchFetcher pac_fetcher; | 164 SynchFetcher pac_fetcher; |
| 165 | 165 |
| 166 { // Fetch a non-existent file. | 166 { // Fetch a non-existent file. |
| 167 FetchResult result = pac_fetcher.Fetch(GetTestFileUrl("does-not-exist")); | 167 FetchResult result = pac_fetcher.Fetch(GetTestFileUrl("does-not-exist")); |
| 168 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, result.code); | 168 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, result.code); |
| 169 EXPECT_TRUE(result.bytes.empty()); | 169 EXPECT_TRUE(result.bytes.empty()); |
| 170 } | 170 } |
| 171 { // Fetch a file that exists. | 171 { // Fetch a file that exists. |
| 172 FetchResult result = pac_fetcher.Fetch(GetTestFileUrl("pac.txt")); | 172 FetchResult result = pac_fetcher.Fetch(GetTestFileUrl("pac.txt")); |
| 173 EXPECT_EQ(net::OK, result.code); | 173 EXPECT_EQ(net::OK, result.code); |
| 174 EXPECT_EQ("-pac.txt-\n", result.bytes); | 174 EXPECT_EQ("-pac.txt-\n", result.bytes); |
| 175 } | 175 } |
| 176 } | 176 } |
| 177 | 177 |
| 178 // Note that all mime types are allowed for PAC file, to be consistent | 178 // Note that all mime types are allowed for PAC file, to be consistent |
| 179 // with other browsers. | 179 // with other browsers. |
| 180 TEST(ProxyScriptFetcherTest, DISABLED_HttpMimeType) { | 180 TEST(ProxyScriptFetcherTest, HttpMimeType) { |
| 181 TestServer server(kDocRoot); | 181 TestServer server(kDocRoot); |
| 182 SynchFetcher pac_fetcher; | 182 SynchFetcher pac_fetcher; |
| 183 | 183 |
| 184 { // Fetch a PAC with mime type "text/plain" | 184 { // Fetch a PAC with mime type "text/plain" |
| 185 GURL url = server.TestServerPage("files/pac.txt"); | 185 GURL url = server.TestServerPage("files/pac.txt"); |
| 186 FetchResult result = pac_fetcher.Fetch(url); | 186 FetchResult result = pac_fetcher.Fetch(url); |
| 187 EXPECT_EQ(net::OK, result.code); | 187 EXPECT_EQ(net::OK, result.code); |
| 188 EXPECT_EQ("-pac.txt-\n", result.bytes); | 188 EXPECT_EQ("-pac.txt-\n", result.bytes); |
| 189 } | 189 } |
| 190 { // Fetch a PAC with mime type "text/html" | 190 { // Fetch a PAC with mime type "text/html" |
| 191 GURL url = server.TestServerPage("files/pac.html"); | 191 GURL url = server.TestServerPage("files/pac.html"); |
| 192 FetchResult result = pac_fetcher.Fetch(url); | 192 FetchResult result = pac_fetcher.Fetch(url); |
| 193 EXPECT_EQ(net::OK, result.code); | 193 EXPECT_EQ(net::OK, result.code); |
| 194 EXPECT_EQ("-pac.html-\n", result.bytes); | 194 EXPECT_EQ("-pac.html-\n", result.bytes); |
| 195 } | 195 } |
| 196 { // Fetch a PAC with mime type "application/x-ns-proxy-autoconfig" | 196 { // Fetch a PAC with mime type "application/x-ns-proxy-autoconfig" |
| 197 GURL url = server.TestServerPage("files/pac.nsproxy"); | 197 GURL url = server.TestServerPage("files/pac.nsproxy"); |
| 198 FetchResult result = pac_fetcher.Fetch(url); | 198 FetchResult result = pac_fetcher.Fetch(url); |
| 199 EXPECT_EQ(net::OK, result.code); | 199 EXPECT_EQ(net::OK, result.code); |
| 200 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); | 200 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); |
| 201 } | 201 } |
| 202 } | 202 } |
| 203 | 203 |
| 204 TEST(ProxyScriptFetcherTest, DISABLED_HttpStatusCode) { | 204 TEST(ProxyScriptFetcherTest, HttpStatusCode) { |
| 205 TestServer server(kDocRoot); | 205 TestServer server(kDocRoot); |
| 206 SynchFetcher pac_fetcher; | 206 SynchFetcher pac_fetcher; |
| 207 | 207 |
| 208 { // Fetch a PAC which gives a 500 -- FAIL | 208 { // Fetch a PAC which gives a 500 -- FAIL |
| 209 GURL url = server.TestServerPage("files/500.pac"); | 209 GURL url = server.TestServerPage("files/500.pac"); |
| 210 FetchResult result = pac_fetcher.Fetch(url); | 210 FetchResult result = pac_fetcher.Fetch(url); |
| 211 EXPECT_EQ(net::ERR_PAC_STATUS_NOT_OK, result.code); | 211 EXPECT_EQ(net::ERR_PAC_STATUS_NOT_OK, result.code); |
| 212 EXPECT_TRUE(result.bytes.empty()); | 212 EXPECT_TRUE(result.bytes.empty()); |
| 213 } | 213 } |
| 214 { // Fetch a PAC which gives a 404 -- FAIL | 214 { // Fetch a PAC which gives a 404 -- FAIL |
| 215 GURL url = server.TestServerPage("files/404.pac"); | 215 GURL url = server.TestServerPage("files/404.pac"); |
| 216 FetchResult result = pac_fetcher.Fetch(url); | 216 FetchResult result = pac_fetcher.Fetch(url); |
| 217 EXPECT_EQ(net::ERR_PAC_STATUS_NOT_OK, result.code); | 217 EXPECT_EQ(net::ERR_PAC_STATUS_NOT_OK, result.code); |
| 218 EXPECT_TRUE(result.bytes.empty()); | 218 EXPECT_TRUE(result.bytes.empty()); |
| 219 } | 219 } |
| 220 } | 220 } |
| 221 | 221 |
| 222 TEST(ProxyScriptFetcherTest, DISABLED_ContentDisposition) { | 222 TEST(ProxyScriptFetcherTest, ContentDisposition) { |
| 223 TestServer server(kDocRoot); | 223 TestServer server(kDocRoot); |
| 224 SynchFetcher pac_fetcher; | 224 SynchFetcher pac_fetcher; |
| 225 | 225 |
| 226 // Fetch PAC scripts via HTTP with a Content-Disposition header -- should | 226 // Fetch PAC scripts via HTTP with a Content-Disposition header -- should |
| 227 // have no effect. | 227 // have no effect. |
| 228 GURL url = server.TestServerPage("files/downloadable.pac"); | 228 GURL url = server.TestServerPage("files/downloadable.pac"); |
| 229 FetchResult result = pac_fetcher.Fetch(url); | 229 FetchResult result = pac_fetcher.Fetch(url); |
| 230 EXPECT_EQ(net::OK, result.code); | 230 EXPECT_EQ(net::OK, result.code); |
| 231 EXPECT_EQ("-downloadable.pac-\n", result.bytes); | 231 EXPECT_EQ("-downloadable.pac-\n", result.bytes); |
| 232 } | 232 } |
| 233 | 233 |
| 234 TEST(ProxyScriptFetcherTest, DISABLED_TooLarge) { | 234 TEST(ProxyScriptFetcherTest, TooLarge) { |
| 235 TestServer server(kDocRoot); | 235 TestServer server(kDocRoot); |
| 236 SynchFetcher pac_fetcher; | 236 SynchFetcher pac_fetcher; |
| 237 | 237 |
| 238 // Set the maximum response size to 50 bytes. | 238 // Set the maximum response size to 50 bytes. |
| 239 int prev_size = net::ProxyScriptFetcher::SetSizeConstraintForUnittest(50); | 239 int prev_size = net::ProxyScriptFetcher::SetSizeConstraintForUnittest(50); |
| 240 | 240 |
| 241 // These two URLs are the same file, but are http:// vs file:// | 241 // These two URLs are the same file, but are http:// vs file:// |
| 242 GURL urls[] = { | 242 GURL urls[] = { |
| 243 server.TestServerPage("files/large-pac.nsproxy"), | 243 server.TestServerPage("files/large-pac.nsproxy"), |
| 244 GetTestFileUrl("large-pac.nsproxy") | 244 GetTestFileUrl("large-pac.nsproxy") |
| (...skipping 12 matching lines...) Expand all Loading... |
| 257 net::ProxyScriptFetcher::SetSizeConstraintForUnittest(prev_size); | 257 net::ProxyScriptFetcher::SetSizeConstraintForUnittest(prev_size); |
| 258 | 258 |
| 259 { // Make sure we can still fetch regular URLs. | 259 { // Make sure we can still fetch regular URLs. |
| 260 GURL url = server.TestServerPage("files/pac.nsproxy"); | 260 GURL url = server.TestServerPage("files/pac.nsproxy"); |
| 261 FetchResult result = pac_fetcher.Fetch(url); | 261 FetchResult result = pac_fetcher.Fetch(url); |
| 262 EXPECT_EQ(net::OK, result.code); | 262 EXPECT_EQ(net::OK, result.code); |
| 263 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); | 263 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); |
| 264 } | 264 } |
| 265 } | 265 } |
| 266 | 266 |
| 267 TEST(ProxyScriptFetcherTest, DISABLED_Hang) { | 267 TEST(ProxyScriptFetcherTest, Hang) { |
| 268 TestServer server(kDocRoot); | 268 TestServer server(kDocRoot); |
| 269 SynchFetcher pac_fetcher; | 269 SynchFetcher pac_fetcher; |
| 270 | 270 |
| 271 // Set the timeout period to 0.5 seconds. | 271 // Set the timeout period to 0.5 seconds. |
| 272 int prev_timeout = | 272 int prev_timeout = |
| 273 net::ProxyScriptFetcher::SetTimeoutConstraintForUnittest(500); | 273 net::ProxyScriptFetcher::SetTimeoutConstraintForUnittest(500); |
| 274 | 274 |
| 275 // Try fetching a URL which takes 1.2 seconds. We should abort the request | 275 // Try fetching a URL which takes 1.2 seconds. We should abort the request |
| 276 // after 500 ms, and fail with a timeout error. | 276 // after 500 ms, and fail with a timeout error. |
| 277 { GURL url = server.TestServerPage("slow/proxy.pac?1.2"); | 277 { GURL url = server.TestServerPage("slow/proxy.pac?1.2"); |
| 278 FetchResult result = pac_fetcher.Fetch(url); | 278 FetchResult result = pac_fetcher.Fetch(url); |
| 279 EXPECT_EQ(net::ERR_TIMED_OUT, result.code); | 279 EXPECT_EQ(net::ERR_TIMED_OUT, result.code); |
| 280 EXPECT_TRUE(result.bytes.empty()); | 280 EXPECT_TRUE(result.bytes.empty()); |
| 281 } | 281 } |
| 282 | 282 |
| 283 // Restore the original timeout period. | 283 // Restore the original timeout period. |
| 284 net::ProxyScriptFetcher::SetTimeoutConstraintForUnittest(prev_timeout); | 284 net::ProxyScriptFetcher::SetTimeoutConstraintForUnittest(prev_timeout); |
| 285 | 285 |
| 286 { // Make sure we can still fetch regular URLs. | 286 { // Make sure we can still fetch regular URLs. |
| 287 GURL url = server.TestServerPage("files/pac.nsproxy"); | 287 GURL url = server.TestServerPage("files/pac.nsproxy"); |
| 288 FetchResult result = pac_fetcher.Fetch(url); | 288 FetchResult result = pac_fetcher.Fetch(url); |
| 289 EXPECT_EQ(net::OK, result.code); | 289 EXPECT_EQ(net::OK, result.code); |
| 290 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); | 290 EXPECT_EQ("-pac.nsproxy-\n", result.bytes); |
| 291 } | 291 } |
| 292 } | 292 } |
| 293 | 293 |
| 294 } // namespace net | 294 } // namespace net |
| OLD | NEW |