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