You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by oc...@apache.org on 2011/05/03 04:54:21 UTC
svn commit: r1098897 [3/3] - in
/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web:
archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/
archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/
archiva-webapp/src/mai...
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);
+ }
+ }
+}