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 626e42ffd6
commit 5df0df19e7
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.transaction.TransactionService;
import org.alfresco.util.ParameterCheck;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.json.JSONArray;
@@ -213,6 +214,11 @@ public class CustomEmailMappingServiceImpl extends AbstractLifecycleBean impleme
*/
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
CustomMapping customMapping = new CustomMapping(from, to);

View File

@@ -18,6 +18,7 @@
*/
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.CustomMapping;
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
assertTrue(checkCustomMappingsSize(20));
String firstKey = eMailMappingService.getEmailMappingKeys().get(0);
// Add a custom mapping
eMailMappingService.addCustomMapping("monkey", "cm:monkeyFace");
eMailMappingService.addCustomMapping(firstKey, "cm:monkeyFace");
// Check the new size
assertTrue(checkCustomMappingsSize(21));
// Check the new added custom mapping
CustomMapping monkeyMapping = getCustomMapping("monkey", "cm:monkeyFace");
CustomMapping monkeyMapping = getCustomMapping(firstKey, "cm:monkeyFace");
assertNotNull(monkeyMapping);
assertEquals("monkey", monkeyMapping.getFrom());
assertEquals(firstKey, monkeyMapping.getFrom());
assertEquals("cm:monkeyFace", monkeyMapping.getTo());
// Delete the new added custom mapping
eMailMappingService.deleteCustomMapping("monkey", "cm:monkeyFace");
eMailMappingService.deleteCustomMapping(firstKey, "cm:monkeyFace");
// Check the size after deletion
assertTrue(checkCustomMappingsSize(20));
// 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
// There are 6 "standard" EmailMappingKeys + 2 CustomEmailMappingKeys are added on setUp
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;
}
}, rmAdminName);