mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merge 'origin/master' into feature/RM-6943_AddoToHoldActionInCollabSite
This commit is contained in:
@@ -31,7 +31,7 @@ import static org.apache.http.HttpStatus.SC_OK;
|
|||||||
import static org.testng.AssertJUnit.assertNotNull;
|
import static org.testng.AssertJUnit.assertNotNull;
|
||||||
|
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.Arrays;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ public class HoldsAPI extends BaseAPI
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
return convertHTTPResponseToJSON(httpResponse).getString("persistedObject")
|
return convertHTTPResponseToJSON(httpResponse).getString("persistedObject")
|
||||||
.replaceAll(NODE_REF_WORKSPACE_SPACES_STORE, "");
|
.replace(NODE_REF_WORKSPACE_SPACES_STORE, "");
|
||||||
}
|
}
|
||||||
catch(JSONException error)
|
catch(JSONException error)
|
||||||
{
|
{
|
||||||
@@ -165,22 +165,36 @@ public class HoldsAPI extends BaseAPI
|
|||||||
*/
|
*/
|
||||||
public HttpResponse addItemToHold(String user, String password, String itemNodeRef, String holdName)
|
public HttpResponse addItemToHold(String user, String password, String itemNodeRef, String holdName)
|
||||||
{
|
{
|
||||||
return addItemToHold(user, password, SC_OK, itemNodeRef, holdName);
|
return addItemsToHolds(user, password, Collections.singletonList(itemNodeRef), Collections.singletonList(holdName));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds item(content/record/record folder) to the hold
|
* Adds a list of items (content/record/record folder) to a list of holds
|
||||||
*
|
*
|
||||||
* @param user the user who adds the item to the hold
|
* @param user the user who adds the items to the holds
|
||||||
* @param password the user's password
|
* @param password the user's password
|
||||||
* @param itemNodeRef the nodeRef of the item to be added to hold
|
* @param itemNodeRefs the list of items nodeRefs to be added to holds
|
||||||
* @param holdName the hold name
|
* @param holdNames the list of holds
|
||||||
* @return The HTTP response
|
* @return The HTTP response
|
||||||
*/
|
*/
|
||||||
public HttpResponse addItemToHold(String user, String password, int expectedStatus, String itemNodeRef,
|
public HttpResponse addItemsToHolds(String user, String password, List<String> itemNodeRefs, List<String> holdNames)
|
||||||
String holdName)
|
|
||||||
{
|
{
|
||||||
final JSONObject requestParams = addOrRemoveToFromHoldJsonObject(user, password, itemNodeRef, holdName);
|
return addItemsToHolds(user, password, SC_OK, itemNodeRefs, holdNames);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a list of items (content/record/record folder) to a list of holds
|
||||||
|
*
|
||||||
|
* @param user the user who adds the items to the holds
|
||||||
|
* @param password the user's password
|
||||||
|
* @param itemNodeRefs the list of items nodeRefs to be added to holds
|
||||||
|
* @param holdNames the list of holds
|
||||||
|
* @return The HTTP response
|
||||||
|
*/
|
||||||
|
public HttpResponse addItemsToHolds(String user, String password, int expectedStatus, List<String> itemNodeRefs,
|
||||||
|
List<String> holdNames)
|
||||||
|
{
|
||||||
|
final JSONObject requestParams = addOrRemoveToFromHoldJsonObject(user, password, itemNodeRefs, holdNames);
|
||||||
return doPostJsonRequest(user, password, expectedStatus, requestParams, RM_HOLDS_API);
|
return doPostJsonRequest(user, password, expectedStatus, requestParams, RM_HOLDS_API);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,30 +210,29 @@ public class HoldsAPI extends BaseAPI
|
|||||||
public String addToHoldAndGetMessage(String user, String password, int expectedStatus, String itemNodeRef, String
|
public String addToHoldAndGetMessage(String user, String password, int expectedStatus, String itemNodeRef, String
|
||||||
holdName)
|
holdName)
|
||||||
{
|
{
|
||||||
final HttpResponse httpResponse = addItemToHold(user, password, expectedStatus, itemNodeRef, holdName);
|
final HttpResponse httpResponse = addItemsToHolds(user, password, expectedStatus, Collections.singletonList(itemNodeRef),
|
||||||
|
Collections.singletonList(holdName));
|
||||||
return APIUtils.extractErrorMessageFromHttpResponse(httpResponse);
|
return APIUtils.extractErrorMessageFromHttpResponse(httpResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Util method to create the request body used when adding an item to holds or when removing an item from holds
|
* Util method to create the request body used when adding items to holds or when removing items from holds
|
||||||
*
|
*
|
||||||
* @param user user to create the request body for add/remove an item to/from hold
|
* @param user user to create the request body for add/remove an item to/from hold
|
||||||
* @param password the user's password
|
* @param password the user's password
|
||||||
* @param itemNodeRef node ref to be added to hold
|
* @param items list of items node refs to be added to holds
|
||||||
* @param holdName hold names for add/remove item
|
* @param holdNames list of hold names for add/remove items
|
||||||
* @return JSONObject fo
|
* @return JSONObject fo
|
||||||
*/
|
*/
|
||||||
private JSONObject addOrRemoveToFromHoldJsonObject(String user, String password, String itemNodeRef, String holdName)
|
private JSONObject addOrRemoveToFromHoldJsonObject(String user, String password, List<String> items, List<String> holdNames)
|
||||||
{
|
{
|
||||||
|
final JSONArray nodeRefs = new JSONArray();
|
||||||
final JSONArray nodeRefs = new JSONArray().put(getNodeRefSpacesStore() + itemNodeRef);
|
items.forEach(itemNodeRef -> nodeRefs.put(getNodeRefSpacesStore() + itemNodeRef));
|
||||||
final List<String> holdNames = Arrays.asList(holdName.split(","));
|
final List<String> holdNodeRefs = holdNames.stream().map(hold ->
|
||||||
final List<String> holdNoderefs = holdNames.stream().map(hold ->
|
|
||||||
|
|
||||||
getNodeRefSpacesStore() + getItemNodeRef(user, password, String.format("/%s/%s", HOLDS_CONTAINER, hold)))
|
getNodeRefSpacesStore() + getItemNodeRef(user, password, String.format("/%s/%s", HOLDS_CONTAINER, hold)))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
final JSONArray holds = new JSONArray();
|
final JSONArray holds = new JSONArray();
|
||||||
holdNoderefs.forEach(holds::put);
|
holdNodeRefs.forEach(holds::put);
|
||||||
final JSONObject requestParams = new JSONObject();
|
final JSONObject requestParams = new JSONObject();
|
||||||
requestParams.put("nodeRefs", nodeRefs);
|
requestParams.put("nodeRefs", nodeRefs);
|
||||||
requestParams.put("holds", holds);
|
requestParams.put("holds", holds);
|
||||||
@@ -227,33 +240,47 @@ public class HoldsAPI extends BaseAPI
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove item(content/record/record folder) from the hold
|
* Remove item(content/record/record folder) from hold
|
||||||
*
|
*
|
||||||
* @param user the user who removes the item from the hold
|
* @param user the user who removes the item from the hold
|
||||||
* @param password the user's password
|
* @param password the user's password
|
||||||
* @param itemNodeRef the nodeRef of the item to be added to hold
|
* @param itemNodeRef the nodeRef of the item to be removed from hold
|
||||||
* @param holdName the hold name
|
* @param holdName the hold name
|
||||||
* @return The HTTP response
|
* @return The HTTP response
|
||||||
*/
|
*/
|
||||||
public HttpResponse removeItemFromHold(String user, String password, String itemNodeRef, String holdName)
|
public HttpResponse removeItemFromHold(String user, String password, String itemNodeRef, String holdName)
|
||||||
{
|
{
|
||||||
return removeItemFromHold(user, password, SC_OK, itemNodeRef, holdName);
|
return removeItemsFromHolds(user, password, Collections.singletonList(itemNodeRef), Collections.singletonList(holdName));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove item(content/record/record folder) to the hold
|
* Remove a list of items (content/record/record folder) from a list of holds
|
||||||
*
|
*
|
||||||
* @param user the user who adds the item to the hold
|
* @param user the user who removes the item from the hold
|
||||||
* @param password the user's password
|
* @param password the user's password
|
||||||
* @param expectedStatus https status code expected
|
* @param itemNodeRefs the list of items nodeRefs to be removed from hold
|
||||||
* @param itemNodeRef the nodeRef of the item to be added to hold
|
* @param holdNames the list of hold names
|
||||||
* @param holdName the hold name
|
|
||||||
* @return The HTTP response
|
* @return The HTTP response
|
||||||
*/
|
*/
|
||||||
public HttpResponse removeItemFromHold(String user, String password, int expectedStatus, String itemNodeRef, String
|
public HttpResponse removeItemsFromHolds(String user, String password, List<String> itemNodeRefs, List<String> holdNames)
|
||||||
holdName)
|
|
||||||
{
|
{
|
||||||
final JSONObject requestParams = addOrRemoveToFromHoldJsonObject(user, password, itemNodeRef, holdName);
|
return removeItemsFromHolds(user, password, SC_OK, itemNodeRefs, holdNames);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a list of items (content/record/record folder) from a list of holds
|
||||||
|
*
|
||||||
|
* @param user the user who removes the item from the hold
|
||||||
|
* @param password the user's password
|
||||||
|
* @param expectedStatus https status code expected
|
||||||
|
* @param itemNodeRefs the list of items nodeRefs to be removed from hold
|
||||||
|
* @param holdNames the list of hold names
|
||||||
|
* @return The HTTP response
|
||||||
|
*/
|
||||||
|
public HttpResponse removeItemsFromHolds(String user, String password, int expectedStatus, List<String> itemNodeRefs,
|
||||||
|
List<String> holdNames)
|
||||||
|
{
|
||||||
|
final JSONObject requestParams = addOrRemoveToFromHoldJsonObject(user, password, itemNodeRefs, holdNames);
|
||||||
return doPutJsonRequest(user, password, expectedStatus, requestParams, RM_HOLDS_API);
|
return doPutJsonRequest(user, password, expectedStatus, requestParams, RM_HOLDS_API);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -262,14 +289,15 @@ public class HoldsAPI extends BaseAPI
|
|||||||
*
|
*
|
||||||
* @param user the user who removes the item from hold
|
* @param user the user who removes the item from hold
|
||||||
* @param password the user's password
|
* @param password the user's password
|
||||||
* @param itemNodeRef the nodeRef of the item to be added to hold
|
* @param itemNodeRef the nodeRef of the item to be removed from hold
|
||||||
* @param holdName the hold name
|
* @param holdName the hold name
|
||||||
* @return The error message
|
* @return The error message
|
||||||
*/
|
*/
|
||||||
public String removeFromHoldAndGetMessage(String user, String password, int expectedStatus, String itemNodeRef, String
|
public String removeFromHoldAndGetMessage(String user, String password, int expectedStatus, String itemNodeRef, String
|
||||||
holdName)
|
holdName)
|
||||||
{
|
{
|
||||||
final HttpResponse httpResponse = removeItemFromHold(user, password, expectedStatus, itemNodeRef, holdName);
|
final HttpResponse httpResponse = removeItemsFromHolds(user, password, expectedStatus, Collections.singletonList(itemNodeRef),
|
||||||
|
Collections.singletonList(holdName));
|
||||||
return APIUtils.extractErrorMessageFromHttpResponse(httpResponse);
|
return APIUtils.extractErrorMessageFromHttpResponse(httpResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -26,6 +26,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.rest.rm.community.hold;
|
package org.alfresco.rest.rm.community.hold;
|
||||||
|
|
||||||
|
import static java.util.Arrays.asList;
|
||||||
|
|
||||||
import static org.alfresco.rest.rm.community.base.TestData.FROZEN_ASPECT;
|
import static org.alfresco.rest.rm.community.base.TestData.FROZEN_ASPECT;
|
||||||
import static org.alfresco.rest.rm.community.base.TestData.HOLD_DESCRIPTION;
|
import static org.alfresco.rest.rm.community.base.TestData.HOLD_DESCRIPTION;
|
||||||
import static org.alfresco.rest.rm.community.base.TestData.HOLD_REASON;
|
import static org.alfresco.rest.rm.community.base.TestData.HOLD_REASON;
|
||||||
@@ -43,7 +45,7 @@ import static org.springframework.http.HttpStatus.CREATED;
|
|||||||
import static org.testng.Assert.assertFalse;
|
import static org.testng.Assert.assertFalse;
|
||||||
import static org.testng.Assert.assertTrue;
|
import static org.testng.Assert.assertTrue;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -112,16 +114,15 @@ public class RemoveFromHoldsTests extends BaseRMRestTest
|
|||||||
STEP("Add content to the holds.");
|
STEP("Add content to the holds.");
|
||||||
holdsAPI.addItemToHold(getAdminUser().getUsername(), getAdminUser().getPassword(), contentHeld
|
holdsAPI.addItemToHold(getAdminUser().getUsername(), getAdminUser().getPassword(), contentHeld
|
||||||
.getNodeRefWithoutVersion(), HOLD_ONE);
|
.getNodeRefWithoutVersion(), HOLD_ONE);
|
||||||
holdsAPI.addItemToHold(getAdminUser().getUsername(), getAdminUser().getPassword(), contentAddToManyHolds
|
holdsAPI.addItemsToHolds(getAdminUser().getUsername(), getAdminUser().getPassword(),
|
||||||
.getNodeRefWithoutVersion(), String.format("%s,%s", HOLD_ONE, HOLD_TWO));
|
Collections.singletonList(contentAddToManyHolds.getNodeRefWithoutVersion()), asList(HOLD_ONE, HOLD_TWO));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Valid nodes to be removed from hold
|
* Valid nodes to be removed from hold
|
||||||
*/
|
*/
|
||||||
@DataProvider (name = "validNodesToRemoveFromHold")
|
@DataProvider (name = "validNodesToRemoveFromHold")
|
||||||
public Object[][] getValidNodesToRemoveFromHold() throws Exception
|
public Object[][] getValidNodesToRemoveFromHold()
|
||||||
{
|
{
|
||||||
//create electronic and nonElectronic record in record folder
|
//create electronic and nonElectronic record in record folder
|
||||||
RecordCategoryChild recordFolder = createCategoryFolderInFilePlan();
|
RecordCategoryChild recordFolder = createCategoryFolderInFilePlan();
|
||||||
@@ -135,8 +136,8 @@ public class RemoveFromHoldsTests extends BaseRMRestTest
|
|||||||
|
|
||||||
RecordCategoryChild folderToHeld = createCategoryFolderInFilePlan();
|
RecordCategoryChild folderToHeld = createCategoryFolderInFilePlan();
|
||||||
nodesToBeClean.add(folderToHeld.getParentId());
|
nodesToBeClean.add(folderToHeld.getParentId());
|
||||||
Arrays.asList(electronicRecord.getId(), nonElectronicRecord.getId(), folderToHeld.getId()).forEach(item ->
|
holdsAPI.addItemsToHolds(getAdminUser().getUsername(), getAdminUser().getPassword(),
|
||||||
holdsAPI.addItemToHold(getAdminUser().getUsername(), getAdminUser().getPassword(), item, HOLD_ONE));
|
asList(electronicRecord.getId(), nonElectronicRecord.getId(), folderToHeld.getId()), Collections.singletonList(HOLD_ONE));
|
||||||
|
|
||||||
return new String[][]
|
return new String[][]
|
||||||
{ // record folder
|
{ // record folder
|
||||||
@@ -215,11 +216,11 @@ public class RemoveFromHoldsTests extends BaseRMRestTest
|
|||||||
FileModel contentNoHoldCap = dataContent.usingSite(testSite).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
|
FileModel contentNoHoldCap = dataContent.usingSite(testSite).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
|
||||||
FileModel privateFile = dataContent.usingSite(privateSite).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
|
FileModel privateFile = dataContent.usingSite(privateSite).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
|
||||||
//add files to hold
|
//add files to hold
|
||||||
Arrays.asList(recordFolder.getId(), contentNoHoldCap.getNodeRefWithoutVersion(),
|
holdsAPI.addItemsToHolds(getAdminUser().getUsername(), getAdminUser().getPassword(),
|
||||||
contentNoHoldPerm.getNodeRefWithoutVersion(), privateFile.getNodeRefWithoutVersion()).forEach(
|
asList(recordFolder.getId(), contentNoHoldCap.getNodeRefWithoutVersion(),
|
||||||
node -> holdsAPI.addItemToHold(getAdminUser().getUsername(), getAdminUser().getPassword(), node,
|
contentNoHoldPerm.getNodeRefWithoutVersion(), privateFile.getNodeRefWithoutVersion()),
|
||||||
HOLD_ONE)
|
Collections.singletonList(HOLD_ONE));
|
||||||
);
|
|
||||||
return new Object[][]
|
return new Object[][]
|
||||||
{
|
{
|
||||||
// user with read permission on the content, with remove from hold capability and without
|
// user with read permission on the content, with remove from hold capability and without
|
||||||
@@ -290,10 +291,8 @@ public class RemoveFromHoldsTests extends BaseRMRestTest
|
|||||||
FileModel contentPermission = dataContent.usingSite(testSite).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
|
FileModel contentPermission = dataContent.usingSite(testSite).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
|
||||||
|
|
||||||
//add files to hold
|
//add files to hold
|
||||||
Arrays.asList(recordFolder.getId(), contentPermission.getNodeRefWithoutVersion()).forEach(
|
holdsAPI.addItemsToHolds(getAdminUser().getUsername(), getAdminUser().getPassword(),
|
||||||
node -> holdsAPI.addItemToHold(getAdminUser().getUsername(), getAdminUser().getPassword(), node,
|
asList(recordFolder.getId(), contentPermission.getNodeRefWithoutVersion()), Collections.singletonList(HOLD_ONE));
|
||||||
HOLD_ONE)
|
|
||||||
);
|
|
||||||
|
|
||||||
return new Object[][]
|
return new Object[][]
|
||||||
{
|
{
|
||||||
@@ -325,7 +324,7 @@ public class RemoveFromHoldsTests extends BaseRMRestTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
@AfterClass (alwaysRun = true)
|
@AfterClass (alwaysRun = true)
|
||||||
public void cleanUpRemoveContentFromHold() throws Exception
|
public void cleanUpRemoveContentFromHold()
|
||||||
{
|
{
|
||||||
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_ONE);
|
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_ONE);
|
||||||
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_TWO);
|
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_TWO);
|
||||||
|
Reference in New Issue
Block a user