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.util.ResourceExtractor;
23 import org.eclipse.jetty.server.Handler;
24 import org.eclipse.jetty.server.NetworkConnector;
25 import org.eclipse.jetty.server.Request;
26 import org.eclipse.jetty.server.Server;
27 import org.eclipse.jetty.server.handler.AbstractHandler;
28 import org.eclipse.jetty.server.handler.HandlerList;
29
30 import javax.servlet.http.HttpServletRequest;
31 import javax.servlet.http.HttpServletResponse;
32 import java.io.File;
33 import java.util.Deque;
34 import java.util.concurrent.ConcurrentLinkedDeque;
35
36 import static org.hamcrest.CoreMatchers.hasItem;
37 import static org.hamcrest.MatcherAssert.assertThat;
38
39
40
41
42
43
44 public class MavenITmng4781DeploymentToNexusStagingRepoTest
45 extends AbstractMavenIntegrationTestCase
46 {
47 private Server server;
48
49 private int port;
50
51 private final Deque<String> requestedUris = new ConcurrentLinkedDeque<>();
52
53 private final Deque<String> deployedUris = new ConcurrentLinkedDeque<>();
54
55 public MavenITmng4781DeploymentToNexusStagingRepoTest()
56 {
57 super( "[2.0.3,)" );
58 }
59
60 public void setUp()
61 throws Exception
62 {
63 Handler repoHandler = new AbstractHandler()
64 {
65 private volatile boolean putSeen;
66
67 @Override
68 public void handle( String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response )
69 {
70 System.out.println( "Handling " + request.getMethod() + " " + request.getRequestURL() );
71
72 if ( "PUT".equalsIgnoreCase( request.getMethod() ) )
73 {
74 response.setStatus( HttpServletResponse.SC_CREATED );
75 deployedUris.add( request.getRequestURI() );
76 putSeen = true;
77 }
78 else if ( !putSeen )
79 {
80 response.setStatus( HttpServletResponse.SC_BAD_REQUEST );
81 }
82 else
83 {
84 response.setStatus( HttpServletResponse.SC_NOT_FOUND );
85 requestedUris.add( request.getRequestURI() );
86 }
87
88 ( (Request) request ).setHandled( true );
89 }
90 };
91
92 HandlerList handlerList = new HandlerList();
93 handlerList.addHandler( repoHandler );
94
95 server = new Server( 0 );
96 server.setHandler( handlerList );
97 server.start();
98 if ( server.isFailed() )
99 {
100 fail( "Couldn't bind the server socket to a free port!" );
101 }
102 port = ( (NetworkConnector) server.getConnectors()[0] ).getLocalPort();
103 System.out.println( "Bound server socket to the port " + port );
104 }
105
106 protected void tearDown()
107 throws Exception
108 {
109 if ( server != null )
110 {
111 server.stop();
112 server.join();
113 }
114
115 requestedUris.clear();
116 deployedUris.clear();
117 }
118
119
120
121
122
123
124
125
126
127 public void testit()
128 throws Exception
129 {
130 File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4781" );
131
132 Verifier verifier = newVerifier( testDir.getAbsolutePath() );
133 verifier.setAutoclean( false );
134 verifier.addCliOption( "-DdeploymentPort=" + port );
135 verifier.executeGoal( "validate" );
136 verifier.verifyErrorFreeLog();
137 verifier.resetStreams();
138
139 assertThat( deployedUris, hasItem( "/repo/org/apache/maven/its/mng4781/release/1.0/release-1.0.jar" ) );
140 assertThat( deployedUris, hasItem( "/repo/org/apache/maven/its/mng4781/release/1.0/release-1.0.pom" ) );
141 assertThat( deployedUris, hasItem( "/repo/org/apache/maven/its/mng4781/release/maven-metadata.xml" ) );
142 assertThat( requestedUris, hasItem( "/repo/org/apache/maven/its/mng4781/release/maven-metadata.xml" ) );
143 }
144 }