/*******************************************************************************
* Copyright (c) 2007, 2008 compeople AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* compeople AG (Stefan Liebig) - initial API and implementation
*******************************************************************************/
package de.compeople.commons.net.proxy;
import static org.junit.Assert.assertEquals;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import de.compeople.commons.net.proxy.ManualProxySelector;
/**
* Nomen est omen!
*/
public class ManualProxySelectorTest {
private Proxy proxy1 = new Proxy( Proxy.Type.HTTP, new InetSocketAddress( "test1", 8080 ) );
private Proxy proxy2 = new Proxy( Proxy.Type.HTTP, new InetSocketAddress( "test2", 8080 ) );
private Proxy proxy3 = new Proxy( Proxy.Type.HTTP, new InetSocketAddress( "test3", 8080 ) );
private Proxy proxy4 = new Proxy( Proxy.Type.HTTP, new InetSocketAddress( "test4", 8080 ) );
/**
* Nomen est omen!
* @throws URISyntaxException
*/
public void testDirect() throws URISyntaxException {
ManualProxySelector selector = new ManualProxySelector();
URI uri = new URI( "http://web.de" );
List<Proxy> proxies = selector.select( uri );
assertEquals( 1, proxies.size() );
assertEquals( Proxy.NO_PROXY, proxies.get( 0 ) );
}
/**
* Nomen est omen!
* @throws URISyntaxException
*/
public void testUniversal() throws URISyntaxException {
List<Proxy> universal = new ArrayList<Proxy>();
universal.add( proxy1 );
universal.add( proxy2 );
ManualProxySelector selector = new ManualProxySelector( universal );
URI uri = new URI( "http://web.de" );
List<Proxy> proxies = selector.select( uri );
assertEquals( 2, proxies.size() );
assertEquals( universal.get( 0 ), proxies.get( 0 ) );
assertEquals( universal.get( 1 ), proxies.get( 1 ) );
}
/**
* Nomen est omen!
* @throws URISyntaxException
*/
public void testSpecific() throws URISyntaxException {
List<Proxy> specificProxies = new ArrayList<Proxy>();
specificProxies.add( proxy1 );
specificProxies.add( proxy2 );
Map<String, List<Proxy>> specific = new HashMap<String, List<Proxy>>();
specific.put( "http", specificProxies );
ManualProxySelector selector = new ManualProxySelector( specific );
URI uri = new URI( "http://web.de" );
List<Proxy> proxies = selector.select( uri );
assertEquals( 2, proxies.size() );
assertEquals( specificProxies.get( 0 ), proxies.get( 0 ) );
assertEquals( specificProxies.get( 1 ), proxies.get( 1 ) );
uri = new URI( "socks://web.de" );
proxies = selector.select( uri );
assertEquals( 1, proxies.size() );
}
/**
* Nomen est omen!
* @throws URISyntaxException
*/
public void testUniversalAndSpecific1() throws URISyntaxException {
List<Proxy> universalProxies = new ArrayList<Proxy>();
universalProxies.add( proxy1 );
universalProxies.add( proxy2 );
List<Proxy> specificProxies = new ArrayList<Proxy>();
specificProxies.add( proxy3 );
specificProxies.add( proxy4 );
Map<String, List<Proxy>> specific = new HashMap<String, List<Proxy>>();
specific.put( "http", specificProxies );
ManualProxySelector selector = new ManualProxySelector( universalProxies, specific );
URI uri = new URI( "http://web.de" );
List<Proxy> proxies = selector.select( uri );
assertEquals( 2, proxies.size() );
assertEquals( specificProxies.get( 0 ), proxies.get( 0 ) );
assertEquals( specificProxies.get( 1 ), proxies.get( 1 ) );
uri = new URI( "socks://web.de" );
proxies = selector.select( uri );
assertEquals( 1, proxies.size() );
}
/**
* Nomen est omen!
* @throws URISyntaxException
*/
public void testUniversalAndSpecific2a() throws URISyntaxException {
List<Proxy> universalProxies = new ArrayList<Proxy>();
universalProxies.add( proxy1 );
universalProxies.add( proxy2 );
Map<String, List<Proxy>> specific = new HashMap<String, List<Proxy>>();
ManualProxySelector selector = new ManualProxySelector( universalProxies, specific );
URI uri = new URI( "http://web.de" );
List<Proxy> proxies = selector.select( uri );
assertEquals( 2, proxies.size() );
assertEquals( universalProxies.get( 0 ), proxies.get( 0 ) );
assertEquals( universalProxies.get( 1 ), proxies.get( 1 ) );
}
/**
* Nomen est omen!
* @throws URISyntaxException
*/
public void testUniversalAndSpecific2b() throws URISyntaxException {
List<Proxy> universalProxies = new ArrayList<Proxy>();
universalProxies.add( proxy1 );
universalProxies.add( proxy2 );
ManualProxySelector selector = new ManualProxySelector( universalProxies, null );
URI uri = new URI( "http://web.de" );
List<Proxy> proxies = selector.select( uri );
assertEquals( 2, proxies.size() );
assertEquals( universalProxies.get( 0 ), proxies.get( 0 ) );
assertEquals( universalProxies.get( 1 ), proxies.get( 1 ) );
}
/**
* Nomen est omen!
* @throws URISyntaxException
*/
public void testUniversalAndSpecific3a() throws URISyntaxException {
List<Proxy> universalProxies = new ArrayList<Proxy>();
ManualProxySelector selector = new ManualProxySelector( universalProxies, null );
URI uri = new URI( "http://web.de" );
List<Proxy> proxies = selector.select( uri );
assertEquals( 1, proxies.size() );
assertEquals( Proxy.NO_PROXY, proxies.get( 0 ) );
}
/**
* Nomen est omen!
* @throws URISyntaxException
*/
public void testUniversalAndSpecific3b() throws URISyntaxException {
List<Proxy> universalProxies = new ArrayList<Proxy>();
Map<String, List<Proxy>> specific = new HashMap<String, List<Proxy>>();
ManualProxySelector selector = new ManualProxySelector( universalProxies, specific );
URI uri = new URI( "http://web.de" );
List<Proxy> proxies = selector.select( uri );
assertEquals( 1, proxies.size() );
assertEquals( Proxy.NO_PROXY, proxies.get( 0 ) );
}
/**
* Nomen est omen!
* @throws URISyntaxException
*/
public void testUniversalAndSpecific3c() throws URISyntaxException {
ManualProxySelector selector = new ManualProxySelector( null, null );
URI uri = new URI( "http://web.de" );
List<Proxy> proxies = selector.select( uri );
assertEquals( 1, proxies.size() );
assertEquals( Proxy.NO_PROXY, proxies.get( 0 ) );
}
}