Added more validation and tests as a fix for RM-915: The creation of a new Email Mapping: It's possible to type into "map" field any text or spaces.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@55067 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Gethin James
2013-09-06 17:41:02 +00:00
parent 1722649d12
commit 1e733fab38
2 changed files with 49 additions and 5 deletions

View File

@@ -45,6 +45,7 @@ import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.alfresco.service.transaction.TransactionService; import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.ParameterCheck; import org.alfresco.util.ParameterCheck;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.json.JSONArray; import org.json.JSONArray;
@@ -213,6 +214,11 @@ public class CustomEmailMappingServiceImpl extends AbstractLifecycleBean impleme
*/ */
public void addCustomMapping(String from, String to) public void addCustomMapping(String from, String to)
{ {
if (StringUtils.isBlank(from) || StringUtils.isBlank(to) || !getEmailMappingKeys().contains(from))
{
throw new AlfrescoRuntimeException("Invalid values for from/to.");
}
// create custom mapping // create custom mapping
CustomMapping customMapping = new CustomMapping(from, to); CustomMapping customMapping = new CustomMapping(from, to);

View File

@@ -18,6 +18,7 @@
*/ */
package org.alfresco.module.org_alfresco_module_rm.test.service; package org.alfresco.module.org_alfresco_module_rm.test.service;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.module.org_alfresco_module_rm.email.CustomEmailMappingService; import org.alfresco.module.org_alfresco_module_rm.email.CustomEmailMappingService;
import org.alfresco.module.org_alfresco_module_rm.email.CustomMapping; import org.alfresco.module.org_alfresco_module_rm.email.CustomMapping;
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase; import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
@@ -63,31 +64,68 @@ public class CustomEMailMappingServiceImplTest extends BaseRMTestCase
// Check the initial custom mapping size // Check the initial custom mapping size
assertTrue(checkCustomMappingsSize(20)); assertTrue(checkCustomMappingsSize(20));
String firstKey = eMailMappingService.getEmailMappingKeys().get(0);
// Add a custom mapping // Add a custom mapping
eMailMappingService.addCustomMapping("monkey", "cm:monkeyFace"); eMailMappingService.addCustomMapping(firstKey, "cm:monkeyFace");
// Check the new size // Check the new size
assertTrue(checkCustomMappingsSize(21)); assertTrue(checkCustomMappingsSize(21));
// Check the new added custom mapping // Check the new added custom mapping
CustomMapping monkeyMapping = getCustomMapping("monkey", "cm:monkeyFace"); CustomMapping monkeyMapping = getCustomMapping(firstKey, "cm:monkeyFace");
assertNotNull(monkeyMapping); assertNotNull(monkeyMapping);
assertEquals("monkey", monkeyMapping.getFrom()); assertEquals(firstKey, monkeyMapping.getFrom());
assertEquals("cm:monkeyFace", monkeyMapping.getTo()); assertEquals("cm:monkeyFace", monkeyMapping.getTo());
// Delete the new added custom mapping // Delete the new added custom mapping
eMailMappingService.deleteCustomMapping("monkey", "cm:monkeyFace"); eMailMappingService.deleteCustomMapping(firstKey, "cm:monkeyFace");
// Check the size after deletion // Check the size after deletion
assertTrue(checkCustomMappingsSize(20)); assertTrue(checkCustomMappingsSize(20));
// Check the custom mapping after deletion if it exists // Check the custom mapping after deletion if it exists
assertNull(getCustomMapping("monkey", "cm:monkeyFace")); assertNull(getCustomMapping(firstKey, "cm:monkeyFace"));
// Check the email mapping keys size // Check the email mapping keys size
// There are 6 "standard" EmailMappingKeys + 2 CustomEmailMappingKeys are added on setUp // There are 6 "standard" EmailMappingKeys + 2 CustomEmailMappingKeys are added on setUp
assertTrue(checkEmailMappingKeysSize(8)); assertTrue(checkEmailMappingKeysSize(8));
try
{
eMailMappingService.addCustomMapping(" ", "cm:monkeyFace");
fail("Should not get here. Invalid data.");
}
catch (AlfrescoRuntimeException are)
{
assertNotNull(are); //Must throw this exception
assertTrue(are.getMessage().contains("Invalid values for"));
}
try
{
eMailMappingService.addCustomMapping("monkey", " ");
fail("Should not get here. Invalid data.");
}
catch (AlfrescoRuntimeException are)
{
assertNotNull(are); //Must throw this exception
assertTrue(are.getMessage().contains("Invalid values for"));
}
eMailMappingService.addCustomMapping(firstKey, "cm:monkeyFace"); //valid key
try
{
eMailMappingService.addCustomMapping(firstKey+"invalid", "cm:monkeyFace");//invalid key
fail("Should not get here. Invalid data.");
}
catch (AlfrescoRuntimeException are)
{
assertNotNull(are); //Must throw this exception
assertTrue(are.getMessage().contains("Invalid values for"));
}
return null; return null;
} }
}, rmAdminName); }, rmAdminName);