mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-4542: parameters handling for file upload
This commit is contained in:
@@ -26,6 +26,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.rest.rm.community.requests;
|
package org.alfresco.rest.rm.community.requests;
|
||||||
|
|
||||||
|
import static com.jayway.restassured.RestAssured.basic;
|
||||||
import static com.jayway.restassured.RestAssured.given;
|
import static com.jayway.restassured.RestAssured.given;
|
||||||
|
|
||||||
import static org.alfresco.rest.core.RestRequest.requestWithBody;
|
import static org.alfresco.rest.core.RestRequest.requestWithBody;
|
||||||
@@ -41,7 +42,11 @@ import static org.testng.Assert.fail;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
||||||
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
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.http.ContentType;
|
import com.jayway.restassured.http.ContentType;
|
||||||
import com.jayway.restassured.response.Response;
|
import com.jayway.restassured.response.Response;
|
||||||
|
|
||||||
@@ -168,17 +173,40 @@ public class FilePlanComponentAPI extends RestAPI<FilePlanComponentAPI>
|
|||||||
{
|
{
|
||||||
fail("Only electronic records are supported");
|
fail("Only electronic records are supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UserModel currentUser = usingRestWrapper().getTestUser();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For file uploads nodeBodyCreate is ignored hence can't be used. Append all FilePlanComponent fields
|
||||||
|
* to the request.
|
||||||
|
*/
|
||||||
|
RequestSpecBuilder builder = new RequestSpecBuilder();
|
||||||
|
builder.setAuth(basic(currentUser.getUsername(), currentUser.getPassword()));
|
||||||
|
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
mapper.setSerializationInclusion(Include.NON_DEFAULT);
|
||||||
|
JsonNode root = mapper.readTree(toJson(electronicRecordModel));
|
||||||
|
|
||||||
|
root.fieldNames().forEachRemaining(f -> {
|
||||||
|
try
|
||||||
|
{
|
||||||
|
builder.addMultiPart(f, root.get(f).asText(), ContentType.JSON.name());
|
||||||
|
}
|
||||||
|
catch (Exception error)
|
||||||
|
{
|
||||||
|
LOG.error("Failed to set " + f + " error: " + error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
builder.addMultiPart("filedata", recordContent, ContentType.BINARY.name());
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* RestWrapper adds some headers which break multipart/form-data uploads and also assumes json POST requests.
|
* RestWrapper adds some headers which break multipart/form-data uploads and also assumes json POST requests.
|
||||||
* Upload the file using RestAssured library.
|
* Upload the file using RestAssured library.
|
||||||
*/
|
*/
|
||||||
UserModel currentUser = usingRestWrapper().getTestUser();
|
|
||||||
Response response = given()
|
Response response = given()
|
||||||
.auth().basic(currentUser.getUsername(), currentUser.getPassword())
|
.spec(builder.build())
|
||||||
.multiPart("nodeBodyCreate", toJson(electronicRecordModel), ContentType.JSON.name())
|
.log().everything()
|
||||||
.multiPart("filedata", recordContent, ContentType.BINARY.name())
|
|
||||||
.multiPart("name", electronicRecordModel.getName() != null ? electronicRecordModel.getName() : recordContent.getName())
|
|
||||||
.when()
|
.when()
|
||||||
.post("fileplan-components/{fileplanComponentId}/children?{parameters}", parentId, getParameters())
|
.post("fileplan-components/{fileplanComponentId}/children?{parameters}", parentId, getParameters())
|
||||||
.andReturn();
|
.andReturn();
|
||||||
|
@@ -216,8 +216,10 @@ public class ElectronicRecordTests extends BaseRestTest
|
|||||||
{
|
{
|
||||||
filePlanComponentAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser());
|
filePlanComponentAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser());
|
||||||
|
|
||||||
FilePlanComponent record = new FilePlanComponent("Record " + getRandomAlphanumeric(), CONTENT_TYPE.toString(),
|
FilePlanComponent record = new FilePlanComponent();
|
||||||
new FilePlanComponentProperties());
|
record.setName("Record " + getRandomAlphanumeric());
|
||||||
|
record.setNodeType(CONTENT_TYPE.toString());
|
||||||
|
|
||||||
String newRecordId = filePlanComponentAPI.createElectronicRecord(record, IMAGE_FILE, container.getId()).getId();
|
String newRecordId = filePlanComponentAPI.createElectronicRecord(record, IMAGE_FILE, container.getId()).getId();
|
||||||
|
|
||||||
// verify the create request status code
|
// verify the create request status code
|
||||||
@@ -248,7 +250,7 @@ public class ElectronicRecordTests extends BaseRestTest
|
|||||||
// record object without name set
|
// record object without name set
|
||||||
FilePlanComponent record = new FilePlanComponent();
|
FilePlanComponent record = new FilePlanComponent();
|
||||||
record.setNodeType(CONTENT_TYPE.toString());
|
record.setNodeType(CONTENT_TYPE.toString());
|
||||||
record.setProperties(new FilePlanComponentProperties());
|
|
||||||
String newRecordId = filePlanComponentAPI.createElectronicRecord(record, IMAGE_FILE, container.getId()).getId();
|
String newRecordId = filePlanComponentAPI.createElectronicRecord(record, IMAGE_FILE, container.getId()).getId();
|
||||||
|
|
||||||
// verify the create request status code
|
// verify the create request status code
|
||||||
|
Reference in New Issue
Block a user