/*******************************************************************************
* 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.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
/**
* Test CompoundProxySelector
*/
public class CompoundProxySelectorTest {
private URI uri;
private List<Proxy> universal;
@Before
public void setUp() throws Exception {
uri = new URI("http://www.compeople.de");
universal = new ArrayList<Proxy>();
universal.add(new Proxy(Proxy.Type.HTTP, InetSocketAddress.createUnresolved("www.w3c.org", 80)));
}
/**
* Nomen est omen!
*/
@Test
public void testProxyListNoSelectorContainsNoProxy() {
CompoundProxySelector selector = new CompoundProxySelector();
List<Proxy> proxies = selector.select(uri);
assertEquals(1, proxies.size());
assertEquals(Proxy.NO_PROXY, proxies.get(0));
}
/**
* Nomen est omen!
*/
public void testProxyListSelectorContainsOneProxy() {
CompoundProxySelector selector = new CompoundProxySelector();
selector.addOrReplace(100, new ManualProxySelector(universal, new HashMap<String, List<Proxy>>()));
List<Proxy> proxies = selector.select(uri);
assertEquals(2, proxies.size());
assertEquals(universal.get(0), proxies.get(0));
assertEquals(Proxy.NO_PROXY, proxies.get(1));
}
/**
* Nomen est omen!
*/
public void testProxyListSelectorContainsOneProxyAndNoProxy() {
CompoundProxySelector selector = new CompoundProxySelector();
List<Proxy> universalPlus = new ArrayList<Proxy>();
universalPlus.addAll(universal);
universalPlus.add(Proxy.NO_PROXY);
selector.addOrReplace(100, new ManualProxySelector(universalPlus, new HashMap<String, List<Proxy>>()));
List<Proxy> proxies = selector.select(uri);
assertEquals(2, proxies.size());
assertEquals(universal.get(0), proxies.get(0));
assertEquals(Proxy.NO_PROXY, proxies.get(1));
}
/**
* Nomen est omen!
*/
public void testProxyListSelectorContainsNoProxyAndOneProxyAndNoProxy() {
CompoundProxySelector selector = new CompoundProxySelector();
List<Proxy> universalPlus = new ArrayList<Proxy>();
universalPlus.add(Proxy.NO_PROXY);
universalPlus.addAll(universal);
universalPlus.add(Proxy.NO_PROXY);
selector.addOrReplace(100, new ManualProxySelector(universalPlus, new HashMap<String, List<Proxy>>()));
List<Proxy> proxies = selector.select(uri);
assertEquals(2, proxies.size());
assertEquals(universal.get(0), proxies.get(1));
assertEquals(Proxy.NO_PROXY, proxies.get(0));
}
/**
* Nomen est omen!
*/
public void testProxyListDoubleSelectorDifferentPriosContainsNoProxyAndOneProxyAndNoProxy() {
CompoundProxySelector selector = new CompoundProxySelector();
List<Proxy> universalPlus = new ArrayList<Proxy>();
universalPlus.add(Proxy.NO_PROXY);
universalPlus.addAll(universal);
universalPlus.add(Proxy.NO_PROXY);
selector.addOrReplace(100, new ManualProxySelector(universalPlus, new HashMap<String, List<Proxy>>()));
selector.addOrReplace(200, new ManualProxySelector(universalPlus, new HashMap<String, List<Proxy>>()));
List<Proxy> proxies = selector.select(uri);
assertEquals(2, proxies.size());
assertEquals(universal.get(0), proxies.get(1));
assertEquals(Proxy.NO_PROXY, proxies.get(0));
}
/**
* Nomen est omen!
*/
public void testProxyListDoubleSelectorSamePriosContainsNoProxyAndOneProxyAndNoProxy() {
CompoundProxySelector selector = new CompoundProxySelector();
List<Proxy> universalPlus = new ArrayList<Proxy>();
universalPlus.add(Proxy.NO_PROXY);
universalPlus.addAll(universal);
universalPlus.add(Proxy.NO_PROXY);
selector.addOrReplace(100, new ManualProxySelector(universalPlus, new HashMap<String, List<Proxy>>()));
List<Proxy> universalPlusPlus = new ArrayList<Proxy>();
universalPlusPlus.addAll(universal);
universalPlusPlus.add(new Proxy(Proxy.Type.HTTP, InetSocketAddress.createUnresolved("www.web.de", 80)));
selector.addOrReplace(100, new ManualProxySelector(universalPlusPlus, new HashMap<String, List<Proxy>>()));
List<Proxy> proxies = selector.select(uri);
assertEquals(3, proxies.size());
assertEquals(universalPlusPlus.get(0), proxies.get(0));
assertEquals(universalPlusPlus.get(1), proxies.get(1));
assertEquals(Proxy.NO_PROXY, proxies.get(2));
}
/**
* Nomen est omen!
*/
public void testProxyListDoubleSelectorDifferentPriosContainsNoProxyAndOneProxyAndNoProxyAndMore() {
CompoundProxySelector selector = new CompoundProxySelector();
List<Proxy> universalPlus = new ArrayList<Proxy>();
universalPlus.add(Proxy.NO_PROXY);
universalPlus.addAll(universal);
universalPlus.add(Proxy.NO_PROXY);
selector.addOrReplace(100, new ManualProxySelector(universalPlus, new HashMap<String, List<Proxy>>()));
List<Proxy> universalPlusPlus = new ArrayList<Proxy>();
universalPlusPlus.addAll(universal);
universalPlusPlus.add(new Proxy(Proxy.Type.HTTP, InetSocketAddress.createUnresolved("www.web.de", 80)));
selector.addOrReplace(200, new ManualProxySelector(universalPlusPlus, new HashMap<String, List<Proxy>>()));
List<Proxy> proxies = selector.select(uri);
assertEquals(3, proxies.size());
assertEquals(Proxy.NO_PROXY, proxies.get(0));
assertEquals(universal.get(0), proxies.get(1));
assertEquals(new Proxy(Proxy.Type.HTTP, InetSocketAddress.createUnresolved("www.web.de", 80)), proxies.get(2));
}
}