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 [2/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/main/resources/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction-saveNetworkProxy-validation.xml
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction-saveNetworkProxy-validation.xml?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction-saveNetworkProxy-validation.xml (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction-saveNetworkProxy-validation.xml Tue May 3 02:54:19 2011
@@ -35,18 +35,33 @@
<param name="trim">true</param>
<message>You must enter an identifier of 4 or more than 4 characters.</message>
</field-validator>
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^[a-zA-Z0-9._-]+$</param>
+ <message>Proxy id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message>
+ </field-validator>
</field>
<field name="proxy.protocol">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>You must enter a protocol.</message>
</field-validator>
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^[-a-zA-Z0-9./:\\]+$</param>
+ <message>Protocol must only contain alphanumeric characters, forward-slashes(/), back-slashes(\), dots(.), colons(:), and dashes(-).</message>
+ </field-validator>
</field>
<field name="proxy.host">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>You must enter a host.</message>
</field-validator>
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^[-a-zA-Z0-9._/~:?!&=\\]+$</param>
+ <message>Host must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).</message>
+ </field-validator>
</field>
<field name="proxy.port">
<field-validator type="required">
@@ -60,5 +75,18 @@
-->
<message>Port needs to be larger than ${min}</message>
</field-validator>
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^[0-9]+$</param>
+ <message>Port must only contain numeric characters.</message>
+ </field-validator>
+ </field>
+ <field name="proxy.username">
+ <!-- no requiredstring validation, because there was none before(being consistent). -->
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^[-a-zA-Z0-9.@/_\\]*$</param>
+ <message>Username must only contain alphanumeric characters, at's(@), forward-slashes(/), back-slashes(\), underscores(_), dots(.), and dashes(-).</message>
+ </field-validator>
</field>
</validators>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction-validation.xml
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction-validation.xml?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction-validation.xml (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction-validation.xml Tue May 3 02:54:19 2011
@@ -26,16 +26,39 @@
<field-validator type="requiredstring">
<message>You must enter a repository identifier.</message>
</field-validator>
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^[a-zA-Z0-9._-]+$</param>
+ <message>Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message>
+ </field-validator>
</field>
<field name="repository.location">
<field-validator type="requiredstring">
<message>You must enter a directory.</message>
</field-validator>
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^[-a-zA-Z0-9._/~:?!&=\\]+$</param>
+ <message>Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).</message>
+ </field-validator>
+ </field>
+ <field name="repository.indexDir">
+ <!-- no requiredstring validation, because there was none before(being consistent). -->
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^[-a-zA-Z0-9._/~:?!&=\\]*$</param>
+ <message>Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).</message>
+ </field-validator>
</field>
<field name="repository.name">
<field-validator type="requiredstring">
<message>You must enter a repository name.</message>
</field-validator>
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^([a-zA-Z0-9.)/_(-]|\s)+$</param>
+ <message>Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-).</message>
+ </field-validator>
</field>
<field name="repository.retentionCount">
<field-validator type="int">
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml Tue May 3 02:54:19 2011
@@ -26,28 +26,51 @@
<field-validator type="requiredstring">
<message>You must enter a repository identifier.</message>
</field-validator>
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^[a-zA-Z0-9._-]+$</param>
+ <message>Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).</message>
+ </field-validator>
</field>
<field name="repository.location">
<field-validator type="requiredstring">
<message>You must enter a directory.</message>
</field-validator>
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^[-a-zA-Z0-9._/~:?!&=\\]+$</param>
+ <message>Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).</message>
+ </field-validator>
+ </field>
+ <field name="repository.indexDir">
+ <!-- no requiredstring validation, because there was none before(being consistent). -->
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^[-a-zA-Z0-9._/~:?!&=\\]*$</param>
+ <message>Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).</message>
+ </field-validator>
</field>
<field name="repository.name">
<field-validator type="requiredstring">
<message>You must enter a repository name.</message>
</field-validator>
+ <field-validator type="regex">
+ <param name="trim">true</param>
+ <param name="expression">^([a-zA-Z0-9.)/_(-]|\s)+$</param>
+ <message>Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-).</message>
+ </field-validator>
</field>
<field name="repository.retentionCount">
<field-validator type="int">
<param name="min">1</param>
<param name="max">100</param>
<message>Repository Purge By Retention Count needs to be between ${min} and ${max}.</message>
- </field-validator>
+ </field-validator>
</field>
<field name="repository.daysOlder">
<field-validator type="int">
<param name="min">0</param>
<message>Repository Purge By Days Older Than needs to be larger than ${min}.</message>
- </field-validator>
+ </field-validator>
</field>
</validators>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp Tue May 3 02:54:19 2011
@@ -66,8 +66,22 @@
}
</script>
- <s:actionmessage/>
- <s:actionerror/>
+ <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+
<s:form method="post" action="addLegacyArtifactPath!commit" namespace="/admin" validate="true">
<s:textfield name="legacyArtifactPath.path" label="Path" size="50" required="true" onchange="parse( this.value )"/>
<s:textfield name="groupId" label="GroupId" size="20" required="true"/>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRepository.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRepository.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRepository.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRepository.jsp Tue May 3 02:54:19 2011
@@ -31,8 +31,21 @@
<h1>Admin: Add Managed Repository</h1>
<div id="contentArea">
- <s:actionerror/>
- <s:actionmessage/>
+ <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<s:form method="post" action="addRepository!commit" namespace="/admin" validate="true">
<s:textfield name="repository.id" label="Identifier" size="10" required="true"/>
<%@ include file="/WEB-INF/jsp/admin/include/repositoryForm.jspf" %>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp Tue May 3 02:54:19 2011
@@ -40,29 +40,30 @@
<a href="<s:url action='editAppearance' />">Change your appearance</a>
</p>
+<%-- used c:out in displaying EL's so that they are escaped --%>
<h3>Organization Information</h3>
<table>
<tr>
<th>Name</th>
- <td>${organisationName}</td>
+ <td><c:out value="${organisationName}" /></td>
</tr>
<tr>
<th>URL</th>
- <td><a href="${organisationUrl}">
- <code>${organisationUrl}</code>
+ <td><a href='<c:out value="${organisationUrl}" />'>
+ <code><c:out value="${organisationUrl}" /></code>
</a></td>
</tr>
<tr>
<th>Logo URL</th>
<td>
- <code>${organisationLogo}</code>
+ <code><c:out value="${organisationLogo}" /></code>
</td>
</tr>
<c:if test="${!empty (organisationLogo)}">
<tr>
<th> </th>
- <td><img src="${organisationLogo}"
- title="${organisationName}" border="0" alt="" /></td>
+ <td><img src='<c:out value="${organisationLogo}" />'
+ title='<c:out value="${organisationName}" />' border="0" alt="" /></td>
</tr>
</c:if>
</table>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp Tue May 3 02:54:19 2011
@@ -46,23 +46,24 @@
the following managed repository?
</p>
+ <%-- used c:out in displaying EL's so that they are escaped --%>
<div class="infobox">
<table class="infotable">
<tr>
<td>ID:</td>
- <td><code>${repository.id}</code></td>
+ <td><code><c:out value="${repository.id}" /></code></td>
</tr>
<tr>
<td>Name:</td>
- <td>${repository.name}</td>
+ <td><c:out value="${repository.name}" /></td>
</tr>
<tr>
<td>Directory:</td>
- <td>${repository.location}</td>
+ <td><c:out value="${repository.location}" /></td>
</tr>
<tr>
<td>Index Directory:</td>
- <td>${repository.indexDir}</td>
+ <td><c:out value="${repository.indexDir}" /></td>
</tr>
<tr>
<td>Type:</td>
@@ -80,15 +81,15 @@
</tr>
<tr>
<td>Cron:</td>
- <td>${repository.refreshCronExpression}</td>
+ <td><c:out value="${repository.refreshCronExpression}" /></td>
</tr>
<tr>
<td>Repository Purge By Days Older Than:</td>
- <td>${repository.daysOlder}</td>
+ <td><c:out value="${repository.daysOlder}" /></td>
</tr>
<tr>
<td>Repository Purge By Retention Count:</td>
- <td>${repository.retentionCount}</td>
+ <td><c:out value="${repository.retentionCount}" /></td>
</tr>
<tr>
<td>Releases Included:</td>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp Tue May 3 02:54:19 2011
@@ -19,6 +19,7 @@
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
@@ -30,7 +31,14 @@
<h1>Admin: Delete Network Proxy</h1>
-<s:actionerror/>
+ <%-- changed the structure of displaying errorMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<div id="contentArea">
@@ -39,9 +47,9 @@
<blockquote>
<strong><span class="statusFailed">WARNING:</span> This operation can not be undone.</strong>
</blockquote>
-
+ <%-- used c:out in displaying EL's for them to be escaped. --%>
<p>
- Are you sure you want to delete network proxy <code>${proxyid}</code> ?
+ Are you sure you want to delete network proxy <code><c:out value="${proxyid}" /></code> ?
</p>
<s:form method="post" action="deleteNetworkProxy!delete" namespace="/admin" validate="true">
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp Tue May 3 02:54:19 2011
@@ -19,6 +19,7 @@
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
@@ -30,7 +31,14 @@
<h1>Admin: Delete Managed Repository</h1>
-<s:actionerror/>
+<%-- changed the structure of displaying errorMessages in order for them to be escaped. --%>
+<s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+</s:if>
<div id="contentArea">
@@ -44,19 +52,20 @@
Are you sure you want to delete the following managed repository?
</p>
+ <%-- used c:out in displaying EL's so that they are escaped --%>
<div class="infobox">
<table class="infotable">
<tr>
<td>ID:</td>
- <td><code>${repository.id}</code></td>
+ <td><code><c:out value="${repository.id}" /></code></td>
</tr>
<tr>
<td>Name:</td>
- <td>${repository.name}</td>
+ <td><c:out value="${repository.name}" /></td>
</tr>
<tr>
<td>Directory:</td>
- <td>${repository.location}</td>
+ <td><c:out value="${repository.location}" /></td>
</tr>
</table>
</div>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp Tue May 3 02:54:19 2011
@@ -35,7 +35,14 @@
</p>
<s:set name="editOrganisationInfo" value="editOrganisationInfo"/>
-<s:actionmessage/>
+<%-- changed the structure of displaying actionMessages in order for them to be escaped. --%>
+<s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+</s:if>
<s:form method="post" action="saveAppearance" namespace="/admin" validate="true" theme="xhtml">
<s:textfield name="organisationName" value="%{#attr.organisationName}" label="Name" size="50" />
<s:textfield name="organisationUrl" value="%{#attr.organisationUrl}" label="URL" size="50"/>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp Tue May 3 02:54:19 2011
@@ -43,10 +43,23 @@
<div id="contentArea">
- <h2>${addedit} network proxy: ${networkProxyName}</h2>
+ <h2>${addedit} network proxy: <c:out value="${networkProxyName}" /></h2>
- <s:actionerror/>
- <s:actionmessage/>
+ <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<s:form method="post" action="saveNetworkProxy" namespace="/admin">
<s:hidden name="mode"/>
@@ -66,7 +79,7 @@
</s:form>
<script type="text/javascript">
- document.getElementById("saveNetworkProxy_host").focus();
+ document.getElementById("saveNetworkProxy_host").focus();
</script>
</div>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp Tue May 3 02:54:19 2011
@@ -30,11 +30,24 @@
<h1>Admin: Edit Managed Repository</h1>
-<s:actionerror/>
+<%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+<s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+</s:if>
<div id="contentArea">
- <s:actionmessage/>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<s:form method="post" action="editRepository!commit" namespace="/admin" validate="false">
<s:hidden name="repository.id"/>
<s:label label="ID" name="repository.id" />
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp Tue May 3 02:54:19 2011
@@ -35,8 +35,21 @@
<div id="contentArea">
-<s:actionerror/>
-<s:actionmessage/>
+<%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+<s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<div class="admin">
<div class="controls">
@@ -69,12 +82,12 @@
</c:choose>
<div class="legacyArtifactPath ${rowColor}">
-
+
<div class="controls">
<%-- TODO: make some icons --%>
<redback:ifAnyAuthorized permissions="archiva-manage-configuration">
<s:token/>
- <s:url id="deleteLegacyArtifactPath" action="deleteLegacyArtifactPath">
+ <s:url id="deleteLegacyArtifactPath" encode="true" action="deleteLegacyArtifactPath">
<s:param name="path" value="%{#attr.legacyArtifactPath.path}"/>
<s:param name="struts.token.name">struts.token</s:param>
<s:param name="struts.token"><s:property value="struts.token"/></s:param>
@@ -86,17 +99,18 @@
</redback:ifAnyAuthorized>
</div>
+<%-- used c:out in displaying EL's so that they would be escaped --%>
<table class="infoTable">
<tr>
<th>Path</th>
<td>
- <code>${legacyArtifactPath.path}</code>
+ <code><c:out value="${legacyArtifactPath.path}" /></code>
</td>
</tr>
<tr>
<th>Artifact</th>
<td>
- <code>${legacyArtifactPath.artifact}</code>
+ <code><c:out value="${legacyArtifactPath.artifact}" /></code>
</td>
</tr>
</table>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp Tue May 3 02:54:19 2011
@@ -35,7 +35,21 @@
<div id="contentArea">
-<s:actionerror /> <s:actionmessage />
+ <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<div class="admin">
<div class="controls">
@@ -72,10 +86,10 @@
<redback:ifAnyAuthorized
permissions="archiva-manage-configuration">
<s:token/>
- <s:url id="editNetworkProxyUrl" action="editNetworkProxy">
+ <s:url id="editNetworkProxyUrl" encode="true" action="editNetworkProxy">
<s:param name="proxyid" value="%{#attr.proxy.id}" />
</s:url>
- <s:url id="deleteNetworkProxyUrl" action="deleteNetworkProxy" method="confirm">
+ <s:url id="deleteNetworkProxyUrl" encode="true" action="deleteNetworkProxy" method="confirm">
<s:param name="proxyid" value="%{#attr.proxy.id}" />
<s:param name="struts.token.name">struts.token</s:param>
<s:param name="struts.token"><s:property value="struts.token"/></s:param>
@@ -88,27 +102,28 @@
Delete Network Proxy</s:a>
</redback:ifAnyAuthorized></div>
+ <%-- used c:out in displaying EL's for them to be escaped. --%>
<table class="infoTable">
<tr>
<th>Identifier</th>
- <td><code>${proxy.id}</code></td>
+ <td><code><c:out value="${proxy.id}" /></code></td>
</tr>
<tr>
<th>Protocol</th>
- <td>${proxy.protocol}</td>
+ <td><c:out value="${proxy.protocol}" /></td>
</tr>
<tr>
<th>Host</th>
- <td>${proxy.host}</td>
+ <td><c:out value="${proxy.host}" /></td>
</tr>
<tr>
<th>Port</th>
- <td>${proxy.port}</td>
+ <td><c:out value="${proxy.port}" /></td>
</tr>
<c:if test="${not empty (proxy.username)}">
<tr>
<th>Username</th>
- <td>${proxy.username}</td>
+ <td><c:out value="${proxy.username}" /></td>
</tr>
<c:if test="${not empty (proxy.password)}">
<tr>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp Tue May 3 02:54:19 2011
@@ -47,8 +47,22 @@
<div id="contentArea">
-<s:actionerror/>
-<s:actionmessage/>
+ <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:actionmessage />
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<div class="admin">
<div class="controls">
@@ -85,11 +99,11 @@
<div class="controls">
<%-- TODO: make some icons --%>
<redback:ifAnyAuthorized permissions="archiva-manage-configuration">
- <s:url id="editRepositoryUrl" action="editRepository">
+ <s:url id="editRepositoryUrl" encode="true" action="editRepository">
<s:param name="repoid" value="%{#attr.repository.id}"/>
</s:url>
<s:token/>
- <s:url id="deleteRepositoryUrl" action="confirmDeleteRepository">
+ <s:url id="deleteRepositoryUrl" encode="true" action="confirmDeleteRepository">
<s:param name="repoid" value="%{#attr.repository.id}"/>
<s:param name="struts.token.name">struts.token</s:param>
<s:param name="struts.token"><s:property value="struts.token"/></s:param>
@@ -104,43 +118,44 @@
</s:a>
</redback:ifAnyAuthorized>
<c:url var="rssFeedIconUrl" value="/images/icons/rss-feed.png"/>
- <a href="/archiva/feeds/${repository.id}">
+ <a href='/archiva/feeds/<c:out value="${repository.id}" />'>
<img src="${rssFeedIconUrl}" />
</a>
</div>
+<%-- used c:out in displaying EL's for them to be escaped. --%>
<div style="float: left">
<img src="<c:url value="/images/archiva-splat-32.gif"/>" alt="" width="32" height="32"/>
</div>
-<h3 class="repository">${repository.name}</h3>
+<h3 class="repository"><c:out value="${repository.name}" /></h3>
<table class="infoTable">
<tr>
<th>Identifier</th>
<td>
- <code>${repository.id}</code>
+ <code><c:out value="${repository.id}" /></code>
</td>
</tr>
<tr>
<th>Name</th>
<td>
- <code>${repository.name}</code>
+ <code><c:out value="${repository.name}" /></code>
</td>
</tr>
<tr>
<th>Directory</th>
- <td>${repository.location}</td>
+ <td><c:out value="${repository.location}" /></td>
</tr>
<c:if test="${!empty (repository.indexDir)}">
<tr>
<th>Index Directory</th>
- <td>${repository.indexDir}</td>
+ <td><c:out value="${repository.indexDir}" /></td>
</tr>
</c:if>
<tr>
<th>WebDAV URL</th>
- <td><a href="${baseUrl}/${repository.id}/">${baseUrl}/${repository.id}/</a></td>
+ <td><a href='<c:out value="${baseUrl}" />/<c:out value="${repository.id}" />/' ><c:out value="${baseUrl}" />/<c:out value="${repository.id}" />/</a></td>
</tr>
<tr>
<th>Type</th>
@@ -161,7 +176,7 @@
<th>Groups</th>
<td>
<c:forEach items="${repositoryToGroupMap[repository.id]}" varStatus="i" var="group">
- ${group}<c:if test="${!i.last}">,</c:if>
+ <c:out value="${group}" /><c:if test="${!i.last}">,</c:if>
</c:forEach>
</td>
</tr>
@@ -181,11 +196,11 @@
</tr>
<tr>
<th>Repository Purge By Days Older Than</th>
- <td>${repository.daysOlder}</td>
+ <td><c:out value="${repository.daysOlder}" /></td>
</tr>
<tr>
<th>Repository Purge By Retention Count</th>
- <td>${repository.retentionCount}</td>
+ <td><c:out value="${repository.retentionCount}" /></td>
</tr>
</c:if>
<tr>
@@ -195,7 +210,7 @@
<c:if test="${repository.scanned}">
<tr>
<th>Scanning Cron</th>
- <td>${repository.refreshCronExpression}</td>
+ <td><c:out value="${repository.refreshCronExpression}" /></td>
</tr>
<tr>
<th>
@@ -229,19 +244,19 @@
<table>
<tr>
<th>Last Scanned</th>
- <td>${stats.whenGathered}</td>
+ <td><c:out value="${stats.whenGathered}" /></td>
</tr>
<tr>
<th>Duration</th>
- <td>${stats.duration} ms</td>
+ <td><c:out value="${stats.duration}" /> ms</td>
</tr>
<tr>
<th>Total File Count</th>
- <td>${stats.totalFileCount}
+ <td><c:out value="${stats.totalFileCount}" />
</tr>
<tr>
<th>New Files Found</th>
- <td>${stats.newFileCount}
+ <td><c:out value="${stats.newFileCount}" />
</tr>
</table>
</c:otherwise>
@@ -295,15 +310,15 @@
<div class="controls">
<redback:ifAnyAuthorized permissions="archiva-manage-configuration">
- <s:url id="editRepositoryUrl" action="editRemoteRepository">
- <s:param name="repoid" value="%{#attr.repository.id}"/>
+ <s:url id="editRepositoryUrl" encode="true" action="editRemoteRepository">
+ <s:param name="repoid" value="%{#attr.repository.id}"/>
</s:url>
<s:a href="%{editRepositoryUrl}">
<img src="<c:url value="/images/icons/edit.png" />" alt="" width="16" height="16"/>
Edit
</s:a>
<s:token/>
- <s:url id="deleteRepositoryUrl" action="confirmDeleteRemoteRepository">
+ <s:url id="deleteRepositoryUrl" encode="true" action="confirmDeleteRemoteRepository">
<s:param name="repoid" value="%{#attr.repository.id}"/>
<s:param name="struts.token.name">struts.token</s:param>
<s:param name="struts.token"><s:property value="struts.token"/></s:param>
@@ -319,24 +334,24 @@
<img src="<c:url value="/images/archiva-world.png"/>" alt="" width="32" height="32"/>
</div>
- <h3 class="repository">${repository.name}</h3>
+ <h3 class="repository"><c:out value="${repository.name}" /></h3>
<table class="infoTable">
<tr>
<th>Identifier</th>
<td>
- <code>${repository.id}</code>
+ <code><c:out value="${repository.id}" /></code>
</td>
</tr>
<tr>
<th>Name</th>
<td>
- <code>${repository.name}</code>
+ <code><c:out value="${repository.name}" /></code>
</td>
</tr>
<tr>
<th>URL</th>
- <td>${repository.url}</td>
+ <td><c:out value="${repository.url}" /></td>
</tr>
<tr>
<th>Type</th>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp Tue May 3 02:54:19 2011
@@ -29,12 +29,12 @@
<s:set name="organisationUrl" value="organisationUrl"/>
<c:choose>
<c:when test="${!empty (organisationUrl)}">
- <a href="${organisationUrl}">
- <img src="${organisationLogo}" title="${organisationName}"/>
+ <a href='<c:out value="${organisationUrl}" />'>
+ <img src='<c:out value="${organisationLogo}" />' title='<c:out value="${organisationName}" />'/>
</a>
</c:when>
<c:otherwise>
- <img src="${organisationLogo}" title="${organisationName}"/>
+ <img src='<c:out value="${organisationLogo}" />' title='<c:out value="${organisationName}" />'/>
</c:otherwise>
</c:choose>
</c:when>
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp?rev=1098897&r1=1098896&r2=1098897&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp Tue May 3 02:54:19 2011
@@ -30,8 +30,21 @@
<body>
<h1>Delete Artifact</h1>
- <s:actionerror/>
- <s:actionmessage/>
+ <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<div id="contentArea">
<s:form action="deleteArtifact!doDelete" namespace="/" method="post" validate="true">
Added: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/DeleteArtifactActionTest.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/DeleteArtifactActionTest.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/action/DeleteArtifactActionTest.java (added)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/DeleteArtifactActionTest.java Tue May 3 02:54:19 2011
@@ -0,0 +1,188 @@
+package org.apache.maven.archiva.web.action;
+
+/*
+ * 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 com.opensymphony.xwork2.ObjectFactory;
+import com.opensymphony.xwork2.validator.ActionValidatorManager;
+import com.opensymphony.xwork2.validator.ActionValidatorManagerFactory;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import junit.framework.TestCase;
+import org.apache.maven.archiva.web.validator.utils.ValidatorUtil;
+
+public class DeleteArtifactActionTest extends TestCase
+{
+ private static final String EMPTY_STRING = "";
+
+ // valid inputs
+ private static final String GROUP_ID_VALID_INPUT = "abcXYZ0129._-";
+
+ private static final String ARTIFACT_ID_VALID_INPUT = "abcXYZ0129._-";
+
+ private static final String VERSION_VALID_INPUT = "1.2.3";
+
+ private static final String REPOSITORY_ID_VALID_INPUT = "abcXYZ0129._-";
+
+ // invalid inputs
+ private static final String GROUP_ID_INVALID_INPUT = "<> \\/~+[ ]'\"";
+
+ private static final String ARTIFACT_ID_INVALID_INPUT = "<> \\/~+[ ]'\"";
+
+ private static final String VERSION_INVALID_INPUT = "<>";
+
+ private static final String REPOSITORY_ID_INVALID_INPUT = "<> \\/~+[ ]'\"";
+
+ // testing requisite
+ private DeleteArtifactAction deleteArtifactAction;
+
+ private ActionValidatorManager actionValidatorManager;
+
+ @Override
+ public void setUp() throws Exception
+ {
+ deleteArtifactAction = new DeleteArtifactAction();
+ ObjectFactory.setObjectFactory(new ObjectFactory());
+ actionValidatorManager = ActionValidatorManagerFactory.getInstance();
+ }
+
+ public void testStruts2ValidationFrameworkWithNullInputs() throws Exception
+ {
+ // prep
+ populateDeleteArtifactActionFields(deleteArtifactAction, null, null, null, null);
+
+ // test
+ actionValidatorManager.validate(deleteArtifactAction, EMPTY_STRING);
+
+ // verify
+ assertTrue(deleteArtifactAction.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = deleteArtifactAction.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 groupId.");
+ expectedFieldErrors.put("groupId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter an artifactId.");
+ expectedFieldErrors.put("artifactId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a version.");
+ expectedFieldErrors.put("version", expectedErrorMessages);
+
+ // repositoryId is not required.
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithBlankInputs() throws Exception
+ {
+ // prep
+ populateDeleteArtifactActionFields(deleteArtifactAction, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING);
+
+ // test
+ actionValidatorManager.validate(deleteArtifactAction, EMPTY_STRING);
+
+ // verify
+ assertTrue(deleteArtifactAction.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = deleteArtifactAction.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 groupId.");
+ expectedFieldErrors.put("groupId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter an artifactId.");
+ expectedFieldErrors.put("artifactId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a version.");
+ expectedFieldErrors.put("version", expectedErrorMessages);
+
+ // repositoryId is not required.
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithInvalidInputs() throws Exception
+ {
+ // prep
+ populateDeleteArtifactActionFields(deleteArtifactAction, GROUP_ID_INVALID_INPUT, ARTIFACT_ID_INVALID_INPUT, VERSION_INVALID_INPUT, REPOSITORY_ID_INVALID_INPUT);
+
+ // test
+ actionValidatorManager.validate(deleteArtifactAction, EMPTY_STRING);
+
+ // verify
+ assertTrue(deleteArtifactAction.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = deleteArtifactAction.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("Group id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("groupId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Artifact id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("artifactId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Repository id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("repositoryId", expectedErrorMessages);
+
+ // version has its validation in the validate() method of the action class.
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithValidInputs() throws Exception
+ {
+ // prep
+ populateDeleteArtifactActionFields(deleteArtifactAction, GROUP_ID_VALID_INPUT, ARTIFACT_ID_VALID_INPUT, VERSION_VALID_INPUT, REPOSITORY_ID_VALID_INPUT);
+
+ // test
+ actionValidatorManager.validate(deleteArtifactAction, EMPTY_STRING);
+
+ // verify
+ assertFalse(deleteArtifactAction.hasFieldErrors());
+ }
+
+ private void populateDeleteArtifactActionFields(DeleteArtifactAction deleteArtifactAction, String groupId, String artifactId, String version, String repositoryId)
+ {
+ deleteArtifactAction.setGroupId(groupId);
+ deleteArtifactAction.setArtifactId(artifactId);
+ deleteArtifactAction.setVersion(version);
+ deleteArtifactAction.setRepositoryId(repositoryId);
+ }
+}
Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/appearance/EditOrganizationInfoActionTest.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/appearance/EditOrganizationInfoActionTest.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/appearance/EditOrganizationInfoActionTest.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/appearance/EditOrganizationInfoActionTest.java Tue May 3 02:54:19 2011
@@ -20,12 +20,47 @@ 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 java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.apache.maven.archiva.configuration.OrganisationInformation;
+import org.apache.maven.archiva.web.validator.utils.ValidatorUtil;
/**
*/
public class EditOrganizationInfoActionTest extends AbstractOrganizationInfoActionTest
{
+ private static final String EMPTY_STRING = "";
+
+ // valid inputs
+ private static final String ORGANISATION_NAME_VALID_INPUT = "abcXYZ0129. _/\\~ :?!&=-";
+
+ private static final String ORGANISATION_URL_VALID_INPUT = "file://home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
+
+ private static final String ORGANISATION_LOGO_VALID_INPUT = "file://home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
+
+ // invalid inputs
+ private static final String ORGANISATION_NAME_INVALID_INPUT = "<>~+[ ]'\"";
+
+ private static final String ORGANISATION_URL_INVALID_INPUT = "/home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
+
+ private static final String ORGANISATION_LOGO_INVALID_INPUT = "/home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
+
+ // testing requisite
+ private ActionValidatorManager actionValidatorManager;
+
+ @Override
+ public void setUp() throws Exception
+ {
+ super.setUp();
+ ObjectFactory.setObjectFactory(new ObjectFactory());
+ actionValidatorManager = ActionValidatorManagerFactory.getInstance();
+ }
+
public void testOrganisationInfoSaves()
throws Exception
{
@@ -56,6 +91,109 @@ public class EditOrganizationInfoActionT
assertEquals("URL1", orginfo.getUrl());
}
+ public void testStruts2ValidationFrameworkWithNullInputs() throws Exception
+ {
+ // prep
+ action = getAction();
+ populateOrganisationValues(action, null, null, null);
+
+ // 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 name");
+ expectedFieldErrors.put("organisationName", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithBlankInputs() throws Exception
+ {
+ // prep
+ action = getAction();
+ populateOrganisationValues(action, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING);
+
+ // 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 name");
+ expectedFieldErrors.put("organisationName", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithInvalidInputs() throws Exception
+ {
+ // prep
+ action = getAction();
+ populateOrganisationValues(action, ORGANISATION_NAME_INVALID_INPUT, ORGANISATION_URL_INVALID_INPUT, ORGANISATION_LOGO_INVALID_INPUT);
+
+ // 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("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(-).");
+ expectedFieldErrors.put("organisationName", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a URL");
+ expectedFieldErrors.put("organisationUrl", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a URL");
+ expectedFieldErrors.put("organisationLogo", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithValidInputs() throws Exception
+ {
+ // prep
+ action = getAction();
+ populateOrganisationValues(action, ORGANISATION_NAME_VALID_INPUT, ORGANISATION_URL_VALID_INPUT, ORGANISATION_LOGO_VALID_INPUT);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertFalse(action.hasFieldErrors());
+ }
+
+ private void populateOrganisationValues(AbstractAppearanceAction abstractAppearanceAction , String name, String url, String logo)
+ {
+ abstractAppearanceAction.setOrganisationName(name);
+ abstractAppearanceAction.setOrganisationUrl(url);
+ abstractAppearanceAction.setOrganisationLogo(logo);
+ }
+
@Override
protected AbstractAppearanceAction getAction()
{
Added: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.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/legacy/AddLegacyArtifactPathActionTest.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/action/admin/legacy/AddLegacyArtifactPathActionTest.java (added)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java Tue May 3 02:54:19 2011
@@ -0,0 +1,232 @@
+package org.apache.maven.archiva.web.action.admin.legacy;
+
+/*
+ * 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 com.opensymphony.xwork2.ObjectFactory;
+import com.opensymphony.xwork2.validator.ActionValidatorManager;
+import com.opensymphony.xwork2.validator.ActionValidatorManagerFactory;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import junit.framework.TestCase;
+import org.apache.maven.archiva.configuration.LegacyArtifactPath;
+import org.apache.maven.archiva.web.validator.utils.ValidatorUtil;
+
+public class AddLegacyArtifactPathActionTest extends TestCase
+{
+ private static final String EMPTY_STRING = "";
+
+ // valid inputs
+ private static final String LEGACY_ARTIFACT_PATH_PATH_VALID_INPUT = "-abcXYZ0129._/\\";
+
+ private static final String GROUP_ID_VALID_INPUT = "abcXYZ0129._-";
+
+ private static final String ARTIFACT_ID_VALID_INPUT = "abcXYZ0129._-";
+
+ private static final String VERSION_VALID_INPUT = "abcXYZ0129._-";
+
+ private static final String CLASSIFIER_VALID_INPUT = "abcXYZ0129._-";
+
+ private static final String TYPE_VALID_INPUT = "abcXYZ0129._-";
+
+ // invalid inputs
+ private static final String LEGACY_ARTIFACT_PATH_PATH_INVALID_INPUT = "<> ~+[ ]'\"";
+
+ private static final String GROUP_ID_INVALID_INPUT = "<> \\/~+[ ]'\"";
+
+ private static final String ARTIFACT_ID_INVALID_INPUT = "<> \\/~+[ ]'\"";
+
+ private static final String VERSION_INVALID_INPUT = "<> \\/~+[ ]'\"";
+
+ private static final String CLASSIFIER_INVALID_INPUT = "<> \\/~+[ ]'\"";
+
+ private static final String TYPE_INVALID_INPUT = "<> \\/~+[ ]'\"";
+
+ // testing requisite
+ private AddLegacyArtifactPathAction addLegacyArtifactPathAction;
+
+ private ActionValidatorManager actionValidatorManager;
+
+ @Override
+ public void setUp() throws Exception
+ {
+ addLegacyArtifactPathAction = new AddLegacyArtifactPathAction();
+ ObjectFactory.setObjectFactory(new ObjectFactory());
+ actionValidatorManager = ActionValidatorManagerFactory.getInstance();
+ }
+
+ public void testStruts2ValidationFrameworkWithNullInputs() throws Exception
+ {
+ // prep
+ LegacyArtifactPath legacyArtifactPath = createLegacyArtifactPath(null);
+ populateAddLegacyArtifactPathActionFields(addLegacyArtifactPathAction, legacyArtifactPath, null, null, null, null, null);
+
+ // test
+ actionValidatorManager.validate(addLegacyArtifactPathAction, EMPTY_STRING);
+
+ // verify
+ assertTrue(addLegacyArtifactPathAction.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = addLegacyArtifactPathAction.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 legacy path.");
+ expectedFieldErrors.put("legacyArtifactPath.path", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a groupId.");
+ expectedFieldErrors.put("groupId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter an artifactId.");
+ expectedFieldErrors.put("artifactId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a version.");
+ expectedFieldErrors.put("version", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a type.");
+ expectedFieldErrors.put("type", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithBlankInputs() throws Exception
+ {
+ // prep
+ LegacyArtifactPath legacyArtifactPath = createLegacyArtifactPath(EMPTY_STRING);
+ populateAddLegacyArtifactPathActionFields(addLegacyArtifactPathAction, legacyArtifactPath, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING);
+
+ // test
+ actionValidatorManager.validate(addLegacyArtifactPathAction, EMPTY_STRING);
+
+ // verify
+ assertTrue(addLegacyArtifactPathAction.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = addLegacyArtifactPathAction.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 legacy path.");
+ expectedFieldErrors.put("legacyArtifactPath.path", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a groupId.");
+ expectedFieldErrors.put("groupId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter an artifactId.");
+ expectedFieldErrors.put("artifactId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a version.");
+ expectedFieldErrors.put("version", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a type.");
+ expectedFieldErrors.put("type", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithInvalidInputs() throws Exception
+ {
+ // prep
+ LegacyArtifactPath legacyArtifactPath = createLegacyArtifactPath(LEGACY_ARTIFACT_PATH_PATH_INVALID_INPUT);
+ populateAddLegacyArtifactPathActionFields(addLegacyArtifactPathAction, legacyArtifactPath, GROUP_ID_INVALID_INPUT, ARTIFACT_ID_INVALID_INPUT, VERSION_INVALID_INPUT, CLASSIFIER_INVALID_INPUT, TYPE_INVALID_INPUT);
+
+ // test
+ actionValidatorManager.validate(addLegacyArtifactPathAction, EMPTY_STRING);
+
+ // verify
+ assertTrue(addLegacyArtifactPathAction.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = addLegacyArtifactPathAction.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("Legacy path must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("legacyArtifactPath.path", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Group id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("groupId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Artifact id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("artifactId", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Version must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("version", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Classifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("classifier", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Type must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("type", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithValidInputs() throws Exception
+ {
+ // prep
+ LegacyArtifactPath legacyArtifactPath = createLegacyArtifactPath(LEGACY_ARTIFACT_PATH_PATH_VALID_INPUT);
+ populateAddLegacyArtifactPathActionFields(addLegacyArtifactPathAction, legacyArtifactPath, GROUP_ID_VALID_INPUT, ARTIFACT_ID_VALID_INPUT, VERSION_VALID_INPUT, CLASSIFIER_VALID_INPUT, TYPE_VALID_INPUT);
+
+ // test
+ actionValidatorManager.validate(addLegacyArtifactPathAction, EMPTY_STRING);
+
+ // verify
+ assertFalse(addLegacyArtifactPathAction.hasFieldErrors());
+ }
+
+ private LegacyArtifactPath createLegacyArtifactPath(String path)
+ {
+ LegacyArtifactPath legacyArtifactPath = new LegacyArtifactPath();
+ legacyArtifactPath.setPath(path);
+ return legacyArtifactPath;
+ }
+
+ private void populateAddLegacyArtifactPathActionFields(AddLegacyArtifactPathAction addLegacyArtifactPathAction, LegacyArtifactPath legacyArtifactPath, String groupId, String artifactId, String version, String classifier, String type)
+ {
+ addLegacyArtifactPathAction.setLegacyArtifactPath(legacyArtifactPath);
+ addLegacyArtifactPathAction.setGroupId(groupId);
+ addLegacyArtifactPathAction.setArtifactId(artifactId);
+ addLegacyArtifactPathAction.setVersion(version);
+ addLegacyArtifactPathAction.setClassifier(classifier);
+ addLegacyArtifactPathAction.setType(type);
+ }
+}
Added: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.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/networkproxies/ConfigureNetworkProxyActionTest.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/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java (added)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java Tue May 3 02:54:19 2011
@@ -0,0 +1,216 @@
+package org.apache.maven.archiva.web.action.admin.networkproxies;
+
+/*
+ * 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 com.opensymphony.xwork2.ObjectFactory;
+import com.opensymphony.xwork2.validator.ActionValidatorManager;
+import com.opensymphony.xwork2.validator.ActionValidatorManagerFactory;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import junit.framework.TestCase;
+import org.apache.maven.archiva.configuration.NetworkProxyConfiguration;
+import org.apache.maven.archiva.web.validator.utils.ValidatorUtil;
+
+public class ConfigureNetworkProxyActionTest extends TestCase
+{
+ private static final String EMPTY_STRING = "";
+
+ private static final String VALIDATION_CONTEXT = "saveNetworkProxy";
+
+ // valid inputs
+ private static final String PROXY_ID_VALID_INPUT = "abcXYZ0129._-";
+
+ private static final String PROXY_PROTOCOL_VALID_INPUT = "-abcXYZ0129./:\\";
+
+ private static final String PROXY_HOST_VALID_INPUT = "abcXYZ0129._/\\~:?!&=-";
+
+ private static final int PROXY_PORT_VALID_INPUT = 8080;
+
+ private static final String PROXY_USERNAME_VALID_INPUT = "abcXYZ0129.@/_-\\";
+
+ // invalid inputs
+ private static final String PROXY_ID_INVALID_INPUT = "<> \\/~+[ ]'\"";
+
+ private static final String PROXY_PROTOCOL_INVALID_INPUT = "<> ~+[ ]'\"";
+
+ private static final String PROXY_HOST_INVALID_INPUT = "<> ~+[ ]'\"";
+
+ private static final int PROXY_PORT_INVALID_INPUT = 0;
+
+ private static final String PROXY_USERNAME_INVALID_INPUT = "<> ~+[ ]'\"";
+
+ // testing requisite
+ private ConfigureNetworkProxyAction configureNetworkProxyAction;
+
+ private ActionValidatorManager actionValidatorManager;
+
+ @Override
+ public void setUp()
+ {
+ configureNetworkProxyAction = new ConfigureNetworkProxyAction();
+ ObjectFactory.setObjectFactory(new ObjectFactory());
+ actionValidatorManager = ActionValidatorManagerFactory.getInstance();
+ }
+
+ public void testStruts2ValidationFrameworkWithNullInputs() throws Exception
+ {
+ // prep
+ NetworkProxyConfiguration networkProxyConfiguration = createNetworkProxyConfiguration(null, null, null, null);
+ configureNetworkProxyAction.setProxy(networkProxyConfiguration);
+
+ // test
+ actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT);
+
+ // verify
+ assertTrue(configureNetworkProxyAction.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = configureNetworkProxyAction.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 an identifier.");
+ expectedFieldErrors.put("proxy.id", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a protocol.");
+ expectedFieldErrors.put("proxy.protocol", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a host.");
+ expectedFieldErrors.put("proxy.host", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithBlankInputs() throws Exception
+ {
+ // prep
+ NetworkProxyConfiguration networkProxyConfiguration = createNetworkProxyConfiguration(EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING);
+ configureNetworkProxyAction.setProxy(networkProxyConfiguration);
+
+ // test
+ actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT);
+
+ // verify
+ assertTrue(configureNetworkProxyAction.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = configureNetworkProxyAction.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 an identifier.");
+ expectedFieldErrors.put("proxy.id", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a protocol.");
+ expectedFieldErrors.put("proxy.protocol", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a host.");
+ expectedFieldErrors.put("proxy.host", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithInvalidInputs() throws Exception
+ {
+ // prep
+ NetworkProxyConfiguration networkProxyConfiguration = createNetworkProxyConfiguration(PROXY_ID_INVALID_INPUT, PROXY_HOST_INVALID_INPUT, PROXY_PORT_INVALID_INPUT, PROXY_PROTOCOL_INVALID_INPUT, PROXY_USERNAME_INVALID_INPUT);
+ configureNetworkProxyAction.setProxy(networkProxyConfiguration);
+
+ // test
+ actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT);
+
+ // verify
+ assertTrue(configureNetworkProxyAction.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = configureNetworkProxyAction.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("Proxy id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("proxy.id", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Protocol must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), dots(.), colons(:), and dashes(-).");
+ expectedFieldErrors.put("proxy.protocol", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Host must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).");
+ expectedFieldErrors.put("proxy.host", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Port needs to be larger than 1");
+ expectedFieldErrors.put("proxy.port", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Username must only contain alphanumeric characters, at's(@), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("proxy.username", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithValidInputs() throws Exception
+ {
+ // prep
+ NetworkProxyConfiguration networkProxyConfiguration = createNetworkProxyConfiguration(PROXY_ID_VALID_INPUT, PROXY_HOST_VALID_INPUT, PROXY_PORT_VALID_INPUT, PROXY_PROTOCOL_VALID_INPUT, PROXY_USERNAME_VALID_INPUT);
+ configureNetworkProxyAction.setProxy(networkProxyConfiguration);
+
+ // test
+ actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT);
+
+ // verify
+ assertFalse(configureNetworkProxyAction.hasFieldErrors());
+ }
+
+ private NetworkProxyConfiguration createNetworkProxyConfiguration(String id, String host, int port, String protocol, String username)
+ {
+ NetworkProxyConfiguration networkProxyConfiguration = new NetworkProxyConfiguration();
+ networkProxyConfiguration.setId(id);
+ networkProxyConfiguration.setHost(host);
+ networkProxyConfiguration.setPort(port);
+ networkProxyConfiguration.setProtocol(protocol);
+ networkProxyConfiguration.setUsername(username);
+ return networkProxyConfiguration;
+ }
+
+ // over-loaded
+ // for simulating empty/null form purposes; excluding primitive data-typed values
+ private NetworkProxyConfiguration createNetworkProxyConfiguration(String id, String host, String protocol, String username)
+ {
+ NetworkProxyConfiguration networkProxyConfiguration = new NetworkProxyConfiguration();
+ networkProxyConfiguration.setId(id);
+ networkProxyConfiguration.setHost(host);
+ networkProxyConfiguration.setProtocol(protocol);
+ networkProxyConfiguration.setUsername(username);
+ return networkProxyConfiguration;
+ }
+}
Added: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.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/AbstractManagedRepositoryActionTest.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/action/admin/repositories/AbstractManagedRepositoryActionTest.java (added)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java Tue May 3 02:54:19 2011
@@ -0,0 +1,117 @@
+package org.apache.maven.archiva.web.action.admin.repositories;
+
+/*
+ * 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 com.opensymphony.xwork2.ObjectFactory;
+import com.opensymphony.xwork2.validator.ActionValidatorManager;
+import com.opensymphony.xwork2.validator.ActionValidatorManagerFactory;
+import java.io.File;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.codehaus.plexus.spring.PlexusInSpringTestCase;
+
+public abstract class AbstractManagedRepositoryActionTest extends PlexusInSpringTestCase
+{
+ protected static final String EMPTY_STRING = "";
+
+ // valid inputs; validation testing
+ protected static final String REPOSITORY_ID_VALID_INPUT = "abcXYZ0129._-";
+
+ protected static final String REPOSITORY_LOCATION_VALID_INPUT = "abcXYZ0129._/\\~:?!&=-";
+
+ protected static final String REPOSITORY_INDEX_DIR_VALID_INPUT = "abcXYZ0129._/\\~:?!&=-";
+
+ protected static final String REPOSITORY_NAME_VALID_INPUT = "abcXYZ 0129.)/ _(-";
+
+ protected static final int REPOSITORY_RETENTION_COUNT_VALID_INPUT = 1;
+
+ protected static final int REPOSITORY_DAYS_OLDER_VALID_INPUT = 1;
+
+ // invalid inputs; validation testing
+ protected static final String REPOSITORY_ID_INVALID_INPUT = "<> \\/~+[ ]'\"";
+
+ protected static final String REPOSITORY_LOCATION_INVALID_INPUT = "<> ~+[ ]'\"";
+
+ protected static final String REPOSITORY_INDEX_DIR_INVALID_INPUT = "<> ~+[ ]'\"";
+
+ protected static final String REPOSITORY_NAME_INVALID_INPUT = "<>\\~+[]'\"";
+
+ protected static final int REPOSITORY_RETENTION_COUNT_INVALID_INPUT = 101;
+
+ protected static final int REPOSITORY_DAYS_OLDER_INVALID_INPUT = -1;
+
+ // testing requisite; validation testing
+ protected ActionValidatorManager actionValidatorManager;
+
+ protected static final String REPO_ID = "repo-ident";
+
+ protected File location;
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+
+ ObjectFactory.setObjectFactory(new ObjectFactory());
+ actionValidatorManager = ActionValidatorManagerFactory.getInstance();
+ }
+
+ protected void populateRepository( ManagedRepositoryConfiguration repository )
+ {
+ 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 );
+ }
+
+ protected ManagedRepositoryConfiguration createManagedRepositoryConfiguration(String id, String name, String location, String indexDir, int daysOlder, int retentionCount)
+ {
+ ManagedRepositoryConfiguration managedRepositoryConfiguration = new ManagedRepositoryConfiguration();
+
+ managedRepositoryConfiguration.setId(id);
+ managedRepositoryConfiguration.setName(name);
+ managedRepositoryConfiguration.setLocation(location);
+ managedRepositoryConfiguration.setIndexDir(indexDir);
+ managedRepositoryConfiguration.setDaysOlder(daysOlder);
+ managedRepositoryConfiguration.setRetentionCount(retentionCount);
+
+ return managedRepositoryConfiguration;
+ }
+
+ // over-loaded
+ // for simulating empty/null form purposes; excluding primitive data-typed values
+ protected ManagedRepositoryConfiguration createManagedRepositoryConfiguration(String id, String name, String location, String indexDir)
+ {
+ ManagedRepositoryConfiguration managedRepositoryConfiguration = new ManagedRepositoryConfiguration();
+
+ managedRepositoryConfiguration.setId(id);
+ managedRepositoryConfiguration.setName(name);
+ managedRepositoryConfiguration.setLocation(location);
+ managedRepositoryConfiguration.setIndexDir(indexDir);
+
+ return managedRepositoryConfiguration;
+ }
+}