001package org.eclipse.aether.internal.impl;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 * 
012 *  http://www.apache.org/licenses/LICENSE-2.0
013 * 
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import static org.junit.Assert.*;
023
024import java.util.Arrays;
025import java.util.List;
026
027import org.eclipse.aether.DefaultRepositorySystemSession;
028import org.eclipse.aether.internal.test.util.TestUtils;
029import org.eclipse.aether.repository.Authentication;
030import org.eclipse.aether.repository.Proxy;
031import org.eclipse.aether.repository.RemoteRepository;
032import org.eclipse.aether.util.repository.AuthenticationBuilder;
033import org.eclipse.aether.util.repository.DefaultAuthenticationSelector;
034import org.eclipse.aether.util.repository.DefaultMirrorSelector;
035import org.eclipse.aether.util.repository.DefaultProxySelector;
036import org.junit.Before;
037import org.junit.Test;
038
039public class DefaultRepositorySystemTest
040{
041
042    private DefaultRepositorySystem system;
043
044    private DefaultRepositorySystemSession session;
045
046    @Before
047    public void init()
048    {
049        DefaultRemoteRepositoryManager remoteRepoManager = new DefaultRemoteRepositoryManager();
050        system = new DefaultRepositorySystem();
051        system.setRemoteRepositoryManager( remoteRepoManager );
052        session = TestUtils.newSession();
053    }
054
055    @Test
056    public void testNewResolutionRepositories()
057    {
058        Proxy proxy = new Proxy( "http", "localhost", 8080 );
059        DefaultProxySelector proxySelector = new DefaultProxySelector();
060        proxySelector.add( proxy, null );
061        session.setProxySelector( proxySelector );
062
063        Authentication auth = new AuthenticationBuilder().addUsername( "user" ).build();
064        DefaultAuthenticationSelector authSelector = new DefaultAuthenticationSelector();
065        authSelector.add( "mirror", auth );
066        authSelector.add( "test-2", auth );
067        session.setAuthenticationSelector( authSelector );
068
069        DefaultMirrorSelector mirrorSelector = new DefaultMirrorSelector();
070        mirrorSelector.add( "mirror", "http:void", "default", false, "test-1", null );
071        session.setMirrorSelector( mirrorSelector );
072
073        RemoteRepository rawRepo1 = new RemoteRepository.Builder( "test-1", "default", "http://void" ).build();
074        RemoteRepository rawRepo2 = new RemoteRepository.Builder( "test-2", "default", "http://null" ).build();
075        List<RemoteRepository> resolveRepos =
076            system.newResolutionRepositories( session, Arrays.asList( rawRepo1, rawRepo2 ) );
077        assertNotNull( resolveRepos );
078        assertEquals( 2, resolveRepos.size() );
079        RemoteRepository resolveRepo = resolveRepos.get( 0 );
080        assertNotNull( resolveRepo );
081        assertEquals( "mirror", resolveRepo.getId() );
082        assertSame( proxy, resolveRepo.getProxy() );
083        assertSame( auth, resolveRepo.getAuthentication() );
084        resolveRepo = resolveRepos.get( 1 );
085        assertNotNull( resolveRepo );
086        assertEquals( "test-2", resolveRepo.getId() );
087        assertSame( proxy, resolveRepo.getProxy() );
088        assertSame( auth, resolveRepo.getAuthentication() );
089    }
090
091    @Test
092    public void testNewDeploymentRepository()
093    {
094        Proxy proxy = new Proxy( "http", "localhost", 8080 );
095        DefaultProxySelector proxySelector = new DefaultProxySelector();
096        proxySelector.add( proxy, null );
097        session.setProxySelector( proxySelector );
098
099        Authentication auth = new AuthenticationBuilder().addUsername( "user" ).build();
100        DefaultAuthenticationSelector authSelector = new DefaultAuthenticationSelector();
101        authSelector.add( "test", auth );
102        session.setAuthenticationSelector( authSelector );
103
104        DefaultMirrorSelector mirrorSelector = new DefaultMirrorSelector();
105        mirrorSelector.add( "mirror", "file:void", "default", false, "*", null );
106        session.setMirrorSelector( mirrorSelector );
107
108        RemoteRepository rawRepo = new RemoteRepository.Builder( "test", "default", "http://void" ).build();
109        RemoteRepository deployRepo = system.newDeploymentRepository( session, rawRepo );
110        assertNotNull( deployRepo );
111        assertSame( proxy, deployRepo.getProxy() );
112        assertSame( auth, deployRepo.getAuthentication() );
113    }
114
115}