View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.eclipse.aether.internal.test.util;
20  
21  import java.util.Iterator;
22  import java.util.List;
23  
24  import org.eclipse.aether.RepositorySystemSession;
25  import org.eclipse.aether.artifact.Artifact;
26  import org.eclipse.aether.artifact.DefaultArtifact;
27  import org.eclipse.aether.graph.Dependency;
28  import org.eclipse.aether.graph.Exclusion;
29  import org.eclipse.aether.repository.RemoteRepository;
30  import org.eclipse.aether.resolution.ArtifactDescriptorException;
31  import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
32  import org.eclipse.aether.resolution.ArtifactDescriptorResult;
33  import org.junit.jupiter.api.BeforeEach;
34  import org.junit.jupiter.api.Test;
35  
36  import static org.junit.jupiter.api.Assertions.*;
37  
38  /**
39   */
40  public class IniArtifactDescriptorReaderTest {
41  
42      private IniArtifactDescriptorReader reader;
43  
44      private RepositorySystemSession session;
45  
46      @BeforeEach
47      void setup() {
48          reader = new IniArtifactDescriptorReader("org/eclipse/aether/internal/test/util/");
49          session = TestUtils.newSession();
50      }
51  
52      @Test
53      void testMissingDescriptor() throws ArtifactDescriptorException {
54          assertThrows(ArtifactDescriptorException.class, () -> {
55              Artifact art = new DefaultArtifact("missing:aid:ver:ext");
56              ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(art, null, "");
57              reader.readArtifactDescriptor(session, request);
58          });
59      }
60  
61      @Test
62      void testLookup() throws ArtifactDescriptorException {
63          Artifact art = new DefaultArtifact("gid:aid:ext:ver");
64          ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(art, null, "");
65          ArtifactDescriptorResult description = reader.readArtifactDescriptor(session, request);
66  
67          assertEquals(request, description.getRequest());
68          assertEquals(art.setVersion("1"), description.getArtifact());
69  
70          assertEquals(1, description.getRelocations().size());
71          Artifact artifact = description.getRelocations().get(0);
72          assertEquals("gid", artifact.getGroupId());
73          assertEquals("aid", artifact.getArtifactId());
74          assertEquals("ver", artifact.getVersion());
75          assertEquals("ext", artifact.getExtension());
76  
77          assertEquals(1, description.getRepositories().size());
78          RemoteRepository repo = description.getRepositories().get(0);
79          assertEquals("id", repo.getId());
80          assertEquals("type", repo.getContentType());
81          assertEquals("protocol://some/url?for=testing", repo.getUrl());
82  
83          assertDependencies(description.getDependencies());
84          assertDependencies(description.getManagedDependencies());
85      }
86  
87      private void assertDependencies(List<Dependency> deps) {
88          assertEquals(4, deps.size());
89  
90          Dependency dep = deps.get(0);
91          assertEquals("scope", dep.getScope());
92          assertFalse(dep.isOptional());
93          assertEquals(2, dep.getExclusions().size());
94          Iterator<Exclusion> it = dep.getExclusions().iterator();
95          Exclusion excl = it.next();
96          assertEquals("gid3", excl.getGroupId());
97          assertEquals("aid", excl.getArtifactId());
98          excl = it.next();
99          assertEquals("gid2", excl.getGroupId());
100         assertEquals("aid2", excl.getArtifactId());
101 
102         Artifact art = dep.getArtifact();
103         assertEquals("gid", art.getGroupId());
104         assertEquals("aid", art.getArtifactId());
105         assertEquals("ver", art.getVersion());
106         assertEquals("ext", art.getExtension());
107 
108         dep = deps.get(1);
109         assertEquals("scope", dep.getScope());
110         assertTrue(dep.isOptional());
111         assertEquals(0, dep.getExclusions().size());
112 
113         art = dep.getArtifact();
114         assertEquals("gid", art.getGroupId());
115         assertEquals("aid2", art.getArtifactId());
116         assertEquals("ver", art.getVersion());
117         assertEquals("ext", art.getExtension());
118 
119         dep = deps.get(2);
120         assertEquals("scope", dep.getScope());
121         assertTrue(dep.isOptional());
122         assertEquals(0, dep.getExclusions().size());
123 
124         art = dep.getArtifact();
125         assertEquals("gid", art.getGroupId());
126         assertEquals("aid", art.getArtifactId());
127         assertEquals("ver3", art.getVersion());
128         assertEquals("ext", art.getExtension());
129 
130         dep = deps.get(3);
131         assertEquals("scope5", dep.getScope());
132         assertTrue(dep.isOptional());
133         assertEquals(0, dep.getExclusions().size());
134 
135         art = dep.getArtifact();
136         assertEquals("gid1", art.getGroupId());
137         assertEquals("aid", art.getArtifactId());
138         assertEquals("ver", art.getVersion());
139         assertEquals("ext", art.getExtension());
140     }
141 }