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