001package org.eclipse.aether.internal.test.util;
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.io.IOException;
025import java.util.Iterator;
026import java.util.List;
027
028import org.eclipse.aether.RepositorySystemSession;
029import org.eclipse.aether.artifact.Artifact;
030import org.eclipse.aether.artifact.DefaultArtifact;
031import org.eclipse.aether.graph.Dependency;
032import org.eclipse.aether.graph.Exclusion;
033import org.eclipse.aether.internal.test.util.IniArtifactDescriptorReader;
034import org.eclipse.aether.repository.RemoteRepository;
035import org.eclipse.aether.resolution.ArtifactDescriptorException;
036import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
037import org.eclipse.aether.resolution.ArtifactDescriptorResult;
038import org.junit.Before;
039import org.junit.Test;
040
041/**
042 */
043public class IniArtifactDescriptorReaderTest
044{
045
046    private IniArtifactDescriptorReader reader;
047
048    private RepositorySystemSession session;
049
050    @Before
051    public void setup()
052        throws IOException
053    {
054        reader = new IniArtifactDescriptorReader( "org/eclipse/aether/internal/test/util/" );
055        session = TestUtils.newSession();
056    }
057
058    @Test( expected = ArtifactDescriptorException.class )
059    public void testMissingDescriptor()
060        throws ArtifactDescriptorException
061    {
062        Artifact art = new DefaultArtifact( "missing:aid:ver:ext" );
063        ArtifactDescriptorRequest request = new ArtifactDescriptorRequest( art, null, "" );
064        reader.readArtifactDescriptor( session, request );
065    }
066
067    @Test
068    public void testLookup()
069        throws ArtifactDescriptorException
070    {
071        Artifact art = new DefaultArtifact( "gid:aid:ext:ver" );
072        ArtifactDescriptorRequest request = new ArtifactDescriptorRequest( art, null, "" );
073        ArtifactDescriptorResult description = reader.readArtifactDescriptor( session, request );
074
075        assertEquals( request, description.getRequest() );
076        assertEquals( art.setVersion( "1" ), description.getArtifact() );
077
078        assertEquals( 1, description.getRelocations().size() );
079        Artifact artifact = description.getRelocations().get( 0 );
080        assertEquals( "gid", artifact.getGroupId() );
081        assertEquals( "aid", artifact.getArtifactId() );
082        assertEquals( "ver", artifact.getVersion() );
083        assertEquals( "ext", artifact.getExtension() );
084
085        assertEquals( 1, description.getRepositories().size() );
086        RemoteRepository repo = description.getRepositories().get( 0 );
087        assertEquals( "id", repo.getId() );
088        assertEquals( "type", repo.getContentType() );
089        assertEquals( "protocol://some/url?for=testing", repo.getUrl() );
090
091        assertDependencies( description.getDependencies() );
092        assertDependencies( description.getManagedDependencies() );
093
094    }
095
096    private void assertDependencies( List<Dependency> deps )
097    {
098        assertEquals( 4, deps.size() );
099
100        Dependency dep = deps.get( 0 );
101        assertEquals( "scope", dep.getScope() );
102        assertEquals( false, dep.isOptional() );
103        assertEquals( 2, dep.getExclusions().size() );
104        Iterator<Exclusion> it = dep.getExclusions().iterator();
105        Exclusion excl = it.next();
106        assertEquals( "gid3", excl.getGroupId() );
107        assertEquals( "aid", excl.getArtifactId() );
108        excl = it.next();
109        assertEquals( "gid2", excl.getGroupId() );
110        assertEquals( "aid2", excl.getArtifactId() );
111
112        Artifact art = dep.getArtifact();
113        assertEquals( "gid", art.getGroupId() );
114        assertEquals( "aid", art.getArtifactId() );
115        assertEquals( "ver", art.getVersion() );
116        assertEquals( "ext", art.getExtension() );
117
118        dep = deps.get( 1 );
119        assertEquals( "scope", dep.getScope() );
120        assertEquals( true, dep.isOptional() );
121        assertEquals( 0, dep.getExclusions().size() );
122
123        art = dep.getArtifact();
124        assertEquals( "gid", art.getGroupId() );
125        assertEquals( "aid2", art.getArtifactId() );
126        assertEquals( "ver", art.getVersion() );
127        assertEquals( "ext", art.getExtension() );
128
129        dep = deps.get( 2 );
130        assertEquals( "scope", dep.getScope() );
131        assertEquals( true, dep.isOptional() );
132        assertEquals( 0, dep.getExclusions().size() );
133
134        art = dep.getArtifact();
135        assertEquals( "gid", art.getGroupId() );
136        assertEquals( "aid", art.getArtifactId() );
137        assertEquals( "ver3", art.getVersion() );
138        assertEquals( "ext", art.getExtension() );
139
140        dep = deps.get( 3 );
141        assertEquals( "scope5", dep.getScope() );
142        assertEquals( true, dep.isOptional() );
143        assertEquals( 0, dep.getExclusions().size() );
144
145        art = dep.getArtifact();
146        assertEquals( "gid1", art.getGroupId() );
147        assertEquals( "aid", art.getArtifactId() );
148        assertEquals( "ver", art.getVersion() );
149        assertEquals( "ext", art.getExtension() );
150    }
151
152}