1 package org.apache.maven.it;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.it.Verifier;
23 import org.apache.maven.it.util.ResourceExtractor;
24
25 import java.io.File;
26 import java.io.IOException;
27 import java.io.PrintWriter;
28 import java.util.ArrayList;
29 import java.util.Collections;
30 import java.util.List;
31 import java.util.Properties;
32
33 import javax.servlet.ServletException;
34 import javax.servlet.http.HttpServletRequest;
35 import javax.servlet.http.HttpServletResponse;
36
37 import org.mortbay.jetty.Handler;
38 import org.mortbay.jetty.Request;
39 import org.mortbay.jetty.Server;
40 import org.mortbay.jetty.handler.AbstractHandler;
41
42
43
44
45
46
47
48 public class MavenITmng4343MissingReleaseUpdatePolicyTest
49 extends AbstractMavenIntegrationTestCase
50 {
51
52 private Server server;
53
54 private List requestedUris;
55
56 private volatile boolean blockAccess;
57
58 public MavenITmng4343MissingReleaseUpdatePolicyTest()
59 {
60 super( "[3.0-alpha-3,)" );
61 }
62
63 protected void setUp()
64 throws Exception
65 {
66 Handler repoHandler = new AbstractHandler()
67 {
68 public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
69 throws IOException, ServletException
70 {
71 System.out.println( "Handling " + request.getMethod() + " " + request.getRequestURL() );
72
73 if ( request.getRequestURI().startsWith( "/org/apache/maven/its/mng4343" ) )
74 {
75 requestedUris.add( request.getRequestURI().substring( 29 ) );
76 }
77
78 if ( blockAccess )
79 {
80 response.setStatus( HttpServletResponse.SC_NOT_FOUND );
81 }
82 else
83 {
84 PrintWriter writer = response.getWriter();
85
86 response.setStatus( HttpServletResponse.SC_OK );
87
88 if ( request.getRequestURI().endsWith( ".pom" ) )
89 {
90 writer.println( "<project>" );
91 writer.println( " <modelVersion>4.0.0</modelVersion>" );
92 writer.println( " <groupId>org.apache.maven.its.mng4343</groupId>" );
93 writer.println( " <artifactId>dep</artifactId>" );
94 writer.println( " <version>0.1</version>" );
95 writer.println( "</project>" );
96 }
97 else if ( request.getRequestURI().endsWith( ".jar" ) )
98 {
99 writer.println( "empty" );
100 }
101 else if ( request.getRequestURI().endsWith( ".md5" ) || request.getRequestURI().endsWith( ".sha1" ) )
102 {
103 response.setStatus( HttpServletResponse.SC_NOT_FOUND );
104 }
105 }
106
107 ( (Request) request ).setHandled( true );
108 }
109 };
110
111 server = new Server( 0 );
112 server.setHandler( repoHandler );
113 server.start();
114
115 requestedUris = Collections.synchronizedList( new ArrayList() );
116 }
117
118 protected void tearDown()
119 throws Exception
120 {
121 if ( server != null )
122 {
123 server.stop();
124 server = null;
125 }
126 requestedUris = null;
127 }
128
129
130
131
132
133 public void testitAlways()
134 throws Exception
135 {
136 File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4343" );
137
138 Verifier verifier = newVerifier( testDir.getAbsolutePath() );
139 verifier.setAutoclean( false );
140 verifier.deleteArtifacts( "org.apache.maven.its.mng4343" );
141 verifier.getCliOptions().add( "-s" );
142 verifier.getCliOptions().add( "settings.xml" );
143
144 Properties filterProps = verifier.newDefaultFilterProperties();
145 filterProps.setProperty( "@updates@", "always" );
146 filterProps.setProperty( "@port@", Integer.toString( server.getConnectors()[0].getLocalPort() ) );
147 verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", filterProps );
148
149 blockAccess = true;
150
151 verifier.setLogFileName( "log-always-1.txt" );
152 try
153 {
154 verifier.executeGoal( "validate" );
155 verifier.verifyErrorFreeLog();
156 fail( "Build succeeded despite missing dependency" );
157 }
158 catch ( VerificationException e )
159 {
160
161 }
162
163 assertTrue( requestedUris.toString(),
164 requestedUris.contains( "/dep/0.1/dep-0.1.jar" ) || requestedUris.contains( "/dep/0.1/dep-0.1.pom" ) );
165 requestedUris.clear();
166
167 blockAccess = false;
168
169 verifier.setLogFileName( "log-always-2.txt" );
170 verifier.executeGoal( "validate" );
171 verifier.verifyErrorFreeLog();
172
173 assertTrue( requestedUris.toString(), requestedUris.contains( "/dep/0.1/dep-0.1.jar" ) );
174 assertTrue( requestedUris.toString(), requestedUris.contains( "/dep/0.1/dep-0.1.pom" ) );
175 verifier.assertArtifactPresent( "org.apache.maven.its.mng4343", "dep", "0.1", "jar" );
176 verifier.assertArtifactPresent( "org.apache.maven.its.mng4343", "dep", "0.1", "pom" );
177
178 verifier.resetStreams();
179 }
180
181
182
183
184
185 public void testitNever()
186 throws Exception
187 {
188 File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4343" );
189
190 Verifier verifier = newVerifier( testDir.getAbsolutePath() );
191 verifier.setAutoclean( false );
192 verifier.deleteArtifacts( "org.apache.maven.its.mng4343" );
193 verifier.getCliOptions().add( "-s" );
194 verifier.getCliOptions().add( "settings.xml" );
195
196 Properties filterProps = verifier.newDefaultFilterProperties();
197 filterProps.setProperty( "@updates@", "never" );
198 filterProps.setProperty( "@port@", Integer.toString( server.getConnectors()[0].getLocalPort() ) );
199 verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", filterProps );
200
201 blockAccess = true;
202
203 verifier.setLogFileName( "log-never-1.txt" );
204 try
205 {
206 verifier.executeGoal( "validate" );
207 verifier.verifyErrorFreeLog();
208 fail( "Build succeeded despite missing dependency" );
209 }
210 catch ( VerificationException e )
211 {
212
213 }
214
215 assertTrue( requestedUris.toString(),
216 requestedUris.contains( "/dep/0.1/dep-0.1.jar" ) || requestedUris.contains( "/dep/0.1/dep-0.1.pom" ) );
217 requestedUris.clear();
218
219 blockAccess = false;
220
221 verifier.setLogFileName( "log-never-2.txt" );
222 try
223 {
224 verifier.executeGoal( "validate" );
225 verifier.verifyErrorFreeLog();
226 fail( "Remote repository was accessed despite updatePolicy=never" );
227 }
228 catch ( VerificationException e )
229 {
230
231 }
232
233 assertEquals( new ArrayList(), requestedUris );
234 verifier.assertArtifactNotPresent( "org.apache.maven.its.mng4343", "dep", "0.1", "jar" );
235 verifier.assertArtifactNotPresent( "org.apache.maven.its.mng4343", "dep", "0.1", "pom" );
236
237 verifier.setLogFileName( "log-never-3.txt" );
238 verifier.getCliOptions().add( "-U" );
239 verifier.executeGoal( "validate" );
240 verifier.verifyErrorFreeLog();
241
242 assertTrue( requestedUris.toString(), requestedUris.contains( "/dep/0.1/dep-0.1.jar" ) );
243 assertTrue( requestedUris.toString(), requestedUris.contains( "/dep/0.1/dep-0.1.pom" ) );
244 verifier.assertArtifactPresent( "org.apache.maven.its.mng4343", "dep", "0.1", "jar" );
245 verifier.assertArtifactPresent( "org.apache.maven.its.mng4343", "dep", "0.1", "pom" );
246
247 requestedUris.clear();
248
249 verifier.setLogFileName( "log-never-4.txt" );
250 verifier.getCliOptions().add( "-U" );
251 verifier.executeGoal( "validate" );
252 verifier.verifyErrorFreeLog();
253
254 assertEquals( new ArrayList(), requestedUris );
255
256 verifier.resetStreams();
257 }
258
259 }