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