1 package org.apache.maven.plugins.dependency;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.nio.file.Path;
24 import java.nio.file.Paths;
25 import java.util.Collections;
26
27 import org.apache.maven.artifact.repository.ArtifactRepository;
28 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
29 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
30 import org.apache.maven.execution.MavenSession;
31 import org.apache.maven.plugin.LegacySupport;
32 import org.apache.maven.plugin.MojoFailureException;
33 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
34 import org.apache.maven.settings.Server;
35 import org.apache.maven.settings.Settings;
36 import org.eclipse.jetty.security.ConstraintMapping;
37 import org.eclipse.jetty.security.ConstraintSecurityHandler;
38 import org.eclipse.jetty.security.HashLoginService;
39 import org.eclipse.jetty.security.LoginService;
40 import org.eclipse.jetty.security.authentication.BasicAuthenticator;
41 import org.eclipse.jetty.server.handler.ContextHandler;
42 import org.eclipse.jetty.server.handler.ResourceHandler;
43 import org.eclipse.jetty.util.security.Constraint;
44
45 public class TestGetMojo
46 extends AbstractDependencyMojoTestCase
47 {
48 private GetMojo mojo;
49
50 protected void setUp()
51 throws Exception
52 {
53
54 super.setUp( "markers", false );
55
56 File testPom = new File( getBasedir(), "target/test-classes/unit/get-test/plugin-config.xml" );
57 mojo = (GetMojo) lookupMojo( "get", testPom );
58
59 assertNotNull( mojo );
60
61 LegacySupport legacySupport = lookup( LegacySupport.class );
62 MavenSession mavenSession = newMavenSession( new MavenProjectStub() );
63 Settings settings = mavenSession.getSettings();
64 Server server = new Server();
65 server.setId( "myserver" );
66 server.setUsername( "foo" );
67 server.setPassword( "bar" );
68 settings.addServer( server );
69 legacySupport.setSession( mavenSession );
70
71 installLocalRepository( legacySupport );
72
73 setVariableValueToObject( mojo, "session", legacySupport.getSession() );
74 }
75
76
77
78
79
80
81 public void testTransitive()
82 throws Exception
83 {
84
85 setVariableValueToObject( mojo, "transitive", Boolean.FALSE );
86 setVariableValueToObject( mojo, "remoteRepositories",
87 "central::default::https://repo.maven.apache.org/maven2" );
88 mojo.setGroupId( "org.apache.maven" );
89 mojo.setArtifactId( "maven-model" );
90 mojo.setVersion( "2.0.9" );
91
92 mojo.execute();
93
94
95 setVariableValueToObject( mojo, "transitive", Boolean.FALSE );
96 mojo.execute();
97 }
98
99
100
101
102
103
104 public void testRemoteRepositories()
105 throws Exception
106 {
107 setVariableValueToObject( mojo, "remoteRepositories", "central::default::https://repo.maven.apache.org/maven2,"
108 + "central::::https://repo.maven.apache.org/maven2," + "https://repo.maven.apache.org/maven2" );
109 mojo.setGroupId( "org.apache.maven" );
110 mojo.setArtifactId( "maven-model" );
111 mojo.setVersion( "2.0.9" );
112
113 mojo.execute();
114 }
115
116
117
118
119
120
121 public void testRemoteRepositoriesAuthentication()
122 throws Exception
123 {
124 org.eclipse.jetty.server.Server server = createServer();
125 try {
126 server.start();
127
128 setVariableValueToObject( mojo, "remoteRepositories", "myserver::default::" + server.getURI() );
129 mojo.setGroupId( "test" );
130 mojo.setArtifactId( "test" );
131 mojo.setVersion( "1.0" );
132
133 mojo.execute();
134 }
135 finally
136 {
137 server.stop();
138 }
139 }
140
141
142
143
144
145
146 public void testParseRepository()
147 throws Exception
148 {
149 ArtifactRepositoryPolicy policy = null;
150 ArtifactRepository repo = mojo.parseRepository( "central::default::https://repo.maven.apache.org/maven2", policy );
151 assertEquals( "central", repo.getId() );
152 assertEquals( DefaultRepositoryLayout.class, repo.getLayout().getClass() );
153 assertEquals( "https://repo.maven.apache.org/maven2", repo.getUrl() );
154
155 try
156 {
157 repo = mojo.parseRepository( "central::legacy::https://repo.maven.apache.org/maven2", policy );
158 fail( "Exception expected: legacy repository not supported anymore" );
159 }
160 catch ( MojoFailureException e )
161 {
162 }
163
164 repo = mojo.parseRepository( "central::::https://repo.maven.apache.org/maven2", policy );
165 assertEquals( "central", repo.getId() );
166 assertEquals( DefaultRepositoryLayout.class, repo.getLayout().getClass() );
167 assertEquals( "https://repo.maven.apache.org/maven2", repo.getUrl() );
168
169 repo = mojo.parseRepository( "https://repo.maven.apache.org/maven2", policy );
170 assertEquals( "temp", repo.getId() );
171 assertEquals( DefaultRepositoryLayout.class, repo.getLayout().getClass() );
172 assertEquals( "https://repo.maven.apache.org/maven2", repo.getUrl() );
173
174 try
175 {
176 mojo.parseRepository( "::::https://repo.maven.apache.org/maven2", policy );
177 fail( "Exception expected" );
178 }
179 catch ( MojoFailureException e )
180 {
181
182 }
183
184 try
185 {
186 mojo.parseRepository( "central::https://repo.maven.apache.org/maven2", policy );
187 fail( "Exception expected" );
188 }
189 catch ( MojoFailureException e )
190 {
191
192 }
193 }
194
195 private ContextHandler createContextHandler()
196 {
197 ResourceHandler resourceHandler = new ResourceHandler();
198 Path resourceDirectory = Paths.get( "src", "test", "resources", "unit", "get-test", "repository" );
199 resourceHandler.setResourceBase( resourceDirectory.toString() );
200 resourceHandler.setDirectoriesListed( true );
201
202 ContextHandler contextHandler = new ContextHandler( "/maven" );
203 contextHandler.setHandler( resourceHandler );
204 return contextHandler;
205 }
206
207 private org.eclipse.jetty.server.Server createServer()
208 {
209 org.eclipse.jetty.server.Server server = new org.eclipse.jetty.server.Server( 0 );
210 server.setStopAtShutdown( true );
211
212 LoginService loginService = new HashLoginService( "myrealm",
213 "src/test/resources/unit/get-test/realm.properties" );
214 server.addBean( loginService );
215
216 ConstraintSecurityHandler security = new ConstraintSecurityHandler();
217 server.setHandler( security );
218
219 Constraint constraint = new Constraint();
220 constraint.setName( "auth" );
221 constraint.setAuthenticate( true );
222 constraint.setRoles(new String[]{ "userrole" });
223
224 ConstraintMapping mapping = new ConstraintMapping();
225 mapping.setPathSpec( "/*" );
226 mapping.setConstraint( constraint );
227
228 security.setConstraintMappings( Collections.singletonList( mapping ) );
229 security.setAuthenticator( new BasicAuthenticator() );
230 security.setLoginService( loginService );
231
232 ContextHandler contextHandler = createContextHandler();
233 contextHandler.setServer( server );
234
235 security.setHandler( contextHandler );
236 server.setHandler( security );
237 return server;
238 }
239 }