mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
RM-2548: Admin's security clearance should not be editable.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@113335 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -9,7 +9,8 @@
|
|||||||
"firstName": <#if pi.firstName??>"${pi.firstName}"<#else>null</#if>,
|
"firstName": <#if pi.firstName??>"${pi.firstName}"<#else>null</#if>,
|
||||||
"lastName": <#if pi.lastName??>"${pi.lastName}"<#else>null</#if>,
|
"lastName": <#if pi.lastName??>"${pi.lastName}"<#else>null</#if>,
|
||||||
"fullName": <#if pi.firstName?? && pi.lastName??>"${pi.firstName} ${pi.lastName}"<#else>"${pi.userName}"</#if>,
|
"fullName": <#if pi.firstName?? && pi.lastName??>"${pi.firstName} ${pi.lastName}"<#else>"${pi.userName}"</#if>,
|
||||||
"completeName": <#if pi.firstName?? && pi.lastName?? && pi.userName??>"${pi.firstName} ${pi.lastName} (${pi.userName})"<#else>"${pi.userName}"</#if>
|
"completeName": <#if pi.firstName?? && pi.lastName?? && pi.userName??>"${pi.firstName} ${pi.lastName} (${pi.userName})"<#else>"${pi.userName}"</#if>,
|
||||||
|
"isEditable": <#if people.isAdmin(people.getPerson(pi.userName))>false<#else>true</#if>
|
||||||
</#escape>
|
</#escape>
|
||||||
}
|
}
|
||||||
</#macro>
|
</#macro>
|
@@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.module.org_alfresco_module_rm.script.classification;
|
package org.alfresco.module.org_alfresco_module_rm.script.classification;
|
||||||
|
|
||||||
|
import static java.util.Collections.emptyMap;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
@@ -31,6 +32,7 @@ import static org.mockito.Mockito.when;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
@@ -41,12 +43,14 @@ import org.alfresco.module.org_alfresco_module_rm.classification.SecurityClearan
|
|||||||
import org.alfresco.module.org_alfresco_module_rm.classification.UserQueryParams;
|
import org.alfresco.module.org_alfresco_module_rm.classification.UserQueryParams;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseWebScriptUnitTest;
|
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseWebScriptUnitTest;
|
||||||
import org.alfresco.query.PagingResults;
|
import org.alfresco.query.PagingResults;
|
||||||
|
import org.alfresco.repo.jscript.ScriptNode;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.security.PersonService.PersonInfo;
|
import org.alfresco.service.cmr.security.PersonService.PersonInfo;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.util.Pair;
|
import org.alfresco.util.Pair;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
import org.junit.Ignore;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
@@ -184,7 +188,7 @@ public class UserSecurityClearanceGetUnitTest extends BaseWebScriptUnitTest
|
|||||||
@Override
|
@Override
|
||||||
public Pair<Integer, Integer> getTotalResultCount()
|
public Pair<Integer, Integer> getTotalResultCount()
|
||||||
{
|
{
|
||||||
return new Pair<Integer, Integer>(numberOfUsers, numberOfUsers);
|
return new Pair<>(numberOfUsers, numberOfUsers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -202,6 +206,14 @@ public class UserSecurityClearanceGetUnitTest extends BaseWebScriptUnitTest
|
|||||||
assertEquals(expected, mapper.readTree(response.toString()));
|
assertEquals(expected, mapper.readTree(response.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override protected Map<String, ScriptNode> getMockedPeople()
|
||||||
|
{
|
||||||
|
final Map<String, ScriptNode> people = super.getMockedPeople();
|
||||||
|
|
||||||
|
return people;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check that when supplying a single field with no sort direction, the UserQueryParams are populated with the
|
* Check that when supplying a single field with no sort direction, the UserQueryParams are populated with the
|
||||||
* specified field and the default direction (true).
|
* specified field and the default direction (true).
|
||||||
@@ -285,9 +297,10 @@ public class UserSecurityClearanceGetUnitTest extends BaseWebScriptUnitTest
|
|||||||
items += "{" +
|
items += "{" +
|
||||||
"\"firstName\": \"aFirstName" + fromIndex + "\"," +
|
"\"firstName\": \"aFirstName" + fromIndex + "\"," +
|
||||||
"\"lastName\": \"aLastName" + fromIndex + "\"," +
|
"\"lastName\": \"aLastName" + fromIndex + "\"," +
|
||||||
|
"\"clearanceLabel\": \"displayLabel" + fromIndex + "\"," +
|
||||||
|
"\"isEditable\": true," +
|
||||||
"\"completeName\": \"aFirstName" + fromIndex + " aLastName" + fromIndex + " (aUserName" + fromIndex + ")\"," +
|
"\"completeName\": \"aFirstName" + fromIndex + " aLastName" + fromIndex + " (aUserName" + fromIndex + ")\"," +
|
||||||
"\"fullName\": \"aFirstName" + fromIndex + " aLastName" + fromIndex + "\"," +
|
"\"fullName\": \"aFirstName" + fromIndex + " aLastName" + fromIndex + "\"," +
|
||||||
"\"clearanceLabel\": \"displayLabel" + fromIndex + "\"," +
|
|
||||||
"\"userName\": \"aUserName" + fromIndex + "\"," +
|
"\"userName\": \"aUserName" + fromIndex + "\"," +
|
||||||
"\"classificationId\": \"id" + fromIndex + "\"" +
|
"\"classificationId\": \"id" + fromIndex + "\"" +
|
||||||
"}";
|
"}";
|
||||||
|
@@ -94,7 +94,12 @@ public class UserSecurityClearancePutUnitTest extends BaseWebScriptUnitTest
|
|||||||
|
|
||||||
// check the JSON result using Jackson to allow easy equality testing.
|
// check the JSON result using Jackson to allow easy equality testing.
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
String expectedJSONString = "{\"data\":{\"firstName\":\"Firstname\",\"lastName\":\"Lastname\",\"completeName\":\"Firstname Lastname (user1)\",\"fullName\":\"Firstname Lastname\",\"clearanceLabel\":\"Don't tell anyone\",\"userName\":\"user1\",\"classificationId\":\"Top Secret\"}}";
|
String expectedJSONString = "{\"data\":{\"firstName\":\"Firstname\",\"lastName\":\"Lastname\"," +
|
||||||
|
"\"clearanceLabel\":\"Don't tell anyone\"," +
|
||||||
|
"\"isEditable\":true," +
|
||||||
|
"\"userName\":\"user1\"," +
|
||||||
|
"\"completeName\":\"Firstname Lastname (user1)\",\"fullName\":\"Firstname Lastname\"," +
|
||||||
|
"\"classificationId\":\"Top Secret\"}}";
|
||||||
JsonNode expected = mapper.readTree(expectedJSONString);
|
JsonNode expected = mapper.readTree(expectedJSONString);
|
||||||
assertEquals(expected, mapper.readTree(json.toString()));
|
assertEquals(expected, mapper.readTree(json.toString()));
|
||||||
}
|
}
|
||||||
|
@@ -18,15 +18,21 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.module.org_alfresco_module_rm.test.util;
|
package org.alfresco.module.org_alfresco_module_rm.test.util;
|
||||||
|
|
||||||
|
import static java.util.Collections.emptyMap;
|
||||||
|
|
||||||
import static org.mockito.Matchers.anyString;
|
import static org.mockito.Matchers.anyString;
|
||||||
import static org.mockito.Mockito.doAnswer;
|
import static org.mockito.Mockito.doAnswer;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.eq;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.alfresco.repo.jscript.People;
|
||||||
|
import org.alfresco.repo.jscript.ScriptNode;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.mockito.invocation.InvocationOnMock;
|
import org.mockito.invocation.InvocationOnMock;
|
||||||
import org.mockito.stubbing.Answer;
|
import org.mockito.stubbing.Answer;
|
||||||
@@ -240,8 +246,9 @@ public abstract class BaseWebScriptUnitTest extends BaseUnitTest
|
|||||||
doReturn(mockedScriptProcessorRegistry).when(mockedContainer).getScriptProcessorRegistry();
|
doReturn(mockedScriptProcessorRegistry).when(mockedContainer).getScriptProcessorRegistry();
|
||||||
doReturn(mockedTemplateProcessorRegistry).when(mockedContainer).getTemplateProcessorRegistry();
|
doReturn(mockedTemplateProcessorRegistry).when(mockedContainer).getTemplateProcessorRegistry();
|
||||||
|
|
||||||
Map<String, Object> containerTemplateParameters = new HashMap<String, Object>(5);
|
Map<String, Object> containerTemplateParameters = new HashMap<>(5);
|
||||||
containerTemplateParameters.put("jsonUtils", new JSONUtils());
|
containerTemplateParameters.put("jsonUtils", new JSONUtils());
|
||||||
|
containerTemplateParameters.put("people", getMockedPeopleObject());
|
||||||
doReturn(containerTemplateParameters).when(mockedContainer).getTemplateParameters();
|
doReturn(containerTemplateParameters).when(mockedContainer).getTemplateParameters();
|
||||||
|
|
||||||
SearchPath mockedSearchPath = mock(SearchPath.class);
|
SearchPath mockedSearchPath = mock(SearchPath.class);
|
||||||
@@ -255,6 +262,27 @@ public abstract class BaseWebScriptUnitTest extends BaseUnitTest
|
|||||||
return mockedContainer;
|
return mockedContainer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a mock {@code people} object for use as a root object within FTL.
|
||||||
|
* This {@code people} object will return person nodes as specified in {@link #getMockedPeople()}.
|
||||||
|
*/
|
||||||
|
protected People getMockedPeopleObject()
|
||||||
|
{
|
||||||
|
People p = mock(People.class);
|
||||||
|
getMockedPeople().forEach((name, person) -> when(p.getPerson(eq(name))).thenReturn(person) );
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a map of person ScriptNodes for use within FTL.
|
||||||
|
* The default implementation is an empty map, but this can be overridden by subclasses.
|
||||||
|
* @return a map of usernames to mocked ScriptNode objects representing person nodes.
|
||||||
|
*/
|
||||||
|
protected Map<String, ScriptNode> getMockedPeople()
|
||||||
|
{
|
||||||
|
return emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper method to get mocked description class
|
* Helper method to get mocked description class
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user