blob: ee8195bce0df1447a5d7c8b0c2a861c17581aa84 [file] [log] [blame]
/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package tests.api.java.net;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.NetPermission;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.SocketAddress;
import java.net.SocketException;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.Permission;
import java.util.List;
import java.util.Properties;
import junit.framework.TestCase;
import tests.util.TestEnvironment;
@TestTargetClass(ProxySelector.class)
public class ProxySelectorTest extends TestCase {
private static final String HTTP_PROXY_HOST = "127.0.0.1";
private static final int HTTP_PROXY_PORT = 80;
private static final String HTTPS_PROXY_HOST = "127.0.0.2";
private static final int HTTPS_PROXY_PORT = 443;
private static final String FTP_PROXY_HOST = "127.0.0.3";
private static final int FTP_PROXY_PORT = 80;
private static final String SOCKS_PROXY_HOST = "127.0.0.4";
private static final int SOCKS_PROXY_PORT = 1080;
private static URI httpUri;
private static URI ftpUri;
private static URI httpsUri;
private static URI tcpUri;
private List proxyList;
private ProxySelector selector = ProxySelector.getDefault();
static {
try {
httpUri = new URI("http://test.com");
ftpUri = new URI("ftp://test.com");
httpsUri = new URI("https://test.com");
tcpUri = new URI("socket://host.com");
} catch (URISyntaxException e) {
}
}
/**
* @tests java.net.ProxySelector#getDefault()
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for getDefault method.",
method = "getDefault",
args = {}
)
public void test_getDefault() {
ProxySelector selector1 = ProxySelector.getDefault();
assertNotNull(selector1);
ProxySelector selector2 = ProxySelector.getDefault();
assertSame(selector1, selector2);
}
/**
* @tests java.net.ProxySelector#getDefault()
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for getDefault method.",
method = "getDefault",
args = {}
)
public void test_getDefault_Security() {
SecurityManager orignalSecurityManager = System.getSecurityManager();
try {
System.setSecurityManager(new MockSecurityManager());
} catch (SecurityException e) {
System.err.println("No setSecurityManager permission.");
System.err.println("test_getDefault_Security is not tested");
return;
}
try {
ProxySelector.getDefault();
fail("should throw SecurityException");
} catch (SecurityException e) {
// expected
} finally {
System.setSecurityManager(orignalSecurityManager);
}
}
/**
* @tests java.net.ProxySelector#setDefault(ProxySelector)}
*/
@TestTargets({
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for setDefault method.",
method = "setDefault",
args = {java.net.ProxySelector.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "ProxySelector",
args = {}
)
})
public void test_setDefaultLjava_net_ProxySelector() {
ProxySelector originalSelector = ProxySelector.getDefault();
try {
ProxySelector newSelector = new MockProxySelector();
ProxySelector.setDefault(newSelector);
assertSame(newSelector, ProxySelector.getDefault());
// use null to unset
ProxySelector.setDefault(null);
assertSame(null, ProxySelector.getDefault());
} finally {
ProxySelector.setDefault(originalSelector);
}
}
/**
* @tests java.net.ProxySelector#setDefault(ProxySelector)}
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for setDefault method.",
method = "setDefault",
args = {java.net.ProxySelector.class}
)
public void test_setDefaultLjava_net_ProxySelector_Security() {
ProxySelector originalSelector = ProxySelector.getDefault();
SecurityManager orignalSecurityManager = System.getSecurityManager();
try {
System.setSecurityManager(new MockSecurityManager());
} catch (SecurityException e) {
System.err.println("No setSecurityManager permission.");
System.err
.println("test_setDefaultLjava_net_ProxySelector_Security is not tested");
return;
}
try {
ProxySelector.setDefault(new MockProxySelector());
fail("should throw SecurityException");
} catch (SecurityException e) {
// expected
} finally {
System.setSecurityManager(orignalSecurityManager);
ProxySelector.setDefault(originalSelector);
}
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_SelectExact()
throws URISyntaxException {
// no proxy, return a proxyList only contains NO_PROXY
proxyList = selector.select(httpUri);
assertProxyEquals(proxyList,Proxy.NO_PROXY);
// set http proxy
System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT));
// set https proxy
System.setProperty("https.proxyHost", HTTPS_PROXY_HOST);
System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT));
// set ftp proxy
System.setProperty("ftp.proxyHost", FTP_PROXY_HOST);
System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT));
// set socks proxy
System.setProperty("socksProxyHost", SOCKS_PROXY_HOST);
System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT));
proxyList = selector.select(httpUri);
assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTP_PROXY_HOST,HTTP_PROXY_PORT);
proxyList = selector.select(httpsUri);
assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTPS_PROXY_HOST,HTTPS_PROXY_PORT);
proxyList = selector.select(ftpUri);
assertProxyEquals(proxyList,Proxy.Type.HTTP,FTP_PROXY_HOST,FTP_PROXY_PORT);
proxyList = selector.select(tcpUri);
assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_SelectExact_NullHost()
throws URISyntaxException {
// regression test for Harmony-1063
httpUri = new URI("http://a@");
ftpUri = new URI("ftp://a@");
httpsUri = new URI("https://a@");
tcpUri = new URI("socket://a@");
// no proxy, return a proxyList only contains NO_PROXY
proxyList = selector.select(httpUri);
assertProxyEquals(proxyList, Proxy.NO_PROXY);
// set http proxy
System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT));
// set https proxy
System.setProperty("https.proxyHost", HTTPS_PROXY_HOST);
System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT));
// set ftp proxy
System.setProperty("ftp.proxyHost", FTP_PROXY_HOST);
System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT));
// set socks proxy
System.setProperty("socksProxyHost", SOCKS_PROXY_HOST);
System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT));
proxyList = selector.select(httpUri);
assertProxyEquals(proxyList, Proxy.Type.HTTP, HTTP_PROXY_HOST,
HTTP_PROXY_PORT);
proxyList = selector.select(httpsUri);
assertProxyEquals(proxyList, Proxy.Type.HTTP, HTTPS_PROXY_HOST,
HTTPS_PROXY_PORT);
proxyList = selector.select(ftpUri);
assertProxyEquals(proxyList, Proxy.Type.HTTP, FTP_PROXY_HOST,
FTP_PROXY_PORT);
proxyList = selector.select(tcpUri);
assertProxyEquals(proxyList, Proxy.Type.SOCKS, SOCKS_PROXY_HOST,
SOCKS_PROXY_PORT);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_SelectExact_DefaultPort()
throws URISyntaxException {
// set http proxy
System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
// set https proxy
System.setProperty("https.proxyHost", HTTPS_PROXY_HOST);
// set ftp proxy
System.setProperty("ftp.proxyHost", FTP_PROXY_HOST);
// set socks proxy
System.setProperty("socksProxyHost", SOCKS_PROXY_HOST);
proxyList = selector.select(httpUri);
assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTP_PROXY_HOST,HTTP_PROXY_PORT);
proxyList = selector.select(httpsUri);
assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTPS_PROXY_HOST,HTTPS_PROXY_PORT);
proxyList = selector.select(ftpUri);
assertProxyEquals(proxyList,Proxy.Type.HTTP,FTP_PROXY_HOST,FTP_PROXY_PORT);
proxyList = selector.select(tcpUri);
assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_SelectExact_InvalidPort()
throws URISyntaxException {
final String INVALID_PORT = "abc";
// set http proxy
System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
System.setProperty("http.proxyPort", INVALID_PORT);
// set https proxy
System.setProperty("https.proxyHost", HTTPS_PROXY_HOST);
System.setProperty("https.proxyPort", INVALID_PORT);
// set ftp proxy
System.setProperty("ftp.proxyHost", FTP_PROXY_HOST);
System.setProperty("ftp.proxyPort", INVALID_PORT);
// set socks proxy
System.setProperty("socksProxyHost", SOCKS_PROXY_HOST);
System.setProperty("socksproxyPort", INVALID_PORT);
proxyList = selector.select(httpUri);
assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTP_PROXY_HOST,HTTP_PROXY_PORT);
proxyList = selector.select(httpsUri);
assertProxyEquals(proxyList,Proxy.Type.HTTP,HTTPS_PROXY_HOST,HTTPS_PROXY_PORT);
proxyList = selector.select(ftpUri);
assertProxyEquals(proxyList,Proxy.Type.HTTP,FTP_PROXY_HOST,FTP_PROXY_PORT);
proxyList = selector.select(tcpUri);
assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
// RI may fail this test case.
// Uncomment this test case when regex.jar is ready.
/*
public void test_selectLjava_net_URI_Select_NonProxyHosts()
throws URISyntaxException {
// RI's bug. Some RIs may fail this test case.
URI[] httpUris = { new URI("http://test.com"),
new URI("http://10.10.1.2"), new URI("http://a"),
new URI("http://def.abc.com") };
URI[] ftpUris = { new URI("ftp://test.com"),
new URI("ftp://10.10.1.2"), new URI("ftp://a"),
new URI("ftp://def.abc.com") };
// set http proxy
System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
System.setProperty("http.nonProxyHosts", "a|b|tes*|10.10.*|*.abc.com");
// set ftp proxy
System.setProperty("ftp.proxyHost", FTP_PROXY_HOST);
System.setProperty("ftp.nonProxyHosts", "a|b|tes*|10.10.*|*.abc.com");
for (int i = 0; i < httpUris.length; i++) {
proxyList = selector.select(httpUris[i]);
assertProxyEquals(proxyList,Proxy.NO_PROXY);
}
for (int i = 0; i < ftpUris.length; i++) {
proxyList = selector.select(ftpUris[i]);
assertProxyEquals(proxyList,Proxy.NO_PROXY);
}
}*/
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_SelectLikeHTTP()
throws URISyntaxException {
System.setProperty("http.proxyHost", "");
// set https proxy
System.setProperty("https.proxyHost", HTTPS_PROXY_HOST);
System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT));
// set ftp proxy
System.setProperty("ftp.proxyHost", FTP_PROXY_HOST);
System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT));
// set socks proxy
System.setProperty("socksProxyHost", SOCKS_PROXY_HOST);
System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT));
proxyList = selector.select(httpUri);
assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_SelectNoHTTP()
throws URISyntaxException {
// set https proxy
System.setProperty("https.proxyHost", HTTPS_PROXY_HOST);
System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT));
// set ftp proxy
System.setProperty("ftp.proxyHost", FTP_PROXY_HOST);
System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT));
proxyList = selector.select(httpUri);
assertProxyEquals(proxyList,Proxy.NO_PROXY);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_SelectLikeHTTPS()
throws URISyntaxException {
// set http proxy
System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT));
// set https proxy host empty
System.setProperty("http.proxyHost", "");
// set ftp proxy
System.setProperty("ftp.proxyHost", FTP_PROXY_HOST);
System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT));
// set socks proxy
System.setProperty("socksProxyHost", SOCKS_PROXY_HOST);
System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT));
proxyList = selector.select(httpsUri);
assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_SelectNoHTTPS()
throws URISyntaxException {
// set https proxy
System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT));
// set ftp proxy
System.setProperty("ftp.proxyHost", FTP_PROXY_HOST);
System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT));
proxyList = selector.select(httpsUri);
assertProxyEquals(proxyList,Proxy.NO_PROXY);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_SelectLikeFTP()
throws URISyntaxException {
// set http proxy
System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT));
// set ftp host empty
System.setProperty("ftp.proxyHost", "");
// set https proxy
System.setProperty("https.proxyHost", HTTPS_PROXY_HOST);
System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT));
// set socks proxy
System.setProperty("socksProxyHost", SOCKS_PROXY_HOST);
System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT));
proxyList = selector.select(ftpUri);
assertProxyEquals(proxyList,Proxy.Type.SOCKS,SOCKS_PROXY_HOST,SOCKS_PROXY_PORT);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_SelectNoFTP()
throws URISyntaxException {
// set http proxy
System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT));
// set https proxy
System.setProperty("https.proxyHost", HTTPS_PROXY_HOST);
System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT));
proxyList = selector.select(ftpUri);
assertProxyEquals(proxyList,Proxy.NO_PROXY);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_SelectNoSOCKS()
throws URISyntaxException {
// set http proxy
System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT));
// set https proxy
System.setProperty("https.proxyHost", HTTPS_PROXY_HOST);
System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT));
// set socks proxy
System.setProperty("ftp.proxyHost", FTP_PROXY_HOST);
System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT));
proxyList = selector.select(tcpUri);
assertProxyEquals(proxyList,Proxy.NO_PROXY);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for connectFailed method.",
method = "connectFailed",
args = {java.net.URI.class, java.net.SocketAddress.class, java.io.IOException.class}
)
public void test_connectionFailedLjava_net_URILjava_net_SocketAddressLjava_io_IOException()
throws URISyntaxException {
// set http proxy
System.setProperty("http.proxyHost", HTTP_PROXY_HOST);
System.setProperty("http.proxyPort", String.valueOf(HTTP_PROXY_PORT));
// set https proxy
System.setProperty("https.proxyHost", HTTPS_PROXY_HOST);
System.setProperty("https.proxyPort", String.valueOf(HTTPS_PROXY_PORT));
// set ftp proxy
System.setProperty("ftp.proxyHost", FTP_PROXY_HOST);
System.setProperty("ftp.proxyPort", String.valueOf(FTP_PROXY_PORT));
// set socks proxy
System.setProperty("socksProxyHost", SOCKS_PROXY_HOST);
System.setProperty("socksProxyPort", String.valueOf(SOCKS_PROXY_PORT));
List proxyList1 = selector.select(httpUri);
assertNotNull(proxyList1);
assertEquals(1, proxyList1.size());
Proxy proxy1 = (Proxy) proxyList1.get(0);
selector
.connectFailed(httpUri, proxy1.address(), new SocketException());
List proxyList2 = selector.select(httpUri);
assertNotNull(proxyList2);
assertEquals(1, proxyList2.size());
Proxy proxy2 = (Proxy) proxyList2.get(0);
// Default implemention doesn't change the proxy list
assertEquals(proxy1, proxy2);
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for connectFailed method.",
method = "connectFailed",
args = {java.net.URI.class, java.net.SocketAddress.class, java.io.IOException.class}
)
public void test_connectionFailedLjava_net_URILjava_net_SocketAddressLjava_io_IOException_IllegalArguement()
throws URISyntaxException {
SocketAddress sa = InetSocketAddress.createUnresolved("127.0.0.1", 0);
try {
selector.connectFailed(null, sa, new SocketException());
fail("should throw IllegalArgumentException if any argument is null.");
} catch (IllegalArgumentException e) {
// expected
}
try {
selector.connectFailed(httpUri, null, new SocketException());
fail("should throw IllegalArgumentException if any argument is null.");
} catch (IllegalArgumentException e) {
// expected
}
try {
selector.connectFailed(httpUri, sa, null);
fail("should throw IllegalArgumentException if any argument is null.");
} catch (IllegalArgumentException e) {
// expected
}
}
/**
* @tests java.net.ProxySelector#select(URI)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "This is a complete subset of tests for select method.",
method = "select",
args = {java.net.URI.class}
)
public void test_selectLjava_net_URI_IllegalArgument()
throws URISyntaxException {
URI[] illegalUris = { new URI("abc"), new URI("http"), null };
for (int i = 0; i < illegalUris.length; i++) {
try {
selector.select(illegalUris[i]);
fail("should throw IllegalArgumentException");
} catch (IllegalArgumentException e) {
// expected
}
}
}
/*
* asserts whether selectedProxyList contains one and only one element,
* and the element equals proxy.
*/
private void assertProxyEquals(List selectedProxyList, Proxy proxy) {
assertNotNull(selectedProxyList);
assertEquals(1, selectedProxyList.size());
assertEquals((Proxy) selectedProxyList.get(0), proxy);
}
/*
* asserts whether selectedProxyList contains one and only one element,
* and the element equals proxy which is represented by arguments "type",
* "host","port".
*/
private void assertProxyEquals(List selectedProxyList, Proxy.Type type,
String host, int port) {
SocketAddress sa = InetSocketAddress.createUnresolved(host, port);
Proxy proxy = new Proxy(type, sa);
assertProxyEquals(selectedProxyList, proxy);
}
/*
* Mock selector for setDefault test
*/
static class MockProxySelector extends ProxySelector {
public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
}
public List <Proxy> select(URI uri) {
return null;
}
}
/*
* MockSecurityMaanger. It denies NetPermission("getProxySelector") and
* NetPermission("setProxySelector").
*/
class MockSecurityManager extends SecurityManager {
public void checkPermission(Permission permission) {
if (permission instanceof NetPermission) {
if ("getProxySelector".equals(permission.getName())) {
throw new SecurityException();
}
}
if (permission instanceof NetPermission) {
if ("setProxySelector".equals(permission.getName())) {
throw new SecurityException();
}
}
if (permission instanceof RuntimePermission) {
if ("setSecurityManager".equals(permission.getName())) {
return;
}
}
}
}
/*
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
TestEnvironment.reset();
}
/*
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
TestEnvironment.reset();
super.tearDown();
}
}