]> source.dussan.org Git - archiva.git/blob
e5068fdffd79568deea8f4c6cee2f46413cdea70
[archiva.git] /
1 package org.apache.maven.archiva.web.rss;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import java.io.IOException;
23
24 import javax.servlet.http.HttpServletResponse;
25
26 import org.apache.commons.codec.Encoder;
27 import org.apache.commons.codec.binary.Base64;
28 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
29
30 import sun.misc.BASE64Encoder;
31
32 import com.meterware.httpunit.GetMethodWebRequest;
33 import com.meterware.httpunit.HttpException;
34 import com.meterware.httpunit.WebRequest;
35 import com.meterware.httpunit.WebResponse;
36 import com.meterware.servletunit.ServletRunner;
37 import com.meterware.servletunit.ServletUnitClient;
38
39 /**
40  * 
41  * @version
42  */
43 public class RssFeedServletTest
44     extends PlexusInSpringTestCase
45 {
46     private ServletRunner sr;
47
48     private ServletUnitClient client;
49
50     public void setUp()
51         throws Exception
52     {
53         sr = new ServletRunner( getTestFile( "src/test/webapp/WEB-INF/feedServletTest-web.xml" ) );
54         client = sr.newClient();
55     }
56
57     public void testRetrieveServlet()
58         throws Exception
59     {
60         RssFeedServlet servlet =
61             (RssFeedServlet) client.newInvocation( "http://localhost/feeds/test-repo" ).getServlet();
62         assertNotNull( servlet );
63     }
64
65     public void testRequestNewArtifactsInRepo()
66         throws Exception
67     {
68         RssFeedServlet servlet =
69             (RssFeedServlet) client.newInvocation( "http://localhost/feeds/test-repo" ).getServlet();
70         assertNotNull( servlet );
71
72         WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/test-repo" );
73         
74         BASE64Encoder encoder = new BASE64Encoder();
75         String userPass = "user1:password1";
76         String encodedUserPass = encoder.encode( userPass.getBytes() );        
77         request.setHeaderField( "Authorization", "BASIC " + encodedUserPass );
78         
79         WebResponse response = client.getResponse( request );
80         assertEquals( RssFeedServlet.MIME_TYPE, response.getHeaderField( "CONTENT-TYPE" ) );
81         assertNotNull( "Should have recieved a response", response );
82         assertEquals( "Should have been an OK response code.", HttpServletResponse.SC_OK, response.getResponseCode() );
83     }
84     
85     public void testRequestNewVersionsOfArtifact()
86         throws Exception
87     {
88         RssFeedServlet servlet =
89             (RssFeedServlet) client.newInvocation(
90                                                    "http://localhost/feeds/org/apache/archiva/artifact-two" ).getServlet();
91         assertNotNull( servlet );
92
93         WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/org/apache/archiva/artifact-two" );
94         
95         BASE64Encoder encoder = new BASE64Encoder();
96         String userPass = "user1:password1";
97         String encodedUserPass = encoder.encode( userPass.getBytes() );        
98         request.setHeaderField( "Authorization", "BASIC " + encodedUserPass );        
99         
100         WebResponse response = client.getResponse( request );        
101         assertEquals( RssFeedServlet.MIME_TYPE, response.getHeaderField( "CONTENT-TYPE" ) );
102         assertNotNull( "Should have recieved a response", response );
103         assertEquals( "Should have been an OK response code.", HttpServletResponse.SC_OK, response.getResponseCode() );        
104     }
105     
106     public void testInvalidRequest()
107         throws Exception
108     {
109         RssFeedServlet servlet =
110             (RssFeedServlet) client.newInvocation(
111                                                    "http://localhost/feeds?invalid_param=xxx" ).getServlet();
112         assertNotNull( servlet );
113
114         try
115         {
116             WebResponse response = client.getResponse( "http://localhost/feeds?invalid_param=xxx" );
117         }
118         catch ( HttpException he )
119         {
120             assertEquals( "Should have been a bad request response code.", HttpServletResponse.SC_BAD_REQUEST, he.getResponseCode() );
121         }                
122     }
123        
124     public void testInvalidAuthenticationRequest()
125         throws Exception
126     {
127         RssFeedServlet servlet =
128             (RssFeedServlet) client.newInvocation(
129                                                    "http://localhost/feeds/unauthorized-repo" ).getServlet();
130         assertNotNull( servlet );
131     
132         
133         WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/unauthorized-repo" );
134         
135         Encoder encoder = new Base64();
136         String userPass = "unauthUser:unauthPass";
137         String encodedUserPass = new String( ( byte[] ) encoder.encode( userPass.getBytes() ) );        
138         request.setHeaderField( "Authorization", "BASIC " + encodedUserPass );        
139         
140         try
141         {
142             WebResponse response = client.getResponse( request );
143         }
144         catch ( HttpException he )
145         {            
146             assertEquals( "Should have been a unauthorized response.", HttpServletResponse.SC_UNAUTHORIZED, he.getResponseCode() );
147         }
148     }
149     
150     public void testUnauthorizedRequest()
151         throws Exception
152     {
153         RssFeedServlet servlet =
154             (RssFeedServlet) client.newInvocation(
155                                                    "http://localhost/feeds/unauthorized-repo" ).getServlet();
156         assertNotNull( servlet );
157     
158         
159         WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/unauthorized-repo" );
160         
161         BASE64Encoder encoder = new BASE64Encoder();
162         String userPass = "user1:password1";
163         String encodedUserPass = encoder.encode( userPass.getBytes() );        
164         request.setHeaderField( "Authorization", "BASIC " + encodedUserPass );        
165         
166         try
167         {
168             WebResponse response = client.getResponse( request );
169         }
170         catch ( HttpException he )
171         {            
172             assertEquals( "Should have been a unauthorized response.", HttpServletResponse.SC_UNAUTHORIZED, he.getResponseCode() );
173         }
174     } 
175     
176     @Override
177     protected String getPlexusConfigLocation()
178     {
179         return "org/apache/maven/archiva/web/rss/RssFeedServletTest.xml";
180     }
181
182     @Override
183     protected void tearDown()
184         throws Exception
185     {
186         if ( client != null )
187         {
188             client.clearContents();
189         }
190
191         if ( sr != null )
192         {
193             sr.shutDown();
194         }
195
196         super.tearDown();
197     }
198
199 }