1 package org.eclipse.aether.internal.impl;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import static org.junit.Assert.*;
23
24 import java.net.URI;
25 import java.util.List;
26 import java.util.Locale;
27
28 import org.eclipse.aether.DefaultRepositorySystemSession;
29 import org.eclipse.aether.artifact.DefaultArtifact;
30 import org.eclipse.aether.internal.test.util.TestUtils;
31 import org.eclipse.aether.metadata.DefaultMetadata;
32 import org.eclipse.aether.metadata.Metadata;
33 import org.eclipse.aether.repository.RemoteRepository;
34 import org.eclipse.aether.spi.connector.layout.RepositoryLayout;
35 import org.eclipse.aether.spi.connector.layout.RepositoryLayout.Checksum;
36 import org.eclipse.aether.transfer.NoRepositoryLayoutException;
37 import org.junit.Before;
38 import org.junit.Test;
39
40 public class Maven2RepositoryLayoutFactoryTest
41 {
42
43 private DefaultRepositorySystemSession session;
44
45 private Maven2RepositoryLayoutFactory factory;
46
47 private RepositoryLayout layout;
48
49 private RemoteRepository newRepo( String type )
50 {
51 return new RemoteRepository.Builder( "test", type, "classpath:/nil" ).build();
52 }
53
54 private void assertChecksum( Checksum actual, String expectedUri, String expectedAlgo )
55 {
56 assertEquals( expectedUri, actual.getLocation().toString() );
57 assertEquals( expectedAlgo, actual.getAlgorithm() );
58 }
59
60 private void assertChecksums( List<Checksum> actual, String baseUri, String... algos )
61 {
62 assertEquals( algos.length, actual.size() );
63 for ( int i = 0; i < algos.length; i++ )
64 {
65 String uri = baseUri + '.' + algos[i].replace( "-", "" ).toLowerCase( Locale.ENGLISH );
66 assertChecksum( actual.get( i ), uri, algos[i] );
67 }
68 }
69
70 @Before
71 public void setUp()
72 throws Exception
73 {
74 session = TestUtils.newSession();
75 factory = new Maven2RepositoryLayoutFactory();
76 layout = factory.newInstance( session, newRepo( "default" ) );
77 }
78
79 @Test( expected = NoRepositoryLayoutException.class )
80 public void testBadLayout()
81 throws Exception
82 {
83 factory.newInstance( session, newRepo( "DEFAULT" ) );
84 }
85
86 @Test
87 public void testArtifactLocation_Release()
88 {
89 DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "ext", "1.0" );
90 URI uri = layout.getLocation( artifact, false );
91 assertEquals( "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext", uri.toString() );
92 uri = layout.getLocation( artifact, true );
93 assertEquals( "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext", uri.toString() );
94 }
95
96 @Test
97 public void testArtifactLocation_Snapshot()
98 {
99 DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "ext", "1.0-20110329.221805-4" );
100 URI uri = layout.getLocation( artifact, false );
101 assertEquals( "g/i/d/a-i.d/1.0-SNAPSHOT/a-i.d-1.0-20110329.221805-4-cls.ext", uri.toString() );
102 uri = layout.getLocation( artifact, true );
103 assertEquals( "g/i/d/a-i.d/1.0-SNAPSHOT/a-i.d-1.0-20110329.221805-4-cls.ext", uri.toString() );
104 }
105
106 @Test
107 public void testMetadataLocation_RootLevel()
108 {
109 DefaultMetadata metadata = new DefaultMetadata( "archetype-catalog.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT );
110 URI uri = layout.getLocation( metadata, false );
111 assertEquals( "archetype-catalog.xml", uri.toString() );
112 uri = layout.getLocation( metadata, true );
113 assertEquals( "archetype-catalog.xml", uri.toString() );
114 }
115
116 @Test
117 public void testMetadataLocation_GroupLevel()
118 {
119 DefaultMetadata metadata =
120 new DefaultMetadata( "org.apache.maven.plugins", "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT );
121 URI uri = layout.getLocation( metadata, false );
122 assertEquals( "org/apache/maven/plugins/maven-metadata.xml", uri.toString() );
123 uri = layout.getLocation( metadata, true );
124 assertEquals( "org/apache/maven/plugins/maven-metadata.xml", uri.toString() );
125 }
126
127 @Test
128 public void testMetadataLocation_ArtifactLevel()
129 {
130 DefaultMetadata metadata =
131 new DefaultMetadata( "org.apache.maven.plugins", "maven-jar-plugin", "maven-metadata.xml",
132 Metadata.Nature.RELEASE_OR_SNAPSHOT );
133 URI uri = layout.getLocation( metadata, false );
134 assertEquals( "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml", uri.toString() );
135 uri = layout.getLocation( metadata, true );
136 assertEquals( "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml", uri.toString() );
137 }
138
139 @Test
140 public void testMetadataLocation_VersionLevel()
141 {
142 DefaultMetadata metadata =
143 new DefaultMetadata( "org.apache.maven.plugins", "maven-jar-plugin", "1.0-SNAPSHOT", "maven-metadata.xml",
144 Metadata.Nature.RELEASE_OR_SNAPSHOT );
145 URI uri = layout.getLocation( metadata, false );
146 assertEquals( "org/apache/maven/plugins/maven-jar-plugin/1.0-SNAPSHOT/maven-metadata.xml", uri.toString() );
147 uri = layout.getLocation( metadata, true );
148 assertEquals( "org/apache/maven/plugins/maven-jar-plugin/1.0-SNAPSHOT/maven-metadata.xml", uri.toString() );
149 }
150
151 @Test
152 public void testArtifactChecksums_Download()
153 {
154 DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "ext", "1.0" );
155 URI uri = layout.getLocation( artifact, false );
156 List<Checksum> checksums = layout.getChecksums( artifact, false, uri );
157 assertEquals( 2, checksums.size() );
158 assertChecksum( checksums.get( 0 ), "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext.sha1", "SHA-1" );
159 assertChecksum( checksums.get( 1 ), "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext.md5", "MD5" );
160 }
161
162 @Test
163 public void testArtifactChecksums_Upload()
164 {
165 DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "ext", "1.0" );
166 URI uri = layout.getLocation( artifact, true );
167 List<Checksum> checksums = layout.getChecksums( artifact, true, uri );
168 assertEquals( 2, checksums.size() );
169 assertChecksum( checksums.get( 0 ), "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext.sha1", "SHA-1" );
170 assertChecksum( checksums.get( 1 ), "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.ext.md5", "MD5" );
171 }
172
173 @Test
174 public void testMetadataChecksums_Download()
175 {
176 DefaultMetadata metadata =
177 new DefaultMetadata( "org.apache.maven.plugins", "maven-jar-plugin", "maven-metadata.xml",
178 Metadata.Nature.RELEASE_OR_SNAPSHOT );
179 URI uri = layout.getLocation( metadata, false );
180 List<Checksum> checksums = layout.getChecksums( metadata, false, uri );
181 assertEquals( 2, checksums.size() );
182 assertChecksum( checksums.get( 0 ), "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml.sha1",
183 "SHA-1" );
184 assertChecksum( checksums.get( 1 ), "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml.md5", "MD5" );
185 }
186
187 @Test
188 public void testMetadataChecksums_Upload()
189 {
190 DefaultMetadata metadata =
191 new DefaultMetadata( "org.apache.maven.plugins", "maven-jar-plugin", "maven-metadata.xml",
192 Metadata.Nature.RELEASE_OR_SNAPSHOT );
193 URI uri = layout.getLocation( metadata, true );
194 List<Checksum> checksums = layout.getChecksums( metadata, true, uri );
195 assertEquals( 2, checksums.size() );
196 assertChecksum( checksums.get( 0 ), "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml.sha1",
197 "SHA-1" );
198 assertChecksum( checksums.get( 1 ), "org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml.md5", "MD5" );
199 }
200
201 @Test
202 public void testSignatureChecksums_Download()
203 {
204 DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "asc", "1.0" );
205 URI uri = layout.getLocation( artifact, false );
206 List<Checksum> checksums = layout.getChecksums( artifact, false, uri );
207 assertChecksums( checksums, "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.asc", "SHA-1", "MD5" );
208
209 artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "jar.asc", "1.0" );
210 uri = layout.getLocation( artifact, false );
211 checksums = layout.getChecksums( artifact, false, uri );
212 assertEquals( 0, checksums.size() );
213 }
214
215 @Test
216 public void testSignatureChecksums_Upload()
217 {
218 DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "asc", "1.0" );
219 URI uri = layout.getLocation( artifact, true );
220 List<Checksum> checksums = layout.getChecksums( artifact, true, uri );
221 assertChecksums( checksums, "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.asc", "SHA-1", "MD5" );
222
223 artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "jar.asc", "1.0" );
224 uri = layout.getLocation( artifact, true );
225 checksums = layout.getChecksums( artifact, true, uri );
226 assertEquals( 0, checksums.size() );
227 }
228
229 @Test
230 public void testSignatureChecksums_Force()
231 throws Exception
232 {
233 session.setConfigProperty( Maven2RepositoryLayoutFactory.CONFIG_PROP_SIGNATURE_CHECKSUMS, "true" );
234 layout = factory.newInstance( session, newRepo( "default" ) );
235 DefaultArtifact artifact = new DefaultArtifact( "g.i.d", "a-i.d", "cls", "jar.asc", "1.0" );
236 URI uri = layout.getLocation( artifact, true );
237 List<Checksum> checksums = layout.getChecksums( artifact, true, uri );
238 assertChecksums( checksums, "g/i/d/a-i.d/1.0/a-i.d-1.0-cls.jar.asc", "SHA-1", "MD5" );
239 }
240
241 }