| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import "dart:io"; |
| import "package:expect/expect.dart"; |
| |
| expect(expected, String uri, environment) { |
| Expect.equals( |
| expected, |
| HttpClient.findProxyFromEnvironment( |
| Uri.parse(uri), |
| environment: environment, |
| ), |
| ); |
| } |
| |
| expectDirect(String uri, Map<String, String> environment) { |
| Expect.equals( |
| "DIRECT", |
| HttpClient.findProxyFromEnvironment( |
| Uri.parse(uri), |
| environment: environment, |
| ), |
| ); |
| } |
| |
| main() { |
| expectDirect("http://www.google.com", {}); |
| expectDirect("http://www.google.com", {"http_proxy": ""}); |
| expectDirect("http://www.google.com", {"http_proxy": " "}); |
| |
| expect("PROXY www.proxy.com:1080", "http://www.google.com", { |
| "http_proxy": "www.proxy.com", |
| }); |
| expect("PROXY www.proxys.com:1080", "https://www.google.com", { |
| "https_proxy": "www.proxys.com", |
| }); |
| expect("PROXY www.proxy.com:8080", "http://www.google.com", { |
| "http_proxy": "www.proxy.com:8080", |
| }); |
| expect("PROXY www.proxys.com:8080", "https://www.google.com", { |
| "https_proxy": "www.proxys.com:8080", |
| }); |
| expect("PROXY www.proxy.com:8080", "http://www.google.com", { |
| "http_proxy": "www.proxy.com:8080", |
| "https_proxy": "www.proxys.com:8080", |
| }); |
| expect("PROXY www.proxys.com:8080", "https://www.google.com", { |
| "http_proxy": "www.proxy.com:8080", |
| "https_proxy": "www.proxys.com:8080", |
| }); |
| |
| expect("PROXY [::ffff:1]:1080", "http://www.google.com", { |
| "http_proxy": "[::ffff:1]", |
| }); |
| expect("PROXY [::ffff:2]:1080", "https://www.google.com", { |
| "https_proxy": "[::ffff:2]", |
| }); |
| expect("PROXY [::ffff:1]:8080", "http://www.google.com", { |
| "http_proxy": "[::ffff:1]:8080", |
| }); |
| expect("PROXY [::ffff:2]:8080", "https://www.google.com", { |
| "https_proxy": "[::ffff:2]:8080", |
| }); |
| expect("PROXY [::ffff:1]:8080", "http://www.google.com", { |
| "http_proxy": "[::ffff:1]:8080", |
| "https_proxy": "[::ffff:2]:8080", |
| }); |
| expect("PROXY [::ffff:2]:8080", "https://www.google.com", { |
| "http_proxy": "[::ffff:1]:8080", |
| "https_proxy": "[::ffff:2]:8080", |
| }); |
| |
| expect("PROXY www.proxy.com:1080", "http://www.google.com", { |
| "http_proxy": "http://www.proxy.com", |
| }); |
| expect("PROXY www.proxy.com:1080", "http://www.google.com", { |
| "http_proxy": "http://www.proxy.com/", |
| }); |
| expect("PROXY www.proxy.com:8080", "http://www.google.com", { |
| "http_proxy": "http://www.proxy.com:8080/", |
| }); |
| expect("PROXY www.proxy.com:8080", "http://www.google.com", { |
| "http_proxy": "http://www.proxy.com:8080/index.html", |
| }); |
| expect("PROXY www.proxy.com:8080", "http://www.google.com", { |
| "http_proxy": "http://www.proxy.com:8080/", |
| "https_proxy": "http://www.proxys.com:8080/", |
| }); |
| expect("PROXY www.proxys.com:8080", "https://www.google.com", { |
| "http_proxy": "http://www.proxy.com:8080/", |
| "https_proxy": "http://www.proxys.com:8080/", |
| }); |
| expect("PROXY www.proxy.com:8080", "http://www.google.com", { |
| "http_proxy": "http://www.proxy.com:8080/", |
| "https_proxy": "http://www.proxys.com:8080/index.html", |
| }); |
| expect("PROXY www.proxys.com:8080", "https://www.google.com", { |
| "http_proxy": "http://www.proxy.com:8080/", |
| "https_proxy": "http://www.proxys.com:8080/index.html", |
| }); |
| |
| expect("PROXY [::ffff:1]:1080", "http://www.google.com", { |
| "http_proxy": "http://[::ffff:1]", |
| }); |
| expect("PROXY [::ffff:1]:1080", "http://www.google.com", { |
| "http_proxy": "http://[::ffff:1]/", |
| }); |
| expect("PROXY [::ffff:1]:8080", "http://www.google.com", { |
| "http_proxy": "http://[::ffff:1]:8080/", |
| }); |
| expect("PROXY [::ffff:1]:8080", "http://www.google.com", { |
| "http_proxy": "http://[::ffff:1]:8080/index.html", |
| }); |
| expect("PROXY [::ffff:1]:8080", "http://www.google.com", { |
| "http_proxy": "http://[::ffff:1]:8080/", |
| "https_proxy": "http://[::ffff:1]:8080/", |
| }); |
| expect("PROXY [::ffff:2]:8080", "https://www.google.com", { |
| "http_proxy": "http://[::ffff:1]:8080/", |
| "https_proxy": "http://[::ffff:2]:8080/", |
| }); |
| expect("PROXY [::ffff:1]:8080", "http://www.google.com", { |
| "http_proxy": "http://[::ffff:1]:8080/", |
| "https_proxy": "http://[::ffff:1]:8080/index.html", |
| }); |
| expect("PROXY [::ffff:2]:8080", "https://www.google.com", { |
| "http_proxy": "http://[::ffff:1]:8080/", |
| "https_proxy": "http://[::ffff:2]:8080/index.html", |
| }); |
| |
| expectDirect("http://www.google.com", { |
| "http_proxy": "www.proxy.com:8080", |
| "no_proxy": "www.google.com", |
| }); |
| expectDirect("http://www.google.com", { |
| "http_proxy": "www.proxy.com:8080", |
| "no_proxy": "google.com", |
| }); |
| expectDirect("http://www.google.com", { |
| "http_proxy": "www.proxy.com:8080", |
| "no_proxy": ".com", |
| }); |
| expectDirect("http://www.google.com", { |
| "http_proxy": "www.proxy.com:8080", |
| "no_proxy": ",, , www.google.edu,,.com ", |
| }); |
| expectDirect("http://www.google.edu", { |
| "http_proxy": "www.proxy.com:8080", |
| "no_proxy": ",, , www.google.edu,,.com ", |
| }); |
| expectDirect("http://www.google.com", {"https_proxy": "www.proxy.com:8080"}); |
| |
| expect("PROXY www.proxy.com:8080", "http://[::ffff:1]", { |
| "http_proxy": "www.proxy.com:8080", |
| "no_proxy": "[", |
| }); |
| expect("PROXY www.proxy.com:8080", "http://[::ffff:1]", { |
| "http_proxy": "www.proxy.com:8080", |
| "no_proxy": "[]", |
| }); |
| |
| expectDirect("http://[::ffff:1]", { |
| "http_proxy": "www.proxy.com:8080", |
| "no_proxy": "[::ffff:1]", |
| }); |
| expectDirect("http://[::ffff:1]", { |
| "http_proxy": "www.proxy.com:8080", |
| "no_proxy": ",, , www.google.edu,,[::ffff:1] ", |
| }); |
| } |