]> source.dussan.org Git - archiva.git/blob
3bb93c7f57d76625c5f03f581a1d7c8471c1ab87
[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 javax.servlet.http.HttpServletResponse;
23
24 import com.meterware.httpunit.GetMethodWebRequest;
25 import com.meterware.httpunit.HttpException;
26 import com.meterware.httpunit.WebRequest;
27 import com.meterware.httpunit.WebResponse;
28 import com.meterware.servletunit.ServletRunner;
29 import com.meterware.servletunit.ServletUnitClient;
30 import org.apache.commons.codec.Encoder;
31 import org.apache.commons.codec.binary.Base64;
32 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
33 import sun.misc.BASE64Encoder;
34
35 public class RssFeedServletTest
36     extends PlexusInSpringTestCase
37 {
38     private ServletRunner sr;
39
40     private ServletUnitClient client;
41
42     public void setUp()
43         throws Exception
44     {
45         sr = new ServletRunner( getTestFile( "src/test/webapp/WEB-INF/feedServletTest-web.xml" ) );
46         client = sr.newClient();
47     }
48
49     public void testRetrieveServlet()
50         throws Exception
51     {
52         RssFeedServlet servlet =
53             (RssFeedServlet) client.newInvocation( "http://localhost/feeds/test-repo" ).getServlet();
54         assertNotNull( servlet );
55     }
56
57     public void testRequestNewArtifactsInRepo()
58         throws Exception
59     {
60         RssFeedServlet servlet =
61             (RssFeedServlet) client.newInvocation( "http://localhost/feeds/test-repo" ).getServlet();
62         assertNotNull( servlet );
63
64         WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/test-repo" );
65
66         BASE64Encoder encoder = new BASE64Encoder();
67         String userPass = "user1:password1";
68         String encodedUserPass = encoder.encode( userPass.getBytes() );
69         request.setHeaderField( "Authorization", "BASIC " + encodedUserPass );
70
71         WebResponse response = client.getResponse( request );
72         assertEquals( RssFeedServlet.MIME_TYPE, response.getHeaderField( "CONTENT-TYPE" ) );
73         assertNotNull( "Should have recieved a response", response );
74         assertEquals( "Should have been an OK response code.", HttpServletResponse.SC_OK, response.getResponseCode() );
75     }
76
77     public void testRequestNewVersionsOfArtifact()
78         throws Exception
79     {
80         RssFeedServlet servlet = (RssFeedServlet) client.newInvocation(
81             "http://localhost/feeds/org/apache/archiva/artifact-two" ).getServlet();
82         assertNotNull( servlet );
83
84         WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/org/apache/archiva/artifact-two" );
85
86         BASE64Encoder encoder = new BASE64Encoder();
87         String userPass = "user1:password1";
88         String encodedUserPass = encoder.encode( userPass.getBytes() );
89         request.setHeaderField( "Authorization", "BASIC " + encodedUserPass );
90
91         WebResponse response = client.getResponse( request );
92         assertEquals( RssFeedServlet.MIME_TYPE, response.getHeaderField( "CONTENT-TYPE" ) );
93         assertNotNull( "Should have recieved a response", response );
94         assertEquals( "Should have been an OK response code.", HttpServletResponse.SC_OK, response.getResponseCode() );
95     }
96
97     public void XXX_testInvalidRequest()
98         throws Exception
99     {
100         RssFeedServlet servlet =
101             (RssFeedServlet) client.newInvocation( "http://localhost/feeds?invalid_param=xxx" ).getServlet();
102         assertNotNull( servlet );
103
104         try
105         {
106             WebResponse resp = client.getResponse( "http://localhost/feeds?invalid_param=xxx" );
107             assertEquals( HttpServletResponse.SC_BAD_REQUEST, resp.getResponseCode() );
108         }
109         catch ( HttpException he )
110         {
111             assertEquals( "Should have been a bad request response code.", HttpServletResponse.SC_BAD_REQUEST,
112                           he.getResponseCode() );
113         }
114     }
115
116     public void XXX_testInvalidAuthenticationRequest()
117         throws Exception
118     {
119         RssFeedServlet servlet =
120             (RssFeedServlet) client.newInvocation( "http://localhost/feeds/unauthorized-repo" ).getServlet();
121         assertNotNull( servlet );
122
123         WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/unauthorized-repo" );
124
125         Encoder encoder = new Base64();
126         String userPass = "unauthUser:unauthPass";
127         String encodedUserPass = new String( (byte[]) encoder.encode( userPass.getBytes() ) );
128         request.setHeaderField( "Authorization", "BASIC " + encodedUserPass );
129
130         try
131         {
132             WebResponse resp = client.getResponse( request );
133             assertEquals( HttpServletResponse.SC_UNAUTHORIZED, resp.getResponseCode() );
134         }
135         catch ( HttpException he )
136         {
137             assertEquals( "Should have been a unauthorized response.", HttpServletResponse.SC_UNAUTHORIZED,
138                           he.getResponseCode() );
139         }
140     }
141
142     public void XXX_testUnauthorizedRequest()
143         throws Exception
144     {
145         RssFeedServlet servlet =
146             (RssFeedServlet) client.newInvocation( "http://localhost/feeds/unauthorized-repo" ).getServlet();
147         assertNotNull( servlet );
148
149         WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/unauthorized-repo" );
150
151         BASE64Encoder encoder = new BASE64Encoder();
152         String userPass = "user1:password1";
153         String encodedUserPass = encoder.encode( userPass.getBytes() );
154         request.setHeaderField( "Authorization", "BASIC " + encodedUserPass );
155
156         try
157         {
158             WebResponse resp = client.getResponse( request );
159             assertEquals( HttpServletResponse.SC_UNAUTHORIZED, resp.getResponseCode() );
160         }
161         catch ( HttpException he )
162         {
163             assertEquals( "Should have been a unauthorized response.", HttpServletResponse.SC_UNAUTHORIZED,
164                           he.getResponseCode() );
165         }
166     }
167
168     @Override
169     protected String getPlexusConfigLocation()
170     {
171         return "org/apache/maven/archiva/web/rss/RssFeedServletTest.xml";
172     }
173
174     @Override
175     protected void tearDown()
176         throws Exception
177     {
178         if ( client != null )
179         {
180             client.clearContents();
181         }
182
183         if ( sr != null )
184         {
185             sr.shutDown();
186         }
187
188         super.tearDown();
189     }
190
191 }