From 8d96550de3efc00c5b7a48cdb726bc93a59bd88a Mon Sep 17 00:00:00 2001 From: Kristijan Conkas Date: Tue, 24 Jan 2017 18:15:41 +0000 Subject: [PATCH 1/8] RM-4615: TAS bump-up + corresponding api wrapper changes --- .../rm-automation-community-rest-api/pom.xml | 2 +- .../org/alfresco/rest/core/RMRestWrapper.java | 8 ++ .../alfresco/rest/core/RestAPIFactory.java | 11 ++ .../rm/community/requests/RMModelRequest.java | 2 +- .../requests/igCoreAPI/RMUserAPI.java | 102 +++++++++++++----- .../requests/igCoreAPI/RestIGCoreAPI.java | 11 ++ .../fileplancomponents/DeleteRecordTests.java | 17 ++- .../UpdateRecordsTests.java | 12 +-- .../rest/rm/community/site/RMSiteTests.java | 7 +- 9 files changed, 118 insertions(+), 54 deletions(-) diff --git a/rm-automation/rm-automation-community-rest-api/pom.xml b/rm-automation/rm-automation-community-rest-api/pom.xml index 3a53363b14..c45b682805 100644 --- a/rm-automation/rm-automation-community-rest-api/pom.xml +++ b/rm-automation/rm-automation-community-rest-api/pom.xml @@ -15,7 +15,7 @@ 1.8 alfresco-rm-community-share alfresco-rm-community-repo - 5.2.0-0 + 5.2.0-2-SNAPSHOT 2.0.0 diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/RMRestWrapper.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/RMRestWrapper.java index 706efef8d7..c59bc2defe 100644 --- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/RMRestWrapper.java +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/RMRestWrapper.java @@ -50,4 +50,12 @@ public class RMRestWrapper extends RestWrapper { return new RestIGCoreAPI(this, rmRestProperties); } + + /** + * @return the rmRestProperties + */ + public RMRestProperties getRmRestProperties() + { + return this.rmRestProperties; + } } diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/RestAPIFactory.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/RestAPIFactory.java index d2edca7279..907bbe53ab 100644 --- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/RestAPIFactory.java +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/RestAPIFactory.java @@ -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.FilesAPI; 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.RestIGCoreAPI; import org.alfresco.utility.data.DataUser; @@ -106,4 +107,14 @@ public class RestAPIFactory { return getRestIGCoreAPI(userModel).usingFiles(); } + + public RMUserAPI getRMUserAPI() + { + return getRestIGCoreAPI(null).usingRMUser(); + } + + public RMUserAPI getRMUserAPI(UserModel userModel) + { + return getRestIGCoreAPI(userModel).usingRMUser(); + } } diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/RMModelRequest.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/RMModelRequest.java index 5f05822e3e..b56bcad897 100644 --- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/RMModelRequest.java +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/RMModelRequest.java @@ -35,7 +35,7 @@ import org.alfresco.rest.requests.ModelRequest; * @author Tuna Aksoy * @since 2.6 */ -public abstract class RMModelRequest extends ModelRequest +public abstract class RMModelRequest extends ModelRequest { private RMRestWrapper rmRestWrapper; diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java index c03639c4ef..5eb0a648bd 100644 --- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java @@ -26,9 +26,11 @@ */ 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.jglue.fluentjson.JsonBuilderFactory.buildObject; +import static org.springframework.http.HttpStatus.OK; import com.google.gson.JsonObject; 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.AlfrescoHttpClientFactory; -import org.alfresco.dataprep.UserService; -import org.alfresco.rest.core.RestAPI; +import org.alfresco.rest.core.RMRestProperties; +import org.alfresco.rest.core.RMRestWrapper; +import org.alfresco.rest.rm.community.base.TestData; 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.requests.RMModelRequest; import org.alfresco.utility.model.UserModel; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -58,21 +61,36 @@ import org.springframework.stereotype.Component; // "old-style" API calls. @Component @Scope (value = "prototype") -public class RMUserAPI extends RestAPI +public class RMUserAPI extends RMModelRequest { - @Autowired - private UserService userService; - - @Autowired - private DataUser dataUser; - - @Autowired - private AlfrescoHttpClientFactory alfrescoHttpClientFactory; +// @Autowired +// private UserService userService; + + private UserModel dataUser = new UserModel("admin", "admin"); + + /** + * @param rmRestWrapper + */ + public RMUserAPI(RMRestWrapper rmRestWrapper) + { + super(rmRestWrapper); + } + private AlfrescoHttpClient getAlfrescoHttpClient() + { + RMRestProperties properties = getRMRestWrapper().getRmRestProperties(); + AlfrescoHttpClientFactory factory = new AlfrescoHttpClientFactory(); + factory.setHost(properties.getServer()); + factory.setPort(Integer.parseInt(properties.getPort())); + factory.setScheme(properties.getScheme()); + + return factory.getObject(); + } + public void assignRoleToUser(String userName, String userRole) throws Exception { // get an "old-style" REST API client - AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); + AlfrescoHttpClient client = getAlfrescoHttpClient(); // override v1 baseURI and basePath RequestSpecification spec = new RequestSpecBuilder() @@ -85,13 +103,13 @@ public class RMUserAPI extends RestAPI .log().all() .pathParam("role", userRole) .pathParam("authority", userName) - .param("alf_ticket", client.getAlfTicket( - dataUser.getAdminUser().getUsername(), dataUser.getAdminUser().getPassword())) + .param("alf_ticket", client.getAlfTicket(dataUser.getUsername(), + dataUser.getPassword())) .when() .post("/rm/roles/{role}/authorities/{authority}") .prettyPeek() .andReturn(); - usingRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); + getRMRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); } /** @@ -103,7 +121,7 @@ public class RMUserAPI extends RestAPI public void addUserPermission(FilePlanComponent component, UserModel user, String permission) { // get an "old-style" REST API client - AlfrescoHttpClient client = alfrescoHttpClientFactory.getObject(); + AlfrescoHttpClient client = getAlfrescoHttpClient(); JsonObject bodyJson = buildObject() .addArray("permissions") @@ -118,11 +136,11 @@ public class RMUserAPI extends RestAPI .setBaseUri(client.getApiUrl()) .setBasePath("/") .build(); - + // execute an "old-style" API call Response response = given() .spec(spec) - .auth().basic(dataUser.getAdminUser().getUsername(), dataUser.getAdminUser().getPassword()) + .auth().basic(dataUser.getUsername(), dataUser.getPassword()) .contentType(ContentType.JSON) .body(bodyJson.toString()) .pathParam("nodeId", component.getId()) @@ -131,7 +149,7 @@ public class RMUserAPI extends RestAPI .post("/node/workspace/SpacesStore/{nodeId}/rmpermissions") .prettyPeek() .andReturn(); - usingRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); + getRMRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); } /** @@ -142,12 +160,40 @@ public class RMUserAPI extends RestAPI */ public boolean createUser(String userName) { - return userService.create(dataUser.getAdminUser().getUsername(), - dataUser.getAdminUser().getPassword(), - userName, - "password", - "default@alfresco.com", - userName, - userName); + AlfrescoHttpClient client = getAlfrescoHttpClient(); + + JsonObject body = buildObject() + .add("userName", userName) + .add("firstName", userName) + .add("lastName", userName) + .add("password", TestData.DEFAULT_PASSWORD) + .add("email", TestData.DEFAULT_EMAIL) + .getJson(); + + RequestSpecification spec = new RequestSpecBuilder() + .setBaseUri(client.getApiUrl()) + .setBasePath("/") + .setAuth(basic(dataUser.getUsername(), dataUser.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(); + + if (response.getStatusCode() == OK.value()) + { + return true; + } + else + { + return false; + } } } diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RestIGCoreAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RestIGCoreAPI.java index 85eb904a4e..cdc8910fea 100644 --- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RestIGCoreAPI.java +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RestIGCoreAPI.java @@ -56,6 +56,7 @@ public class RestIGCoreAPI extends RMModelRequest RestAssured.baseURI = format("%s://%s", rmRestProperties.getScheme(), rmRestProperties.getServer()); RestAssured.port = parseInt(rmRestProperties.getPort()); RestAssured.basePath = rmRestProperties.getRestRmPath(); + restWrapper.configureRequestSpec().setBasePath(RestAssured.basePath); } /** @@ -97,4 +98,14 @@ public class RestIGCoreAPI extends RMModelRequest { return new FilesAPI(getRMRestWrapper()); } + + /** + * Provides DSL for RM user management API + * + * @return {@link RMUserAPI} + */ + public RMUserAPI usingRMUser() + { + return new RMUserAPI(getRMRestWrapper()); + } } diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/DeleteRecordTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/DeleteRecordTests.java index f26a601606..50811acfdd 100644 --- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/DeleteRecordTests.java +++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/DeleteRecordTests.java @@ -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.UserRoles; 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.utility.constants.UserRole; import org.alfresco.utility.model.SiteModel; import org.alfresco.utility.model.UserModel; -import org.springframework.beans.factory.annotation.Autowired; import org.testng.annotations.Test; /** @@ -60,9 +58,6 @@ import org.testng.annotations.Test; */ public class DeleteRecordTests extends BaseRMRestTest { - @Autowired - private RMUserAPI rmUserAPI; - /** *
      * Given a record
@@ -149,8 +144,8 @@ public class DeleteRecordTests extends BaseRMRestTest
         getDataUser().addUserToSite(deleteUser, new SiteModel(getRestAPIFactory().getRMSiteAPI().getSite().getId()), UserRole.SiteCollaborator);
 
         // add RM role to user
-        rmUserAPI.assignRoleToUser(deleteUser.getUsername(), UserRoles.ROLE_RM_POWER_USER);
-        rmUserAPI.usingRestWrapper().assertStatusCodeIs(OK);
+        getRestAPIFactory().getRMUserAPI().assignRoleToUser(deleteUser.getUsername(), UserRoles.ROLE_RM_POWER_USER);
+        assertStatusCode(OK);
 
         // try to delete newRecord
         getRestAPIFactory().getFilePlanComponentsAPI(deleteUser).deleteFilePlanComponent(newRecord.getId());
@@ -183,8 +178,8 @@ public class DeleteRecordTests extends BaseRMRestTest
         logger.info("test user: " + deleteUser.getUsername());
 
         // add RM role to user, RM Power User doesn't have the Delete Record capabilities
-        rmUserAPI.assignRoleToUser(deleteUser.getUsername(), UserRoles.ROLE_RM_POWER_USER);
-        rmUserAPI.usingRestWrapper().assertStatusCodeIs(OK);
+        getRestAPIFactory().getRMUserAPI().assignRoleToUser(deleteUser.getUsername(), UserRoles.ROLE_RM_POWER_USER);
+        assertStatusCode(OK);
 
         // create random folder
         FilePlanComponent randomFolder = createCategoryFolderInFilePlan();
@@ -193,9 +188,9 @@ public class DeleteRecordTests extends BaseRMRestTest
         // grant deleteUser Filing privileges on randomFolder category, this will be
         // inherited to randomFolder
         FilePlanComponentAPI filePlanComponentsAPIAsAdmin = getRestAPIFactory().getFilePlanComponentsAPI();
-        rmUserAPI.addUserPermission(filePlanComponentsAPIAsAdmin.getFilePlanComponent(randomFolder.getParentId()),
+        getRestAPIFactory().getRMUserAPI().addUserPermission(filePlanComponentsAPIAsAdmin.getFilePlanComponent(randomFolder.getParentId()),
             deleteUser, UserPermissions.PERMISSION_FILING);
-        rmUserAPI.usingRestWrapper().assertStatusCodeIs(OK);
+        assertStatusCode(OK);
 
         // create a non-electronic record in randomFolder
         FilePlanComponent newRecord = filePlanComponentsAPIAsAdmin.createFilePlanComponent(createNonElectronicRecordModel(), randomFolder.getId());
diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/UpdateRecordsTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/UpdateRecordsTests.java
index e2738c2fca..b74c5075ee 100644
--- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/UpdateRecordsTests.java
+++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/UpdateRecordsTests.java
@@ -47,7 +47,6 @@ import org.alfresco.test.AlfrescoTest;
 import org.alfresco.utility.constants.UserRole;
 import org.alfresco.utility.model.SiteModel;
 import org.alfresco.utility.model.UserModel;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.testng.annotations.Test;
 
 /**
@@ -59,10 +58,7 @@ import org.testng.annotations.Test;
  * @since 2.6
  */
 public class UpdateRecordsTests extends BaseRMRestTest
-{
-    @Autowired
-    private RMUserAPI rmUserAPI;
-    
+{    
     /* to be used to append to modifications */
     private final String MODIFIED_PREFIX = "modified_";
     
@@ -132,6 +128,8 @@ public class UpdateRecordsTests extends BaseRMRestTest
     @AlfrescoTest(jira="RM-4362")
     public void userWithEditMetadataCapsCanUpdateMetadata() throws Exception
     {   
+        RMUserAPI rmUserAPI = getRestAPIFactory().getRMUserAPI();
+        
         // create test user and add it with collab. privileges
         UserModel updateUser = getDataUser().createRandomTestUser("updateuser");
         updateUser.setUserRole(UserRole.SiteCollaborator);
@@ -139,7 +137,7 @@ public class UpdateRecordsTests extends BaseRMRestTest
 
         // RM Security Officer is the lowest role with Edit Record Metadata capabilities
         rmUserAPI.assignRoleToUser(updateUser.getUsername(), UserRoles.ROLE_RM_SECURITY_OFFICER);
-        rmUserAPI.usingRestWrapper().assertStatusCodeIs(OK);
+        assertStatusCode(OK);
 
         // create random folder
         FilePlanComponent randomFolder = createCategoryFolderInFilePlan();
@@ -150,7 +148,7 @@ public class UpdateRecordsTests extends BaseRMRestTest
         FilePlanComponentAPI filePlanComponentsAPIAsAdmin = getRestAPIFactory().getFilePlanComponentsAPI();
         rmUserAPI.addUserPermission(filePlanComponentsAPIAsAdmin.getFilePlanComponent(randomFolder.getParentId()),
             updateUser, UserPermissions.PERMISSION_FILING);
-        rmUserAPI.usingRestWrapper().assertStatusCodeIs(OK);
+        assertStatusCode(OK);
         
         // create electronic and non-electronic records in a folder
         FilePlanComponentAPI filePlanComponentsAPI = getRestAPIFactory().getFilePlanComponentsAPI();
diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/site/RMSiteTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/site/RMSiteTests.java
index d7cf4b9435..b1c4179577 100644
--- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/site/RMSiteTests.java
+++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/site/RMSiteTests.java
@@ -51,11 +51,9 @@ import static org.testng.Assert.assertNotNull;
 import org.alfresco.rest.rm.community.base.BaseRMRestTest;
 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.RMUserAPI;
 import org.alfresco.utility.data.RandomData;
 import org.alfresco.utility.model.UserModel;
 import org.alfresco.utility.report.Bug;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.testng.annotations.Test;
 
 /**
@@ -67,9 +65,6 @@ import org.testng.annotations.Test;
  */
 public class RMSiteTests extends BaseRMRestTest
 {
-    @Autowired
-    private RMUserAPI rmUserAPI;
-
     /**
      * Given that RM module is installed
      * When I want to create the RM site with specific title, description and compliance
@@ -208,7 +203,7 @@ public class RMSiteTests extends BaseRMRestTest
         }
 
         // Create user
-        rmUserAPI.createUser(ANOTHER_ADMIN);
+        getRestAPIFactory().getRMUserAPI().createUser(ANOTHER_ADMIN);
 
         // Create the RM site
         RMSite rmSiteModel = getRestAPIFactory().getRMSiteAPI(new UserModel(ANOTHER_ADMIN, DEFAULT_PASSWORD)).createRMSite(createDOD5015RMSiteModel());

From b37a34c4a9a02e5df93cd88d6d2a9385fcad39b6 Mon Sep 17 00:00:00 2001
From: Kristijan Conkas 
Date: Wed, 25 Jan 2017 10:26:53 +0000
Subject: [PATCH 2/8] RM-4615: taking TestData out of API wrapper to avoid
 compile-time problems.

---
 .../rest/rm/community/requests/igCoreAPI/RMUserAPI.java  | 9 +++++----
 .../org/alfresco/rest/rm/community/site/RMSiteTests.java | 3 ++-
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java
index 5eb0a648bd..50c114fb81 100644
--- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java
+++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java
@@ -42,7 +42,6 @@ import org.alfresco.dataprep.AlfrescoHttpClient;
 import org.alfresco.dataprep.AlfrescoHttpClientFactory;
 import org.alfresco.rest.core.RMRestProperties;
 import org.alfresco.rest.core.RMRestWrapper;
-import org.alfresco.rest.rm.community.base.TestData;
 import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponent;
 import org.alfresco.rest.rm.community.model.user.UserPermissions;
 import org.alfresco.rest.rm.community.requests.RMModelRequest;
@@ -156,9 +155,11 @@ public class RMUserAPI extends RMModelRequest
      * Creates a user with the given name using the old APIs
      *
      * @param userName The user name
+     * @param userPassword The user's password
+     * @param userEmail The user's e-mail address
      * @return true if the user was created successfully, false otherwise.
      */
-    public boolean createUser(String userName)
+    public boolean createUser(String userName, String userPassword, String userEmail)
     {
         AlfrescoHttpClient client = getAlfrescoHttpClient();
         
@@ -166,8 +167,8 @@ public class RMUserAPI extends RMModelRequest
             .add("userName", userName)
             .add("firstName", userName)
             .add("lastName", userName)
-            .add("password", TestData.DEFAULT_PASSWORD)
-            .add("email", TestData.DEFAULT_EMAIL)
+            .add("password", userPassword)
+            .add("email", userEmail)
             .getJson();
         
         RequestSpecification spec = new RequestSpecBuilder()
diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/site/RMSiteTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/site/RMSiteTests.java
index b1c4179577..5cc5dffb32 100644
--- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/site/RMSiteTests.java
+++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/site/RMSiteTests.java
@@ -49,6 +49,7 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 
 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.requests.igCoreAPI.RMSiteAPI;
 import org.alfresco.utility.data.RandomData;
@@ -203,7 +204,7 @@ public class RMSiteTests extends BaseRMRestTest
         }
 
         // Create user
-        getRestAPIFactory().getRMUserAPI().createUser(ANOTHER_ADMIN);
+        getRestAPIFactory().getRMUserAPI().createUser(ANOTHER_ADMIN, TestData.DEFAULT_PASSWORD, TestData.DEFAULT_EMAIL);
 
         // Create the RM site
         RMSite rmSiteModel = getRestAPIFactory().getRMSiteAPI(new UserModel(ANOTHER_ADMIN, DEFAULT_PASSWORD)).createRMSite(createDOD5015RMSiteModel());

From 10105b4c214e219b7e75601178f62234b2a3ba46 Mon Sep 17 00:00:00 2001
From: Kristijan Conkas 
Date: Wed, 25 Jan 2017 11:32:12 +0000
Subject: [PATCH 3/8] RM-4615: removed hardcoding

---
 .../requests/igCoreAPI/RMUserAPI.java         | 31 +++++++++++--------
 1 file changed, 18 insertions(+), 13 deletions(-)

diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java
index 50c114fb81..4462d2a14c 100644
--- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java
+++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java
@@ -44,6 +44,7 @@ import org.alfresco.rest.core.RMRestProperties;
 import org.alfresco.rest.core.RMRestWrapper;
 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.UserRoles;
 import org.alfresco.rest.rm.community.requests.RMModelRequest;
 import org.alfresco.utility.model.UserModel;
 import org.springframework.context.annotation.Scope;
@@ -62,11 +63,6 @@ import org.springframework.stereotype.Component;
 @Scope (value = "prototype")
 public class RMUserAPI extends RMModelRequest
 {
-//    @Autowired
-//    private UserService userService;
-    
-    private UserModel dataUser = new UserModel("admin", "admin");
-    
     /**
      * @param rmRestWrapper
      */
@@ -75,9 +71,14 @@ public class RMUserAPI extends RMModelRequest
         super(rmRestWrapper);
     }
 
+    /**
+     * Helper method to obtain {@link AlfrescoHttpClient}
+     * @return Initialized {@link AlfrescoHttpClient} instance
+     */
     private AlfrescoHttpClient getAlfrescoHttpClient()
     {
         RMRestProperties properties = getRMRestWrapper().getRmRestProperties();
+        
         AlfrescoHttpClientFactory factory = new AlfrescoHttpClientFactory();
         factory.setHost(properties.getServer());
         factory.setPort(Integer.parseInt(properties.getPort()));
@@ -86,8 +87,16 @@ public class RMUserAPI extends RMModelRequest
         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
     {
+        UserModel dataUser = getRMRestWrapper().getTestUser();
+            
         // get an "old-style" REST API client
         AlfrescoHttpClient client = getAlfrescoHttpClient();
 
@@ -119,6 +128,8 @@ public class RMUserAPI extends RMModelRequest
      */
     public void addUserPermission(FilePlanComponent component, UserModel user, String permission)
     {
+        UserModel dataUser = getRMRestWrapper().getTestUser();
+        
         // get an "old-style" REST API client
         AlfrescoHttpClient client = getAlfrescoHttpClient();
 
@@ -161,6 +172,7 @@ public class RMUserAPI extends RMModelRequest
      */
     public boolean createUser(String userName, String userPassword, String userEmail)
     {
+        UserModel dataUser = getRMRestWrapper().getTestUser();
         AlfrescoHttpClient client = getAlfrescoHttpClient();
         
         JsonObject body = buildObject()
@@ -188,13 +200,6 @@ public class RMUserAPI extends RMModelRequest
             .prettyPeek()
             .andReturn();
         
-        if (response.getStatusCode() == OK.value())
-        {
-            return true;
-        }
-        else
-        {
-            return false;
-        }
+        return (response.getStatusCode() == OK.value());
     }
 }

From 45fb371de709501281f52375a305034456613364 Mon Sep 17 00:00:00 2001
From: Kristijan Conkas 
Date: Wed, 25 Jan 2017 13:30:29 +0000
Subject: [PATCH 4/8] RM-4615: TAS implementation of
 FilePlanComponentAPI.createElectronicRecord()

---
 .../igCoreAPI/FilePlanComponentAPI.java       | 49 +++++++++----------
 .../requests/igCoreAPI/RMUserAPI.java         | 14 +++---
 .../requests/igCoreAPI/RecordsAPI.java        |  1 -
 .../ElectronicRecordTests.java                | 13 +++--
 4 files changed, 39 insertions(+), 38 deletions(-)

diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java
index cdd8530dc1..378615d402 100644
--- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java
+++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java
@@ -26,9 +26,6 @@
  */
 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.simpleRequest;
 import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentType.CONTENT_TYPE;
@@ -50,13 +47,13 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.io.Resources;
 import com.jayway.restassured.builder.RequestSpecBuilder;
 import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.response.Response;
 
 import org.alfresco.rest.core.RMRestWrapper;
 import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponent;
 import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentsCollection;
 import org.alfresco.rest.rm.community.requests.RMModelRequest;
-import org.alfresco.utility.model.UserModel;
+import org.alfresco.utility.model.ContentModel;
+import org.alfresco.utility.model.RepoTestModel;
 
 /**
  * File plan component REST API Wrapper
@@ -250,41 +247,41 @@ public class FilePlanComponentAPI extends RMModelRequest
         {
             fail("Only electronic records are supported");
         }
-
-        UserModel currentUser = getRMRestWrapper().getTestUser();
-
+        
+        RepoTestModel parentNode = new ContentModel();
+        // using getFilePlanComponent to work around RM special containers, unsupported in Core API usingNode()
+        parentNode.setNodeRef(getFilePlanComponent(parentId).getId());
+        
         /*
          * 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()));
-
+        RequestSpecBuilder builder = restWrapper.configureRequestSpec();
         ObjectMapper mapper = new ObjectMapper();
         JsonNode root = mapper.readTree(toJson(electronicRecordModel));
 
+        // add request fields
         Iterator fieldNames = root.fieldNames();
         while (fieldNames.hasNext())
         {
             String fieldName = fieldNames.next();
             builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name());
         }
-
+        
         builder.addMultiPart("filedata", recordContent, ContentType.BINARY.name());
-
-        /*
-         * RestWrapper adds some headers which break multipart/form-data uploads and also assumes json POST requests.
-         * 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);
+        String nodeId = getRMRestWrapper().withCoreAPI().usingNode(parentNode).createNode().getId();
+        String createStatusCode = getRMRestWrapper().getStatusCode();
+        
+        // return FilePlanComponent for created node
+        FilePlanComponent createdComponent = getRMRestWrapper()
+            .withIGCoreAPI()
+            .usingFilePlanComponents()
+            .getFilePlanComponent(nodeId);
+        
+        // avoid getFilePlanComponent() overriding the createNode status code
+        getRMRestWrapper().setStatusCode(createStatusCode);
+        
+        return createdComponent;
     }
 
     /**
diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java
index 4462d2a14c..d1c4ff0535 100644
--- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java
+++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RMUserAPI.java
@@ -95,7 +95,7 @@ public class RMUserAPI extends RMModelRequest
      */
     public void assignRoleToUser(String userName, String userRole) throws Exception
     {
-        UserModel dataUser = getRMRestWrapper().getTestUser();
+        UserModel adminUser = getRMRestWrapper().getTestUser();
             
         // get an "old-style" REST API client
         AlfrescoHttpClient client = getAlfrescoHttpClient();
@@ -111,8 +111,8 @@ public class RMUserAPI extends RMModelRequest
             .log().all()
             .pathParam("role", userRole)
             .pathParam("authority", userName)
-            .param("alf_ticket", client.getAlfTicket(dataUser.getUsername(), 
-                dataUser.getPassword()))
+            .param("alf_ticket", client.getAlfTicket(adminUser.getUsername(), 
+                adminUser.getPassword()))
         .when()
             .post("/rm/roles/{role}/authorities/{authority}")
             .prettyPeek()
@@ -128,7 +128,7 @@ public class RMUserAPI extends RMModelRequest
      */
     public void addUserPermission(FilePlanComponent component, UserModel user, String permission)
     {
-        UserModel dataUser = getRMRestWrapper().getTestUser();
+        UserModel adminUser = getRMRestWrapper().getTestUser();
         
         // get an "old-style" REST API client
         AlfrescoHttpClient client = getAlfrescoHttpClient();
@@ -150,7 +150,7 @@ public class RMUserAPI extends RMModelRequest
         // execute an "old-style" API call
         Response response = given()
             .spec(spec)
-            .auth().basic(dataUser.getUsername(), dataUser.getPassword())
+            .auth().basic(adminUser.getUsername(), adminUser.getPassword())
             .contentType(ContentType.JSON)
             .body(bodyJson.toString())
             .pathParam("nodeId", component.getId())
@@ -172,7 +172,7 @@ public class RMUserAPI extends RMModelRequest
      */
     public boolean createUser(String userName, String userPassword, String userEmail)
     {
-        UserModel dataUser = getRMRestWrapper().getTestUser();
+        UserModel adminUser = getRMRestWrapper().getTestUser();
         AlfrescoHttpClient client = getAlfrescoHttpClient();
         
         JsonObject body = buildObject()
@@ -186,7 +186,7 @@ public class RMUserAPI extends RMModelRequest
         RequestSpecification spec = new RequestSpecBuilder()
             .setBaseUri(client.getApiUrl())
             .setBasePath("/")
-            .setAuth(basic(dataUser.getUsername(), dataUser.getPassword()))
+            .setAuth(basic(adminUser.getUsername(), adminUser.getPassword()))
             .setContentType(ContentType.JSON)
             .setBody(body.toString())
             .build();
diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RecordsAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RecordsAPI.java
index efcaca97ef..d5c3951387 100644
--- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RecordsAPI.java
+++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RecordsAPI.java
@@ -144,6 +144,5 @@ public class RecordsAPI extends RMModelRequest
             parameters
         ));
     }
-
 }
 
diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/ElectronicRecordTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/ElectronicRecordTests.java
index 5ab98ae61c..1ebda02bf9 100644
--- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/ElectronicRecordTests.java
+++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/ElectronicRecordTests.java
@@ -87,11 +87,12 @@ public class ElectronicRecordTests extends BaseRMRestTest
     @Test
     (
         dataProvider = "invalidParentContainers",
-        description = "Electronic records can't be created in invalid parent containers"
+        description = "Electronic records can't be created in invalid parent containers",
+        expectedExceptions = IllegalArgumentException.class
     )
     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());
 
         // verify the create request status code
@@ -108,7 +109,11 @@ public class ElectronicRecordTests extends BaseRMRestTest
      * 
* @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", + expectedExceptions = IllegalArgumentException.class + ) public void cantCreateElectronicRecordInClosedFolder() throws Exception { FilePlanComponent recordFolder = createCategoryFolderInFilePlan(); @@ -119,7 +124,7 @@ public class ElectronicRecordTests extends BaseRMRestTest // close the folder 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()); // verify the status code From d475a49c41fc27bcd15966f44054cbcf5752a4ff Mon Sep 17 00:00:00 2001 From: Kristijan Conkas Date: Wed, 25 Jan 2017 14:45:28 +0000 Subject: [PATCH 5/8] RM-4615: javadoc tidy-up --- .../requests/igCoreAPI/FilePlanComponentAPI.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java index 378615d402..9aa2fc5729 100644 --- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java @@ -237,7 +237,7 @@ public class FilePlanComponentAPI extends RMModelRequest * @param recordContent {@link File} pointing to the content of the electronic record to be created * @param parentId parent container id * @return newly created {@link FilePlanComponent} - * @throws Exception if operation failed + * @throws Exception if electronic record couldn't be created */ public FilePlanComponent createElectronicRecord(FilePlanComponent electronicRecordModel, File recordContent, String parentId) throws Exception { @@ -256,9 +256,8 @@ public class FilePlanComponentAPI extends RMModelRequest * For file uploads nodeBodyCreate is ignored hence can't be used. Append all FilePlanComponent fields * to the request. */ - RequestSpecBuilder builder = restWrapper.configureRequestSpec(); - ObjectMapper mapper = new ObjectMapper(); - JsonNode root = mapper.readTree(toJson(electronicRecordModel)); + RequestSpecBuilder builder = getRMRestWrapper().configureRequestSpec(); + JsonNode root = new ObjectMapper().readTree(toJson(electronicRecordModel)); // add request fields Iterator fieldNames = root.fieldNames(); @@ -267,8 +266,9 @@ public class FilePlanComponentAPI extends RMModelRequest String fieldName = fieldNames.next(); builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name()); } - builder.addMultiPart("filedata", recordContent, ContentType.BINARY.name()); + + // create node with given content using core Node API String nodeId = getRMRestWrapper().withCoreAPI().usingNode(parentNode).createNode().getId(); String createStatusCode = getRMRestWrapper().getStatusCode(); From 9dd7a1cf225252c881d92b523e38003f74872532 Mon Sep 17 00:00:00 2001 From: Kristijan Conkas Date: Wed, 25 Jan 2017 15:14:59 +0000 Subject: [PATCH 6/8] RM-4615: get record content implementation --- .../requests/igCoreAPI/RecordsAPI.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RecordsAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RecordsAPI.java index d5c3951387..a11219e193 100644 --- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RecordsAPI.java +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/RecordsAPI.java @@ -26,16 +26,15 @@ */ 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.simpleRequest; 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.PojoUtility.toJson; import static org.apache.commons.lang3.StringUtils.EMPTY; +import static org.springframework.http.HttpMethod.GET; import static org.springframework.http.HttpMethod.POST; -import com.jayway.restassured.response.Response; import com.jayway.restassured.response.ResponseBody; import org.alfresco.rest.core.RMRestWrapper; @@ -79,14 +78,11 @@ public class RecordsAPI extends RMModelRequest public ResponseBody getRecordContent(String recordId) throws Exception { mandatoryString("recordId", recordId); - Response response = given() - .auth().basic(getRMRestWrapper().getTestUser().getUsername(), - getRMRestWrapper().getTestUser().getPassword()) - .when() - .get("records/{recordId}/content", recordId) - .andReturn(); - getRMRestWrapper().setStatusCode(Integer.toString(response.getStatusCode())); - return response.getBody(); + + return getRMRestWrapper() + .processHtmlResponse(simpleRequest(GET,"records/{recordId}/content", recordId)) + .getBody(); + } /** From 8a875a0ef7672b187d47c209411aafdf165b0fde Mon Sep 17 00:00:00 2001 From: Kristijan Conkas Date: Fri, 27 Jan 2017 11:16:56 +0000 Subject: [PATCH 7/8] RM-4615: TAS version bump-up. --- rm-automation/rm-automation-community-rest-api/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rm-automation/rm-automation-community-rest-api/pom.xml b/rm-automation/rm-automation-community-rest-api/pom.xml index c45b682805..d0fef893e8 100644 --- a/rm-automation/rm-automation-community-rest-api/pom.xml +++ b/rm-automation/rm-automation-community-rest-api/pom.xml @@ -15,7 +15,7 @@ 1.8 alfresco-rm-community-share alfresco-rm-community-repo - 5.2.0-2-SNAPSHOT + 5.2.0-2 2.0.0 From 678e3e6cf5f9bb810b23c5517c53d5451efd042e Mon Sep 17 00:00:00 2001 From: Kristijan Conkas Date: Fri, 27 Jan 2017 11:52:21 +0000 Subject: [PATCH 8/8] RM-4615: now using RM FilePlanComponentAPI calls to create electronic records. --- .../igCoreAPI/FilePlanComponentAPI.java | 32 +++++-------------- .../ElectronicRecordTests.java | 6 ++-- 2 files changed, 10 insertions(+), 28 deletions(-) diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java index 9aa2fc5729..92132e8926 100644 --- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/requests/igCoreAPI/FilePlanComponentAPI.java @@ -52,8 +52,6 @@ import org.alfresco.rest.core.RMRestWrapper; import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponent; import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentsCollection; import org.alfresco.rest.rm.community.requests.RMModelRequest; -import org.alfresco.utility.model.ContentModel; -import org.alfresco.utility.model.RepoTestModel; /** * File plan component REST API Wrapper @@ -233,13 +231,15 @@ public class FilePlanComponentAPI extends RMModelRequest /** * Create electronic record from file resource + * * @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 parentId parent container id * @return newly created {@link FilePlanComponent} - * @throws Exception if electronic record couldn't be created + * @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); mandatoryString("parentId", parentId); @@ -247,11 +247,7 @@ public class FilePlanComponentAPI extends RMModelRequest { fail("Only electronic records are supported"); } - - RepoTestModel parentNode = new ContentModel(); - // using getFilePlanComponent to work around RM special containers, unsupported in Core API usingNode() - parentNode.setNodeRef(getFilePlanComponent(parentId).getId()); - + /* * For file uploads nodeBodyCreate is ignored hence can't be used. Append all FilePlanComponent fields * to the request. @@ -267,21 +263,9 @@ public class FilePlanComponentAPI extends RMModelRequest builder.addMultiPart(fieldName, root.get(fieldName).asText(), ContentType.JSON.name()); } builder.addMultiPart("filedata", recordContent, ContentType.BINARY.name()); - - // create node with given content using core Node API - String nodeId = getRMRestWrapper().withCoreAPI().usingNode(parentNode).createNode().getId(); - String createStatusCode = getRMRestWrapper().getStatusCode(); - - // return FilePlanComponent for created node - FilePlanComponent createdComponent = getRMRestWrapper() - .withIGCoreAPI() - .usingFilePlanComponents() - .getFilePlanComponent(nodeId); - - // avoid getFilePlanComponent() overriding the createNode status code - getRMRestWrapper().setStatusCode(createStatusCode); - - return createdComponent; + + // create node with given content + return createFilePlanComponent(electronicRecordModel, parentId); } /** diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/ElectronicRecordTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/ElectronicRecordTests.java index f9e02ba038..99fb80b1c6 100644 --- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/ElectronicRecordTests.java +++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/fileplancomponents/ElectronicRecordTests.java @@ -95,8 +95,7 @@ public class ElectronicRecordTests extends BaseRMRestTest @Test ( dataProvider = "invalidParentContainers", - description = "Electronic records can't be created in invalid parent containers", - expectedExceptions = IllegalArgumentException.class + description = "Electronic records can't be created in invalid parent containers" ) public void cantCreateElectronicRecordsInInvalidContainers(FilePlanComponent container) throws Exception { @@ -119,8 +118,7 @@ public class ElectronicRecordTests extends BaseRMRestTest */ @Test ( - description = "Electronic record can't be created in closed record folder", - expectedExceptions = IllegalArgumentException.class + description = "Electronic record can't be created in closed record folder" ) public void cantCreateElectronicRecordInClosedFolder() throws Exception {