mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
ACS-3651 Add unit tests for node exists and read permission.
This commit is contained in:
@@ -26,8 +26,12 @@
|
|||||||
|
|
||||||
package org.alfresco.rest.api.impl.rules;
|
package org.alfresco.rest.api.impl.rules;
|
||||||
|
|
||||||
|
import static org.alfresco.repo.action.executer.CopyActionExecuter.PARAM_DESTINATION_FOLDER;
|
||||||
import static org.alfresco.service.cmr.repository.StoreRef.STORE_REF_WORKSPACE_SPACESSTORE;
|
import static org.alfresco.service.cmr.repository.StoreRef.STORE_REF_WORKSPACE_SPACESSTORE;
|
||||||
|
import static org.alfresco.service.cmr.security.AccessStatus.ALLOWED;
|
||||||
|
import static org.alfresco.service.cmr.security.AccessStatus.DENIED;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertThrows;
|
import static org.junit.Assert.assertThrows;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
@@ -50,6 +54,8 @@ import org.alfresco.repo.action.executer.RemoveFeaturesActionExecuter;
|
|||||||
import org.alfresco.repo.action.executer.ScriptActionExecuter;
|
import org.alfresco.repo.action.executer.ScriptActionExecuter;
|
||||||
import org.alfresco.repo.action.executer.SetPropertyValueActionExecuter;
|
import org.alfresco.repo.action.executer.SetPropertyValueActionExecuter;
|
||||||
import org.alfresco.repo.action.executer.SimpleWorkflowActionExecuter;
|
import org.alfresco.repo.action.executer.SimpleWorkflowActionExecuter;
|
||||||
|
import org.alfresco.rest.api.Nodes;
|
||||||
|
import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException;
|
||||||
import org.alfresco.rest.framework.core.exceptions.NotFoundException;
|
import org.alfresco.rest.framework.core.exceptions.NotFoundException;
|
||||||
import org.alfresco.service.Experimental;
|
import org.alfresco.service.Experimental;
|
||||||
import org.alfresco.service.cmr.action.ActionDefinition;
|
import org.alfresco.service.cmr.action.ActionDefinition;
|
||||||
@@ -58,8 +64,10 @@ import org.alfresco.service.cmr.action.ParameterDefinition;
|
|||||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.security.PermissionService;
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -81,8 +89,10 @@ public class ActionParameterConverterTest
|
|||||||
private static final String IDENTIFIER = "identifier";
|
private static final String IDENTIFIER = "identifier";
|
||||||
private static final String IDENTIFIER_ASPECT = NamespaceService.CONTENT_MODEL_PREFIX + QName.NAMESPACE_PREFIX + IDENTIFIER;
|
private static final String IDENTIFIER_ASPECT = NamespaceService.CONTENT_MODEL_PREFIX + QName.NAMESPACE_PREFIX + IDENTIFIER;
|
||||||
|
|
||||||
private static final String DUMMY_FOLDER_NODE_ID = "dummy-folder-node";
|
private static final String DUMMY_FOLDER_NODE_ID = "dummy://folder/node";
|
||||||
private static final String DUMMY_SCRIPT_NODE_ID = "dummy-script-ref";
|
private static final NodeRef DUMMY_FOLDER_NODE = new NodeRef(DUMMY_FOLDER_NODE_ID);
|
||||||
|
private static final String DUMMY_SCRIPT_NODE_ID = "dummy://script/ref";
|
||||||
|
private static final NodeRef DUMMY_SCRIPT_NODE = new NodeRef(DUMMY_SCRIPT_NODE_ID);
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private DictionaryService dictionaryService;
|
private DictionaryService dictionaryService;
|
||||||
@@ -90,6 +100,10 @@ public class ActionParameterConverterTest
|
|||||||
private ActionService actionService;
|
private ActionService actionService;
|
||||||
@Mock
|
@Mock
|
||||||
private NamespaceService namespaceService;
|
private NamespaceService namespaceService;
|
||||||
|
@Mock
|
||||||
|
private PermissionService permissionService;
|
||||||
|
@Mock
|
||||||
|
private Nodes nodes;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private ActionDefinition actionDefinition;
|
private ActionDefinition actionDefinition;
|
||||||
@@ -109,6 +123,15 @@ public class ActionParameterConverterTest
|
|||||||
@InjectMocks
|
@InjectMocks
|
||||||
private ActionParameterConverter objectUnderTest;
|
private ActionParameterConverter objectUnderTest;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp()
|
||||||
|
{
|
||||||
|
given(nodes.validateOrLookupNode(DUMMY_FOLDER_NODE_ID, null)).willReturn(DUMMY_FOLDER_NODE);
|
||||||
|
given(nodes.validateOrLookupNode(DUMMY_SCRIPT_NODE_ID, null)).willReturn(DUMMY_SCRIPT_NODE);
|
||||||
|
given(permissionService.hasReadPermission(DUMMY_FOLDER_NODE)).willReturn(ALLOWED);
|
||||||
|
given(permissionService.hasReadPermission(DUMMY_SCRIPT_NODE)).willReturn(ALLOWED);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAddAspectConversion()
|
public void testAddAspectConversion()
|
||||||
{
|
{
|
||||||
@@ -146,7 +169,7 @@ public class ActionParameterConverterTest
|
|||||||
public void testCopyConversion()
|
public void testCopyConversion()
|
||||||
{
|
{
|
||||||
final String name = CopyActionExecuter.NAME;
|
final String name = CopyActionExecuter.NAME;
|
||||||
final String destinationFolderKey = CopyActionExecuter.PARAM_DESTINATION_FOLDER;
|
final String destinationFolderKey = PARAM_DESTINATION_FOLDER;
|
||||||
final String deepCopyKey = CopyActionExecuter.PARAM_DEEP_COPY;
|
final String deepCopyKey = CopyActionExecuter.PARAM_DEEP_COPY;
|
||||||
final Map<String, Serializable> params = Map.of(destinationFolderKey, DUMMY_FOLDER_NODE_ID, deepCopyKey, true);
|
final Map<String, Serializable> params = Map.of(destinationFolderKey, DUMMY_FOLDER_NODE_ID, deepCopyKey, true);
|
||||||
|
|
||||||
@@ -177,8 +200,7 @@ public class ActionParameterConverterTest
|
|||||||
|
|
||||||
final Serializable convertedCopyParam = convertedParams.get(destinationFolderKey);
|
final Serializable convertedCopyParam = convertedParams.get(destinationFolderKey);
|
||||||
assertTrue(convertedCopyParam instanceof NodeRef);
|
assertTrue(convertedCopyParam instanceof NodeRef);
|
||||||
assertEquals(STORE_REF_WORKSPACE_SPACESSTORE, ((NodeRef) convertedCopyParam).getStoreRef());
|
assertEquals(DUMMY_FOLDER_NODE, convertedCopyParam);
|
||||||
assertEquals(DUMMY_FOLDER_NODE_ID, ((NodeRef) convertedCopyParam).getId());
|
|
||||||
final Serializable convertedDeepCopyParam = convertedParams.get(deepCopyKey);
|
final Serializable convertedDeepCopyParam = convertedParams.get(deepCopyKey);
|
||||||
assertThat(convertedDeepCopyParam instanceof Boolean).isTrue();
|
assertThat(convertedDeepCopyParam instanceof Boolean).isTrue();
|
||||||
assertTrue(((Boolean) convertedDeepCopyParam));
|
assertTrue(((Boolean) convertedDeepCopyParam));
|
||||||
@@ -211,8 +233,7 @@ public class ActionParameterConverterTest
|
|||||||
|
|
||||||
final Serializable convertedCopyParam = convertedParams.get(executeScriptKey);
|
final Serializable convertedCopyParam = convertedParams.get(executeScriptKey);
|
||||||
assertTrue(convertedCopyParam instanceof NodeRef);
|
assertTrue(convertedCopyParam instanceof NodeRef);
|
||||||
assertEquals(STORE_REF_WORKSPACE_SPACESSTORE, ((NodeRef) convertedCopyParam).getStoreRef());
|
assertEquals(DUMMY_SCRIPT_NODE, convertedCopyParam);
|
||||||
assertEquals(DUMMY_SCRIPT_NODE_ID, ((NodeRef) convertedCopyParam).getId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -242,8 +263,7 @@ public class ActionParameterConverterTest
|
|||||||
|
|
||||||
final Serializable convertedCopyParam = convertedParams.get(destinationFolderKey);
|
final Serializable convertedCopyParam = convertedParams.get(destinationFolderKey);
|
||||||
assertTrue(convertedCopyParam instanceof NodeRef);
|
assertTrue(convertedCopyParam instanceof NodeRef);
|
||||||
assertEquals(STORE_REF_WORKSPACE_SPACESSTORE, ((NodeRef) convertedCopyParam).getStoreRef());
|
assertEquals(DUMMY_FOLDER_NODE, convertedCopyParam);
|
||||||
assertEquals(DUMMY_FOLDER_NODE_ID, ((NodeRef) convertedCopyParam).getId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -330,8 +350,7 @@ public class ActionParameterConverterTest
|
|||||||
|
|
||||||
final Serializable convertedDestinationParam = convertedParams.get(destinationFolderKey);
|
final Serializable convertedDestinationParam = convertedParams.get(destinationFolderKey);
|
||||||
assertTrue(convertedDestinationParam instanceof NodeRef);
|
assertTrue(convertedDestinationParam instanceof NodeRef);
|
||||||
assertEquals(STORE_REF_WORKSPACE_SPACESSTORE, ((NodeRef) convertedDestinationParam).getStoreRef());
|
assertEquals(DUMMY_FOLDER_NODE, convertedDestinationParam);
|
||||||
assertEquals(DUMMY_FOLDER_NODE_ID, ((NodeRef) convertedDestinationParam).getId());
|
|
||||||
final Serializable convertedAssocNameParam = convertedParams.get(assocNameKey);
|
final Serializable convertedAssocNameParam = convertedParams.get(assocNameKey);
|
||||||
assertTrue(convertedAssocNameParam instanceof QName);
|
assertTrue(convertedAssocNameParam instanceof QName);
|
||||||
assertEquals(CHECKOUT, ((QName) convertedAssocNameParam).getLocalName());
|
assertEquals(CHECKOUT, ((QName) convertedAssocNameParam).getLocalName());
|
||||||
@@ -385,8 +404,7 @@ public class ActionParameterConverterTest
|
|||||||
assertEquals(NamespaceService.DICTIONARY_MODEL_1_0_URI, ((QName) convertedCatValueParam).getNamespaceURI());
|
assertEquals(NamespaceService.DICTIONARY_MODEL_1_0_URI, ((QName) convertedCatValueParam).getNamespaceURI());
|
||||||
final Serializable convertedDestinationParam = convertedParams.get(categoryValueKey);
|
final Serializable convertedDestinationParam = convertedParams.get(categoryValueKey);
|
||||||
assertTrue(convertedDestinationParam instanceof NodeRef);
|
assertTrue(convertedDestinationParam instanceof NodeRef);
|
||||||
assertEquals(STORE_REF_WORKSPACE_SPACESSTORE, ((NodeRef) convertedDestinationParam).getStoreRef());
|
assertEquals(DUMMY_FOLDER_NODE, convertedDestinationParam);
|
||||||
assertEquals(DUMMY_FOLDER_NODE_ID, ((NodeRef) convertedDestinationParam).getId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -484,12 +502,10 @@ public class ActionParameterConverterTest
|
|||||||
assertEquals(reject, convertedRejectStepParam);
|
assertEquals(reject, convertedRejectStepParam);
|
||||||
final Serializable convertedApproveFolderParam = convertedParams.get(approveFolderKey);
|
final Serializable convertedApproveFolderParam = convertedParams.get(approveFolderKey);
|
||||||
assertTrue(convertedApproveFolderParam instanceof NodeRef);
|
assertTrue(convertedApproveFolderParam instanceof NodeRef);
|
||||||
assertEquals(STORE_REF_WORKSPACE_SPACESSTORE, ((NodeRef) convertedApproveFolderParam).getStoreRef());
|
assertEquals(DUMMY_FOLDER_NODE, convertedApproveFolderParam);
|
||||||
assertEquals(DUMMY_FOLDER_NODE_ID, ((NodeRef) convertedApproveFolderParam).getId());
|
|
||||||
final Serializable convertedRejectFolderParam = convertedParams.get(rejectFolderKey);
|
final Serializable convertedRejectFolderParam = convertedParams.get(rejectFolderKey);
|
||||||
assertTrue(convertedRejectFolderParam instanceof NodeRef);
|
assertTrue(convertedRejectFolderParam instanceof NodeRef);
|
||||||
assertEquals(STORE_REF_WORKSPACE_SPACESSTORE, ((NodeRef) convertedRejectFolderParam).getStoreRef());
|
assertEquals(DUMMY_FOLDER_NODE, convertedRejectFolderParam);
|
||||||
assertEquals(DUMMY_FOLDER_NODE_ID, ((NodeRef) convertedRejectFolderParam).getId());
|
|
||||||
final Serializable convertedApproveMoveParam = convertedParams.get(approveMoveKey);
|
final Serializable convertedApproveMoveParam = convertedParams.get(approveMoveKey);
|
||||||
assertTrue(convertedApproveMoveParam instanceof Boolean);
|
assertTrue(convertedApproveMoveParam instanceof Boolean);
|
||||||
assertTrue((Boolean) convertedApproveMoveParam);
|
assertTrue((Boolean) convertedApproveMoveParam);
|
||||||
@@ -555,6 +571,44 @@ public class ActionParameterConverterTest
|
|||||||
assertEquals(propType, convertedPropTypeParam);
|
assertEquals(propType, convertedPropTypeParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNonExistentNodeParam()
|
||||||
|
{
|
||||||
|
final String name = CopyActionExecuter.NAME;
|
||||||
|
final Map<String, Serializable> params = Map.of(PARAM_DESTINATION_FOLDER, "non://existent/node");
|
||||||
|
|
||||||
|
given(actionService.getActionDefinition(name)).willReturn(actionDefinition);
|
||||||
|
given(actionDefinition.getParameterDefintion(PARAM_DESTINATION_FOLDER)).willReturn(actionDefinitionParam1);
|
||||||
|
final QName nodeRef = DataTypeDefinition.NODE_REF;
|
||||||
|
given(actionDefinitionParam1.getType()).willReturn(nodeRef);
|
||||||
|
|
||||||
|
given(dictionaryService.getDataType(nodeRef)).willReturn(dataTypeDefinition1);
|
||||||
|
|
||||||
|
//when
|
||||||
|
assertThatExceptionOfType(EntityNotFoundException.class).isThrownBy(() -> objectUnderTest.getConvertedParams(params, name));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNoReadPermissionForNodeParam()
|
||||||
|
{
|
||||||
|
final String name = CopyActionExecuter.NAME;
|
||||||
|
String permissionDeniedNodeId = "permission://denied/node";
|
||||||
|
final Map<String, Serializable> params = Map.of(PARAM_DESTINATION_FOLDER, permissionDeniedNodeId);
|
||||||
|
NodeRef permissionDeniedNode = new NodeRef(permissionDeniedNodeId);
|
||||||
|
given(nodes.validateOrLookupNode(permissionDeniedNodeId, null)).willReturn(permissionDeniedNode);
|
||||||
|
given(permissionService.hasReadPermission(permissionDeniedNode)).willReturn(DENIED);
|
||||||
|
|
||||||
|
given(actionService.getActionDefinition(name)).willReturn(actionDefinition);
|
||||||
|
given(actionDefinition.getParameterDefintion(PARAM_DESTINATION_FOLDER)).willReturn(actionDefinitionParam1);
|
||||||
|
final QName nodeRef = DataTypeDefinition.NODE_REF;
|
||||||
|
given(actionDefinitionParam1.getType()).willReturn(nodeRef);
|
||||||
|
|
||||||
|
given(dictionaryService.getDataType(nodeRef)).willReturn(dataTypeDefinition1);
|
||||||
|
|
||||||
|
//when
|
||||||
|
assertThatExceptionOfType(EntityNotFoundException.class).isThrownBy(() -> objectUnderTest.getConvertedParams(params, name));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testInvalidActionDefinitionConversion() {
|
public void testInvalidActionDefinitionConversion() {
|
||||||
final String invalidName = "dummy-definition";
|
final String invalidName = "dummy-definition";
|
||||||
|
Reference in New Issue
Block a user