diff --git a/e2e-test/java/org/alfresco/rest/people/GetSiteMembershipInformationCoreTests.java b/e2e-test/java/org/alfresco/rest/people/GetSitesMembershipInformationCoreTests.java similarity index 92% rename from e2e-test/java/org/alfresco/rest/people/GetSiteMembershipInformationCoreTests.java rename to e2e-test/java/org/alfresco/rest/people/GetSitesMembershipInformationCoreTests.java index c315b3424..07878cf0a 100644 --- a/e2e-test/java/org/alfresco/rest/people/GetSiteMembershipInformationCoreTests.java +++ b/e2e-test/java/org/alfresco/rest/people/GetSitesMembershipInformationCoreTests.java @@ -13,7 +13,7 @@ import org.springframework.http.HttpStatus; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; -public class GetSiteMembershipInformationCoreTests extends RestTest +public class GetSitesMembershipInformationCoreTests extends RestTest { private SiteModel publicSiteModel; private SiteModel moderatedSiteModel; @@ -48,7 +48,10 @@ public class GetSiteMembershipInformationCoreTests extends RestTest restClient.authenticateUser(userModel).withCoreAPI().usingUser(new UserModel("invalidPersonId", "password")).getSitesMembershipInformation() .assertThat().entriesListIsEmpty(); restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND); - restClient.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, "invalidPersonId")); + restClient.assertLastError().containsErrorKey(RestErrorModel.ENTITY_NOT_FOUND_ERRORKEY) + .containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, "invalidPersonId")) + .descriptionURLIs(RestErrorModel.RESTAPIEXPLORER) + .stackTraceIs(RestErrorModel.STACKTRACE); } @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.CORE }) @@ -89,7 +92,10 @@ public class GetSiteMembershipInformationCoreTests extends RestTest restClient.withParams("skipCount=test").withCoreAPI().usingAuthUser().getSitesMembershipInformation().assertThat().entriesListIsEmpty(); restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST); - restClient.assertLastError().containsSummary(String.format(RestErrorModel.INVALID_SKIPCOUNT, "test")); + restClient.assertLastError().containsErrorKey(String.format(RestErrorModel.INVALID_SKIPCOUNT, "test")) + .containsSummary(String.format(RestErrorModel.INVALID_SKIPCOUNT, "test")) + .descriptionURLIs(RestErrorModel.RESTAPIEXPLORER) + .stackTraceIs(RestErrorModel.STACKTRACE); } @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.CORE }) diff --git a/e2e-test/java/org/alfresco/rest/people/GetSitesMembershipInformationFullTests.java b/e2e-test/java/org/alfresco/rest/people/GetSitesMembershipInformationFullTests.java new file mode 100644 index 000000000..9abef3e7e --- /dev/null +++ b/e2e-test/java/org/alfresco/rest/people/GetSitesMembershipInformationFullTests.java @@ -0,0 +1,216 @@ +package org.alfresco.rest.people; + +import org.alfresco.rest.RestTest; +import org.alfresco.rest.model.RestSiteMembershipModelsCollection; +import org.alfresco.rest.model.RestTaskModel; +import org.alfresco.utility.constants.UserRole; +import org.alfresco.utility.exception.DataPreparationException; +import org.alfresco.utility.model.SiteModel; +import org.alfresco.utility.model.TestGroup; +import org.alfresco.utility.model.UserModel; +import org.alfresco.utility.testrail.ExecutionType; +import org.alfresco.utility.testrail.annotation.TestRail; +import org.springframework.http.HttpStatus; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +/** + * + * @author Cristina Axinte + * + */ +public class GetSitesMembershipInformationFullTests extends RestTest +{ + private SiteModel publicSiteModel; + private SiteModel moderatedSiteModel; + private SiteModel privateSiteModel; + private SiteModel anotherUserSite; + private UserModel userModel, adminUser, anotherUserModel; + private RestSiteMembershipModelsCollection sitesMembershipInformation; + + @BeforeClass(alwaysRun = true) + public void dataPreparation() throws DataPreparationException + { + adminUser = dataUser.getAdminUser(); + anotherUserSite = dataSite.usingUser(adminUser).createPublicRandomSite(); + userModel = dataUser.createRandomTestUser(); + anotherUserModel = dataUser.createRandomTestUser(); + publicSiteModel = dataSite.usingUser(adminUser).createPublicRandomSite(); + dataUser.addUserToSite(userModel, publicSiteModel, UserRole.SiteCollaborator); + moderatedSiteModel = dataSite.usingUser(adminUser).createModeratedRandomSite(); + dataUser.addUserToSite(userModel, moderatedSiteModel, UserRole.SiteConsumer); + privateSiteModel = dataSite.usingUser(userModel).createPrivateRandomSite(); + dataUser.addUserToSite(anotherUserModel, anotherUserSite, UserRole.SiteCollaborator); + } + + @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.FULL }) + @TestRail(section = { TestGroup.REST_API, TestGroup.PEOPLE }, executionType = ExecutionType.REGRESSION, + description = "Verify if get site membership information request returns status code 200 for valid properties parameter") + public void getSiteMembershipInformationUsingPropertiesParameter() throws Exception + { + sitesMembershipInformation = restClient.authenticateUser(userModel).withParams("properties=id").withCoreAPI().usingAuthUser().getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListIsNotEmpty().getPagination().assertThat().field("count").is("3"); + sitesMembershipInformation.assertThat().entriesListContains("id", publicSiteModel.getId()) + .and().entriesListContains("id", moderatedSiteModel.getId()) + .and().entriesListContains("id", privateSiteModel.getId()) + .and().entriesListDoesNotContain("site") + .and().entriesListDoesNotContain("role") + .and().entriesListDoesNotContain("guid"); + } + + @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.FULL }) + @TestRail(section = { TestGroup.REST_API, TestGroup.PEOPLE }, executionType = ExecutionType.REGRESSION, + description = "Verify if get site membership information request returns status code 200 for order ASC by parameter") + public void getSiteMembershipInformationUsingOrderAscByParameter() throws Exception + { + sitesMembershipInformation = restClient.authenticateUser(userModel).withParams("orderBy=id ASC").withCoreAPI().usingAuthUser().getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListIsNotEmpty().getPagination().assertThat().field("count").is("3"); + sitesMembershipInformation.assertThat().entriesListIsSortedAscBy("id"); + } + + @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.FULL }) + @TestRail(section = { TestGroup.REST_API, TestGroup.PEOPLE }, executionType = ExecutionType.REGRESSION, + description = "Verify if get site membership information request returns status code 200 for order DESC by parameter") + public void getSiteMembershipInformationUsingOrderDescByParameter() throws Exception + { + sitesMembershipInformation = restClient.authenticateUser(userModel).withParams("orderBy=id Desc").withCoreAPI().usingAuthUser().getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListIsNotEmpty().getPagination().assertThat().field("count").is("3"); + sitesMembershipInformation.assertThat().entriesListIsSortedDescBy("id"); + } + + @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.FULL }) + @TestRail(section = { TestGroup.REST_API, TestGroup.PEOPLE }, executionType = ExecutionType.REGRESSION, + description = "Verify if get site membership information request returns status code 200 for order by parameter") + public void getSiteMembershipInformationUsingOrderByParameter() throws Exception + { + sitesMembershipInformation = restClient.authenticateUser(userModel).withParams("orderBy=id").withCoreAPI().usingAuthUser().getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListIsNotEmpty().getPagination().assertThat().field("count").is("3"); + sitesMembershipInformation.assertThat().entriesListIsSortedAscBy("id"); + } + + @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.FULL }) + @TestRail(section = { TestGroup.REST_API, TestGroup.PEOPLE }, executionType = ExecutionType.REGRESSION, + description = "Verify if get site membership information request returns status code 200 for order by role parameter") + public void getSiteMembershipInformationUsingOrderByRoleParameter() throws Exception + { + sitesMembershipInformation = restClient.authenticateUser(userModel).withParams("orderBy=role").withCoreAPI().usingAuthUser().getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListIsNotEmpty().getPagination().assertThat().field("count").is("3"); + sitesMembershipInformation.assertThat().entriesListIsSortedAscBy("role"); + } + + @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.FULL }) + @TestRail(section = { TestGroup.REST_API, TestGroup.PEOPLE }, executionType = ExecutionType.REGRESSION, + description = "Verify if user gets site membership information of another user successfully") + public void userCanGetSiteMembershipInformationOfAnotherUser() throws Exception + { + sitesMembershipInformation = restClient.authenticateUser(userModel).withCoreAPI().usingUser(anotherUserModel).getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListIsNotEmpty().getPagination().assertThat().field("count").is("1"); + sitesMembershipInformation.getEntries().get(0).onModel() + .assertThat().field("site.visibility").is(anotherUserSite.getVisibility().toString()) + .and().field("site.guid").is(anotherUserSite.getGuid()) + .and().field("site.description").is(anotherUserSite.getDescription()) + .and().field("site.id").is(anotherUserSite.getId()) + .and().field("site.preset").is("site-dashboard") + .and().field("site.title").is(anotherUserSite.getTitle()) + .and().field("id").is(anotherUserSite.getId()) + .and().field("guid").is(anotherUserSite.getGuid()) + .and().field("role").is(UserRole.SiteCollaborator.toString()); + } + + @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.FULL }) + @TestRail(section = { TestGroup.REST_API, TestGroup.PEOPLE }, executionType = ExecutionType.REGRESSION, + description = "Verify if get site membership information request returns status code 200 for relations parameter") + public void getSiteMembershipInformationUsingRelationsParameter() throws Exception + { + sitesMembershipInformation = restClient.authenticateUser(userModel).withParams("relations=site-membership-requests").withCoreAPI().usingAuthUser().getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListIsNotEmpty().getPagination().assertThat().field("count").is("3"); + } + + @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.FULL }) + @TestRail(section = { TestGroup.REST_API, TestGroup.PEOPLE }, executionType = ExecutionType.REGRESSION, + description = "Verify get site membership information request when a site membership request is rejected") + public void getSiteMembershipInformationWhenASiteRequestIsRejected() throws Exception + { + UserModel userWithRequests = dataUser.createRandomTestUser(); + + restClient.authenticateUser(userWithRequests).withCoreAPI().usingAuthUser().addSiteMembershipRequest(moderatedSiteModel); + restClient.assertStatusCodeIs(HttpStatus.CREATED); + + sitesMembershipInformation = restClient.authenticateUser(adminUser).withCoreAPI().usingUser(userWithRequests).getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListIsEmpty() + .and().paginationField("count").is("0"); + + RestTaskModel taskModel = restClient.authenticateUser(userWithRequests).withWorkflowAPI().getTasks().getTaskModelByDescription(moderatedSiteModel); + workflow.approveSiteMembershipRequest(adminUser.getUsername(), adminUser.getPassword(), taskModel.getId(), false, "Rejected"); + + sitesMembershipInformation = restClient.authenticateUser(adminUser).withCoreAPI().usingUser(userWithRequests).getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListIsEmpty() + .and().paginationField("count").is("0"); + } + + @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.FULL }) + @TestRail(section = { TestGroup.REST_API, TestGroup.PEOPLE }, executionType = ExecutionType.REGRESSION, + description = "Verify get site membership information request when a site membership request is approved") + public void getSiteMembershipInformationWhenASiteRequestIsAppropved() throws Exception + { + UserModel userWithRequests = dataUser.createRandomTestUser(); + + restClient.authenticateUser(userWithRequests).withCoreAPI().usingAuthUser().addSiteMembershipRequest(moderatedSiteModel); + restClient.assertStatusCodeIs(HttpStatus.CREATED); + + sitesMembershipInformation = restClient.authenticateUser(adminUser).withCoreAPI().usingUser(userWithRequests).getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListIsEmpty() + .and().paginationField("count").is("0"); + + RestTaskModel taskModel = restClient.authenticateUser(userWithRequests).withWorkflowAPI().getTasks().getTaskModelByDescription(moderatedSiteModel); + workflow.approveSiteMembershipRequest(adminUser.getUsername(), adminUser.getPassword(), taskModel.getId(), true, "Approve"); + + sitesMembershipInformation = restClient.authenticateUser(adminUser).withCoreAPI().usingUser(userWithRequests).getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListIsNotEmpty() + .and().entriesListContains("role", UserRole.SiteConsumer.toString()) + .and().entriesListContains("guid", moderatedSiteModel.getGuid()) + .and().entriesListContains("id", moderatedSiteModel.getId()) + .and().paginationField("count").is("1"); + } + + @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.FULL }) + @TestRail(section = { TestGroup.REST_API, TestGroup.PEOPLE }, executionType = ExecutionType.REGRESSION, + description = "Verify if get site membership information request returns status code 200 for valid maxItems parameter") + public void getSiteMembershipInformationUsingMaxItemsParameter() throws Exception + { + sitesMembershipInformation = restClient.authenticateUser(userModel).withParams("maxItems=2").withCoreAPI().usingAuthUser().getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListCountIs(2) + .getPagination().assertThat().field("count").is("2") + .and().field("hasMoreItems").is("true") + .and().field("totalItems").is("3") + .and().field("skipCount").is("0") + .and().field("maxItems").is("2"); + } + + @Test(groups = { TestGroup.REST_API, TestGroup.PEOPLE, TestGroup.FULL }) + @TestRail(section = { TestGroup.REST_API, TestGroup.PEOPLE }, executionType = ExecutionType.REGRESSION, + description = "Verify if get site membership information request returns status code 200 for valid skipCount parameter") + public void getSiteMembershipInformationUsingSkipCountParameter() throws Exception + { + sitesMembershipInformation = restClient.authenticateUser(userModel).withParams("skipCount=2").withCoreAPI().usingAuthUser().getSitesMembershipInformation(); + restClient.assertStatusCodeIs(HttpStatus.OK); + sitesMembershipInformation.assertThat().entriesListCountIs(1) + .getPagination().assertThat().field("count").is("1") + .and().field("hasMoreItems").is("false") + .and().field("totalItems").is("3") + .and().field("skipCount").is("2") + .and().field("maxItems").is("100"); + } +}