13b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson/* 23b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * Copyright (C) 2010 The Android Open Source Project 33b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * 43b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 53b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * you may not use this file except in compliance with the License. 63b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * You may obtain a copy of the License at 73b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * 83b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 93b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * 103b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * Unless required by applicable law or agreed to in writing, software 113b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 123b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * See the License for the specific language governing permissions and 143b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson * limitations under the License. 153b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson */ 163b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 173b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilsonpackage libcore.java.net; 183b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 193b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilsonimport static java.net.InetSocketAddress.createUnresolved; 203b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilsonimport java.net.Proxy; 213b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilsonimport java.net.ProxySelector; 223b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilsonimport java.net.URI; 233b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilsonimport java.net.URISyntaxException; 243b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilsonimport java.util.Arrays; 253b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilsonimport junit.framework.TestCase; 263b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 273b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilsonpublic final class ProxySelectorTest extends TestCase { 283b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 293b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson private ProxySelector proxySelector; 303b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 313b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson private URI httpUri; 323b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson private URI ftpUri; 333b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson private URI httpsUri; 343b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson private URI socketUri; 353b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson private URI otherUri; 363b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 373b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson protected void setUp() throws Exception { 383b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson super.setUp(); 393b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector = ProxySelector.getDefault(); 403b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson httpUri = new URI("http://android.com"); 413b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson ftpUri = new URI("ftp://android.com"); 423b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson httpsUri = new URI("https://android.com"); 433b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson socketUri = new URI("socket://android.com"); 443b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson otherUri = new URI("other://android.com"); 453b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 463b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 473b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson @Override protected void tearDown() throws Exception { 483b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("ftp.proxyHost"); 493b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("ftp.proxyPort"); 503b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("ftp.nonProxyHosts"); 513b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("http.proxyHost"); 523b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("http.proxyPort"); 533b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("http.nonProxyHosts"); 543b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("https.proxyHost"); 553b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("https.proxyPort"); 563b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("https.nonProxyHosts"); 573b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("other.proxyHost"); 583b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("other.proxyPort"); 593b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("socket.proxyHost"); 603b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("socket.proxyPort"); 613b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("proxyHost"); 623b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.clearProperty("proxyPort"); 633b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 643b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 653b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testNoProxySystemProperty() throws URISyntaxException { 663b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(ftpUri)); 673b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(httpUri)); 683b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(httpsUri)); 693b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(socketUri)); 703b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(otherUri)); 713b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 723b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 733b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testProxyHostOnly() throws URISyntaxException { 743b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("ftp.proxyHost", "a"); 753b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("http.proxyHost", "b"); 763b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("https.proxyHost", "c"); 773b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("other.proxyHost", "d"); 783b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("socket.proxyHost", "d"); 793b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("a", 80))), 803b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(ftpUri)); 813b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("b", 80))), 823b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(httpUri)); 833b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("c", 443))), 843b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(httpsUri)); 853b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(otherUri)); 863b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(socketUri)); 873b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 883b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 893b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testProxyHostPort() throws URISyntaxException { 903b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("ftp.proxyHost", "a"); 913b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("ftp.proxyPort", "1001"); 923b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("http.proxyHost", "b"); 933b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("http.proxyPort", "1002"); 943b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("https.proxyHost", "c"); 953b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("https.proxyPort", "1003"); 963b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("other.proxyHost", "d"); 973b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("other.proxyPort", "1004"); 983b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("socket.proxyHost", "e"); 993b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("socket.proxyPort", "1005"); 1003b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("a", 1001))), 1013b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(ftpUri)); 1023b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("b", 1002))), 1033b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(httpUri)); 1043b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("c", 1003))), 1053b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(httpsUri)); 1063b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(socketUri)); 1073b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(otherUri)); 1083b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 1093b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 1103b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testProxyPortOnly() throws URISyntaxException { 1113b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("ftp.proxyPort", "1001"); 1123b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("http.proxyPort", "1002"); 1133b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("https.proxyPort", "1003"); 1143b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("other.proxyPort", "1004"); 1153b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("socket.proxyPort", "1005"); 1163b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(ftpUri)); 1173b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(httpUri)); 1183b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(httpsUri)); 1193b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(socketUri)); 1203b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(otherUri)); 1213b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 1223b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 1233b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testHttpsDoesNotUseHttpProperties() throws URISyntaxException { 1243b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("http.proxyHost", "a"); 1253b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("http.proxyPort", "1001"); 1263b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(httpsUri)); 1273b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 1283b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 1293b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testProxyHost() throws URISyntaxException { 1303b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("proxyHost", "a"); 1313b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("a", 80))), 1323b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(ftpUri)); 1333b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("a", 80))), 1343b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(httpUri)); 1353b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("a", 443))), 1363b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(httpsUri)); 1373b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(socketUri)); 1383b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(otherUri)); 1393b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 1403b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 1413b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testHttpProxyHostPreferredOverProxyHost() throws URISyntaxException { 1423b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("http.proxyHost", "a"); 1433b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("proxyHost", "b"); 1443b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("a", 80))), 1453b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(httpUri)); 1463b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 1473b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 1483b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testSocksProxyHost() throws URISyntaxException { 1493b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("socksProxyHost", "a"); 1503b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.SOCKS, createUnresolved("a", 1080))), 1513b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(ftpUri)); 1523b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.SOCKS, createUnresolved("a", 1080))), 1533b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(httpUri)); 1543b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.SOCKS, createUnresolved("a", 1080))), 1553b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(httpsUri)); 1563b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.SOCKS, createUnresolved("a", 1080))), 1573b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(socketUri)); 1583b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(otherUri)); 1593b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 1603b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 1613b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testSocksProxyHostAndPort() throws URISyntaxException { 1623b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("socksProxyHost", "a"); 1633b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("socksProxyPort", "1001"); 1643b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.SOCKS, createUnresolved("a", 1001))), 1653b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(ftpUri)); 1663b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.SOCKS, createUnresolved("a", 1001))), 1673b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(httpUri)); 1683b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.SOCKS, createUnresolved("a", 1001))), 1693b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(httpsUri)); 1703b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.SOCKS, createUnresolved("a", 1001))), 1713b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(socketUri)); 1723b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), proxySelector.select(otherUri)); 1733b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 1743b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 1753b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testNonProxyHostsFtp() throws URISyntaxException { 1763b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("ftp.nonProxyHosts", "*.com"); 1773b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("ftp.proxyHost", "a"); 1783b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("a", 80))), 1793b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(new URI("ftp://foo.net"))); 1803b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), 1813b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(new URI("ftp://foo.com"))); 1823b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 1833b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 1843b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testNonProxyHostsHttp() throws URISyntaxException { 1853b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("http.nonProxyHosts", "*.com"); 1863b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("http.proxyHost", "a"); 1873b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("a", 80))), 1883b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(new URI("http://foo.net"))); 1893b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), 1903b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(new URI("http://foo.com"))); 1913b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 1923b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 1933b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testNonProxyHostsHttps() throws URISyntaxException { 1943b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("https.nonProxyHosts", "*.com"); 1953b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("https.proxyHost", "a"); 1963b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("a", 443))), 1973b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(new URI("https://foo.net"))); 1983b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(Proxy.NO_PROXY), 1993b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(new URI("https://foo.com"))); 2003b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 2013b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson 2023b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson public void testSchemeCaseSensitive() throws URISyntaxException { 2033b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson System.setProperty("http.proxyHost", "a"); 2043b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson assertEquals(Arrays.asList(new Proxy(Proxy.Type.HTTP, createUnresolved("a", 80))), 2053b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson proxySelector.select(new URI("HTTP://foo.net"))); 2063b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson } 2073b0348d1081a4645aa38da97ee299fadc040c1b4Jesse Wilson} 208