summaryrefslogtreecommitdiffstats
path: root/src/test/java/com/btr/proxy/selector/pac/PacProxySelectorTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/btr/proxy/selector/pac/PacProxySelectorTest.java')
-rw-r--r--src/test/java/com/btr/proxy/selector/pac/PacProxySelectorTest.java133
1 files changed, 133 insertions, 0 deletions
diff --git a/src/test/java/com/btr/proxy/selector/pac/PacProxySelectorTest.java b/src/test/java/com/btr/proxy/selector/pac/PacProxySelectorTest.java
new file mode 100644
index 0000000..a08f9c1
--- /dev/null
+++ b/src/test/java/com/btr/proxy/selector/pac/PacProxySelectorTest.java
@@ -0,0 +1,133 @@
+package com.btr.proxy.selector.pac;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.MalformedURLException;
+import java.net.Proxy;
+import java.net.Proxy.Type;
+import java.net.ProxySelector;
+import java.net.SocketAddress;
+import java.net.URI;
+import java.util.List;
+
+import org.junit.Test;
+
+import com.btr.proxy.TestUtil;
+import com.btr.proxy.util.ProxyException;
+
+
+/*****************************************************************************
+ * Tests for the Pac script parser and proxy selector.
+ * @author Bernd Rosstauscher (proxyvole@rosstauscher.de) Copyright 2009
+ ****************************************************************************/
+
+public class PacProxySelectorTest {
+
+ /*************************************************************************
+ * Test method
+ * @throws ProxyException on proxy detection error.
+ * @throws MalformedURLException on URL erros
+ ************************************************************************/
+ @Test
+ public void testScriptExecution() throws ProxyException, MalformedURLException {
+ List<Proxy> result = new PacProxySelector(
+ new UrlPacScriptSource(toUrl("test1.pac"))).select(TestUtil.HTTP_TEST_URI);
+
+ assertEquals(TestUtil.HTTP_TEST_PROXY, result.get(0));
+ }
+
+ /*************************************************************************
+ * Test method
+ * @throws ProxyException on proxy detection error.
+ * @throws MalformedURLException on URL erros
+ ************************************************************************/
+ @Test
+ public void testScriptExecution2() throws ProxyException, MalformedURLException {
+ PacProxySelector pacProxySelector = new PacProxySelector(
+ new UrlPacScriptSource(toUrl("test2.pac")));
+ List<Proxy> result = pacProxySelector.select(TestUtil.HTTP_TEST_URI);
+ assertEquals(Proxy.NO_PROXY, result.get(0));
+
+ result = pacProxySelector.select(TestUtil.HTTPS_TEST_URI);
+ assertEquals(Proxy.NO_PROXY, result.get(0));
+ }
+
+ /*************************************************************************
+ * Test download fix to prevent infinite loop.
+ * @throws ProxyException on proxy detection error.
+ * @throws MalformedURLException on URL erros
+ ************************************************************************/
+ @Test
+ public void pacDownloadFromURLShouldNotUseProxy() throws ProxyException, MalformedURLException {
+ ProxySelector oldOne = ProxySelector.getDefault();
+ try {
+ ProxySelector.setDefault(new ProxySelector() {
+ @Override
+ public List<Proxy> select(URI uri) {
+ throw new IllegalStateException("Should not download via proxy");
+ }
+
+ @Override
+ public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
+ // Not used
+ }
+ });
+
+ PacProxySelector pacProxySelector = new PacProxySelector(
+ new UrlPacScriptSource("http://www.test.invalid/wpad.pac"));
+ pacProxySelector.select(TestUtil.HTTPS_TEST_URI);
+ } finally {
+ ProxySelector.setDefault(oldOne);
+ }
+ }
+
+ /*************************************************************************
+ * Test method
+ * @throws ProxyException on proxy detection error.
+ * @throws MalformedURLException on URL erros
+ ************************************************************************/
+ @Test
+ public void testScriptMuliProxy() throws ProxyException, MalformedURLException {
+ PacProxySelector pacProxySelector = new PacProxySelector(
+ new UrlPacScriptSource(toUrl("testMultiProxy.pac")));
+ List<Proxy> result = pacProxySelector.select(TestUtil.HTTP_TEST_URI);
+ assertEquals(2, result.size());
+ assertEquals(new Proxy(Type.HTTP, InetSocketAddress.createUnresolved("my-proxy.com", 80)), result.get(0));
+ assertEquals(new Proxy(Type.HTTP, InetSocketAddress.createUnresolved("my-proxy2.com", 8080)), result.get(1));
+ }
+
+ /*************************************************************************
+ * Test method for the override local IP feature.
+ * @throws ProxyException on proxy detection error.
+ * @throws MalformedURLException on URL erros
+ ************************************************************************/
+ @Test
+ public void testLocalIPOverride() throws ProxyException, MalformedURLException {
+ System.setProperty(PacScriptMethods.OVERRIDE_LOCAL_IP, "123.123.123.123");
+ try {
+ PacProxySelector pacProxySelector = new PacProxySelector(
+ new UrlPacScriptSource(toUrl("testLocalIP.pac")));
+ List<Proxy> result = pacProxySelector.select(TestUtil.HTTP_TEST_URI);
+ assertEquals(result.get(0), new Proxy(Type.HTTP, InetSocketAddress.createUnresolved("123.123.123.123", 8080)));
+ } finally {
+ System.setProperty(PacScriptMethods.OVERRIDE_LOCAL_IP, "");
+ }
+
+ }
+
+ /*************************************************************************
+ * Helper method to build the url to the given test file
+ * @param testFile the name of the test file.
+ * @return the URL.
+ * @throws MalformedURLException
+ ************************************************************************/
+
+ private String toUrl(String testFile) throws MalformedURLException {
+ return PacProxySelectorTest.class.getResource("/" + TestUtil.TEST_DATA_FOLDER + "/pac/" + testFile).toString();
+ }
+
+
+}
+