]> source.dussan.org Git - archiva.git/blob
88e85b0a620bf91e80669b8a65a9be5ed396a6d8
[archiva.git] /
1 package org.apache.maven.archiva.web.action.admin.appearance;
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 org.apache.maven.archiva.configuration.OrganisationInformation;
24 import org.apache.maven.archiva.web.action.admin.repositories.DefaultActionValidatorManagerFactory;
25 import org.apache.archiva.web.validator.utils.ValidatorUtil;
26
27 import java.util.ArrayList;
28 import java.util.HashMap;
29 import java.util.List;
30 import java.util.Map;
31
32 /**
33  */
34 public class EditOrganizationInfoActionTest
35     extends AbstractOrganizationInfoActionTest
36 {
37     private static final String EMPTY_STRING = "";
38
39     // valid inputs
40     private static final String ORGANISATION_NAME_VALID_INPUT = "abcXYZ0129.   _/\\~   :?!&=-";
41
42     private static final String ORGANISATION_URL_VALID_INPUT = "file://home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
43
44     private static final String ORGANISATION_LOGO_VALID_INPUT = "file://home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
45
46     // invalid inputs
47     private static final String ORGANISATION_NAME_INVALID_INPUT = "<>~+[ ]'\"";
48
49     private static final String ORGANISATION_URL_INVALID_INPUT = "/home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
50
51     private static final String ORGANISATION_LOGO_INVALID_INPUT = "/home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
52
53     // testing requisite
54     private ActionValidatorManager actionValidatorManager;
55
56     @Override
57     public void setUp()
58         throws Exception
59     {
60         super.setUp();
61
62         DefaultActionValidatorManagerFactory factory = new DefaultActionValidatorManagerFactory();
63
64         actionValidatorManager = factory.createDefaultActionValidatorManager();
65     }
66
67     public void testOrganisationInfoSaves()
68         throws Exception
69     {
70         config.setOrganisationInfo( new OrganisationInformation() );
71         OrganisationInformation orginfo = config.getOrganisationInfo();
72         orginfo.setLogoLocation( "LOGO" );
73         orginfo.setName( "NAME" );
74         orginfo.setUrl( "URL" );
75
76         configuration.save( config );
77
78         reloadAction();
79
80         action.prepare();
81
82         assertEquals( "LOGO", action.getOrganisationLogo() );
83         assertEquals( "NAME", action.getOrganisationName() );
84         assertEquals( "URL", action.getOrganisationUrl() );
85
86         action.setOrganisationLogo( "LOGO1" );
87         action.setOrganisationName( "NAME1" );
88         action.setOrganisationUrl( "URL1" );
89
90         action.execute();
91
92         assertEquals( "LOGO1", orginfo.getLogoLocation() );
93         assertEquals( "NAME1", orginfo.getName() );
94         assertEquals( "URL1", orginfo.getUrl() );
95     }
96
97     public void testStruts2ValidationFrameworkWithNullInputs()
98         throws Exception
99     {
100         // prep
101         action = getAction();
102         populateOrganisationValues( action, null, null, null );
103
104         // test
105         actionValidatorManager.validate( action, EMPTY_STRING );
106
107         // verify
108         assertTrue( action.hasFieldErrors() );
109
110         Map<String, List<String>> fieldErrors = action.getFieldErrors();
111
112         // make an expected field error object
113         Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
114
115         // populate
116         List<String> expectedErrorMessages = new ArrayList<String>();
117         expectedErrorMessages.add( "You must enter a name" );
118         expectedFieldErrors.put( "organisationName", expectedErrorMessages );
119
120         ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors );
121     }
122
123     public void testStruts2ValidationFrameworkWithBlankInputs()
124         throws Exception
125     {
126         // prep
127         action = getAction();
128         populateOrganisationValues( action, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING );
129
130         // test
131         actionValidatorManager.validate( action, EMPTY_STRING );
132
133         // verify
134         assertTrue( action.hasFieldErrors() );
135
136         Map<String, List<String>> fieldErrors = action.getFieldErrors();
137
138         // make an expected field error object
139         Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
140
141         // populate
142         List<String> expectedErrorMessages = new ArrayList<String>();
143         expectedErrorMessages.add( "You must enter a name" );
144         expectedFieldErrors.put( "organisationName", expectedErrorMessages );
145
146         ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors );
147     }
148
149     public void testStruts2ValidationFrameworkWithInvalidInputs()
150         throws Exception
151     {
152         // prep
153         action = getAction();
154         populateOrganisationValues( action, ORGANISATION_NAME_INVALID_INPUT, ORGANISATION_URL_INVALID_INPUT,
155                                     ORGANISATION_LOGO_INVALID_INPUT );
156
157         // test
158         actionValidatorManager.validate( action, EMPTY_STRING );
159
160         // verify
161         assertTrue( action.hasFieldErrors() );
162
163         Map<String, List<String>> fieldErrors = action.getFieldErrors();
164
165         // make an expected field error object
166         Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
167
168         // populate
169         List<String> expectedErrorMessages = new ArrayList<String>();
170         expectedErrorMessages.add(
171             "Organisation name must only contain alphanumeric characters, white-spaces(' '), equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)." );
172         expectedFieldErrors.put( "organisationName", expectedErrorMessages );
173
174         expectedErrorMessages = new ArrayList<String>();
175         expectedErrorMessages.add( "You must enter a URL" );
176         expectedFieldErrors.put( "organisationUrl", expectedErrorMessages );
177
178         expectedErrorMessages = new ArrayList<String>();
179         expectedErrorMessages.add( "You must enter a URL" );
180         expectedFieldErrors.put( "organisationLogo", expectedErrorMessages );
181
182         ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors );
183     }
184
185     public void testStruts2ValidationFrameworkWithValidInputs()
186         throws Exception
187     {
188         // prep
189         action = getAction();
190         populateOrganisationValues( action, ORGANISATION_NAME_VALID_INPUT, ORGANISATION_URL_VALID_INPUT,
191                                     ORGANISATION_LOGO_VALID_INPUT );
192
193         // test
194         actionValidatorManager.validate( action, EMPTY_STRING );
195
196         // verify
197         assertFalse( action.hasFieldErrors() );
198     }
199
200     private void populateOrganisationValues( AbstractAppearanceAction abstractAppearanceAction, String name, String url,
201                                              String logo )
202     {
203         abstractAppearanceAction.setOrganisationName( name );
204         abstractAppearanceAction.setOrganisationUrl( url );
205         abstractAppearanceAction.setOrganisationLogo( logo );
206     }
207
208     @Override
209     protected AbstractAppearanceAction getAction()
210     {
211         //return (EditOrganisationInfoAction) lookup( Action.class.getName(), "editOrganisationInfo" );
212         return (EditOrganisationInfoAction) getActionProxy( "/admin/editAppearance.action" ).getAction();
213     }
214 }