From a9f57ea03bad5b72a1414f3a04cd7371488468a0 Mon Sep 17 00:00:00 2001 From: David Webster Date: Thu, 14 May 2015 10:58:19 +0000 Subject: [PATCH] RM-2120: Add error handling (and test) as suggested by Neil during + review RM-46 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@104157 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../UserSecurityClearancePut.java | 13 +++++++++++- .../UserSecurityClearancePutUnitTest.java | 21 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearancePut.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearancePut.java index a75b7347ea..0895c275b2 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearancePut.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearancePut.java @@ -18,11 +18,13 @@ */ package org.alfresco.module.org_alfresco_module_rm.script.classification; +import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationServiceException; import org.alfresco.module.org_alfresco_module_rm.classification.SecurityClearance; import org.alfresco.module.org_alfresco_module_rm.classification.SecurityClearanceService; import org.alfresco.module.org_alfresco_module_rm.script.AbstractRmWebScript; import org.springframework.extensions.webscripts.Cache; import org.springframework.extensions.webscripts.Status; +import org.springframework.extensions.webscripts.WebScriptException; import org.springframework.extensions.webscripts.WebScriptRequest; import java.util.HashMap; @@ -63,8 +65,17 @@ public class UserSecurityClearancePut extends AbstractRmWebScript { String username = req.getParameter(USERNAME); String clearanceId = req.getParameter(CLEARANCE_ID); + SecurityClearance securityClearance; - SecurityClearance securityClearance = securityClearanceService.setUserSecurityClearance(username, clearanceId); + try + { + securityClearance = securityClearanceService.setUserSecurityClearance(username, + clearanceId); + } + catch (ClassificationServiceException.LevelIdNotFound exception) + { + throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Unable to find clearance level"); + } Map model = new HashMap<>(); model.put(ITEM, securityClearance); diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearancePutUnitTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearancePutUnitTest.java index b85b4dc2b5..5d88e2f6fd 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearancePutUnitTest.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearancePutUnitTest.java @@ -117,4 +117,25 @@ public class UserSecurityClearancePutUnitTest extends BaseWebScriptUnitTest // Execute web script - this should throw the expected exception. executeJSONWebScript(parameters); } + + /** + * Test the Security Clearance webscript can't be called by a user with insufficient clearance + * + * @throws Exception + */ + @Test(expected = WebScriptException.class) + public void testIncorrectClearanceId() throws Exception + { + String username = "user1"; + String clearanceId = "ThisClearanceDoesNotExist"; + + // Setup web script parameters + Map parameters = buildParameters(USERNAME, username, CLEARANCE_ID, clearanceId); + + when(mockSecurityClearanceService.setUserSecurityClearance(username, clearanceId)).thenThrow( + new ClassificationServiceException.LevelIdNotFound(clearanceId)); + + // Execute web script - this should throw the expected exception. + executeJSONWebScript(parameters); + } } \ No newline at end of file