]> source.dussan.org Git - archiva.git/blob
f4aaf278d6c8c177b732161e525bbc1940808e10
[archiva.git] /
1 package org.apache.archiva.web.action.admin.networkproxies;
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 com.opensymphony.xwork2.validator.ActionValidatorManager;
23 import junit.framework.TestCase;
24 import org.apache.archiva.admin.model.beans.NetworkProxy;
25 import org.apache.archiva.web.validator.utils.ValidatorUtil;
26 import org.apache.archiva.web.action.admin.repositories.DefaultActionValidatorManagerFactory;
27
28 import java.util.ArrayList;
29 import java.util.HashMap;
30 import java.util.List;
31 import java.util.Map;
32
33 public class ConfigureNetworkProxyActionTest extends TestCase
34 {
35     private static final String EMPTY_STRING = "";
36
37     private static final String VALIDATION_CONTEXT = "saveNetworkProxy";
38
39     // valid inputs
40     private static final String PROXY_ID_VALID_INPUT = "abcXYZ0129._-";
41
42     private static final String PROXY_PROTOCOL_VALID_INPUT = "-abcXYZ0129./:\\";
43
44     private static final String PROXY_HOST_VALID_INPUT = "abcXYZ0129._/\\~:?!&=-";
45
46     private static final int PROXY_PORT_VALID_INPUT = 8080;
47
48     private static final String PROXY_USERNAME_VALID_INPUT = "abcXYZ0129.@/_-\\";
49
50     // invalid inputs
51     private static final String PROXY_ID_INVALID_INPUT = "<> \\/~+[ ]'\"";
52
53     private static final String PROXY_PROTOCOL_INVALID_INPUT = "<> ~+[ ]'\"";
54
55     private static final String PROXY_HOST_INVALID_INPUT = "<> ~+[ ]'\"";
56
57     private static final int PROXY_PORT_INVALID_INPUT = 0;
58
59     private static final String PROXY_USERNAME_INVALID_INPUT = "<> ~+[ ]'\"";
60
61     // testing requisite
62     private ConfigureNetworkProxyAction configureNetworkProxyAction;
63
64     private ActionValidatorManager actionValidatorManager;
65     
66     @Override
67     public void setUp()
68         throws Exception
69     {
70         configureNetworkProxyAction = new ConfigureNetworkProxyAction();
71
72         DefaultActionValidatorManagerFactory factory = new DefaultActionValidatorManagerFactory();
73
74         actionValidatorManager = factory.createDefaultActionValidatorManager();
75     }
76
77     public void testStruts2ValidationFrameworkWithNullInputs() throws Exception
78     {
79         // prep
80         NetworkProxy networkProxy = createNetworkProxy(null, null, null, null);
81         configureNetworkProxyAction.setProxy(networkProxy);
82
83         // test
84         actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT);
85
86         // verify
87         assertTrue(configureNetworkProxyAction.hasFieldErrors());
88
89         Map<String, List<String>> fieldErrors = configureNetworkProxyAction.getFieldErrors();
90
91         // make an expected field error object
92         Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
93
94         // populate
95         List<String> expectedErrorMessages = new ArrayList<String>();
96         expectedErrorMessages.add("You must enter an identifier.");
97         expectedFieldErrors.put("proxy.id", expectedErrorMessages);
98
99         expectedErrorMessages = new ArrayList<String>();
100         expectedErrorMessages.add("You must enter a protocol.");
101         expectedFieldErrors.put("proxy.protocol", expectedErrorMessages);
102
103         expectedErrorMessages = new ArrayList<String>();
104         expectedErrorMessages.add("You must enter a host.");
105         expectedFieldErrors.put("proxy.host", expectedErrorMessages);
106
107         ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
108     }
109
110     public void testStruts2ValidationFrameworkWithBlankInputs() throws Exception
111     {
112         // prep
113         NetworkProxy networkProxy = createNetworkProxy(EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING);
114         configureNetworkProxyAction.setProxy(networkProxy);
115
116         // test
117         actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT);
118
119         // verify
120         assertTrue(configureNetworkProxyAction.hasFieldErrors());
121
122         Map<String, List<String>> fieldErrors = configureNetworkProxyAction.getFieldErrors();
123
124         // make an expected field error object
125         Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
126
127         // populate
128         List<String> expectedErrorMessages = new ArrayList<String>();
129         expectedErrorMessages.add("You must enter an identifier.");
130         expectedFieldErrors.put("proxy.id", expectedErrorMessages);
131
132         expectedErrorMessages = new ArrayList<String>();
133         expectedErrorMessages.add("You must enter a protocol.");
134         expectedFieldErrors.put("proxy.protocol", expectedErrorMessages);
135
136         expectedErrorMessages = new ArrayList<String>();
137         expectedErrorMessages.add("You must enter a host.");
138         expectedFieldErrors.put("proxy.host", expectedErrorMessages);
139
140         ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
141     }
142
143     public void testStruts2ValidationFrameworkWithInvalidInputs() throws Exception
144     {
145         // prep
146         NetworkProxy networkProxy = createNetworkProxy( PROXY_ID_INVALID_INPUT, PROXY_HOST_INVALID_INPUT,
147                                                         PROXY_PORT_INVALID_INPUT, PROXY_PROTOCOL_INVALID_INPUT,
148                                                         PROXY_USERNAME_INVALID_INPUT );
149         configureNetworkProxyAction.setProxy(networkProxy);
150
151         // test
152         actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT);
153
154         // verify
155         assertTrue(configureNetworkProxyAction.hasFieldErrors());
156
157         Map<String, List<String>> fieldErrors = configureNetworkProxyAction.getFieldErrors();
158
159         // make an expected field error object
160         Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
161
162         // populate
163         List<String> expectedErrorMessages = new ArrayList<String>();
164         expectedErrorMessages.add("Proxy id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
165         expectedFieldErrors.put("proxy.id", expectedErrorMessages);
166
167         expectedErrorMessages = new ArrayList<String>();
168         expectedErrorMessages.add("Protocol must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), dots(.), colons(:), and dashes(-).");
169         expectedFieldErrors.put("proxy.protocol", expectedErrorMessages);
170
171         expectedErrorMessages = new ArrayList<String>();
172         expectedErrorMessages.add("Host must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).");
173         expectedFieldErrors.put("proxy.host", expectedErrorMessages);
174
175         expectedErrorMessages = new ArrayList<String>();
176         expectedErrorMessages.add("Port needs to be larger than 1");
177         expectedFieldErrors.put("proxy.port", expectedErrorMessages);
178
179         expectedErrorMessages = new ArrayList<String>();
180         expectedErrorMessages.add("Username must only contain alphanumeric characters, at's(@), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-).");
181         expectedFieldErrors.put("proxy.username", expectedErrorMessages);
182
183         ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
184     }
185
186     public void testStruts2ValidationFrameworkWithValidInputs() throws Exception
187     {
188         // prep
189         NetworkProxy networkProxy = createNetworkProxy(PROXY_ID_VALID_INPUT, PROXY_HOST_VALID_INPUT, PROXY_PORT_VALID_INPUT, PROXY_PROTOCOL_VALID_INPUT, PROXY_USERNAME_VALID_INPUT);
190         configureNetworkProxyAction.setProxy(networkProxy);
191
192         // test
193         actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT);
194
195         // verify
196         assertFalse(configureNetworkProxyAction.hasFieldErrors());
197     }
198
199     private NetworkProxy createNetworkProxy(String id, String host, int port, String protocol, String username)
200     {
201         NetworkProxy networkProxy = new NetworkProxy();
202         networkProxy.setId( id );
203         networkProxy.setHost( host );
204         networkProxy.setPort( port );
205         networkProxy.setProtocol( protocol );
206         networkProxy.setUsername( username );
207         return networkProxy;
208     }
209
210     // over-loaded
211     // for simulating empty/null form purposes; excluding primitive data-typed values
212     private NetworkProxy createNetworkProxy(String id, String host, String protocol, String username)
213     {
214         NetworkProxy networkProxy = new NetworkProxy();
215         networkProxy.setId( id );
216         networkProxy.setHost( host );
217         networkProxy.setProtocol( protocol );
218         networkProxy.setUsername( username );
219         return networkProxy;
220     }
221 }