mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-4615: TAS bump-up + corresponding api wrapper changes
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
<maven.build.sourceVersion>1.8</maven.build.sourceVersion>
|
||||
<alfresco.rm.share>alfresco-rm-community-share</alfresco.rm.share>
|
||||
<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-SNAPSHOT</tas.restapi.version>
|
||||
<fluent.json.version>2.0.0</fluent.json.version>
|
||||
</properties>
|
||||
|
||||
|
@@ -50,4 +50,12 @@ public class RMRestWrapper extends RestWrapper
|
||||
{
|
||||
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.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();
|
||||
}
|
||||
}
|
||||
|
@@ -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<RMModelRequest>
|
||||
{
|
||||
private RMRestWrapper rmRestWrapper;
|
||||
|
||||
|
@@ -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<RMUserAPI>
|
||||
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<RMUserAPI>
|
||||
.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<RMUserAPI>
|
||||
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<RMUserAPI>
|
||||
.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<RMUserAPI>
|
||||
.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<RMUserAPI>
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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());
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 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());
|
||||
|
@@ -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();
|
||||
|
@@ -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());
|
||||
|
Reference in New Issue
Block a user