]> source.dussan.org Git - archiva.git/blob
64ae7f8ad5a26e55b91970dc24d9c4e729516f71
[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
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         orginfo = config.getOrganisationInfo();
93
94         assertEquals( "LOGO1", orginfo.getLogoLocation() );
95         assertEquals( "NAME1", orginfo.getName() );
96         assertEquals( "URL1", orginfo.getUrl() );
97     }
98
99     public void testStruts2ValidationFrameworkWithNullInputs()
100         throws Exception
101     {
102         // prep
103         action = getAction();
104         populateOrganisationValues( action, null, null, null );
105
106         // test
107         actionValidatorManager.validate( action, EMPTY_STRING );
108
109         // verify
110         assertTrue( action.hasFieldErrors() );
111
112         Map<String, List<String>> fieldErrors = action.getFieldErrors();
113
114         // make an expected field error object
115         Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
116
117         // populate
118         List<String> expectedErrorMessages = new ArrayList<String>();
119         expectedErrorMessages.add( "You must enter a name" );
120         expectedFieldErrors.put( "organisationName", expectedErrorMessages );
121
122         ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors );
123     }
124
125     public void testStruts2ValidationFrameworkWithBlankInputs()
126         throws Exception
127     {
128         // prep
129         action = getAction();
130         populateOrganisationValues( action, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING );
131
132         // test
133         actionValidatorManager.validate( action, EMPTY_STRING );
134
135         // verify
136         assertTrue( action.hasFieldErrors() );
137
138         Map<String, List<String>> fieldErrors = action.getFieldErrors();
139
140         // make an expected field error object
141         Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
142
143         // populate
144         List<String> expectedErrorMessages = new ArrayList<String>();
145         expectedErrorMessages.add( "You must enter a name" );
146         expectedFieldErrors.put( "organisationName", expectedErrorMessages );
147
148         ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors );
149     }
150
151     public void testStruts2ValidationFrameworkWithInvalidInputs()
152         throws Exception
153     {
154         // prep
155         action = getAction();
156         populateOrganisationValues( action, ORGANISATION_NAME_INVALID_INPUT, ORGANISATION_URL_INVALID_INPUT,
157                                     ORGANISATION_LOGO_INVALID_INPUT );
158
159         // test
160         actionValidatorManager.validate( action, EMPTY_STRING );
161
162         // verify
163         assertTrue( action.hasFieldErrors() );
164
165         Map<String, List<String>> fieldErrors = action.getFieldErrors();
166
167         // make an expected field error object
168         Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
169
170         // populate
171         List<String> expectedErrorMessages = new ArrayList<String>();
172         expectedErrorMessages.add(
173             "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(-)." );
174         expectedFieldErrors.put( "organisationName", expectedErrorMessages );
175
176         expectedErrorMessages = new ArrayList<String>();
177         expectedErrorMessages.add( "You must enter a URL." );
178         expectedFieldErrors.put( "organisationUrl", expectedErrorMessages );
179
180         expectedErrorMessages = new ArrayList<String>();
181         expectedErrorMessages.add( "You must enter a URL for your logo." );
182         expectedFieldErrors.put( "organisationLogo", expectedErrorMessages );
183
184         ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors );
185     }
186
187     public void testStruts2ValidationFrameworkWithValidInputs()
188         throws Exception
189     {
190         // prep
191         action = getAction();
192         populateOrganisationValues( action, ORGANISATION_NAME_VALID_INPUT, ORGANISATION_URL_VALID_INPUT,
193                                     ORGANISATION_LOGO_VALID_INPUT );
194
195         // test
196         actionValidatorManager.validate( action, EMPTY_STRING );
197
198         // verify
199         assertFalse( action.hasFieldErrors() );
200     }
201
202     private void populateOrganisationValues( AbstractAppearanceAction abstractAppearanceAction, String name, String url,
203                                              String logo )
204     {
205         abstractAppearanceAction.setOrganisationName( name );
206         abstractAppearanceAction.setOrganisationUrl( url );
207         abstractAppearanceAction.setOrganisationLogo( logo );
208     }
209
210     @Override
211     protected AbstractAppearanceAction getAction()
212     {
213         return (EditOrganisationInfoAction) getActionProxy( "/admin/editAppearance.action" ).getAction();
214     }
215 }