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 java.io.File;
23 import java.io.IOException;
24
25 import javax.servlet.ServletException;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28
29 import org.apache.maven.it.Verifier;
30 import org.apache.maven.it.util.ResourceExtractor;
31 import org.mortbay.jetty.Handler;
32 import org.mortbay.jetty.Request;
33 import org.mortbay.jetty.Server;
34 import org.mortbay.jetty.handler.AbstractHandler;
35 import org.mortbay.jetty.handler.HandlerList;
36 import org.mortbay.jetty.security.Constraint;
37 import org.mortbay.jetty.security.ConstraintMapping;
38 import org.mortbay.jetty.security.HashUserRealm;
39 import org.mortbay.jetty.security.SecurityHandler;
40
41
42
43
44
45
46
47 public class MavenITmng4469AuthenticatedDeploymentToCustomRepoTest
48 extends AbstractMavenIntegrationTestCase
49 {
50
51 private Server server;
52
53 private int port;
54
55 private volatile boolean deployed;
56
57 public MavenITmng4469AuthenticatedDeploymentToCustomRepoTest()
58 {
59 super( "[2.0.3,3.0-alpha-3),[3.0-alpha-6,)" );
60 }
61
62 public void setUp()
63 throws Exception
64 {
65 super.setUp();
66
67 Handler repoHandler = new AbstractHandler()
68 {
69 public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
70 throws IOException, ServletException
71 {
72 System.out.println( "Handling " + request.getMethod() + " " + request.getRequestURL() );
73
74 if ( "PUT".equalsIgnoreCase( request.getMethod() ) )
75 {
76 response.setStatus( HttpServletResponse.SC_OK );
77 deployed = true;
78 }
79 else
80 {
81 response.setStatus( HttpServletResponse.SC_NOT_FOUND );
82 }
83
84 ( (Request) request ).setHandled( true );
85 }
86 };
87
88 Constraint constraint = new Constraint();
89 constraint.setName( Constraint.__BASIC_AUTH );
90 constraint.setRoles( new String[] { "deployer" } );
91 constraint.setAuthenticate( true );
92
93 ConstraintMapping constraintMapping = new ConstraintMapping();
94 constraintMapping.setConstraint( constraint );
95 constraintMapping.setPathSpec( "/*" );
96
97 HashUserRealm userRealm = new HashUserRealm( "TestRealm" );
98 userRealm.put( "testuser", "testtest" );
99 userRealm.addUserToRole( "testuser", "deployer" );
100
101 SecurityHandler securityHandler = new SecurityHandler();
102 securityHandler.setUserRealm( userRealm );
103 securityHandler.setConstraintMappings( new ConstraintMapping[] { constraintMapping } );
104
105 HandlerList handlerList = new HandlerList();
106 handlerList.addHandler( securityHandler );
107 handlerList.addHandler( repoHandler );
108
109 server = new Server( 0 );
110 server.setHandler( handlerList );
111 server.start();
112
113 port = server.getConnectors()[0].getLocalPort();
114
115 deployed = false;
116 }
117
118 protected void tearDown()
119 throws Exception
120 {
121 if ( server != null )
122 {
123 server.stop();
124 server = null;
125 }
126
127 super.tearDown();
128 }
129
130
131
132
133 public void testit()
134 throws Exception
135 {
136 File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4469" );
137
138 Verifier verifier = newVerifier( testDir.getAbsolutePath() );
139 verifier.setAutoclean( false );
140 verifier.getCliOptions().add( "--settings" );
141 verifier.getCliOptions().add( "settings.xml" );
142 verifier.setSystemProperty( "file", "settings.xml" );
143 verifier.setSystemProperty( "groupId", "org.apache.maven.its.mng4469" );
144 verifier.setSystemProperty( "artifactId", "it" );
145 verifier.setSystemProperty( "version", "0.1" );
146 verifier.setSystemProperty( "repositoryId", "mng4469" );
147 verifier.setSystemProperty( "repositoryUrl", "http://localhost:" + port + "/repo" );
148 verifier.executeGoal( "org.apache.maven.its.plugins:maven-it-plugin-artifact:2.1-SNAPSHOT:deploy-file" );
149 verifier.verifyErrorFreeLog();
150 verifier.resetStreams();
151
152 assertTrue( deployed );
153 }
154
155 }