blob: 02a665a09c1bd1d8bc603eeaeb1b3a7446eb38ac [file] [log] [blame]
package org.eclipse.aether.util.repository;
/*
* 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.
*/
import static org.junit.Assert.*;
import java.util.Arrays;
import org.eclipse.aether.repository.Proxy;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.util.repository.DefaultProxySelector.NonProxyHosts;
import org.junit.Test;
/**
*/
public class DefaultProxySelectorTest
{
private RemoteRepository newRepo( String url )
{
return new RemoteRepository.Builder( "id", "type", url ).build();
}
private boolean isNonProxyHost( String host, String nonProxyHosts )
{
return new NonProxyHosts( NonProxyHosts.split( nonProxyHosts ) ).isNonProxyHost( host );
}
private boolean isNonProxyHost( String host, String... nonProxyHosts )
{
return new NonProxyHosts( nonProxyHosts != null ? Arrays.asList( nonProxyHosts ) : null ).isNonProxyHost( host );
}
@Test
public void testIsNonProxyHost_Blank()
{
assertFalse( isNonProxyHost( "www.eclipse.org", (String) null ) );
assertFalse( isNonProxyHost( "www.eclipse.org", "" ) );
assertFalse( isNonProxyHost( "", "" ) );
assertFalse( isNonProxyHost( "www.eclipse.org", (String[]) null ) );
assertFalse( isNonProxyHost( "www.eclipse.org", new String[0] ) );
assertFalse( isNonProxyHost( "", new String[0] ) );
assertFalse( isNonProxyHost( "", new String[] { null } ) );
assertFalse( isNonProxyHost( "", new String[] { "" } ) );
}
@Test
public void testIsNonProxyHost_Wildcard()
{
assertTrue( isNonProxyHost( "www.eclipse.org", "*" ) );
assertTrue( isNonProxyHost( "www.eclipse.org", "*.org" ) );
assertFalse( isNonProxyHost( "www.eclipse.org", "*.com" ) );
assertTrue( isNonProxyHost( "www.eclipse.org", "www.*" ) );
assertTrue( isNonProxyHost( "www.eclipse.org", "www.*.org" ) );
}
@Test
public void testIsNonProxyHost_Multiple()
{
assertTrue( isNonProxyHost( "eclipse.org", "eclipse.org|host2" ) );
assertTrue( isNonProxyHost( "eclipse.org", "host1|eclipse.org" ) );
assertTrue( isNonProxyHost( "eclipse.org", "host1|eclipse.org|host2" ) );
assertTrue( isNonProxyHost( "eclipse.org", "eclipse.org,host2" ) );
assertTrue( isNonProxyHost( "eclipse.org", "host1,eclipse.org" ) );
assertTrue( isNonProxyHost( "eclipse.org", "host1,eclipse.org,host2" ) );
assertFalse( isNonProxyHost( "", "||host||" ) );
assertFalse( isNonProxyHost( "", ",,host,," ) );
}
@Test
public void testIsNonProxyHost_Trimming()
{
assertFalse( isNonProxyHost( "", " " ) );
assertTrue( isNonProxyHost( "eclipse.org", " eclipse.org " ) );
assertTrue( isNonProxyHost( "eclipse.org", "host1| eclipse.org |host2" ) );
assertTrue( isNonProxyHost( "eclipse.org", "host1|eclipse.org " ) );
assertTrue( isNonProxyHost( "eclipse.org", " eclipse.org|host2" ) );
}
@Test
public void testIsNonProxyHost_Misc()
{
assertFalse( isNonProxyHost( "www.eclipse.org", "www.eclipse.com" ) );
assertFalse( isNonProxyHost( "www.eclipse.org", "eclipse.org" ) );
}
@Test
public void testIsNonProxyHost_CaseInsensitivity()
{
assertTrue( isNonProxyHost( "www.eclipse.org", "www.ECLIPSE.org" ) );
assertTrue( isNonProxyHost( "www.ECLIPSE.org", "www.eclipse.org" ) );
}
@Test
public void testGetProxy_FirstMatchWins()
{
DefaultProxySelector selector = new DefaultProxySelector();
Proxy proxy1 = new Proxy( Proxy.TYPE_HTTP, "proxy", 88 );
selector.add( proxy1, "localhost" );
Proxy proxy2 = new Proxy( Proxy.TYPE_HTTP, "other", 8888 );
selector.add( proxy2, "" );
assertSame( proxy1, selector.getProxy( newRepo( "http://eclipse.org/" ) ) );
assertSame( proxy2, selector.getProxy( newRepo( "http://localhost/" ) ) );
}
@Test
public void testGetProxy_Http()
{
DefaultProxySelector selector = new DefaultProxySelector();
Proxy proxy1 = new Proxy( Proxy.TYPE_HTTP, "proxy", 88 );
selector.add( proxy1, "localhost" );
assertSame( proxy1, selector.getProxy( newRepo( "http://eclipse.org/" ) ) );
assertSame( proxy1, selector.getProxy( newRepo( "HTTP://eclipse.org/" ) ) );
assertSame( proxy1, selector.getProxy( newRepo( "https://eclipse.org/" ) ) );
assertSame( proxy1, selector.getProxy( newRepo( "HTTPS://eclipse.org/" ) ) );
assertNull( selector.getProxy( newRepo( "http://localhost/" ) ) );
Proxy proxy2 = new Proxy( Proxy.TYPE_HTTPS, "sproxy", 888 );
selector.add( proxy2, "localhost" );
assertSame( proxy1, selector.getProxy( newRepo( "http://eclipse.org/" ) ) );
assertSame( proxy1, selector.getProxy( newRepo( "HTTP://eclipse.org/" ) ) );
assertSame( proxy2, selector.getProxy( newRepo( "https://eclipse.org/" ) ) );
assertSame( proxy2, selector.getProxy( newRepo( "HTTPS://eclipse.org/" ) ) );
}
@Test
public void testGetProxy_WebDav()
{
DefaultProxySelector selector = new DefaultProxySelector();
Proxy proxy1 = new Proxy( Proxy.TYPE_HTTP, "proxy", 88 );
selector.add( proxy1, "localhost" );
assertSame( proxy1, selector.getProxy( newRepo( "dav://eclipse.org/" ) ) );
assertSame( proxy1, selector.getProxy( newRepo( "dav:http://eclipse.org/" ) ) );
assertSame( proxy1, selector.getProxy( newRepo( "davs://eclipse.org/" ) ) );
assertSame( proxy1, selector.getProxy( newRepo( "dav:https://eclipse.org/" ) ) );
assertNull( selector.getProxy( newRepo( "dav://localhost/" ) ) );
Proxy proxy2 = new Proxy( Proxy.TYPE_HTTPS, "sproxy", 888 );
selector.add( proxy2, "localhost" );
assertSame( proxy1, selector.getProxy( newRepo( "dav://eclipse.org/" ) ) );
assertSame( proxy1, selector.getProxy( newRepo( "dav:http://eclipse.org/" ) ) );
assertSame( proxy2, selector.getProxy( newRepo( "davs://eclipse.org/" ) ) );
assertSame( proxy2, selector.getProxy( newRepo( "dav:https://eclipse.org/" ) ) );
}
}