mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merge branch 'feature/RM-4615_TAS_Binary_Request_Handler' into 'master'
Feature/rm 4615 tas binary request handler See merge request !32
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
<maven.build.sourceVersion>1.8</maven.build.sourceVersion>
|
<maven.build.sourceVersion>1.8</maven.build.sourceVersion>
|
||||||
<alfresco.rm.share>alfresco-rm-community-share</alfresco.rm.share>
|
<alfresco.rm.share>alfresco-rm-community-share</alfresco.rm.share>
|
||||||
<alfresco.rm.repo>alfresco-rm-community-repo</alfresco.rm.repo>
|
<alfresco.rm.repo>alfresco-rm-community-repo</alfresco.rm.repo>
|
||||||
<tas.restapi.version>5.2.0-0</tas.restapi.version>
|
<tas.restapi.version>5.2.0-2</tas.restapi.version>
|
||||||
<fluent.json.version>2.0.0</fluent.json.version>
|
<fluent.json.version>2.0.0</fluent.json.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
@@ -50,4 +50,12 @@ public class RMRestWrapper extends RestWrapper
|
|||||||
{
|
{
|
||||||
return new RestIGCoreAPI(this, rmRestProperties);
|
return new RestIGCoreAPI(this, rmRestProperties);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the rmRestProperties
|
||||||
|
*/
|
||||||
|
public RMRestProperties getRmRestProperties()
|
||||||
|
{
|
||||||
|
return this.rmRestProperties;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -29,6 +29,7 @@ package org.alfresco.rest.core;
|
|||||||
import org.alfresco.rest.rm.community.requests.igCoreAPI.FilePlanComponentAPI;
|
import org.alfresco.rest.rm.community.requests.igCoreAPI.FilePlanComponentAPI;
|
||||||
import org.alfresco.rest.rm.community.requests.igCoreAPI.FilesAPI;
|
import org.alfresco.rest.rm.community.requests.igCoreAPI.FilesAPI;
|
||||||
import org.alfresco.rest.rm.community.requests.igCoreAPI.RMSiteAPI;
|
import org.alfresco.rest.rm.community.requests.igCoreAPI.RMSiteAPI;
|
||||||
|
import org.alfresco.rest.rm.community.requests.igCoreAPI.RMUserAPI;
|
||||||
import org.alfresco.rest.rm.community.requests.igCoreAPI.RecordsAPI;
|
import org.alfresco.rest.rm.community.requests.igCoreAPI.RecordsAPI;
|
||||||
import org.alfresco.rest.rm.community.requests.igCoreAPI.RestIGCoreAPI;
|
import org.alfresco.rest.rm.community.requests.igCoreAPI.RestIGCoreAPI;
|
||||||
import org.alfresco.utility.data.DataUser;
|
import org.alfresco.utility.data.DataUser;
|
||||||
@@ -106,4 +107,14 @@ public class RestAPIFactory
|
|||||||
{
|
{
|
||||||
return getRestIGCoreAPI(userModel).usingFiles();
|
return getRestIGCoreAPI(userModel).usingFiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RMUserAPI getRMUserAPI()
|
||||||
|
{
|
||||||
|
return getRestIGCoreAPI(null).usingRMUser();
|
||||||
|
}
|
||||||
|
|
||||||
|
public RMUserAPI getRMUserAPI(UserModel userModel)
|
||||||
|
{
|
||||||
|
return getRestIGCoreAPI(userModel).usingRMUser();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -35,7 +35,7 @@ import org.alfresco.rest.requests.ModelRequest;
|
|||||||
* @author Tuna Aksoy
|
* @author Tuna Aksoy
|
||||||
* @since 2.6
|
* @since 2.6
|
||||||
*/
|
*/
|
||||||
public abstract class RMModelRequest extends ModelRequest
|
public abstract class RMModelRequest extends ModelRequest<RMModelRequest>
|
||||||
{
|
{
|
||||||
private RMRestWrapper rmRestWrapper;
|
private RMRestWrapper rmRestWrapper;
|
||||||
|
|
||||||
|
@@ -26,9 +26,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.rest.rm.community.requests.igCoreAPI;
|
package org.alfresco.rest.rm.community.requests.igCoreAPI;
|
||||||
|
|
||||||
import static com.jayway.restassured.RestAssured.basic;
|
|
||||||
import static com.jayway.restassured.RestAssured.given;
|
|
||||||
|
|
||||||
import static org.alfresco.rest.core.RestRequest.requestWithBody;
|
import static org.alfresco.rest.core.RestRequest.requestWithBody;
|
||||||
import static org.alfresco.rest.core.RestRequest.simpleRequest;
|
import static org.alfresco.rest.core.RestRequest.simpleRequest;
|
||||||
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentType.CONTENT_TYPE;
|
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentType.CONTENT_TYPE;
|
||||||
@@ -50,13 +47,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|||||||
import com.google.common.io.Resources;
|
import com.google.common.io.Resources;
|
||||||
import com.jayway.restassured.builder.RequestSpecBuilder;
|
import com.jayway.restassured.builder.RequestSpecBuilder;
|
||||||
import com.jayway.restassured.http.ContentType;
|
import com.jayway.restassured.http.ContentType;
|
||||||
import com.jayway.restassured.response.Response;
|
|
||||||
|
|
||||||
import org.alfresco.rest.core.RMRestWrapper;
|
import org.alfresco.rest.core.RMRestWrapper;
|
||||||
import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponent;
|
import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponent;
|
||||||
import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentsCollection;
|
import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentsCollection;
|
||||||
import org.alfresco.rest.rm.community.requests.RMModelRequest;
|
import org.alfresco.rest.rm.community.requests.RMModelRequest;
|
||||||
import org.alfresco.utility.model.UserModel;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* File plan component REST API Wrapper
|
* File plan component REST API Wrapper
|
||||||
@@ -236,13 +231,15 @@ public class FilePlanComponentAPI extends RMModelRequest
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create electronic record from file resource
|
* Create electronic record from file resource
|
||||||
|
*
|
||||||
* @param electronicRecordModel {@link FilePlanComponent} for electronic record to be created
|
* @param electronicRecordModel {@link FilePlanComponent} for electronic record to be created
|
||||||
* @param recordContent {@link File} pointing to the content of the electronic record to be created
|
* @param recordContent {@link File} pointing to the content of the electronic record to be created
|
||||||
* @param parentId parent container id
|
* @param parentId parent container id
|
||||||
* @return newly created {@link FilePlanComponent}
|
* @return newly created {@link FilePlanComponent}
|
||||||
* @throws Exception if operation failed
|
* @throws Exception for invalid electronicRecordModel JSON strings
|
||||||
*/
|
*/
|
||||||
public FilePlanComponent createElectronicRecord(FilePlanComponent electronicRecordModel, File recordContent, String parentId) throws Exception
|
public FilePlanComponent createElectronicRecord(FilePlanComponent electronicRecordModel, File recordContent,
|
||||||
|
String parentId) throws Exception
|
||||||
{
|
{
|
||||||
mandatoryObject("electronicRecordModel", electronicRecordModel);
|
mandatoryObject("electronicRecordModel", electronicRecordModel);
|
||||||
mandatoryString("parentId", parentId);
|
mandatoryString("parentId", parentId);
|
||||||
@@ -251,40 +248,24 @@ public class FilePlanComponentAPI extends RMModelRequest
|
|||||||
fail("Only electronic records are supported");
|
fail("Only electronic records are supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
UserModel currentUser = getRMRestWrapper().getTestUser();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For file uploads nodeBodyCreate is ignored hence can't be used. Append all FilePlanComponent fields
|
* For file uploads nodeBodyCreate is ignored hence can't be used. Append all FilePlanComponent fields
|
||||||
* to the request.
|
* to the request.
|
||||||
*/
|
*/
|
||||||
RequestSpecBuilder builder = new RequestSpecBuilder();
|
RequestSpecBuilder builder = getRMRestWrapper().configureRequestSpec();
|
||||||
builder.setAuth(basic(currentUser.getUsername(), currentUser.getPassword()));
|
JsonNode root = new ObjectMapper().readTree(toJson(electronicRecordModel));
|
||||||
|
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
|
||||||
JsonNode root = mapper.readTree(toJson(electronicRecordModel));
|
|
||||||
|
|
||||||
|
// add request fields
|
||||||
Iterator<String> fieldNames = root.fieldNames();
|
Iterator<String> fieldNames = root.fieldNames();
|
||||||
while (fieldNames.hasNext())
|
while (fieldNames.hasNext())
|
||||||
{
|
{
|
||||||
String fieldName = fieldNames.next();
|
String fieldName = fieldNames.next();
|
||||||
builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name());
|
builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.addMultiPart("filedata", recordContent, ContentType.BINARY.name());
|
builder.addMultiPart("filedata", recordContent, ContentType.BINARY.name());
|
||||||
|
|
||||||
/*
|
// create node with given content
|
||||||
* RestWrapper adds some headers which break multipart/form-data uploads and also assumes json POST requests.
|
return createFilePlanComponent(electronicRecordModel, parentId);
|
||||||
* Upload the file using RestAssured library.
|
|
||||||
*/
|
|
||||||
Response response = given()
|
|
||||||
.spec(builder.build())
|
|
||||||
.when()
|
|
||||||
.post("fileplan-components/{fileplanComponentId}/children?{parameters}", parentId, getRMRestWrapper().getParameters())
|
|
||||||
.andReturn();
|
|
||||||
getRMRestWrapper().setStatusCode(Integer.toString(response.getStatusCode()));
|
|
||||||
|
|
||||||
/* return a FilePlanComponent object representing Response */
|
|
||||||
return response.jsonPath().getObject("entry", FilePlanComponent.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -26,9 +26,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.rest.rm.community.requests.igCoreAPI;
|
package org.alfresco.rest.rm.community.requests.igCoreAPI;
|
||||||
|
|
||||||
|
import static com.jayway.restassured.RestAssured.basic;
|
||||||
import static com.jayway.restassured.RestAssured.given;
|
import static com.jayway.restassured.RestAssured.given;
|
||||||
|
|
||||||
import static org.jglue.fluentjson.JsonBuilderFactory.buildObject;
|
import static org.jglue.fluentjson.JsonBuilderFactory.buildObject;
|
||||||
|
import static org.springframework.http.HttpStatus.OK;
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.jayway.restassured.builder.RequestSpecBuilder;
|
import com.jayway.restassured.builder.RequestSpecBuilder;
|
||||||
@@ -38,12 +40,13 @@ import com.jayway.restassured.specification.RequestSpecification;
|
|||||||
|
|
||||||
import org.alfresco.dataprep.AlfrescoHttpClient;
|
import org.alfresco.dataprep.AlfrescoHttpClient;
|
||||||
import org.alfresco.dataprep.AlfrescoHttpClientFactory;
|
import org.alfresco.dataprep.AlfrescoHttpClientFactory;
|
||||||
import org.alfresco.dataprep.UserService;
|
import org.alfresco.rest.core.RMRestProperties;
|
||||||
import org.alfresco.rest.core.RestAPI;
|
import org.alfresco.rest.core.RMRestWrapper;
|
||||||
import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponent;
|
import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponent;
|
||||||
import org.alfresco.utility.data.DataUser;
|
import org.alfresco.rest.rm.community.model.user.UserPermissions;
|
||||||
|
import org.alfresco.rest.rm.community.model.user.UserRoles;
|
||||||
|
import org.alfresco.rest.rm.community.requests.RMModelRequest;
|
||||||
import org.alfresco.utility.model.UserModel;
|
import org.alfresco.utility.model.UserModel;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -58,21 +61,44 @@ import org.springframework.stereotype.Component;
|
|||||||
// "old-style" API calls.
|
// "old-style" API calls.
|
||||||
@Component
|
@Component
|
||||||
@Scope (value = "prototype")
|
@Scope (value = "prototype")
|
||||||
public class RMUserAPI extends RestAPI<RMUserAPI>
|
public class RMUserAPI extends RMModelRequest
|
||||||
{
|
{
|
||||||
@Autowired
|
/**
|
||||||
private UserService userService;
|
* @param rmRestWrapper
|
||||||
|
*/
|
||||||
|
public RMUserAPI(RMRestWrapper rmRestWrapper)
|
||||||
|
{
|
||||||
|
super(rmRestWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
/**
|
||||||
private DataUser dataUser;
|
* Helper method to obtain {@link AlfrescoHttpClient}
|
||||||
|
* @return Initialized {@link AlfrescoHttpClient} instance
|
||||||
|
*/
|
||||||
|
private AlfrescoHttpClient getAlfrescoHttpClient()
|
||||||
|
{
|
||||||
|
RMRestProperties properties = getRMRestWrapper().getRmRestProperties();
|
||||||
|
|
||||||
@Autowired
|
AlfrescoHttpClientFactory factory = new AlfrescoHttpClientFactory();
|
||||||
private AlfrescoHttpClientFactory alfrescoHttpClientFactory;
|
factory.setHost(properties.getServer());
|
||||||
|
factory.setPort(Integer.parseInt(properties.getPort()));
|
||||||
|
factory.setScheme(properties.getScheme());
|
||||||
|
|
||||||
|
return factory.getObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assign RM role to user
|
||||||
|
* @param userName User's username
|
||||||
|
* @param userRole User's RM role, one of {@link UserRoles} roles
|
||||||
|
* @throws Exception for failed requests
|
||||||
|
*/
|
||||||
public void assignRoleToUser(String userName, String userRole) throws Exception
|
public void assignRoleToUser(String userName, String userRole) throws Exception
|
||||||
{
|
{
|
||||||
|
UserModel adminUser = getRMRestWrapper().getTestUser();
|
||||||
|
|
||||||
// get an "old-style" REST API client
|
// get an "old-style" REST API client
|
||||||
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
|
AlfrescoHttpClient client = getAlfrescoHttpClient();
|
||||||
|
|
||||||
// override v1 baseURI and basePath
|
// override v1 baseURI and basePath
|
||||||
RequestSpecification spec = new RequestSpecBuilder()
|
RequestSpecification spec = new RequestSpecBuilder()
|
||||||
@@ -85,13 +111,13 @@ public class RMUserAPI extends RestAPI<RMUserAPI>
|
|||||||
.log().all()
|
.log().all()
|
||||||
.pathParam("role", userRole)
|
.pathParam("role", userRole)
|
||||||
.pathParam("authority", userName)
|
.pathParam("authority", userName)
|
||||||
.param("alf_ticket", client.getAlfTicket(
|
.param("alf_ticket", client.getAlfTicket(adminUser.getUsername(),
|
||||||
dataUser.getAdminUser().getUsername(), dataUser.getAdminUser().getPassword()))
|
adminUser.getPassword()))
|
||||||
.when()
|
.when()
|
||||||
.post("/rm/roles/{role}/authorities/{authority}")
|
.post("/rm/roles/{role}/authorities/{authority}")
|
||||||
.prettyPeek()
|
.prettyPeek()
|
||||||
.andReturn();
|
.andReturn();
|
||||||
usingRestWrapper().setStatusCode(Integer.toString(response.getStatusCode()));
|
getRMRestWrapper().setStatusCode(Integer.toString(response.getStatusCode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -102,8 +128,10 @@ public class RMUserAPI extends RestAPI<RMUserAPI>
|
|||||||
*/
|
*/
|
||||||
public void addUserPermission(FilePlanComponent component, UserModel user, String permission)
|
public void addUserPermission(FilePlanComponent component, UserModel user, String permission)
|
||||||
{
|
{
|
||||||
|
UserModel adminUser = getRMRestWrapper().getTestUser();
|
||||||
|
|
||||||
// get an "old-style" REST API client
|
// get an "old-style" REST API client
|
||||||
AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject();
|
AlfrescoHttpClient client = getAlfrescoHttpClient();
|
||||||
|
|
||||||
JsonObject bodyJson = buildObject()
|
JsonObject bodyJson = buildObject()
|
||||||
.addArray("permissions")
|
.addArray("permissions")
|
||||||
@@ -122,7 +150,7 @@ public class RMUserAPI extends RestAPI<RMUserAPI>
|
|||||||
// execute an "old-style" API call
|
// execute an "old-style" API call
|
||||||
Response response = given()
|
Response response = given()
|
||||||
.spec(spec)
|
.spec(spec)
|
||||||
.auth().basic(dataUser.getAdminUser().getUsername(), dataUser.getAdminUser().getPassword())
|
.auth().basic(adminUser.getUsername(), adminUser.getPassword())
|
||||||
.contentType(ContentType.JSON)
|
.contentType(ContentType.JSON)
|
||||||
.body(bodyJson.toString())
|
.body(bodyJson.toString())
|
||||||
.pathParam("nodeId", component.getId())
|
.pathParam("nodeId", component.getId())
|
||||||
@@ -131,23 +159,47 @@ public class RMUserAPI extends RestAPI<RMUserAPI>
|
|||||||
.post("/node/workspace/SpacesStore/{nodeId}/rmpermissions")
|
.post("/node/workspace/SpacesStore/{nodeId}/rmpermissions")
|
||||||
.prettyPeek()
|
.prettyPeek()
|
||||||
.andReturn();
|
.andReturn();
|
||||||
usingRestWrapper().setStatusCode(Integer.toString(response.getStatusCode()));
|
getRMRestWrapper().setStatusCode(Integer.toString(response.getStatusCode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a user with the given name using the old APIs
|
* Creates a user with the given name using the old APIs
|
||||||
*
|
*
|
||||||
* @param userName The user name
|
* @param userName The user name
|
||||||
|
* @param userPassword The user's password
|
||||||
|
* @param userEmail The user's e-mail address
|
||||||
* @return <code>true</code> if the user was created successfully, <code>false</code> otherwise.
|
* @return <code>true</code> if the user was created successfully, <code>false</code> otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean createUser(String userName)
|
public boolean createUser(String userName, String userPassword, String userEmail)
|
||||||
{
|
{
|
||||||
return userService.create(dataUser.getAdminUser().getUsername(),
|
UserModel adminUser = getRMRestWrapper().getTestUser();
|
||||||
dataUser.getAdminUser().getPassword(),
|
AlfrescoHttpClient client = getAlfrescoHttpClient();
|
||||||
userName,
|
|
||||||
"password",
|
JsonObject body = buildObject()
|
||||||
"default@alfresco.com",
|
.add("userName", userName)
|
||||||
userName,
|
.add("firstName", userName)
|
||||||
userName);
|
.add("lastName", userName)
|
||||||
|
.add("password", userPassword)
|
||||||
|
.add("email", userEmail)
|
||||||
|
.getJson();
|
||||||
|
|
||||||
|
RequestSpecification spec = new RequestSpecBuilder()
|
||||||
|
.setBaseUri(client.getApiUrl())
|
||||||
|
.setBasePath("/")
|
||||||
|
.setAuth(basic(adminUser.getUsername(), adminUser.getPassword()))
|
||||||
|
.setContentType(ContentType.JSON)
|
||||||
|
.setBody(body.toString())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
// create POST request to "people" endpoint
|
||||||
|
Response response = given()
|
||||||
|
.spec(spec)
|
||||||
|
.log().all()
|
||||||
|
.when()
|
||||||
|
.post("people")
|
||||||
|
.prettyPeek()
|
||||||
|
.andReturn();
|
||||||
|
|
||||||
|
return (response.getStatusCode() == OK.value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -26,16 +26,15 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.rest.rm.community.requests.igCoreAPI;
|
package org.alfresco.rest.rm.community.requests.igCoreAPI;
|
||||||
|
|
||||||
import static com.jayway.restassured.RestAssured.given;
|
|
||||||
|
|
||||||
import static org.alfresco.rest.core.RestRequest.requestWithBody;
|
import static org.alfresco.rest.core.RestRequest.requestWithBody;
|
||||||
|
import static org.alfresco.rest.core.RestRequest.simpleRequest;
|
||||||
import static org.alfresco.rest.rm.community.util.ParameterCheck.mandatoryObject;
|
import static org.alfresco.rest.rm.community.util.ParameterCheck.mandatoryObject;
|
||||||
import static org.alfresco.rest.rm.community.util.ParameterCheck.mandatoryString;
|
import static org.alfresco.rest.rm.community.util.ParameterCheck.mandatoryString;
|
||||||
import static org.alfresco.rest.rm.community.util.PojoUtility.toJson;
|
import static org.alfresco.rest.rm.community.util.PojoUtility.toJson;
|
||||||
import static org.apache.commons.lang3.StringUtils.EMPTY;
|
import static org.apache.commons.lang3.StringUtils.EMPTY;
|
||||||
|
import static org.springframework.http.HttpMethod.GET;
|
||||||
import static org.springframework.http.HttpMethod.POST;
|
import static org.springframework.http.HttpMethod.POST;
|
||||||
|
|
||||||
import com.jayway.restassured.response.Response;
|
|
||||||
import com.jayway.restassured.response.ResponseBody;
|
import com.jayway.restassured.response.ResponseBody;
|
||||||
|
|
||||||
import org.alfresco.rest.core.RMRestWrapper;
|
import org.alfresco.rest.core.RMRestWrapper;
|
||||||
@@ -79,14 +78,11 @@ public class RecordsAPI extends RMModelRequest
|
|||||||
public ResponseBody<?> getRecordContent(String recordId) throws Exception
|
public ResponseBody<?> getRecordContent(String recordId) throws Exception
|
||||||
{
|
{
|
||||||
mandatoryString("recordId", recordId);
|
mandatoryString("recordId", recordId);
|
||||||
Response response = given()
|
|
||||||
.auth().basic(getRMRestWrapper().getTestUser().getUsername(),
|
return getRMRestWrapper()
|
||||||
getRMRestWrapper().getTestUser().getPassword())
|
.processHtmlResponse(simpleRequest(GET,"records/{recordId}/content", recordId))
|
||||||
.when()
|
.getBody();
|
||||||
.get("records/{recordId}/content", recordId)
|
|
||||||
.andReturn();
|
|
||||||
getRMRestWrapper().setStatusCode(Integer.toString(response.getStatusCode()));
|
|
||||||
return response.getBody();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -144,6 +140,5 @@ public class RecordsAPI extends RMModelRequest
|
|||||||
parameters
|
parameters
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -56,6 +56,7 @@ public class RestIGCoreAPI extends RMModelRequest
|
|||||||
RestAssured.baseURI = format("%s://%s", rmRestProperties.getScheme(), rmRestProperties.getServer());
|
RestAssured.baseURI = format("%s://%s", rmRestProperties.getScheme(), rmRestProperties.getServer());
|
||||||
RestAssured.port = parseInt(rmRestProperties.getPort());
|
RestAssured.port = parseInt(rmRestProperties.getPort());
|
||||||
RestAssured.basePath = rmRestProperties.getRestRmPath();
|
RestAssured.basePath = rmRestProperties.getRestRmPath();
|
||||||
|
restWrapper.configureRequestSpec().setBasePath(RestAssured.basePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -97,4 +98,14 @@ public class RestIGCoreAPI extends RMModelRequest
|
|||||||
{
|
{
|
||||||
return new FilesAPI(getRMRestWrapper());
|
return new FilesAPI(getRMRestWrapper());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides DSL for RM user management API
|
||||||
|
*
|
||||||
|
* @return {@link RMUserAPI}
|
||||||
|
*/
|
||||||
|
public RMUserAPI usingRMUser()
|
||||||
|
{
|
||||||
|
return new RMUserAPI(getRMRestWrapper());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -41,12 +41,10 @@ import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponent
|
|||||||
import org.alfresco.rest.rm.community.model.user.UserPermissions;
|
import org.alfresco.rest.rm.community.model.user.UserPermissions;
|
||||||
import org.alfresco.rest.rm.community.model.user.UserRoles;
|
import org.alfresco.rest.rm.community.model.user.UserRoles;
|
||||||
import org.alfresco.rest.rm.community.requests.igCoreAPI.FilePlanComponentAPI;
|
import org.alfresco.rest.rm.community.requests.igCoreAPI.FilePlanComponentAPI;
|
||||||
import org.alfresco.rest.rm.community.requests.igCoreAPI.RMUserAPI;
|
|
||||||
import org.alfresco.test.AlfrescoTest;
|
import org.alfresco.test.AlfrescoTest;
|
||||||
import org.alfresco.utility.constants.UserRole;
|
import org.alfresco.utility.constants.UserRole;
|
||||||
import org.alfresco.utility.model.SiteModel;
|
import org.alfresco.utility.model.SiteModel;
|
||||||
import org.alfresco.utility.model.UserModel;
|
import org.alfresco.utility.model.UserModel;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -60,9 +58,6 @@ import org.testng.annotations.Test;
|
|||||||
*/
|
*/
|
||||||
public class DeleteRecordTests extends BaseRMRestTest
|
public class DeleteRecordTests extends BaseRMRestTest
|
||||||
{
|
{
|
||||||
@Autowired
|
|
||||||
private RMUserAPI rmUserAPI;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* Given a record
|
* Given a record
|
||||||
@@ -149,8 +144,8 @@ public class DeleteRecordTests extends BaseRMRestTest
|
|||||||
getDataUser().addUserToSite(deleteUser, new SiteModel(getRestAPIFactory().getRMSiteAPI().getSite().getId()), UserRole.SiteCollaborator);
|
getDataUser().addUserToSite(deleteUser, new SiteModel(getRestAPIFactory().getRMSiteAPI().getSite().getId()), UserRole.SiteCollaborator);
|
||||||
|
|
||||||
// add RM role to user
|
// add RM role to user
|
||||||
rmUserAPI.assignRoleToUser(deleteUser.getUsername(), UserRoles.ROLE_RM_POWER_USER);
|
getRestAPIFactory().getRMUserAPI().assignRoleToUser(deleteUser.getUsername(), UserRoles.ROLE_RM_POWER_USER);
|
||||||
rmUserAPI.usingRestWrapper().assertStatusCodeIs(OK);
|
assertStatusCode(OK);
|
||||||
|
|
||||||
// try to delete newRecord
|
// try to delete newRecord
|
||||||
getRestAPIFactory().getFilePlanComponentsAPI(deleteUser).deleteFilePlanComponent(newRecord.getId());
|
getRestAPIFactory().getFilePlanComponentsAPI(deleteUser).deleteFilePlanComponent(newRecord.getId());
|
||||||
@@ -183,8 +178,8 @@ public class DeleteRecordTests extends BaseRMRestTest
|
|||||||
logger.info("test user: " + deleteUser.getUsername());
|
logger.info("test user: " + deleteUser.getUsername());
|
||||||
|
|
||||||
// add RM role to user, RM Power User doesn't have the Delete Record capabilities
|
// add RM role to user, RM Power User doesn't have the Delete Record capabilities
|
||||||
rmUserAPI.assignRoleToUser(deleteUser.getUsername(), UserRoles.ROLE_RM_POWER_USER);
|
getRestAPIFactory().getRMUserAPI().assignRoleToUser(deleteUser.getUsername(), UserRoles.ROLE_RM_POWER_USER);
|
||||||
rmUserAPI.usingRestWrapper().assertStatusCodeIs(OK);
|
assertStatusCode(OK);
|
||||||
|
|
||||||
// create random folder
|
// create random folder
|
||||||
FilePlanComponent randomFolder = createCategoryFolderInFilePlan();
|
FilePlanComponent randomFolder = createCategoryFolderInFilePlan();
|
||||||
@@ -193,9 +188,9 @@ public class DeleteRecordTests extends BaseRMRestTest
|
|||||||
// grant deleteUser Filing privileges on randomFolder category, this will be
|
// grant deleteUser Filing privileges on randomFolder category, this will be
|
||||||
// inherited to randomFolder
|
// inherited to randomFolder
|
||||||
FilePlanComponentAPI filePlanComponentsAPIAsAdmin = getRestAPIFactory().getFilePlanComponentsAPI();
|
FilePlanComponentAPI filePlanComponentsAPIAsAdmin = getRestAPIFactory().getFilePlanComponentsAPI();
|
||||||
rmUserAPI.addUserPermission(filePlanComponentsAPIAsAdmin.getFilePlanComponent(randomFolder.getParentId()),
|
getRestAPIFactory().getRMUserAPI().addUserPermission(filePlanComponentsAPIAsAdmin.getFilePlanComponent(randomFolder.getParentId()),
|
||||||
deleteUser, UserPermissions.PERMISSION_FILING);
|
deleteUser, UserPermissions.PERMISSION_FILING);
|
||||||
rmUserAPI.usingRestWrapper().assertStatusCodeIs(OK);
|
assertStatusCode(OK);
|
||||||
|
|
||||||
// create a non-electronic record in randomFolder
|
// create a non-electronic record in randomFolder
|
||||||
FilePlanComponent newRecord = filePlanComponentsAPIAsAdmin.createFilePlanComponent(createNonElectronicRecordModel(), randomFolder.getId());
|
FilePlanComponent newRecord = filePlanComponentsAPIAsAdmin.createFilePlanComponent(createNonElectronicRecordModel(), randomFolder.getId());
|
||||||
|
@@ -99,7 +99,7 @@ public class ElectronicRecordTests extends BaseRMRestTest
|
|||||||
)
|
)
|
||||||
public void cantCreateElectronicRecordsInInvalidContainers(FilePlanComponent container) throws Exception
|
public void cantCreateElectronicRecordsInInvalidContainers(FilePlanComponent container) throws Exception
|
||||||
{
|
{
|
||||||
// Build object the filePlan
|
// Build object the filePlan, this should throw an IllegalArgumentException
|
||||||
getRestAPIFactory().getFilePlanComponentsAPI().createElectronicRecord(createElectronicRecordModel(), IMAGE_FILE, container.getId());
|
getRestAPIFactory().getFilePlanComponentsAPI().createElectronicRecord(createElectronicRecordModel(), IMAGE_FILE, container.getId());
|
||||||
|
|
||||||
// verify the create request status code
|
// verify the create request status code
|
||||||
@@ -116,7 +116,10 @@ public class ElectronicRecordTests extends BaseRMRestTest
|
|||||||
* </pre>
|
* </pre>
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@Test(description = "Electronic record can't be created in closed record folder")
|
@Test
|
||||||
|
(
|
||||||
|
description = "Electronic record can't be created in closed record folder"
|
||||||
|
)
|
||||||
public void cantCreateElectronicRecordInClosedFolder() throws Exception
|
public void cantCreateElectronicRecordInClosedFolder() throws Exception
|
||||||
{
|
{
|
||||||
FilePlanComponent recordFolder = createCategoryFolderInFilePlan();
|
FilePlanComponent recordFolder = createCategoryFolderInFilePlan();
|
||||||
@@ -127,7 +130,7 @@ public class ElectronicRecordTests extends BaseRMRestTest
|
|||||||
// close the folder
|
// close the folder
|
||||||
closeFolder(recordFolder.getId());
|
closeFolder(recordFolder.getId());
|
||||||
|
|
||||||
// try to create it, this should fail
|
// try to create it, this should throw IllegalArgumentException
|
||||||
getRestAPIFactory().getFilePlanComponentsAPI().createElectronicRecord(createElectronicRecordModel(), IMAGE_FILE, recordFolder.getId());
|
getRestAPIFactory().getFilePlanComponentsAPI().createElectronicRecord(createElectronicRecordModel(), IMAGE_FILE, recordFolder.getId());
|
||||||
|
|
||||||
// verify the status code
|
// verify the status code
|
||||||
|
@@ -47,7 +47,6 @@ import org.alfresco.test.AlfrescoTest;
|
|||||||
import org.alfresco.utility.constants.UserRole;
|
import org.alfresco.utility.constants.UserRole;
|
||||||
import org.alfresco.utility.model.SiteModel;
|
import org.alfresco.utility.model.SiteModel;
|
||||||
import org.alfresco.utility.model.UserModel;
|
import org.alfresco.utility.model.UserModel;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -60,9 +59,6 @@ import org.testng.annotations.Test;
|
|||||||
*/
|
*/
|
||||||
public class UpdateRecordsTests extends BaseRMRestTest
|
public class UpdateRecordsTests extends BaseRMRestTest
|
||||||
{
|
{
|
||||||
@Autowired
|
|
||||||
private RMUserAPI rmUserAPI;
|
|
||||||
|
|
||||||
/* to be used to append to modifications */
|
/* to be used to append to modifications */
|
||||||
private final String MODIFIED_PREFIX = "modified_";
|
private final String MODIFIED_PREFIX = "modified_";
|
||||||
|
|
||||||
@@ -132,6 +128,7 @@ public class UpdateRecordsTests extends BaseRMRestTest
|
|||||||
@AlfrescoTest(jira="RM-4362")
|
@AlfrescoTest(jira="RM-4362")
|
||||||
public void userWithEditMetadataCapsCanUpdateMetadata() throws Exception
|
public void userWithEditMetadataCapsCanUpdateMetadata() throws Exception
|
||||||
{
|
{
|
||||||
|
RMUserAPI rmUserAPI = getRestAPIFactory().getRMUserAPI();
|
||||||
// create test user and add it with collab. privileges
|
// create test user and add it with collab. privileges
|
||||||
UserModel updateUser = getDataUser().createRandomTestUser("updateuser");
|
UserModel updateUser = getDataUser().createRandomTestUser("updateuser");
|
||||||
updateUser.setUserRole(UserRole.SiteCollaborator);
|
updateUser.setUserRole(UserRole.SiteCollaborator);
|
||||||
@@ -139,7 +136,7 @@ public class UpdateRecordsTests extends BaseRMRestTest
|
|||||||
|
|
||||||
// RM Security Officer is the lowest role with Edit Record Metadata capabilities
|
// RM Security Officer is the lowest role with Edit Record Metadata capabilities
|
||||||
rmUserAPI.assignRoleToUser(updateUser.getUsername(), UserRoles.ROLE_RM_SECURITY_OFFICER);
|
rmUserAPI.assignRoleToUser(updateUser.getUsername(), UserRoles.ROLE_RM_SECURITY_OFFICER);
|
||||||
rmUserAPI.usingRestWrapper().assertStatusCodeIs(OK);
|
assertStatusCode(OK);
|
||||||
|
|
||||||
// create random folder
|
// create random folder
|
||||||
FilePlanComponent randomFolder = createCategoryFolderInFilePlan();
|
FilePlanComponent randomFolder = createCategoryFolderInFilePlan();
|
||||||
@@ -150,7 +147,7 @@ public class UpdateRecordsTests extends BaseRMRestTest
|
|||||||
FilePlanComponentAPI filePlanComponentsAPIAsAdmin = getRestAPIFactory().getFilePlanComponentsAPI();
|
FilePlanComponentAPI filePlanComponentsAPIAsAdmin = getRestAPIFactory().getFilePlanComponentsAPI();
|
||||||
rmUserAPI.addUserPermission(filePlanComponentsAPIAsAdmin.getFilePlanComponent(randomFolder.getParentId()),
|
rmUserAPI.addUserPermission(filePlanComponentsAPIAsAdmin.getFilePlanComponent(randomFolder.getParentId()),
|
||||||
updateUser, UserPermissions.PERMISSION_FILING);
|
updateUser, UserPermissions.PERMISSION_FILING);
|
||||||
rmUserAPI.usingRestWrapper().assertStatusCodeIs(OK);
|
assertStatusCode(OK);
|
||||||
|
|
||||||
// create electronic and non-electronic records in a folder
|
// create electronic and non-electronic records in a folder
|
||||||
FilePlanComponentAPI filePlanComponentsAPI = getRestAPIFactory().getFilePlanComponentsAPI();
|
FilePlanComponentAPI filePlanComponentsAPI = getRestAPIFactory().getFilePlanComponentsAPI();
|
||||||
|
@@ -49,13 +49,12 @@ import static org.testng.Assert.assertEquals;
|
|||||||
import static org.testng.Assert.assertNotNull;
|
import static org.testng.Assert.assertNotNull;
|
||||||
|
|
||||||
import org.alfresco.rest.rm.community.base.BaseRMRestTest;
|
import org.alfresco.rest.rm.community.base.BaseRMRestTest;
|
||||||
|
import org.alfresco.rest.rm.community.base.TestData;
|
||||||
import org.alfresco.rest.rm.community.model.site.RMSite;
|
import org.alfresco.rest.rm.community.model.site.RMSite;
|
||||||
import org.alfresco.rest.rm.community.requests.igCoreAPI.RMSiteAPI;
|
import org.alfresco.rest.rm.community.requests.igCoreAPI.RMSiteAPI;
|
||||||
import org.alfresco.rest.rm.community.requests.igCoreAPI.RMUserAPI;
|
|
||||||
import org.alfresco.utility.data.RandomData;
|
import org.alfresco.utility.data.RandomData;
|
||||||
import org.alfresco.utility.model.UserModel;
|
import org.alfresco.utility.model.UserModel;
|
||||||
import org.alfresco.utility.report.Bug;
|
import org.alfresco.utility.report.Bug;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,9 +66,6 @@ import org.testng.annotations.Test;
|
|||||||
*/
|
*/
|
||||||
public class RMSiteTests extends BaseRMRestTest
|
public class RMSiteTests extends BaseRMRestTest
|
||||||
{
|
{
|
||||||
@Autowired
|
|
||||||
private RMUserAPI rmUserAPI;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given that RM module is installed
|
* Given that RM module is installed
|
||||||
* When I want to create the RM site with specific title, description and compliance
|
* When I want to create the RM site with specific title, description and compliance
|
||||||
@@ -208,7 +204,7 @@ public class RMSiteTests extends BaseRMRestTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create user
|
// Create user
|
||||||
rmUserAPI.createUser(ANOTHER_ADMIN);
|
getRestAPIFactory().getRMUserAPI().createUser(ANOTHER_ADMIN, TestData.DEFAULT_PASSWORD, TestData.DEFAULT_EMAIL);
|
||||||
|
|
||||||
// Create the RM site
|
// Create the RM site
|
||||||
RMSite rmSiteModel = getRestAPIFactory().getRMSiteAPI(new UserModel(ANOTHER_ADMIN, DEFAULT_PASSWORD)).createRMSite(createDOD5015RMSiteModel());
|
RMSite rmSiteModel = getRestAPIFactory().getRMSiteAPI(new UserModel(ANOTHER_ADMIN, DEFAULT_PASSWORD)).createRMSite(createDOD5015RMSiteModel());
|
||||||
|
Reference in New Issue
Block a user