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