Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java?rev=1098897&r1=1098896&r2=1098897&view=diff ============================================================================== --- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java (original) +++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java Tue May 3 02:54:19 2011 @@ -30,11 +30,14 @@ import org.apache.maven.archiva.security import org.codehaus.plexus.redback.role.RoleManager; import org.codehaus.redback.integration.interceptor.SecureActionBundle; import org.codehaus.redback.integration.interceptor.SecureActionException; -import org.codehaus.plexus.spring.PlexusInSpringTestCase; import org.easymock.MockControl; -import java.io.File; +import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.maven.archiva.web.validator.utils.ValidatorUtil; /** * AddManagedRepositoryActionTest @@ -42,7 +45,7 @@ import java.util.Collections; * @version $Id$ */ public class AddManagedRepositoryActionTest - extends PlexusInSpringTestCase + extends AbstractManagedRepositoryActionTest { private AddManagedRepositoryAction action; @@ -57,10 +60,6 @@ public class AddManagedRepositoryActionT private ArchivaAuditLogsDao auditLogsDao; private MockControl auditLogsDaoControl; - - private static final String REPO_ID = "repo-ident"; - - private File location; @Override protected String getPlexusConfigLocation() @@ -190,20 +189,131 @@ public class AddManagedRepositoryActionT String status = action.commit(); assertEquals( AddManagedRepositoryAction.CONFIRM, status ); } - - private void populateRepository( ManagedRepositoryConfiguration repository ) + + public void testStruts2ValidationFrameworkWithNullInputs() throws Exception + { + // prep + // 0 is the default value for primitive int; null for objects + ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(null, null, null, null); + action.setRepository(managedRepositoryConfiguration); + + // test + actionValidatorManager.validate(action, EMPTY_STRING); + + // verify + assertTrue(action.hasFieldErrors()); + + Map<String, List<String>> fieldErrors = action.getFieldErrors(); + + // make an expected field error object + Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>(); + + // populate + List<String> expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a repository identifier."); + expectedFieldErrors.put("repository.id", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a directory."); + expectedFieldErrors.put("repository.location", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a repository name."); + expectedFieldErrors.put("repository.name", expectedErrorMessages); + + ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors); + } + + public void testStruts2ValidationFrameworkWithBlankInputs() throws Exception + { + // prep + // 0 is the default value for primitive int + ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING); + action.setRepository(managedRepositoryConfiguration); + + // test + actionValidatorManager.validate(action, EMPTY_STRING); + + // verify + assertTrue(action.hasFieldErrors()); + + Map<String, List<String>> fieldErrors = action.getFieldErrors(); + + // make an expected field error object + Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>(); + + // populate + List<String> expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a repository identifier."); + expectedFieldErrors.put("repository.id", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a directory."); + expectedFieldErrors.put("repository.location", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a repository name."); + expectedFieldErrors.put("repository.name", expectedErrorMessages); + + ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors); + } + + public void testStruts2ValidationFrameworkWithInvalidInputs() throws Exception { - repository.setId( REPO_ID ); - repository.setName( "repo name" ); - repository.setLocation( location.getAbsolutePath() ); - repository.setLayout( "default" ); - repository.setRefreshCronExpression( "* 0/5 * * * ?" ); - repository.setDaysOlder( 31 ); - repository.setRetentionCount( 20 ); - repository.setReleases( true ); - repository.setSnapshots( true ); - repository.setScanned( false ); - repository.setDeleteReleasedSnapshots( true ); + // prep + ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(REPOSITORY_ID_INVALID_INPUT, REPOSITORY_NAME_INVALID_INPUT, REPOSITORY_LOCATION_INVALID_INPUT, REPOSITORY_INDEX_DIR_INVALID_INPUT, REPOSITORY_DAYS_OLDER_INVALID_INPUT, REPOSITORY_RETENTION_COUNT_INVALID_INPUT); + action.setRepository(managedRepositoryConfiguration); + + // test + actionValidatorManager.validate(action, EMPTY_STRING); + + // verify + assertTrue(action.hasFieldErrors()); + + Map<String, List<String>> fieldErrors = action.getFieldErrors(); + + // make an expected field error object + Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>(); + + // populate + List<String> expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)."); + expectedFieldErrors.put("repository.id", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)."); + expectedFieldErrors.put("repository.location", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-)."); + expectedFieldErrors.put("repository.name", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)."); + expectedFieldErrors.put("repository.indexDir", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Repository Purge By Retention Count needs to be between 1 and 100."); + expectedFieldErrors.put("repository.retentionCount", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Repository Purge By Days Older Than needs to be larger than 0."); + expectedFieldErrors.put("repository.daysOlder", expectedErrorMessages); + + ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors); + } + + public void testStruts2ValidationFrameworkWithValidInputs() throws Exception + { + // prep + ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(REPOSITORY_ID_VALID_INPUT, REPOSITORY_NAME_VALID_INPUT, REPOSITORY_LOCATION_VALID_INPUT, REPOSITORY_INDEX_DIR_VALID_INPUT, REPOSITORY_DAYS_OLDER_VALID_INPUT, REPOSITORY_RETENTION_COUNT_VALID_INPUT); + action.setRepository(managedRepositoryConfiguration); + + // test + actionValidatorManager.validate(action, EMPTY_STRING); + + // verify + assertFalse(action.hasFieldErrors()); } // TODO: test errors during add, other actions
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java?rev=1098897&r1=1098896&r2=1098897&view=diff ============================================================================== --- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java (original) +++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java Tue May 3 02:54:19 2011 @@ -20,6 +20,9 @@ package org.apache.maven.archiva.web.act */ import com.opensymphony.xwork2.Action; +import com.opensymphony.xwork2.ObjectFactory; +import com.opensymphony.xwork2.validator.ActionValidatorManager; +import com.opensymphony.xwork2.validator.ActionValidatorManagerFactory; import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.Configuration; import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; @@ -41,7 +44,10 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import org.apache.maven.archiva.web.validator.utils.ValidatorUtil; /** * EditManagedRepositoryActionTest @@ -49,7 +55,7 @@ import java.util.List; * @version $Id$ */ public class EditManagedRepositoryActionTest - extends PlexusInSpringTestCase + extends AbstractManagedRepositoryActionTest { private EditManagedRepositoryAction action; @@ -73,16 +79,13 @@ public class EditManagedRepositoryAction private MockControl auditLogsDaoControl; - private static final String REPO_ID = "repo-ident"; - - private File location; - @Override protected String getPlexusConfigLocation() { return AbstractManagedRepositoriesAction.class.getName().replace( '.', '/' ) + "Test.xml"; } - + + @Override protected void setUp() throws Exception { @@ -258,6 +261,132 @@ public class EditManagedRepositoryAction repoContentStatsDaoControl.verify(); auditLogsDaoControl.verify(); } + + public void testStruts2ValidationFrameworkWithNullInputs() throws Exception + { + // prep + // 0 is the default value for primitive int; null for objects + ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(null, null, null, null); + action.setRepository(managedRepositoryConfiguration); + + // test + actionValidatorManager.validate(action, EMPTY_STRING); + + // verify + assertTrue(action.hasFieldErrors()); + + Map<String, List<String>> fieldErrors = action.getFieldErrors(); + + // make an expected field error object + Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>(); + + // populate + List<String> expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a repository identifier."); + expectedFieldErrors.put("repository.id", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a directory."); + expectedFieldErrors.put("repository.location", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a repository name."); + expectedFieldErrors.put("repository.name", expectedErrorMessages); + + ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors); + } + + public void testStruts2ValidationFrameworkWithBlankInputs() throws Exception + { + // prep + // 0 is the default value for primitive int + ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING); + action.setRepository(managedRepositoryConfiguration); + + // test + actionValidatorManager.validate(action, EMPTY_STRING); + + // verify + assertTrue(action.hasFieldErrors()); + + Map<String, List<String>> fieldErrors = action.getFieldErrors(); + + // make an expected field error object + Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>(); + + // populate + List<String> expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a repository identifier."); + expectedFieldErrors.put("repository.id", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a directory."); + expectedFieldErrors.put("repository.location", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("You must enter a repository name."); + expectedFieldErrors.put("repository.name", expectedErrorMessages); + + ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors); + } + + public void testStruts2ValidationFrameworkWithInvalidInputs() throws Exception + { + // prep + ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(REPOSITORY_ID_INVALID_INPUT, REPOSITORY_NAME_INVALID_INPUT, REPOSITORY_LOCATION_INVALID_INPUT, REPOSITORY_INDEX_DIR_INVALID_INPUT, REPOSITORY_DAYS_OLDER_INVALID_INPUT, REPOSITORY_RETENTION_COUNT_INVALID_INPUT); + action.setRepository(managedRepositoryConfiguration); + + // test + actionValidatorManager.validate(action, EMPTY_STRING); + + // verify + assertTrue(action.hasFieldErrors()); + + Map<String, List<String>> fieldErrors = action.getFieldErrors(); + + // make an expected field error object + Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>(); + + // populate + List<String> expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)."); + expectedFieldErrors.put("repository.id", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)."); + expectedFieldErrors.put("repository.location", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-)."); + expectedFieldErrors.put("repository.name", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)."); + expectedFieldErrors.put("repository.indexDir", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Repository Purge By Retention Count needs to be between 1 and 100."); + expectedFieldErrors.put("repository.retentionCount", expectedErrorMessages); + + expectedErrorMessages = new ArrayList<String>(); + expectedErrorMessages.add("Repository Purge By Days Older Than needs to be larger than 0."); + expectedFieldErrors.put("repository.daysOlder", expectedErrorMessages); + + ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors); + } + + public void testStruts2ValidationFrameworkWithValidInputs() throws Exception + { + // prep + ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(REPOSITORY_ID_VALID_INPUT, REPOSITORY_NAME_VALID_INPUT, REPOSITORY_LOCATION_VALID_INPUT, REPOSITORY_INDEX_DIR_VALID_INPUT, REPOSITORY_DAYS_OLDER_VALID_INPUT, REPOSITORY_RETENTION_COUNT_VALID_INPUT); + action.setRepository(managedRepositoryConfiguration); + + // test + actionValidatorManager.validate(action, EMPTY_STRING); + + // verify + assertFalse(action.hasFieldErrors()); + } private void assertRepositoryEquals( ManagedRepositoryConfiguration expectedRepository, ManagedRepositoryConfiguration actualRepository ) @@ -292,22 +421,6 @@ public class EditManagedRepositoryAction return r; } - private void populateRepository( ManagedRepositoryConfiguration repository ) - throws IOException - { - repository.setId( REPO_ID ); - repository.setName( "repo name" ); - repository.setLocation( location.getCanonicalPath() ); - repository.setLayout( "default" ); - repository.setRefreshCronExpression( "* 0/5 * * * ?" ); - repository.setDaysOlder( 31 ); - repository.setRetentionCount( 20 ); - repository.setReleases( true ); - repository.setSnapshots( true ); - repository.setScanned( false ); - repository.setDeleteReleasedSnapshots( true ); - } - private List<RepositoryContentStatistics> createRepositoryContentStatisticsList() { List<RepositoryContentStatistics> repoStatsList = new ArrayList<RepositoryContentStatistics>(); Added: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/validator/utils/ValidatorUtil.java URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/validator/utils/ValidatorUtil.java?rev=1098897&view=auto ============================================================================== --- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/validator/utils/ValidatorUtil.java (added) +++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/validator/utils/ValidatorUtil.java Tue May 3 02:54:19 2011 @@ -0,0 +1,62 @@ +package org.apache.maven.archiva.web.validator.utils; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.util.List; +import java.util.Map; +import junit.framework.Assert; + +public class ValidatorUtil +{ + public static void assertFieldErrors(Map<String, List<String>> expectedFieldErrors, Map<String, List<String>> actualFieldErrors) + { + if(expectedFieldErrors != null) + { + Assert.assertNotNull(actualFieldErrors); + // checks the number of field errors + Assert.assertEquals(expectedFieldErrors.size(), actualFieldErrors.size()); + + // check every content of the field error + for(Map.Entry<String, List<String>> expectedEntry : expectedFieldErrors.entrySet()) + { + if(expectedEntry.getValue() != null) + { + Assert.assertNotNull(actualFieldErrors.get(expectedEntry.getKey())); + // checks the error message count per error field + Assert.assertEquals(expectedEntry.getValue().size(), actualFieldErrors.get(expectedEntry.getKey()).size()); + + // check the contents of error messages per field error + for(int i = 0; i < expectedEntry.getValue().size(); i++) + { + Assert.assertEquals(expectedEntry.getValue().get(i), actualFieldErrors.get(expectedEntry.getKey()).get(i)); + } + } + else + { + Assert.assertNull(actualFieldErrors.get(expectedEntry.getKey())); + } + } + } + else + { + Assert.assertNull(actualFieldErrors); + } + } +}
