From 8d96550de3efc00c5b7a48cdb726bc93a59bd88a Mon Sep 17 00:00:00 2001 From: Kristijan Conkas Date: Tue, 24 Jan 2017 18:15:41 +0000 Subject: [PATCH] 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());