From de55e85ec4733976aeaafd4d3e2b79625938cba0 Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Tue, 25 Oct 2016 20:14:47 +0100 Subject: [PATCH 1/6] Refactored RM site creation related code --- .../FilePlanComponentAlias.java | 2 +- .../FilePlanComponentFields.java | 2 +- .../FilePlanComponentType.java | 2 +- .../alfresco/com/site/RMSiteCompliance.java | 24 ++++ .../org/alfresco/com/site/RMSiteFields.java | 26 ++++ .../FilePlanComponent.java | 4 +- .../FilePlanComponentProperties.java | 8 +- .../org/alfresco/rest/model/site/RMSite.java | 49 +++++++ .../rest/requests/FilePlanComponentApi.java | 2 +- .../org/alfresco/rest/requests/RMSiteAPI.java | 93 +++++++++++++ .../rest/fileplancomponents/RMSiteTests.java | 127 ++++++++++++++++++ .../RecordCategoryTest.java | 16 +-- 12 files changed, 337 insertions(+), 18 deletions(-) rename src/main/java/org/alfresco/com/{ => fileplancomponents}/FilePlanComponentAlias.java (96%) rename src/main/java/org/alfresco/com/{ => fileplancomponents}/FilePlanComponentFields.java (94%) rename src/main/java/org/alfresco/com/{ => fileplancomponents}/FilePlanComponentType.java (97%) create mode 100644 src/main/java/org/alfresco/com/site/RMSiteCompliance.java create mode 100644 src/main/java/org/alfresco/com/site/RMSiteFields.java rename src/main/java/org/alfresco/rest/model/{ => fileplancomponents}/FilePlanComponent.java (96%) rename src/main/java/org/alfresco/rest/model/{ => fileplancomponents}/FilePlanComponentProperties.java (85%) create mode 100644 src/main/java/org/alfresco/rest/model/site/RMSite.java create mode 100644 src/main/java/org/alfresco/rest/requests/RMSiteAPI.java create mode 100644 src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java diff --git a/src/main/java/org/alfresco/com/FilePlanComponentAlias.java b/src/main/java/org/alfresco/com/fileplancomponents/FilePlanComponentAlias.java similarity index 96% rename from src/main/java/org/alfresco/com/FilePlanComponentAlias.java rename to src/main/java/org/alfresco/com/fileplancomponents/FilePlanComponentAlias.java index 13dc3dbd68..45ada4d9ec 100644 --- a/src/main/java/org/alfresco/com/FilePlanComponentAlias.java +++ b/src/main/java/org/alfresco/com/fileplancomponents/FilePlanComponentAlias.java @@ -9,7 +9,7 @@ * agreement is prohibited. * #L% */ -package org.alfresco.com; +package org.alfresco.com.fileplancomponents; /** * File plan component alias enumeration diff --git a/src/main/java/org/alfresco/com/FilePlanComponentFields.java b/src/main/java/org/alfresco/com/fileplancomponents/FilePlanComponentFields.java similarity index 94% rename from src/main/java/org/alfresco/com/FilePlanComponentFields.java rename to src/main/java/org/alfresco/com/fileplancomponents/FilePlanComponentFields.java index 76b91035c4..0f9b959462 100644 --- a/src/main/java/org/alfresco/com/FilePlanComponentFields.java +++ b/src/main/java/org/alfresco/com/fileplancomponents/FilePlanComponentFields.java @@ -9,7 +9,7 @@ * agreement is prohibited. * #L% */ -package org.alfresco.com; +package org.alfresco.com.fileplancomponents; /** * FIXME: Document me :) diff --git a/src/main/java/org/alfresco/com/FilePlanComponentType.java b/src/main/java/org/alfresco/com/fileplancomponents/FilePlanComponentType.java similarity index 97% rename from src/main/java/org/alfresco/com/FilePlanComponentType.java rename to src/main/java/org/alfresco/com/fileplancomponents/FilePlanComponentType.java index 432178c75e..ebf8cc070d 100644 --- a/src/main/java/org/alfresco/com/FilePlanComponentType.java +++ b/src/main/java/org/alfresco/com/fileplancomponents/FilePlanComponentType.java @@ -9,7 +9,7 @@ * agreement is prohibited. * #L% */ -package org.alfresco.com; +package org.alfresco.com.fileplancomponents; /** * File plan component type enumeration diff --git a/src/main/java/org/alfresco/com/site/RMSiteCompliance.java b/src/main/java/org/alfresco/com/site/RMSiteCompliance.java new file mode 100644 index 0000000000..84dd6b00f6 --- /dev/null +++ b/src/main/java/org/alfresco/com/site/RMSiteCompliance.java @@ -0,0 +1,24 @@ +/* + * #%L + * Alfresco Records Management Module + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * License rights for this program may be obtained from Alfresco Software, Ltd. + * pursuant to a written agreement and any use of this program without such an + * agreement is prohibited. + * #L% + */ +package org.alfresco.com.site; + +/** + * FIXME: Document me :) + * + * @author Tuna Aksoy + * @since 1.0 + */ +public enum RMSiteCompliance +{ + STANDARD, + DOD5015; +} diff --git a/src/main/java/org/alfresco/com/site/RMSiteFields.java b/src/main/java/org/alfresco/com/site/RMSiteFields.java new file mode 100644 index 0000000000..d0ce8303b6 --- /dev/null +++ b/src/main/java/org/alfresco/com/site/RMSiteFields.java @@ -0,0 +1,26 @@ +/* + * #%L + * Alfresco Records Management Module + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * License rights for this program may be obtained from Alfresco Software, Ltd. + * pursuant to a written agreement and any use of this program without such an + * agreement is prohibited. + * #L% + */ +package org.alfresco.com.site; + +/** + * FIXME: Document me :) + * + * @author Tuna Aksoy + * @since 1.0 + */ +public class RMSiteFields +{ + public static final String ID = "id"; + public static final String COMPLIANCE = "compliance"; + public static final String TITLE = "title"; + public static final String DESCRIPTION = "description"; +} diff --git a/src/main/java/org/alfresco/rest/model/FilePlanComponent.java b/src/main/java/org/alfresco/rest/model/fileplancomponents/FilePlanComponent.java similarity index 96% rename from src/main/java/org/alfresco/rest/model/FilePlanComponent.java rename to src/main/java/org/alfresco/rest/model/fileplancomponents/FilePlanComponent.java index 9403411bed..420233847c 100644 --- a/src/main/java/org/alfresco/rest/model/FilePlanComponent.java +++ b/src/main/java/org/alfresco/rest/model/fileplancomponents/FilePlanComponent.java @@ -9,9 +9,9 @@ * agreement is prohibited. * #L% */ -package org.alfresco.rest.model; +package org.alfresco.rest.model.fileplancomponents; -import static org.alfresco.com.FilePlanComponentFields.PROPERTIES; +import static org.alfresco.com.fileplancomponents.FilePlanComponentFields.PROPERTIES; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/org/alfresco/rest/model/FilePlanComponentProperties.java b/src/main/java/org/alfresco/rest/model/fileplancomponents/FilePlanComponentProperties.java similarity index 85% rename from src/main/java/org/alfresco/rest/model/FilePlanComponentProperties.java rename to src/main/java/org/alfresco/rest/model/fileplancomponents/FilePlanComponentProperties.java index 311779450e..d51c86e52c 100644 --- a/src/main/java/org/alfresco/rest/model/FilePlanComponentProperties.java +++ b/src/main/java/org/alfresco/rest/model/fileplancomponents/FilePlanComponentProperties.java @@ -9,11 +9,11 @@ * agreement is prohibited. * #L% */ -package org.alfresco.rest.model; +package org.alfresco.rest.model.fileplancomponents; -import static org.alfresco.com.FilePlanComponentFields.PROPERTIES_HOLD_REASON; -import static org.alfresco.com.FilePlanComponentFields.PROPERTIES_TITLE; -import static org.alfresco.com.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR; +import static org.alfresco.com.fileplancomponents.FilePlanComponentFields.PROPERTIES_HOLD_REASON; +import static org.alfresco.com.fileplancomponents.FilePlanComponentFields.PROPERTIES_TITLE; +import static org.alfresco.com.fileplancomponents.FilePlanComponentFields.PROPERTIES_VITAL_RECORD_INDICATOR; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/org/alfresco/rest/model/site/RMSite.java b/src/main/java/org/alfresco/rest/model/site/RMSite.java new file mode 100644 index 0000000000..680777f96f --- /dev/null +++ b/src/main/java/org/alfresco/rest/model/site/RMSite.java @@ -0,0 +1,49 @@ +/* + * #%L + * Alfresco Records Management Module + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * License rights for this program may be obtained from Alfresco Software, Ltd. + * pursuant to a written agreement and any use of this program without such an + * agreement is prohibited. + * #L% + */ +package org.alfresco.rest.model.site; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import org.alfresco.com.site.RMSiteCompliance; +import org.alfresco.rest.model.RestSiteModel; + +/** + * FIXME: Document me :) + * + * @author Rodica Sutu + * @since 1.0 + */ +public class RMSite extends RestSiteModel +{ + @JsonProperty (required = true) + protected RMSiteCompliance compliance; + + /** + * FIXME: Document me :) + * + * @param compliance the compliance to set + */ + public void setCompliance(RMSiteCompliance compliance) + { + this.compliance = compliance; + } + + /** + * FIXME: Document me :) + * + * @return FIXME: Document me :) + */ + public RMSiteCompliance getCompliance() + { + return compliance; + } +} diff --git a/src/main/java/org/alfresco/rest/requests/FilePlanComponentApi.java b/src/main/java/org/alfresco/rest/requests/FilePlanComponentApi.java index 460e4eb23c..6da4b4ab49 100644 --- a/src/main/java/org/alfresco/rest/requests/FilePlanComponentApi.java +++ b/src/main/java/org/alfresco/rest/requests/FilePlanComponentApi.java @@ -23,7 +23,7 @@ import static org.springframework.http.HttpMethod.PUT; import com.google.gson.JsonObject; import org.alfresco.rest.core.RestAPI; -import org.alfresco.rest.model.FilePlanComponent; +import org.alfresco.rest.model.fileplancomponents.FilePlanComponent; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; diff --git a/src/main/java/org/alfresco/rest/requests/RMSiteAPI.java b/src/main/java/org/alfresco/rest/requests/RMSiteAPI.java new file mode 100644 index 0000000000..9b5a6b78d7 --- /dev/null +++ b/src/main/java/org/alfresco/rest/requests/RMSiteAPI.java @@ -0,0 +1,93 @@ +/* + * #%L + * Alfresco Records Management Module + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * License rights for this program may be obtained from Alfresco Software, Ltd. + * pursuant to a written agreement and any use of this program without such an + * agreement is prohibited. + * #L% + */ +package org.alfresco.rest.requests; + +import static org.alfresco.rest.core.RestRequest.requestWithBody; +import static org.alfresco.rest.core.RestRequest.simpleRequest; +import static org.springframework.http.HttpMethod.DELETE; +import static org.springframework.http.HttpMethod.GET; +import static org.springframework.http.HttpMethod.POST; +import static org.springframework.http.HttpMethod.PUT; + +import com.google.gson.JsonObject; + +import org.alfresco.rest.core.RestAPI; +import org.alfresco.rest.model.site.RMSite; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +/** + * FIXME: Document me :) + */ +@Component +@Scope (value = "prototype") +public class RMSiteAPI extends RestAPI +{ + /** + * Get the RM site + * + * @return FIXME: Document me :) + * @throws FIXME: Document me :) + */ + public RMSite getSite() throws Exception + { + return usingRestWrapper().processModel(RMSite.class, simpleRequest( + GET, + "sites/rm" + )); + } + + /** + * Create the RM site + * + * @param rmSiteProperties FIXME: Document me :) + * @return FIXME: Document me :) + * @throws Exception FIXME: Document me :) + */ + public RMSite createRMSite(JsonObject rmSiteProperties) throws Exception + { + return usingRestWrapper().processModel(RMSite.class, requestWithBody( + POST, + rmSiteProperties.toString(), + "sites" + )); + } + + /** + * Delete RM site + * + * @throws Exception FIXME: Document me :) + */ + public void deleteRMSite() throws Exception + { + usingRestWrapper().processEmptyModel(simpleRequest( + DELETE, + "sites/rm" + )); + } + + /** + * Update RM site + * + * @param rmSiteProperties FIXME: Document me :) + * @return FIXME: Document me :) + * @throws Exception FIXME: Document me :) + */ + public RMSite updateRMSite(JsonObject rmSiteProperties) throws Exception + { + return usingRestWrapper().processModel(RMSite.class, requestWithBody( + PUT, + rmSiteProperties.toString(), + "sites/rm" + )); + } +} diff --git a/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java b/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java new file mode 100644 index 0000000000..a6de974fb1 --- /dev/null +++ b/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java @@ -0,0 +1,127 @@ +/* + * #%L + * Alfresco Records Management Module + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * License rights for this program may be obtained from Alfresco Software, Ltd. + * pursuant to a written agreement and any use of this program without such an + * agreement is prohibited. + * #L% + */ +package org.alfresco.rest.fileplancomponents; + +import static org.alfresco.com.site.RMSiteCompliance.STANDARD; +import static org.alfresco.com.site.RMSiteFields.COMPLIANCE; +import static org.alfresco.com.site.RMSiteFields.DESCRIPTION; +import static org.alfresco.com.site.RMSiteFields.TITLE; +import static org.jglue.fluentjson.JsonBuilderFactory.buildObject; +import static org.springframework.http.HttpStatus.CONFLICT; +import static org.springframework.http.HttpStatus.CREATED; +import static org.springframework.http.HttpStatus.NO_CONTENT; +import static org.springframework.social.alfresco.api.entities.Site.Visibility.PUBLIC; +import static org.testng.Assert.assertEquals; + +import com.google.gson.JsonObject; + +import org.alfresco.rest.BaseRestTest; +import org.alfresco.rest.core.RestWrapper; +import org.alfresco.rest.model.site.RMSite; +import org.alfresco.rest.requests.RMSiteAPI; +import org.alfresco.utility.data.DataUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.testng.annotations.Test; + +/** + * FIXME: Document me :) + * FIXME: Should we use dependent tests or not? + * They were removed here but there is no guarantee for the test execution order. + * In {@link RecordCategoryTest} we create a record category first to delete it. + * Probbaly something to think about again. + * + * @author Rodica Sutu + * @since 1.0 + */ +public class RMSiteTests extends BaseRestTest +{ + @Autowired + private RMSiteAPI rmSiteAPI; + + @Autowired + private DataUser dataUser; + + // Constants + private static final String RM_ID = "rm"; + private static final String RM_TITLE = "Records Management"; + private static final String RM_DESCRIPTION = "Records Management Site"; + + @Test + ( + description = "Create RM site as admin user" + ) + public void createRMSiteAsAdminUser() throws Exception + { + RestWrapper restWrapper = rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); + + // Build the RM site properties + JsonObject rmSiteProperties = buildObject(). + add(TITLE, RM_TITLE). + add(DESCRIPTION, RM_DESCRIPTION). + add(COMPLIANCE, STANDARD.toString()). + getJson(); + + // Create the RM site + RMSite rmSite = rmSiteAPI.createRMSite(rmSiteProperties); + + // Verify the status code + restWrapper.assertStatusCodeIs(CREATED); + + // Verify the returned file plan component + assertEquals(rmSite.getId(), RM_ID); + assertEquals(rmSite.getTitle(), RM_TITLE); + assertEquals(rmSite.getDescription(), RM_DESCRIPTION); + assertEquals(rmSite.getCompliance(), STANDARD); + assertEquals(rmSite.getVisibility(), PUBLIC); + } + + @Test + ( + description = "Create RM site when site already exist admin user" + ) + public void createRMSiteWhenSiteExists() throws Exception + { + RestWrapper restWrapper = rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); + + // Construct new properties + String newTitle = RM_TITLE + "createRMSiteWhenSiteExists"; + String newDescription = RM_DESCRIPTION + "createRMSiteWhenSiteExists"; + + // Build the RM site properties + JsonObject rmSiteProperties = buildObject(). + add(TITLE, newTitle). + add(DESCRIPTION, newDescription). + add(COMPLIANCE, STANDARD.toString()). + getJson(); + + // Create the RM site + rmSiteAPI.createRMSite(rmSiteProperties); + + // Verify the status code + restWrapper.assertStatusCodeIs(CONFLICT); + } + + @Test + ( + description = "Delete RM site as admin user" + ) + public void deleteRMSite() throws Exception + { + RestWrapper restWrapper = rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); + + // Delete the RM site + rmSiteAPI.deleteRMSite(); + + // Verify the status code + restWrapper.assertStatusCodeIs(NO_CONTENT); + } +} diff --git a/src/test/java/org/alfresco/rest/fileplancomponents/RecordCategoryTest.java b/src/test/java/org/alfresco/rest/fileplancomponents/RecordCategoryTest.java index 54dce68633..75e243716d 100644 --- a/src/test/java/org/alfresco/rest/fileplancomponents/RecordCategoryTest.java +++ b/src/test/java/org/alfresco/rest/fileplancomponents/RecordCategoryTest.java @@ -13,12 +13,12 @@ package org.alfresco.rest.fileplancomponents; import static java.util.UUID.randomUUID; -import static org.alfresco.com.FilePlanComponentAlias.FILE_PLAN_ALIAS; -import static org.alfresco.com.FilePlanComponentFields.NAME; -import static org.alfresco.com.FilePlanComponentFields.NODE_TYPE; -import static org.alfresco.com.FilePlanComponentFields.PROPERTIES; -import static org.alfresco.com.FilePlanComponentFields.PROPERTIES_TITLE; -import static org.alfresco.com.FilePlanComponentType.RECORD_CATEGORY_TYPE; +import static org.alfresco.com.fileplancomponents.FilePlanComponentAlias.FILE_PLAN_ALIAS; +import static org.alfresco.com.fileplancomponents.FilePlanComponentFields.NAME; +import static org.alfresco.com.fileplancomponents.FilePlanComponentFields.NODE_TYPE; +import static org.alfresco.com.fileplancomponents.FilePlanComponentFields.PROPERTIES; +import static org.alfresco.com.fileplancomponents.FilePlanComponentFields.PROPERTIES_TITLE; +import static org.alfresco.com.fileplancomponents.FilePlanComponentType.RECORD_CATEGORY_TYPE; import static org.jglue.fluentjson.JsonBuilderFactory.buildObject; import static org.springframework.http.HttpStatus.CREATED; import static org.springframework.http.HttpStatus.NO_CONTENT; @@ -30,8 +30,8 @@ import com.google.gson.JsonObject; import org.alfresco.rest.BaseRestTest; import org.alfresco.rest.core.RestWrapper; -import org.alfresco.rest.model.FilePlanComponent; -import org.alfresco.rest.model.FilePlanComponentProperties; +import org.alfresco.rest.model.fileplancomponents.FilePlanComponent; +import org.alfresco.rest.model.fileplancomponents.FilePlanComponentProperties; import org.alfresco.rest.requests.FilePlanComponentApi; import org.alfresco.utility.data.DataUser; import org.springframework.beans.factory.annotation.Autowired; From eacdd243101f17fb5e2cdfb69eebf5760b8ee251 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Thu, 27 Oct 2016 15:08:49 +0300 Subject: [PATCH 2/6] tidy up the code, creating the RM Site on BaseRestTests --- .../alfresco/com/site/RMSiteCompliance.java | 2 +- .../org/alfresco/com/site/RMSiteFields.java | 15 +++- .../org/alfresco/rest/model/site/RMSite.java | 12 ++- .../org/alfresco/rest/requests/RMSiteAPI.java | 52 ++++++++--- .../java/org/alfresco/rest/BaseRestTest.java | 86 +++++++++++++++++-- .../rest/fileplancomponents/RMSiteTests.java | 52 ++++++++--- 6 files changed, 180 insertions(+), 39 deletions(-) diff --git a/src/main/java/org/alfresco/com/site/RMSiteCompliance.java b/src/main/java/org/alfresco/com/site/RMSiteCompliance.java index 84dd6b00f6..0d5f731967 100644 --- a/src/main/java/org/alfresco/com/site/RMSiteCompliance.java +++ b/src/main/java/org/alfresco/com/site/RMSiteCompliance.java @@ -12,7 +12,7 @@ package org.alfresco.com.site; /** - * FIXME: Document me :) + * RM Site compliance * * @author Tuna Aksoy * @since 1.0 diff --git a/src/main/java/org/alfresco/com/site/RMSiteFields.java b/src/main/java/org/alfresco/com/site/RMSiteFields.java index d0ce8303b6..c7c65f0d06 100644 --- a/src/main/java/org/alfresco/com/site/RMSiteFields.java +++ b/src/main/java/org/alfresco/com/site/RMSiteFields.java @@ -12,9 +12,18 @@ package org.alfresco.com.site; /** - * FIXME: Document me :) - * + *RM Site properties from the RM Model Schema + *"entry": { + * "id": "string", + * "guid": "string", + * "title": "string", + * "description": "string", + * "visibility": "{@link org.springframework.social.alfresco.api.entities.Site.Visibility}", + * "compliance": "{@link RMSiteCompliance}", + * "role": "{@link org.alfresco.utility.constants.UserRole}" + *} * @author Tuna Aksoy + * @author Rodica Sutu * @since 1.0 */ public class RMSiteFields @@ -23,4 +32,6 @@ public class RMSiteFields public static final String COMPLIANCE = "compliance"; public static final String TITLE = "title"; public static final String DESCRIPTION = "description"; + public static final String VISIBILITY ="visibility"; + public static final String ROLE = "role"; } diff --git a/src/main/java/org/alfresco/rest/model/site/RMSite.java b/src/main/java/org/alfresco/rest/model/site/RMSite.java index 680777f96f..47a636b031 100644 --- a/src/main/java/org/alfresco/rest/model/site/RMSite.java +++ b/src/main/java/org/alfresco/rest/model/site/RMSite.java @@ -17,7 +17,7 @@ import org.alfresco.com.site.RMSiteCompliance; import org.alfresco.rest.model.RestSiteModel; /** - * FIXME: Document me :) + * POJO for RM Site component * * @author Rodica Sutu * @since 1.0 @@ -28,9 +28,8 @@ public class RMSite extends RestSiteModel protected RMSiteCompliance compliance; /** - * FIXME: Document me :) - * - * @param compliance the compliance to set + * Helper method to set RM site compliance + * @param compliance {@link RMSiteCompliance} the compliance to set */ public void setCompliance(RMSiteCompliance compliance) { @@ -38,9 +37,8 @@ public class RMSite extends RestSiteModel } /** - * FIXME: Document me :) - * - * @return FIXME: Document me :) + * Helper method to get RM site compliance + * @return compliance the RM Site compliance to get */ public RMSiteCompliance getCompliance() { diff --git a/src/main/java/org/alfresco/rest/requests/RMSiteAPI.java b/src/main/java/org/alfresco/rest/requests/RMSiteAPI.java index 9b5a6b78d7..3be78bb4fb 100644 --- a/src/main/java/org/alfresco/rest/requests/RMSiteAPI.java +++ b/src/main/java/org/alfresco/rest/requests/RMSiteAPI.java @@ -26,7 +26,11 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; /** - * FIXME: Document me :) + * File plan component REST API Wrapper + * + * @author Tuna Aksoy + * @author Rodica Sutu + * @since 1.0 */ @Component @Scope (value = "prototype") @@ -35,8 +39,14 @@ public class RMSiteAPI extends RestAPI /** * Get the RM site * - * @return FIXME: Document me :) - * @throws FIXME: Document me :) + * @return The {@link RMSite} for the given file plan component id + * @throws Exception for the following cases: + * */ public RMSite getSite() throws Exception { @@ -49,9 +59,15 @@ public class RMSiteAPI extends RestAPI /** * Create the RM site * - * @param rmSiteProperties FIXME: Document me :) - * @return FIXME: Document me :) - * @throws Exception FIXME: Document me :) + * @param rmSiteProperties The properties of the rm site to be created + * @return The {@link RMSite} with the given properties + * @throws Exception for the following cases: + * */ public RMSite createRMSite(JsonObject rmSiteProperties) throws Exception { @@ -64,8 +80,14 @@ public class RMSiteAPI extends RestAPI /** * Delete RM site - * - * @throws Exception FIXME: Document me :) + * @throws Exception for the following cases: + * */ public void deleteRMSite() throws Exception { @@ -78,9 +100,16 @@ public class RMSiteAPI extends RestAPI /** * Update RM site * - * @param rmSiteProperties FIXME: Document me :) - * @return FIXME: Document me :) - * @throws Exception FIXME: Document me :) + * @param rmSiteProperties The properties to be updated + * @return The updated {@link RMSite} + * @throws Exception for the following cases: + * */ public RMSite updateRMSite(JsonObject rmSiteProperties) throws Exception { @@ -90,4 +119,5 @@ public class RMSiteAPI extends RestAPI "sites/rm" )); } + } diff --git a/src/test/java/org/alfresco/rest/BaseRestTest.java b/src/test/java/org/alfresco/rest/BaseRestTest.java index 7ff9a538e6..7d35effb57 100644 --- a/src/test/java/org/alfresco/rest/BaseRestTest.java +++ b/src/test/java/org/alfresco/rest/BaseRestTest.java @@ -13,11 +13,25 @@ package org.alfresco.rest; import static java.lang.Integer.parseInt; +import static org.alfresco.com.site.RMSiteCompliance.STANDARD; +import static org.alfresco.com.site.RMSiteFields.COMPLIANCE; +import static org.alfresco.com.site.RMSiteFields.DESCRIPTION; +import static org.alfresco.com.site.RMSiteFields.TITLE; +import static org.jglue.fluentjson.JsonBuilderFactory.buildObject; +import static org.springframework.http.HttpStatus.CREATED; + +import com.google.gson.JsonObject; import com.jayway.restassured.RestAssured; +import org.alfresco.dataprep.SiteService; +import org.alfresco.rest.core.RestWrapper; +import org.alfresco.rest.requests.RMSiteAPI; +import org.alfresco.utility.data.DataUser; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; +import org.springframework.http.HttpStatus; import org.testng.annotations.BeforeClass; /** @@ -32,27 +46,87 @@ import org.testng.annotations.BeforeClass; @PropertySource(value = "classpath:local.properties", ignoreResourceNotFound = true) public class BaseRestTest extends RestTest { - @Value("${alfresco.rm.scheme}") + @Value ("${alfresco.rm.scheme}") private String scheme; - @Value("${alfresco.rm.host}") + @Value ("${alfresco.rm.host}") private String host; - @Value("${alfresco.rm.port}") + @Value ("${alfresco.rm.port}") private String port; - @Value("${alfresco.rm.basePath}") + @Value ("${alfresco.rm.basePath}") private String basePath; + @Autowired + public RMSiteAPI rmSiteAPI; + + @Autowired + public DataUser dataUser; + + private static final String RM_ID = "rm"; + + @Autowired + private SiteService siteService; + /** * @see org.alfresco.rest.RestTest#checkServerHealth() */ @Override - @BeforeClass(alwaysRun = true) + @BeforeClass (alwaysRun = true) public void checkServerHealth() throws Exception { RestAssured.baseURI = scheme + "://" + host; RestAssured.port = parseInt(port); RestAssured.basePath = basePath; + //create RM Site if not exist + createRMSiteIfNotExists(); } -} + /* + * Helper method to create the RM Site via the POST request + * if the site doesn't exist + */ + + public void createRMSiteIfNotExists() throws Exception + { + final String RM_TITLE = "Records Management"; + final String RM_DESCRIPTION = "Records Management Site"; + //check RM site doesn't exist + if (!siteRMExist()) + { + rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); + // Build the RM site properties + JsonObject rmSiteProperties = buildObject(). + add(TITLE, RM_TITLE). + add(DESCRIPTION, RM_DESCRIPTION). + add(COMPLIANCE, STANDARD.toString()). + getJson(); + // Create the RM site + rmSiteAPI.createRMSite(rmSiteProperties); + + // Verify the status code + rmSiteAPI.usingRestWrapper().assertStatusCodeIs(CREATED); + } + } + + + /* + * Check the RM site exist via the GET request + * + */ + public boolean siteRMExist() throws Exception + { /* + return siteService.exists(RM_ID, dataUser.getAdminUser().getUsername(), + dataUser.getAdminUser().getPassword()); + */ + RestWrapper restWrapper=rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); + rmSiteAPI.getSite(); + if (restWrapper.getStatusCode().equals(HttpStatus.OK.toString())) + { + return true; + } else + { + return false; + } + } +} \ No newline at end of file diff --git a/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java b/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java index a6de974fb1..8b22ace9ef 100644 --- a/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java +++ b/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java @@ -18,7 +18,9 @@ import static org.alfresco.com.site.RMSiteFields.TITLE; import static org.jglue.fluentjson.JsonBuilderFactory.buildObject; import static org.springframework.http.HttpStatus.CONFLICT; import static org.springframework.http.HttpStatus.CREATED; +import static org.springframework.http.HttpStatus.NOT_FOUND; import static org.springframework.http.HttpStatus.NO_CONTENT; +import static org.springframework.http.HttpStatus.OK; import static org.springframework.social.alfresco.api.entities.Site.Visibility.PUBLIC; import static org.testng.Assert.assertEquals; @@ -27,9 +29,6 @@ import com.google.gson.JsonObject; import org.alfresco.rest.BaseRestTest; import org.alfresco.rest.core.RestWrapper; import org.alfresco.rest.model.site.RMSite; -import org.alfresco.rest.requests.RMSiteAPI; -import org.alfresco.utility.data.DataUser; -import org.springframework.beans.factory.annotation.Autowired; import org.testng.annotations.Test; /** @@ -44,11 +43,6 @@ import org.testng.annotations.Test; */ public class RMSiteTests extends BaseRestTest { - @Autowired - private RMSiteAPI rmSiteAPI; - - @Autowired - private DataUser dataUser; // Constants private static final String RM_ID = "rm"; @@ -57,12 +51,16 @@ public class RMSiteTests extends BaseRestTest @Test ( - description = "Create RM site as admin user" + description = "Create RM site as admin user with standard Compliance" ) public void createRMSiteAsAdminUser() throws Exception { RestWrapper restWrapper = rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); - + if (siteRMExist()) + { + //Delete the RM site + rmSiteAPI.deleteRMSite(); + } // Build the RM site properties JsonObject rmSiteProperties = buildObject(). add(TITLE, RM_TITLE). @@ -74,7 +72,7 @@ public class RMSiteTests extends BaseRestTest RMSite rmSite = rmSiteAPI.createRMSite(rmSiteProperties); // Verify the status code - restWrapper.assertStatusCodeIs(CREATED); + rmSiteAPI.usingRestWrapper().assertStatusCodeIs(CREATED); // Verify the returned file plan component assertEquals(rmSite.getId(), RM_ID); @@ -86,10 +84,12 @@ public class RMSiteTests extends BaseRestTest @Test ( - description = "Create RM site when site already exist admin user" + description = "Create RM site when site already exist with admin user" ) public void createRMSiteWhenSiteExists() throws Exception { + rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); + createRMSiteIfNotExists(); RestWrapper restWrapper = rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); // Construct new properties @@ -124,4 +124,32 @@ public class RMSiteTests extends BaseRestTest // Verify the status code restWrapper.assertStatusCodeIs(NO_CONTENT); } + + @Test + ( + description = "GET RM site as admin user" + ) + public void getRMSite() throws Exception + { + RestWrapper restWrapper = rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); + + // Get the RM site + RMSite rmSite=rmSiteAPI.getSite(); + + if (!siteRMExist()) + { + // Verify the status code + restWrapper.assertStatusCodeIs(NOT_FOUND); + } + else + { + // Verify the status code + restWrapper.assertStatusCodeIs(OK); + assertEquals(rmSite.getId(), RM_ID); + assertEquals(rmSite.getDescription(), RM_DESCRIPTION); + assertEquals(rmSite.getCompliance(), STANDARD); + assertEquals(rmSite.getVisibility(), PUBLIC); + } + + } } From 1f2b869ba874147f5b61a4dcc683f87ae2c6e693 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Thu, 27 Oct 2016 16:07:53 +0300 Subject: [PATCH 3/6] remove unnecessary comment + correct java docs --- .../alfresco/com/site/RMSiteCompliance.java | 2 +- .../org/alfresco/rest/model/site/RMSite.java | 2 +- .../org/alfresco/rest/requests/RMSiteAPI.java | 4 ++-- .../java/org/alfresco/rest/BaseRestTest.java | 22 +++++-------------- 4 files changed, 10 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/alfresco/com/site/RMSiteCompliance.java b/src/main/java/org/alfresco/com/site/RMSiteCompliance.java index 0d5f731967..76f0bf4926 100644 --- a/src/main/java/org/alfresco/com/site/RMSiteCompliance.java +++ b/src/main/java/org/alfresco/com/site/RMSiteCompliance.java @@ -20,5 +20,5 @@ package org.alfresco.com.site; public enum RMSiteCompliance { STANDARD, - DOD5015; + DOD5015 } diff --git a/src/main/java/org/alfresco/rest/model/site/RMSite.java b/src/main/java/org/alfresco/rest/model/site/RMSite.java index 47a636b031..960f518488 100644 --- a/src/main/java/org/alfresco/rest/model/site/RMSite.java +++ b/src/main/java/org/alfresco/rest/model/site/RMSite.java @@ -25,7 +25,7 @@ import org.alfresco.rest.model.RestSiteModel; public class RMSite extends RestSiteModel { @JsonProperty (required = true) - protected RMSiteCompliance compliance; + private RMSiteCompliance compliance; /** * Helper method to set RM site compliance diff --git a/src/main/java/org/alfresco/rest/requests/RMSiteAPI.java b/src/main/java/org/alfresco/rest/requests/RMSiteAPI.java index 3be78bb4fb..7cb99889cc 100644 --- a/src/main/java/org/alfresco/rest/requests/RMSiteAPI.java +++ b/src/main/java/org/alfresco/rest/requests/RMSiteAPI.java @@ -42,7 +42,7 @@ public class RMSiteAPI extends RestAPI * @return The {@link RMSite} for the given file plan component id * @throws Exception for the following cases: *
    - *
  • Api Response code 400 Invalid parameter: GET request is suported only for the RM site
  • + *
  • Api Response code 400 Invalid parameter: GET request is supported only for the RM site
  • *
  • Api Response code 401 If authentication failed
  • *
  • Api Response code 409 If RM Site does not exist
  • *
  • Api Response code default Unexpected error
  • @@ -82,7 +82,7 @@ public class RMSiteAPI extends RestAPI * Delete RM site * @throws Exception for the following cases: *
      - *
    • Api Response code 400 Invalid parameter: DELETE request is suported only for the RM site
    • + *
    • Api Response code 400 Invalid parameter: DELETE request is supported only for the RM site
    • *
    • Api Response code 401 If authentication failedApi Response code 403 Current user does not have permission to delete the site that is visible to them.
    • *
    • Api Response code 404 RM site does not exist
    • diff --git a/src/test/java/org/alfresco/rest/BaseRestTest.java b/src/test/java/org/alfresco/rest/BaseRestTest.java index 7d35effb57..ae97287230 100644 --- a/src/test/java/org/alfresco/rest/BaseRestTest.java +++ b/src/test/java/org/alfresco/rest/BaseRestTest.java @@ -73,7 +73,7 @@ public class BaseRestTest extends RestTest * @see org.alfresco.rest.RestTest#checkServerHealth() */ @Override - @BeforeClass (alwaysRun = true) + @BeforeClass(alwaysRun = true) public void checkServerHealth() throws Exception { RestAssured.baseURI = scheme + "://" + host; @@ -82,10 +82,10 @@ public class BaseRestTest extends RestTest //create RM Site if not exist createRMSiteIfNotExists(); } - /* + /** * Helper method to create the RM Site via the POST request * if the site doesn't exist - */ + */ public void createRMSiteIfNotExists() throws Exception { @@ -110,23 +110,13 @@ public class BaseRestTest extends RestTest } - /* + /** * Check the RM site exist via the GET request - * */ public boolean siteRMExist() throws Exception - { /* - return siteService.exists(RM_ID, dataUser.getAdminUser().getUsername(), - dataUser.getAdminUser().getPassword()); - */ + { RestWrapper restWrapper=rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); rmSiteAPI.getSite(); - if (restWrapper.getStatusCode().equals(HttpStatus.OK.toString())) - { - return true; - } else - { - return false; - } + return restWrapper.getStatusCode().equals(HttpStatus.OK.toString()); } } \ No newline at end of file From c2a4ecd2c6c58b43af049b936b505babddb826bc Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Thu, 27 Oct 2016 16:12:39 +0300 Subject: [PATCH 4/6] java doc indentation --- .../rest/fileplancomponents/RMSiteTests.java | 45 +++++++++++++++++-- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java b/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java index 8b22ace9ef..7b09d1433d 100644 --- a/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java +++ b/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java @@ -11,10 +11,12 @@ */ package org.alfresco.rest.fileplancomponents; +import static org.alfresco.com.site.RMSiteCompliance.DOD5015; import static org.alfresco.com.site.RMSiteCompliance.STANDARD; import static org.alfresco.com.site.RMSiteFields.COMPLIANCE; import static org.alfresco.com.site.RMSiteFields.DESCRIPTION; import static org.alfresco.com.site.RMSiteFields.TITLE; +import static org.alfresco.rest.TestData.ANOTHER_ADMIN; import static org.jglue.fluentjson.JsonBuilderFactory.buildObject; import static org.springframework.http.HttpStatus.CONFLICT; import static org.springframework.http.HttpStatus.CREATED; @@ -51,11 +53,11 @@ public class RMSiteTests extends BaseRestTest @Test ( - description = "Create RM site as admin user with standard Compliance" + description = "Create RM site as admin user with Standard Compliance" ) public void createRMSiteAsAdminUser() throws Exception { - RestWrapper restWrapper = rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); + rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); if (siteRMExist()) { //Delete the RM site @@ -135,7 +137,6 @@ public class RMSiteTests extends BaseRestTest // Get the RM site RMSite rmSite=rmSiteAPI.getSite(); - if (!siteRMExist()) { // Verify the status code @@ -150,6 +151,42 @@ public class RMSiteTests extends BaseRestTest assertEquals(rmSite.getCompliance(), STANDARD); assertEquals(rmSite.getVisibility(), PUBLIC); } - } + + @Test + ( + description = "Create RM site as an admin user created with DOD compliance" + ) + public void createRMSiteAsAnotherAdminUser() throws Exception + { + rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); + if (siteRMExist()) + { + //Delete the RM site + rmSiteAPI.deleteRMSite(); + } + + rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.createRandomTestUser(ANOTHER_ADMIN)); + // Build the RM site properties + JsonObject rmSiteProperties = buildObject(). + add(TITLE, RM_TITLE). + add(DESCRIPTION, RM_DESCRIPTION). + add(COMPLIANCE, DOD5015.toString()). + getJson(); + + // Create the RM site + RMSite rmSite = rmSiteAPI.createRMSite(rmSiteProperties); + + // Verify the status code + rmSiteAPI.usingRestWrapper().assertStatusCodeIs(CREATED); + + // Verify the returned file plan component + assertEquals(rmSite.getId(), RM_ID); + assertEquals(rmSite.getTitle(), RM_TITLE); + assertEquals(rmSite.getDescription(), RM_DESCRIPTION); + assertEquals(rmSite.getCompliance(), DOD5015); + assertEquals(rmSite.getVisibility(), PUBLIC); + } + + } From ce3c514967485580c3cb83144ae618ab02384d0c Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Thu, 27 Oct 2016 16:38:40 +0300 Subject: [PATCH 5/6] Revert "java doc indentation" This reverts commit c2a4ecd2c6c58b43af049b936b505babddb826bc. --- .../rest/fileplancomponents/RMSiteTests.java | 45 ++----------------- 1 file changed, 4 insertions(+), 41 deletions(-) diff --git a/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java b/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java index 7b09d1433d..8b22ace9ef 100644 --- a/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java +++ b/src/test/java/org/alfresco/rest/fileplancomponents/RMSiteTests.java @@ -11,12 +11,10 @@ */ package org.alfresco.rest.fileplancomponents; -import static org.alfresco.com.site.RMSiteCompliance.DOD5015; import static org.alfresco.com.site.RMSiteCompliance.STANDARD; import static org.alfresco.com.site.RMSiteFields.COMPLIANCE; import static org.alfresco.com.site.RMSiteFields.DESCRIPTION; import static org.alfresco.com.site.RMSiteFields.TITLE; -import static org.alfresco.rest.TestData.ANOTHER_ADMIN; import static org.jglue.fluentjson.JsonBuilderFactory.buildObject; import static org.springframework.http.HttpStatus.CONFLICT; import static org.springframework.http.HttpStatus.CREATED; @@ -53,11 +51,11 @@ public class RMSiteTests extends BaseRestTest @Test ( - description = "Create RM site as admin user with Standard Compliance" + description = "Create RM site as admin user with standard Compliance" ) public void createRMSiteAsAdminUser() throws Exception { - rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); + RestWrapper restWrapper = rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); if (siteRMExist()) { //Delete the RM site @@ -137,6 +135,7 @@ public class RMSiteTests extends BaseRestTest // Get the RM site RMSite rmSite=rmSiteAPI.getSite(); + if (!siteRMExist()) { // Verify the status code @@ -151,42 +150,6 @@ public class RMSiteTests extends BaseRestTest assertEquals(rmSite.getCompliance(), STANDARD); assertEquals(rmSite.getVisibility(), PUBLIC); } + } - - @Test - ( - description = "Create RM site as an admin user created with DOD compliance" - ) - public void createRMSiteAsAnotherAdminUser() throws Exception - { - rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); - if (siteRMExist()) - { - //Delete the RM site - rmSiteAPI.deleteRMSite(); - } - - rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.createRandomTestUser(ANOTHER_ADMIN)); - // Build the RM site properties - JsonObject rmSiteProperties = buildObject(). - add(TITLE, RM_TITLE). - add(DESCRIPTION, RM_DESCRIPTION). - add(COMPLIANCE, DOD5015.toString()). - getJson(); - - // Create the RM site - RMSite rmSite = rmSiteAPI.createRMSite(rmSiteProperties); - - // Verify the status code - rmSiteAPI.usingRestWrapper().assertStatusCodeIs(CREATED); - - // Verify the returned file plan component - assertEquals(rmSite.getId(), RM_ID); - assertEquals(rmSite.getTitle(), RM_TITLE); - assertEquals(rmSite.getDescription(), RM_DESCRIPTION); - assertEquals(rmSite.getCompliance(), DOD5015); - assertEquals(rmSite.getVisibility(), PUBLIC); - } - - } From 5c5236c01c8fd229ef54c8e887f9c34d1e9233ff Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Thu, 27 Oct 2016 16:41:43 +0300 Subject: [PATCH 6/6] java doc indentation --- .../java/org/alfresco/rest/BaseRestTest.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/test/java/org/alfresco/rest/BaseRestTest.java b/src/test/java/org/alfresco/rest/BaseRestTest.java index ae97287230..522ef3f240 100644 --- a/src/test/java/org/alfresco/rest/BaseRestTest.java +++ b/src/test/java/org/alfresco/rest/BaseRestTest.java @@ -83,10 +83,9 @@ public class BaseRestTest extends RestTest createRMSiteIfNotExists(); } /** - * Helper method to create the RM Site via the POST request - * if the site doesn't exist - */ - + * Helper method to create the RM Site via the POST request + * if the site doesn't exist + */ public void createRMSiteIfNotExists() throws Exception { final String RM_TITLE = "Records Management"; @@ -96,11 +95,11 @@ public class BaseRestTest extends RestTest { rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser()); // Build the RM site properties - JsonObject rmSiteProperties = buildObject(). - add(TITLE, RM_TITLE). - add(DESCRIPTION, RM_DESCRIPTION). - add(COMPLIANCE, STANDARD.toString()). - getJson(); + JsonObject rmSiteProperties = buildObject() + .add(TITLE, RM_TITLE) + .add(DESCRIPTION, RM_DESCRIPTION) + .add(COMPLIANCE, STANDARD.toString()) + .getJson(); // Create the RM site rmSiteAPI.createRMSite(rmSiteProperties); @@ -111,8 +110,8 @@ public class BaseRestTest extends RestTest /** - * Check the RM site exist via the GET request - */ + * Check the RM site exist via the GET request + */ public boolean siteRMExist() throws Exception { RestWrapper restWrapper=rmSiteAPI.usingRestWrapper().authenticateUser(dataUser.getAdminUser());