mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Add active content to hold through rest api
This commit is contained in:
@@ -549,7 +549,7 @@
|
|||||||
<many>true</many>
|
<many>true</many>
|
||||||
</source>
|
</source>
|
||||||
<target>
|
<target>
|
||||||
<class>rma:filePlanComponent</class>
|
<class>sys:base</class>
|
||||||
<mandatory>false</mandatory>
|
<mandatory>false</mandatory>
|
||||||
<many>true</many>
|
<many>true</many>
|
||||||
</target>
|
</target>
|
||||||
|
@@ -1042,7 +1042,7 @@
|
|||||||
<property name="objectDefinitionSource">
|
<property name="objectDefinitionSource">
|
||||||
<value>
|
<value>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService.isRecordFolder=RM.Read.0
|
org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService.isRecordFolder=ACL_NODE.0.sys:base.Read,RM.Read.0
|
||||||
org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService.isRecordFolderDeclared=RM.Read.0
|
org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService.isRecordFolderDeclared=RM.Read.0
|
||||||
org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService.isRecordFolderClosed=RM.Read.0
|
org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService.isRecordFolderClosed=RM.Read.0
|
||||||
org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService.createRecordFolder=RM.Create.0
|
org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService.createRecordFolder=RM.Create.0
|
||||||
@@ -1535,6 +1535,7 @@
|
|||||||
<property name="recordFolderService" ref="RecordFolderService" />
|
<property name="recordFolderService" ref="RecordFolderService" />
|
||||||
<property name="permissionService" ref="PermissionService"/>
|
<property name="permissionService" ref="PermissionService"/>
|
||||||
<property name="recordsManagementAuditService" ref="RecordsManagementAuditService" />
|
<property name="recordsManagementAuditService" ref="RecordsManagementAuditService" />
|
||||||
|
<property name="capabilityService" ref="CapabilityService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="HoldService"
|
<bean id="HoldService"
|
||||||
|
@@ -633,6 +633,7 @@
|
|||||||
<property name="recordService" ref="RecordService" />
|
<property name="recordService" ref="RecordService" />
|
||||||
<property name="recordFolderService" ref="RecordFolderService" />
|
<property name="recordFolderService" ref="RecordFolderService" />
|
||||||
<property name="nodeService" ref="NodeService" />
|
<property name="nodeService" ref="NodeService" />
|
||||||
|
<property name="dictionaryService" ref="DictionaryService" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<!-- REST impl for POST Hold -->
|
<!-- REST impl for POST Hold -->
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
<webscript>
|
<webscript>
|
||||||
<shortname>Adds item(s) to the hold(s)</shortname>
|
<shortname>Adds item(s) to the hold(s)</shortname>
|
||||||
<description><![CDATA[
|
<description><![CDATA[
|
||||||
WebScript to add item(s) (record(s) / record folder(s)) to the hold(s) in the holds container.<br/>
|
WebScript to add item(s) (record(s) / record folder(s) / active content(s)) to the hold(s) in the holds container.<br/>
|
||||||
The body of the post should be in the form<br/>
|
The body of the post should be in the form<br/>
|
||||||
{<br/>
|
{<br/>
|
||||||
"nodeRefs" : array of nodeRefs for item(s) (record(s) / record folder(s)),<br/>
|
"nodeRefs" : array of nodeRefs for item(s) (record(s) / record folder(s) / active content(s)),<br/>
|
||||||
"holds" : array of nodeRefs for the hold(s)<br/>
|
"holds" : array of nodeRefs for the hold(s)<br/>
|
||||||
}<br/>
|
}<br/>
|
||||||
]]>
|
]]>
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
<webscript>
|
<webscript>
|
||||||
<shortname>Removes item(s) from the hold(s)</shortname>
|
<shortname>Removes item(s) from the hold(s)</shortname>
|
||||||
<description><![CDATA[
|
<description><![CDATA[
|
||||||
WebScript to remove item(s) (record(s) / record folder(s)) from the hold(s) in the holds container.<br/>
|
WebScript to remove item(s) (record(s) / record folder(s) / active content(s)) from the hold(s) in the holds container.<br/>
|
||||||
The body of the put should be in the form<br/>
|
The body of the put should be in the form<br/>
|
||||||
{<br/>
|
{<br/>
|
||||||
"nodeRefs" : array of nodeRefs for the item(s) (record(s) / record folder(s)),<br/>
|
"nodeRefs" : array of nodeRefs for the item(s) (record(s) / record folder(s) / active content(s)),<br/>
|
||||||
"holds" : array of nodeRefs for the hold(s)<br/>
|
"holds" : array of nodeRefs for the hold(s)<br/>
|
||||||
}<br/>
|
}<br/>
|
||||||
]]>
|
]]>
|
||||||
|
@@ -41,6 +41,7 @@ import org.alfresco.error.AlfrescoRuntimeException;
|
|||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService;
|
import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.audit.event.AuditEvent;
|
import org.alfresco.module.org_alfresco_module_rm.audit.event.AuditEvent;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||||
@@ -108,6 +109,9 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
/** records management audit service */
|
/** records management audit service */
|
||||||
private RecordsManagementAuditService recordsManagementAuditService;
|
private RecordsManagementAuditService recordsManagementAuditService;
|
||||||
|
|
||||||
|
/** Capability service */
|
||||||
|
private CapabilityService capabilityService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the file plan service
|
* Set the file plan service
|
||||||
*
|
*
|
||||||
@@ -166,6 +170,14 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
this.recordsManagementAuditService = recordsManagementAuditService;
|
this.recordsManagementAuditService = recordsManagementAuditService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param capabilityService capability service
|
||||||
|
*/
|
||||||
|
public void setCapabilityService(CapabilityService capabilityService)
|
||||||
|
{
|
||||||
|
this.capabilityService = capabilityService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialise hold service
|
* Initialise hold service
|
||||||
*/
|
*/
|
||||||
@@ -563,7 +575,9 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
throw new IntegrityException(I18NUtil.getMessage("rm.hold.not-hold", holdName), null);
|
throw new IntegrityException(I18NUtil.getMessage("rm.hold.not-hold", holdName), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (permissionService.hasPermission(hold, RMPermissionModel.FILING) == AccessStatus.DENIED)
|
if (permissionService.hasPermission(hold, RMPermissionModel.FILING) == AccessStatus.DENIED ||
|
||||||
|
!AccessStatus.ALLOWED.equals(
|
||||||
|
capabilityService.getCapabilityAccessState(hold, RMPermissionModel.ADD_TO_HOLD)))
|
||||||
{
|
{
|
||||||
throw new AccessDeniedException(I18NUtil.getMessage(MSG_ERR_ACCESS_DENIED));
|
throw new AccessDeniedException(I18NUtil.getMessage(MSG_ERR_ACCESS_DENIED));
|
||||||
}
|
}
|
||||||
|
@@ -33,9 +33,11 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldService;
|
import org.alfresco.module.org_alfresco_module_rm.hold.HoldService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
|
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
|
||||||
|
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.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
@@ -68,6 +70,9 @@ public abstract class BaseHold extends DeclarativeWebScript
|
|||||||
/** node service */
|
/** node service */
|
||||||
private NodeService nodeService;
|
private NodeService nodeService;
|
||||||
|
|
||||||
|
/** Dictionary service */
|
||||||
|
private DictionaryService dictionaryService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the hold service
|
* Set the hold service
|
||||||
*
|
*
|
||||||
@@ -102,6 +107,14 @@ public abstract class BaseHold extends DeclarativeWebScript
|
|||||||
this.nodeService = nodeService;
|
this.nodeService = nodeService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param dictionaryService dictionary service
|
||||||
|
*/
|
||||||
|
public void setDictionaryService(DictionaryService dictionaryService)
|
||||||
|
{
|
||||||
|
this.dictionaryService = dictionaryService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the hold service
|
* Returns the hold service
|
||||||
*
|
*
|
||||||
@@ -130,7 +143,8 @@ public abstract class BaseHold extends DeclarativeWebScript
|
|||||||
* It will either add the item(s) to the hold(s) or remove it/them from the hold(s)
|
* It will either add the item(s) to the hold(s) or remove it/them from the hold(s)
|
||||||
*
|
*
|
||||||
* @param holds List of hold {@link NodeRef}(s)
|
* @param holds List of hold {@link NodeRef}(s)
|
||||||
* @param nodeRefs List of item {@link NodeRef}(s) (record(s) / record folder(s)) which will be either added to the hold(s) or removed from the hold(s)
|
* @param nodeRefs List of item {@link NodeRef}(s) (record(s) / record folder(s) / active content(s)) which will be
|
||||||
|
* either added to the hold(s) or removed from the hold(s)
|
||||||
*/
|
*/
|
||||||
abstract void doAction(List<NodeRef> holds, List<NodeRef> nodeRefs);
|
abstract void doAction(List<NodeRef> holds, List<NodeRef> nodeRefs);
|
||||||
|
|
||||||
@@ -163,7 +177,8 @@ public abstract class BaseHold extends DeclarativeWebScript
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper method to get the {@link NodeRef}s for the items(s) (record(s) / record folder(s)) which will be added to the hold(s)
|
* Helper method to get the {@link NodeRef}s for the items(s) (record(s) / record folder(s) / active content(s))
|
||||||
|
* which will be added to the hold(s)
|
||||||
*
|
*
|
||||||
* @param json The request content as JSON object
|
* @param json The request content as JSON object
|
||||||
* @return List of item {@link NodeRef}s which will be added to the hold(s)
|
* @return List of item {@link NodeRef}s which will be added to the hold(s)
|
||||||
@@ -193,7 +208,7 @@ public abstract class BaseHold extends DeclarativeWebScript
|
|||||||
/**
|
/**
|
||||||
* Helper method for checking the node reference for an item
|
* Helper method for checking the node reference for an item
|
||||||
*
|
*
|
||||||
* @param nodeRef The {@link NodeRef} of an item (record / record folder)
|
* @param nodeRef The {@link NodeRef} of an item (record / record folder / active content)
|
||||||
*/
|
*/
|
||||||
private void checkItemNodeRef(NodeRef nodeRef)
|
private void checkItemNodeRef(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
@@ -203,15 +218,16 @@ public abstract class BaseHold extends DeclarativeWebScript
|
|||||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Item being added to hold does not exist.");
|
throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Item being added to hold does not exist.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// ensure that the node we are adding to the hold is a record or record folder
|
// ensure that the node we are adding to the hold is a record or record folder or active content
|
||||||
if (!recordService.isRecord(nodeRef) && !recordFolderService.isRecordFolder(nodeRef))
|
if (!recordService.isRecord(nodeRef) && !recordFolderService.isRecordFolder(nodeRef) &&
|
||||||
|
!dictionaryService.isSubClass(nodeService.getType(nodeRef), ContentModel.TYPE_CONTENT))
|
||||||
{
|
{
|
||||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Items added to a hold must be either a record or record folder.");
|
throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Items added to a hold must be either a record, a record folder or active content.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper method to get the list of {@link NodeRef}(s) for the hold(s) which will contain the item (record / record folder)
|
* Helper method to get the list of {@link NodeRef}(s) for the hold(s) which will contain the item (record / record folder / active content)
|
||||||
*
|
*
|
||||||
* @param json The request content as JSON object
|
* @param json The request content as JSON object
|
||||||
* @return List of {@link NodeRef}(s) of the hold(s)
|
* @return List of {@link NodeRef}(s) of the hold(s)
|
||||||
|
@@ -134,7 +134,7 @@ public class HoldsGet extends DeclarativeWebScript
|
|||||||
List<Hold> holdObjects = new ArrayList<>(holds.size());
|
List<Hold> holdObjects = new ArrayList<>(holds.size());
|
||||||
for (NodeRef nodeRef : holds)
|
for (NodeRef nodeRef : holds)
|
||||||
{
|
{
|
||||||
// only add if user has filling permisson on the hold
|
// only add if user has filling permission on the hold
|
||||||
if (!fileOnly || permissionService.hasPermission(nodeRef, RMPermissionModel.FILING) == AccessStatus.ALLOWED)
|
if (!fileOnly || permissionService.hasPermission(nodeRef, RMPermissionModel.FILING) == AccessStatus.ALLOWED)
|
||||||
{
|
{
|
||||||
String name = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
String name = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
||||||
@@ -215,7 +215,7 @@ public class HoldsGet extends DeclarativeWebScript
|
|||||||
String includedInHold = req.getParameter("includedInHold");
|
String includedInHold = req.getParameter("includedInHold");
|
||||||
if (StringUtils.isNotBlank(includedInHold))
|
if (StringUtils.isNotBlank(includedInHold))
|
||||||
{
|
{
|
||||||
result = Boolean.valueOf(includedInHold).booleanValue();
|
result = Boolean.parseBoolean(includedInHold);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -226,7 +226,7 @@ public class HoldsGet extends DeclarativeWebScript
|
|||||||
String fillingOnly = req.getParameter("fileOnly");
|
String fillingOnly = req.getParameter("fileOnly");
|
||||||
if (StringUtils.isNotBlank(fillingOnly))
|
if (StringUtils.isNotBlank(fillingOnly))
|
||||||
{
|
{
|
||||||
result = Boolean.valueOf(fillingOnly).booleanValue();
|
result = Boolean.parseBoolean(fillingOnly);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@@ -53,6 +53,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest;
|
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest;
|
||||||
@@ -69,6 +70,7 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
import org.mockito.Spy;
|
import org.mockito.Spy;
|
||||||
import org.mockito.invocation.InvocationOnMock;
|
import org.mockito.invocation.InvocationOnMock;
|
||||||
import org.mockito.stubbing.Answer;
|
import org.mockito.stubbing.Answer;
|
||||||
@@ -91,6 +93,8 @@ public class HoldServiceImplUnitTest extends BaseUnitTest
|
|||||||
protected NodeRef hold2;
|
protected NodeRef hold2;
|
||||||
protected NodeRef activeContent;
|
protected NodeRef activeContent;
|
||||||
|
|
||||||
|
@Mock (name="capabilityService")
|
||||||
|
protected CapabilityService mockedCapabilityService;
|
||||||
@Spy @InjectMocks HoldServiceImpl holdService;
|
@Spy @InjectMocks HoldServiceImpl holdService;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -104,6 +108,9 @@ public class HoldServiceImplUnitTest extends BaseUnitTest
|
|||||||
hold = generateNodeRef(TYPE_HOLD);
|
hold = generateNodeRef(TYPE_HOLD);
|
||||||
hold2 = generateNodeRef(TYPE_HOLD);
|
hold2 = generateNodeRef(TYPE_HOLD);
|
||||||
|
|
||||||
|
when(mockedCapabilityService.getCapabilityAccessState(hold, RMPermissionModel.ADD_TO_HOLD)).thenReturn(AccessStatus.ALLOWED);
|
||||||
|
when(mockedCapabilityService.getCapabilityAccessState(hold2, RMPermissionModel.ADD_TO_HOLD)).thenReturn(AccessStatus.ALLOWED);
|
||||||
|
|
||||||
activeContent = generateNodeRef();
|
activeContent = generateNodeRef();
|
||||||
QName contentSubtype = QName.createQName("contentSubtype", "contentSubtype");
|
QName contentSubtype = QName.createQName("contentSubtype", "contentSubtype");
|
||||||
when(mockedNodeService.getType(activeContent)).thenReturn(contentSubtype);
|
when(mockedNodeService.getType(activeContent)).thenReturn(contentSubtype);
|
||||||
|
@@ -27,12 +27,17 @@
|
|||||||
|
|
||||||
package org.alfresco.module.org_alfresco_module_rm.script.hold;
|
package org.alfresco.module.org_alfresco_module_rm.script.hold;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
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.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.security.AccessStatus;
|
||||||
|
import org.alfresco.service.cmr.security.PermissionService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base hold web script unit test.
|
* Base hold web script unit test.
|
||||||
@@ -45,10 +50,12 @@ public abstract class BaseHoldWebScriptUnitTest extends BaseWebScriptUnitTest
|
|||||||
/** test holds */
|
/** test holds */
|
||||||
protected NodeRef hold1NodeRef;
|
protected NodeRef hold1NodeRef;
|
||||||
protected NodeRef hold2NodeRef;
|
protected NodeRef hold2NodeRef;
|
||||||
|
protected NodeRef dmNodeRef;
|
||||||
protected List<NodeRef> holds;
|
protected List<NodeRef> holds;
|
||||||
protected List<NodeRef> records;
|
protected List<NodeRef> records;
|
||||||
protected List<NodeRef> recordFolders;
|
protected List<NodeRef> recordFolders;
|
||||||
protected List<NodeRef> filePlanComponents;
|
protected List<NodeRef> filePlanComponents;
|
||||||
|
protected List<NodeRef> activeContents;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest#before()
|
* @see org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest#before()
|
||||||
@@ -62,6 +69,14 @@ public abstract class BaseHoldWebScriptUnitTest extends BaseWebScriptUnitTest
|
|||||||
hold1NodeRef = generateHoldNodeRef("hold1");
|
hold1NodeRef = generateHoldNodeRef("hold1");
|
||||||
hold2NodeRef = generateHoldNodeRef("hold2");
|
hold2NodeRef = generateHoldNodeRef("hold2");
|
||||||
|
|
||||||
|
// generate active content
|
||||||
|
dmNodeRef = generateNodeRef(TYPE_CONTENT);
|
||||||
|
when(mockedExtendedPermissionService.hasPermission(dmNodeRef, PermissionService.WRITE)).thenReturn(AccessStatus.ALLOWED);
|
||||||
|
when(mockedDictionaryService.isSubClass(mockedNodeService.getType(dmNodeRef), ContentModel.TYPE_CONTENT)).thenReturn(true);
|
||||||
|
|
||||||
|
// list of active contents
|
||||||
|
activeContents = Collections.singletonList(dmNodeRef);
|
||||||
|
|
||||||
// list of holds
|
// list of holds
|
||||||
holds = new ArrayList<>(2);
|
holds = new ArrayList<>(2);
|
||||||
Collections.addAll(holds, hold1NodeRef, hold2NodeRef);
|
Collections.addAll(holds, hold1NodeRef, hold2NodeRef);
|
||||||
|
@@ -148,7 +148,7 @@ public abstract class BaseHoldWebScriptWithContentUnitTest extends BaseHoldWebSc
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for expected excpetion when the item being added to the hold
|
* Test for expected exception when the item being added to the hold
|
||||||
* does not exist.
|
* does not exist.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@@ -229,15 +229,14 @@ public abstract class BaseHoldWebScriptWithContentUnitTest extends BaseHoldWebSc
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for expected exception when adding an item to a hold
|
* Test for expected exception when adding an item to a hold
|
||||||
* that isn't a record or record folder.
|
* that isn't a record, record folder or active content.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Test
|
@Test
|
||||||
public void nodeRefIsNotARecordOrRecordFolder() throws Exception
|
public void nodeRefIsNotARecordOrRecordFolderOrActiveContent() throws Exception
|
||||||
{
|
{
|
||||||
// build json content to send to server
|
// build json content to send to server
|
||||||
List<NodeRef> notAHold = Collections.singletonList(recordFolder);
|
String content = buildContent(filePlanComponents, holds);
|
||||||
String content = buildContent(filePlanComponents, notAHold);
|
|
||||||
|
|
||||||
// expected exception
|
// expected exception
|
||||||
exception.expect(WebScriptException.class);
|
exception.expect(WebScriptException.class);
|
||||||
|
@@ -31,8 +31,11 @@ import static org.junit.Assert.assertNotNull;
|
|||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -106,4 +109,40 @@ public class HoldPostUnitTest extends BaseHoldWebScriptWithContentUnitTest
|
|||||||
// verify that the record was added to the holds
|
// verify that the record was added to the holds
|
||||||
verify(mockedHoldService, times(1)).addToHolds(holds, recordFolders);
|
verify(mockedHoldService, times(1)).addToHolds(holds, recordFolders);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that active content can be added to holds.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void addActiveContentToHolds() throws Exception
|
||||||
|
{
|
||||||
|
// build json to send to server
|
||||||
|
String content = buildContent(activeContents, holds);
|
||||||
|
|
||||||
|
// execute web script
|
||||||
|
JSONObject json = executeJSONWebScript(Collections.EMPTY_MAP, content);
|
||||||
|
assertNotNull(json);
|
||||||
|
|
||||||
|
// verify that the active content was added to the holds
|
||||||
|
verify(mockedHoldService, times(1)).addToHolds(holds, activeContents);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that active content can be added to holds along with records and record folders.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void addActiveContentAndRecordsAndRecordFoldersToHolds() throws Exception
|
||||||
|
{
|
||||||
|
List<NodeRef> items = new ArrayList<>(3);
|
||||||
|
Collections.addAll(items, dmNodeRef, record, recordFolder);
|
||||||
|
// build json to send to server
|
||||||
|
String content = buildContent(items, holds);
|
||||||
|
|
||||||
|
// execute web script
|
||||||
|
JSONObject json = executeJSONWebScript(Collections.EMPTY_MAP, content);
|
||||||
|
assertNotNull(json);
|
||||||
|
|
||||||
|
// verify that the active content was added to the holds along with records and record folders
|
||||||
|
verify(mockedHoldService, times(1)).addToHolds(holds, items);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -31,8 +31,11 @@ import static org.junit.Assert.assertNotNull;
|
|||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -106,4 +109,40 @@ public class HoldPutUnitTest extends BaseHoldWebScriptWithContentUnitTest
|
|||||||
// verify that the record was removed from holds
|
// verify that the record was removed from holds
|
||||||
verify(mockedHoldService, times(1)).removeFromHolds(holds, recordFolders);
|
verify(mockedHoldService, times(1)).removeFromHolds(holds, recordFolders);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that active content can be removed from holds.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void removeActiveContentFromHolds() throws Exception
|
||||||
|
{
|
||||||
|
// build json to send to server
|
||||||
|
String content = buildContent(activeContents, holds);
|
||||||
|
|
||||||
|
// execute web script
|
||||||
|
JSONObject json = executeJSONWebScript(Collections.EMPTY_MAP, content);
|
||||||
|
assertNotNull(json);
|
||||||
|
|
||||||
|
// verify that the active content was removed from holds
|
||||||
|
verify(mockedHoldService, times(1)).removeFromHolds(holds, activeContents);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that active content can be removed from holds along with records and record folders.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void removeActiveContentAndRecordsAndRecordFoldersToHolds() throws Exception
|
||||||
|
{
|
||||||
|
List<NodeRef> items = new ArrayList<>(3);
|
||||||
|
Collections.addAll(items, dmNodeRef, record, recordFolder);
|
||||||
|
// build json to send to server
|
||||||
|
String content = buildContent(items, holds);
|
||||||
|
|
||||||
|
// execute web script
|
||||||
|
JSONObject json = executeJSONWebScript(Collections.EMPTY_MAP, content);
|
||||||
|
assertNotNull(json);
|
||||||
|
|
||||||
|
// verify that the active content was removed from holds along with records and record folders
|
||||||
|
verify(mockedHoldService, times(1)).removeFromHolds(holds, items);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -216,6 +216,60 @@ public class HoldsGetUnitTest extends BaseHoldWebScriptUnitTest
|
|||||||
testForBothHolds(json);
|
testForBothHolds(json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the retrieval of holds that hold active content.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void getHoldsThatActiveContentIsHeldBy() throws Exception
|
||||||
|
{
|
||||||
|
// setup interactions
|
||||||
|
doReturn(holds).when(mockedHoldService).heldBy(dmNodeRef, true);
|
||||||
|
|
||||||
|
// setup web script parameters
|
||||||
|
Map<String, String> parameters = buildParameters
|
||||||
|
(
|
||||||
|
"store_type", filePlan.getStoreRef().getProtocol(),
|
||||||
|
"store_id", filePlan.getStoreRef().getIdentifier(),
|
||||||
|
"id", filePlan.getId(),
|
||||||
|
"itemNodeRef", dmNodeRef.toString()
|
||||||
|
);
|
||||||
|
|
||||||
|
// execute web script
|
||||||
|
JSONObject json = executeJSONWebScript(parameters);
|
||||||
|
assertNotNull(json);
|
||||||
|
|
||||||
|
// check the JSON result
|
||||||
|
testForBothHolds(json);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the retrieval of holds that do not hold active content.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void getHoldsThatActiveContentIsNotHeldBy() throws Exception
|
||||||
|
{
|
||||||
|
// setup interactions
|
||||||
|
doReturn(holds).when(mockedHoldService).heldBy(dmNodeRef, false);
|
||||||
|
|
||||||
|
// setup web script parameters
|
||||||
|
Map<String, String> parameters = buildParameters
|
||||||
|
(
|
||||||
|
"store_type", filePlan.getStoreRef().getProtocol(),
|
||||||
|
"store_id", filePlan.getStoreRef().getIdentifier(),
|
||||||
|
"id", filePlan.getId(),
|
||||||
|
"itemNodeRef", dmNodeRef.toString(),
|
||||||
|
"includedInHold", "false"
|
||||||
|
);
|
||||||
|
|
||||||
|
// execute web script
|
||||||
|
JSONObject json = executeJSONWebScript(parameters);
|
||||||
|
assertNotNull(json);
|
||||||
|
|
||||||
|
// check the JSON result
|
||||||
|
testForBothHolds(json);
|
||||||
|
}
|
||||||
|
|
||||||
public void getFileOnlyHolds() throws Exception
|
public void getFileOnlyHolds() throws Exception
|
||||||
{
|
{
|
||||||
doReturn(AccessStatus.ALLOWED).when(mockedPermissionService).hasPermission(hold1NodeRef, RMPermissionModel.FILING);
|
doReturn(AccessStatus.ALLOWED).when(mockedPermissionService).hasPermission(hold1NodeRef, RMPermissionModel.FILING);
|
||||||
|
Reference in New Issue
Block a user