[REPO-5317] integration test for REPO-5184 and REPO-5185 (#222)

This commit is contained in:
dhrn
2021-02-08 15:48:05 +05:30
committed by GitHub
parent c54abf1b62
commit 08bc7d4599
6 changed files with 1105 additions and 1 deletions

View File

@@ -0,0 +1,280 @@
package org.alfresco.rest.sites.groups;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.core.RestRequest;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.rest.model.RestSiteGroupModel;
import org.alfresco.utility.constants.UserRole;
import org.alfresco.utility.data.DataUser.ListUserWithRoles;
import org.alfresco.utility.model.GroupModel;
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.HttpMethod;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class AddSiteGroupTests extends RestTest
{
private UserModel adminUserModel;
private SiteModel publicSiteModel, moderatedSiteModel;
private ListUserWithRoles publicSiteUsersWithRoles;
private String addMemberJson, addMembersJson;
@BeforeClass(alwaysRun=true)
public void dataPreparation() throws Exception
{
adminUserModel = dataUser.getAdminUser();
publicSiteModel = dataSite.usingUser(adminUserModel).createPublicRandomSite();
moderatedSiteModel = dataSite.usingUser(adminUserModel).createModeratedRandomSite();
publicSiteUsersWithRoles = dataUser.addUsersWithRolesToSite(publicSiteModel,
UserRole.SiteManager,
UserRole.SiteCollaborator,
UserRole.SiteConsumer,
UserRole.SiteContributor);
addMemberJson = "{\"role\":\"%s\",\"id\":\"%s\"}";
addMembersJson = "{\"role\":\"%s\",\"id\":\"%s\"}, {\"role\":\"%s\",\"id\":\"%s\"}";
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that user can not be added to an inexistent site and gets status code 404")
public void notAbleToAddGroupToAnInExistentSite() throws Exception
{
GroupModel group = dataGroup.createRandomGroup();
SiteModel inexistentSite = new SiteModel("inexistentSite");
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(inexistentSite).addSiteGroup(getId(group), UserRole.SiteManager);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, inexistentSite.getId()));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that inexistent group can not be added to site and gets status code 404")
public void notAbleToAddInExistentGroupToSite() throws Exception
{
GroupModel group = new GroupModel("inExistentGroup");
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(publicSiteModel).addSiteGroup(group.getGroupIdentifier(), UserRole.SiteManager);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsErrorKey(RestErrorModel.API_DEFAULT_ERRORKEY)
.containsSummary(String.format("An authority was not found for %s", group.getGroupIdentifier()))
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that user can not add group that is already present and gets status code 409")
public void notAbleToAddGroupThatIsAlreadyAPresent() throws Exception
{
GroupModel group = dataGroup.createRandomGroup();
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(moderatedSiteModel).addSiteGroup(getId(group), UserRole.SiteManager);
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(moderatedSiteModel).addSiteGroup(getId(group), UserRole.SiteManager);
restClient.assertStatusCodeIs(HttpStatus.CONFLICT).assertLastError().containsSummary(String.format(RestErrorModel.ALREADY_Site_MEMBER, getId(group), moderatedSiteModel.getId()));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that several groups with different roles can be added once in a row to a site and gets status code 201")
public void addSeveralGroupsWithDifferentRolesToASite() throws Exception
{
GroupModel firstGroup = dataGroup.createRandomGroup();
GroupModel secondGroup = dataGroup.createRandomGroup();
restClient.authenticateUser(adminUserModel).withCoreAPI();
String json = String.format(addMembersJson, UserRole.SiteContributor, getId(firstGroup), UserRole.SiteCollaborator, getId(secondGroup));
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, json, "sites/{siteId}/group-members?{parameters}", publicSiteModel.getId(), restClient.getParameters());
restClient.processModel(RestSiteGroupModel.class, request);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that several groups with same roles can be added once in a row to a site and gets status code 201")
public void addSeveralGroupsWithSameRolesToASite() throws Exception
{
GroupModel firstGroup = dataGroup.createRandomGroup();
GroupModel secondGroup = dataGroup.createRandomGroup();
restClient.authenticateUser(adminUserModel).withCoreAPI();
String json = String.format(addMembersJson, UserRole.SiteCollaborator, getId(firstGroup), UserRole.SiteCollaborator, getId(secondGroup));
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, json, "sites/{siteId}/group-members?{parameters}", publicSiteModel.getId(), restClient.getParameters());
restClient.processModel(RestSiteGroupModel.class, request);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that several users that are already added to the site can not be added once in a row and gets status code 400")
public void addSeveralGroupsThatAreAlreadyAddedToASite() throws Exception
{
GroupModel firstGroup = dataGroup.createRandomGroup();
GroupModel secondGroup = dataGroup.createRandomGroup();
restClient.authenticateUser(adminUserModel).withCoreAPI();
String json = String.format(addMembersJson, UserRole.SiteCollaborator, getId(firstGroup), UserRole.SiteCollaborator, getId(secondGroup));
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, json, "sites/{siteId}/group-members?{parameters}", publicSiteModel.getId(), restClient.getParameters());
restClient.processModel(RestSiteGroupModel.class, request);
restClient.processModel(RestSiteGroupModel.class, request);
restClient.assertStatusCodeIs(HttpStatus.CONFLICT).assertLastError().containsSummary(String.format(RestErrorModel.ALREADY_Site_MEMBER, getId(firstGroup), publicSiteModel.getId())) ;
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Add new site group membership request by providing an empty body")
public void addSiteGroupsUsingEmptyBody() throws Exception
{
restClient.authenticateUser(adminUserModel).withCoreAPI();
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, "", "sites/{siteId}/group-members?{parameters}", publicSiteModel.getId(), restClient.getParameters());
restClient.processModel(RestSiteGroupModel.class, request);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError()
.containsSummary(String.format(RestErrorModel.NO_CONTENT, "No content to map due to end-of-input"))
.containsErrorKey(String.format(RestErrorModel.NO_CONTENT, "No content to map due to end-of-input"))
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Check lower and upper case letters for role field")
public void checkLowerUpperCaseLettersForRole() throws Exception
{
GroupModel group = dataGroup.createRandomGroup();
String json = String.format(addMemberJson, "SITEMANAGER", getId(group));
restClient.authenticateUser(adminUserModel).withCoreAPI();
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, json, "sites/{siteId}/group-members?{parameters}", publicSiteModel.getId(), restClient.getParameters());
restClient.processModel(RestSiteGroupModel.class, request);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError()
.containsSummary(String.format("An authority was not found for GROUP_site_%s_%s", publicSiteModel.getId(), "SITEMANAGER"))
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
json = String.format(addMemberJson, "sitemanager", getId(group));
restClient.authenticateUser(adminUserModel).withCoreAPI();
request = RestRequest.requestWithBody(HttpMethod.POST, json, "sites/{siteId}/group-members?{parameters}", publicSiteModel.getId(), restClient.getParameters());
restClient.processModel(RestSiteGroupModel.class, request);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError()
.containsSummary(String.format("An authority was not found for GROUP_site_%s_%s", publicSiteModel.getId(), "sitemanager"))
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Check empty value for user role")
public void checkEmptyValueForRole() throws Exception
{
GroupModel group = dataGroup.createRandomGroup();
String json = String.format(addMemberJson, "", getId(group));
restClient.authenticateUser(adminUserModel).withCoreAPI();
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, json, "sites/{siteId}/group-members?{parameters}", publicSiteModel.getId(), restClient.getParameters());
restClient.processModel(RestSiteGroupModel.class, request);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError()
.containsErrorKey(String.format(RestErrorModel.NO_CONTENT, "N/A"))
.containsSummary(String.format(RestErrorModel.NO_CONTENT, "N/A"))
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.SANITY })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.SANITY,
description = "Verify that manager is able to add site group membership and gets status code CREATED (201)")
public void managerIsAbleToAddSiteGroup() throws Exception
{
GroupModel group = dataGroup.createRandomGroup();
restClient.authenticateUser(publicSiteUsersWithRoles.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(publicSiteModel).addSiteGroup(getId(group), UserRole.SiteCollaborator)
.assertThat()
.field("id").is(getId(group))
.and()
.field("role").is(UserRole.SiteCollaborator);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that site collaborator is not able to add site group membership and gets status code FORBIDDEN (403)")
public void collaboratorIsNotAbleToAddSiteGroup() throws Exception
{
GroupModel group = dataGroup.createRandomGroup();
restClient.authenticateUser(publicSiteUsersWithRoles.getOneUserWithRole(UserRole.SiteCollaborator))
.withCoreAPI().usingSite(publicSiteModel).addSiteGroup(getId(group), UserRole.SiteCollaborator);
restClient.assertLastError().containsSummary("The current user does not have permissions to modify the membership details of the site");
restClient.assertStatusCodeIs(HttpStatus.UNPROCESSABLE_ENTITY);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION})
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that site contributor is not able to add site group membership and gets status code FORBIDDEN (403)")
public void contributorIsNotAbleToAddSiteGroup() throws Exception
{
GroupModel group = dataGroup.createRandomGroup();
restClient.authenticateUser(publicSiteUsersWithRoles.getOneUserWithRole(UserRole.SiteContributor))
.withCoreAPI().usingSite(publicSiteModel).addSiteGroup(getId(group), UserRole.SiteContributor);
restClient.assertLastError().containsSummary("The current user does not have permissions to modify the membership details of the site");
restClient.assertStatusCodeIs(HttpStatus.UNPROCESSABLE_ENTITY);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that site consumer is not able to add site group membership and gets status code FORBIDDEN (403)")
public void consumerIsNotAbleToAddSiteGroup() throws Exception
{
GroupModel group = dataGroup.createRandomGroup();
restClient.authenticateUser(publicSiteUsersWithRoles.getOneUserWithRole(UserRole.SiteConsumer))
.withCoreAPI().usingSite(publicSiteModel).addSiteGroup(getId(group), UserRole.SiteConsumer);;
restClient.assertLastError().containsSummary("The current user does not have permissions to modify the membership details of the site");
restClient.assertStatusCodeIs(HttpStatus.UNPROCESSABLE_ENTITY);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.SANITY })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.SANITY,
description = "Verify that admin user is able to add site group membership and gets status code CREATED (201)")
public void adminIsAbleToAddSiteGroup() throws Exception
{
GroupModel group = dataGroup.createRandomGroup();
restClient.authenticateUser(adminUserModel)
.withCoreAPI().usingSite(publicSiteModel).addSiteGroup(getId(group), UserRole.SiteConsumer)
.assertThat()
.field("id").is(getId(group))
.and()
.field("role").is(UserRole.SiteConsumer);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.SANITY })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.SANITY,
description = "Verify that unauthenticated user is not able to add site group membership")
public void unauthenticatedUserIsNotAuthorizedToAddSiteGroup() throws Exception
{
GroupModel group = dataGroup.createRandomGroup();
UserModel userModel = dataUser.createRandomTestUser();
userModel.setPassword("user wrong password");
dataUser.addUserToSite(userModel, publicSiteModel, UserRole.SiteManager);
restClient.authenticateUser(userModel)
.withCoreAPI().usingSite(publicSiteModel).addSiteGroup(getId(group), UserRole.SiteCollaborator);
restClient.assertStatusCodeIs(HttpStatus.UNAUTHORIZED);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that manager can add another user as manager to a public site and gets status code CREATED (201)")
public void addManagerToPublicSite() throws Exception
{
GroupModel group = dataGroup.createRandomGroup();
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(publicSiteModel).addSiteGroup(getId(group), UserRole.SiteManager)
.assertThat()
.field("id").is(getId(group))
.and()
.field("role").is(UserRole.SiteManager);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
}
String getId(GroupModel group) {
return "GROUP_" + group.getGroupIdentifier();
}
}

View File

@@ -0,0 +1,135 @@
package org.alfresco.rest.sites.groups;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.exception.JsonToModelConversionException;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.utility.constants.UserRole;
import org.alfresco.utility.data.DataUser;
import org.alfresco.utility.exception.DataPreparationException;
import org.alfresco.utility.model.GroupModel;
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;
public class GetSiteGroupTests extends RestTest
{
private UserModel adminUser;
private SiteModel publicSiteModel;
private DataUser.ListUserWithRoles usersWithRoles;
private GroupModel manager, consumer;
@BeforeClass(alwaysRun = true)
public void dataPreparation() throws DataPreparationException
{
adminUser = dataUser.getAdminUser();
publicSiteModel = dataSite.usingUser(adminUser).createPublicRandomSite();
usersWithRoles = dataUser.addUsersWithRolesToSite(publicSiteModel, UserRole.SiteManager, UserRole.SiteCollaborator, UserRole.SiteConsumer,
UserRole.SiteContributor);
consumer = dataGroup.createRandomGroup();
dataGroup.addListOfUsersToGroup(consumer, dataUser.createRandomTestUser());
manager = dataGroup.createRandomGroup();
dataGroup.addListOfUsersToGroup(consumer, dataUser.createRandomTestUser());
restClient.authenticateUser(adminUser).withCoreAPI().usingSite(publicSiteModel).addSiteGroup(getId(manager), UserRole.SiteManager);
restClient.authenticateUser(adminUser).withCoreAPI().usingSite(publicSiteModel).addSiteGroup(getId(consumer), UserRole.SiteConsumer);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = { TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify admin user can get site group and gets status code OK (200)")
public void getSiteGroupWithAdminUser() throws Exception
{
restClient.authenticateUser(adminUser);
restClient.withCoreAPI().usingSite(publicSiteModel).getSiteGroup(getId(manager))
.and().field("id").is(getId(manager))
.and().field("role").is(UserRole.SiteManager);
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.SANITY })
@TestRail(section = { TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.SANITY,
description = "Failed authentication get site group call returns status code 401")
public void unauthenticatedUserIsNotAuthorizedToRetrieveSiteGroup() throws JsonToModelConversionException, Exception
{
UserModel inexistentUser = new UserModel("inexistent user", "inexistent password");
restClient.authenticateUser(inexistentUser).withCoreAPI().usingSite(publicSiteModel).getSiteGroup(getId(consumer));
restClient.assertStatusCodeIs(HttpStatus.UNAUTHORIZED);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = { TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify Manager role doesn't get a site group of inexistent site and status code is Not Found (404)")
public void getSiteGroupOfInexistentSite() throws Exception
{
SiteModel invalidSite = new SiteModel("invalidSite");
restClient.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(invalidSite).getSiteGroup(getId(consumer));
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_WAS_NOT_FOUND, invalidSite.getId()));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = { TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify Manager role doesn't get non site group of inexistent site and status code is Not Found (404)")
public void getSiteGroupForNonSiteGroup() throws Exception
{
GroupModel nonGroup = dataGroup.createRandomGroup();
restClient.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(publicSiteModel).getSiteGroup(getId(nonGroup));
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
.assertLastError().containsSummary(String.format("Given authority is not a member of the site"));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = { TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify Manager role doesn't get not existing site group and status code is Not Found (404)")
public void getSiteGroupForInexistentSiteGroup() throws Exception
{
GroupModel inexistentGroup = new GroupModel("inexistentGroup");
restClient.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(publicSiteModel).getSiteGroup(getId(inexistentGroup));
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format("An authority was not found for %s", getId(inexistentGroup)));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify Manager role can get site group for empty siteId")
public void getSiteGroupForEmptySiteId() throws Exception
{
SiteModel emptySite = new SiteModel("");
restClient.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(emptySite).getSiteGroup(getId(consumer));
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_WAS_NOT_FOUND, ""));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = { TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify Manager role gets site groups with Manager role and status code is OK (200)")
public void getSiteGroupWithManagerRole() throws Exception
{
GroupModel anotherManager = dataGroup.createRandomGroup();
restClient.withCoreAPI().usingSite(publicSiteModel).addSiteGroup(getId(anotherManager), UserRole.SiteManager);
restClient.withCoreAPI().usingSite(publicSiteModel).getSiteGroup(getId(anotherManager))
.assertThat().field("id").is(getId(anotherManager))
.and().field("role").is(UserRole.SiteManager);
restClient.assertStatusCodeIs(HttpStatus.OK);
}
String getId(GroupModel group) {
return "GROUP_" + group.getGroupIdentifier();
}
}

View File

@@ -0,0 +1,275 @@
package org.alfresco.rest.sites.groups;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.model.*;
import org.alfresco.utility.constants.UserRole;
import org.alfresco.utility.data.DataUser;
import org.alfresco.utility.model.GroupModel;
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;
import java.util.ArrayList;
import java.util.List;
public class GetSiteGroupsTests extends RestTest
{
private SiteModel publicSite, moderatedSite;
private List<GroupModel> publicSiteGroups, moderatedSiteGroups;
private DataUser.ListUserWithRoles publicSiteUsers;
private UserModel siteCreator;
private UserModel regularUser;
@BeforeClass(alwaysRun=true)
public void dataPreparation() throws Exception
{
siteCreator = dataUser.createRandomTestUser();
regularUser = dataUser.createRandomTestUser();
publicSite = dataSite.usingUser(siteCreator).createPublicRandomSite();
moderatedSite = dataSite.usingUser(siteCreator).createModeratedRandomSite();
publicSiteUsers = dataUser.addUsersWithRolesToSite(publicSite,UserRole.SiteManager, UserRole.SiteCollaborator, UserRole.SiteConsumer, UserRole.SiteContributor);
publicSiteGroups = addGroupToSite(publicSite,UserRole.SiteManager, UserRole.SiteCollaborator, UserRole.SiteConsumer, UserRole.SiteContributor);
moderatedSiteGroups = addGroupToSite(moderatedSite, UserRole.SiteManager, UserRole.SiteCollaborator, UserRole.SiteConsumer, UserRole.SiteContributor);
RestSiteGroupModelsCollection siteGroups = restClient.authenticateUser(siteCreator).withCoreAPI().usingSite(moderatedSite).usingParams("properties=role,id").getSiteGroups();
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.SANITY })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.SANITY,
description = "Verify Manager role gets site groups and gets status code OK (200)")
public void getSiteGroupsWithManagerRole() throws Exception
{
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteManager))
.withCoreAPI().usingSite(publicSite).getSiteGroups()
.assertThat()
.entriesListCountIs(4)
.and().entriesListContains("id", getId(publicSiteGroups.get(0)))
.and().entriesListContains("role", UserRole.SiteManager.name())
.and().entriesListContains("id", getId(publicSiteGroups.get(1)))
.and().entriesListContains("role", UserRole.SiteCollaborator.name())
.and().entriesListContains("id", getId(publicSiteGroups.get(2)))
.and().entriesListContains("role", UserRole.SiteConsumer.name())
.and().entriesListContains("id", getId(publicSiteGroups.get(3)))
.and().entriesListContains("role", UserRole.SiteContributor.name());
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify Collaborator role gets site groups and gets status code OK (200)")
public void getSiteGroupsWithCollaboratorRole() throws Exception
{
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteCollaborator))
.withCoreAPI().usingSite(publicSite).getSiteGroups()
.assertThat()
.entriesListCountIs(4)
.and().entriesListContains("id", getId(publicSiteGroups.get(1)))
.and().entriesListContains("role", UserRole.SiteCollaborator.name());
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify Contributor role gets site groups and gets status code OK (200)")
public void getSiteGroupsWithContributorRole() throws Exception
{
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteContributor))
.withCoreAPI().usingSite(publicSite).getSiteGroups()
.assertThat()
.entriesListCountIs(4)
.and().entriesListContains("id", getId(publicSiteGroups.get(3)))
.and().entriesListContains("role", UserRole.SiteContributor.name());
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify Consumer role gets site groups and gets status code OK (200)")
public void getSiteGroupsWithConsumerRole() throws Exception
{
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteConsumer))
.withCoreAPI().usingSite(publicSite).getSiteGroups()
.assertThat()
.entriesListCountIs(4)
.and().entriesListContains("id", getId(publicSiteGroups.get(2)))
.and().entriesListContains("role", UserRole.SiteConsumer.name());
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify admin user gets site groups and gets status code OK (200)")
public void getSiteGroupsWithAdminUser() throws Exception
{
restClient.authenticateUser(dataUser.getAdminUser())
.withCoreAPI().usingSite(publicSite).getSiteGroups()
.assertThat()
.entriesListCountIs(4)
.and().entriesListContains("id", getId(publicSiteGroups.get(0)))
.and().entriesListContains("role", UserRole.SiteManager.name());
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.SANITY })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.SANITY,
description = "Failed authentication get site groups call returns status code 401")
public void unauthenticatedUserIsNotAuthorizedToRetrieveSiteGroups() throws Exception
{
UserModel userModel = dataUser.createRandomTestUser();
userModel.setPassword("user wrong password");
dataUser.addUserToSite(userModel, publicSite, UserRole.SiteManager);
restClient.authenticateUser(userModel).withCoreAPI().usingSite(publicSite).getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.UNAUTHORIZED);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify get site members call returns status code 404 if siteId does not exist")
public void checkStatusCodeForNonExistentSiteId() throws Exception
{
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteContributor)).withCoreAPI()
.usingSite("NonExistentSiteId").getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.UNPROCESSABLE_ENTITY)
.assertLastError().containsSummary(String.format("Site %s does not exist", "NonExistentSiteId"));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify get site groups call returns status code 400 for invalid maxItems")
public void checkStatusCodeForInvalidMaxItems() throws Exception
{
restClient.authenticateUser(regularUser).withParams("maxItems=0").withCoreAPI().usingSite(publicSite).getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
.assertLastError().containsSummary(RestErrorModel.ONLY_POSITIVE_VALUES_MAXITEMS)
.containsErrorKey(RestErrorModel.ONLY_POSITIVE_VALUES_MAXITEMS)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
restClient.withParams("maxItems=A").withCoreAPI().usingSite(publicSite).getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
.assertLastError().containsSummary(String.format(RestErrorModel.INVALID_MAXITEMS, "A"));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify get site groups call returns status code 400 for invalid skipCount ")
public void checkStatusCodeForInvalidSkipCount() throws Exception
{
restClient.authenticateUser(regularUser).withParams("skipCount=A")
.withCoreAPI().usingSite(publicSite).getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
.assertLastError().containsSummary(String.format(RestErrorModel.INVALID_SKIPCOUNT, "A"));
restClient.withParams("skipCount=-1")
.withCoreAPI().usingSite(publicSite).getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
.assertLastError().containsSummary(RestErrorModel.NEGATIVE_VALUES_SKIPCOUNT);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if any user gets public site groups and status code is 200")
public void getPublicSiteGroups() throws Exception
{
RestSiteGroupModelsCollection siteGroups = restClient.authenticateUser(regularUser).withCoreAPI().usingSite(publicSite).getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.OK);
siteGroups.assertThat().entriesListCountIs(4).assertThat()
.entriesListContains("id", getId(publicSiteGroups.get(0)))
.and().entriesListContains("id", getId(publicSiteGroups.get(1)))
.and().entriesListContains("id", getId(publicSiteGroups.get(2)))
.and().entriesListContains("id", getId(publicSiteGroups.get(3)))
.and().paginationField("count").is("4");
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if any user gets moderated site groups and status code is 200")
public void getModeratedSiteGroups() throws Exception
{
RestSiteGroupModelsCollection siteGroups = restClient.authenticateUser(regularUser).withCoreAPI().usingSite(moderatedSite).getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.OK);
siteGroups.assertThat().entriesListCountIs(4).assertThat()
.entriesListContains("id", getId(moderatedSiteGroups.get(0))).and()
.entriesListContains("id", getId(moderatedSiteGroups.get(1))).and()
.entriesListContains("id", getId(moderatedSiteGroups.get(2))).and()
.entriesListContains("id", getId(moderatedSiteGroups.get(3))).and()
.paginationField("count").is("4");
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if any user gets moderated site groups with properties parameter applied and status code is 200")
public void getModeratedSiteGroupsUsingPropertiesParameter() throws Exception
{
RestSiteGroupModelsCollection siteGroups = restClient.authenticateUser(siteCreator).withCoreAPI().usingSite(moderatedSite).usingParams("properties=role,id").getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.OK);
siteGroups.assertThat().entriesListCountIs(4)
.and().entriesListDoesNotContain("person")
.and().entriesListContains("role", UserRole.SiteManager.toString())
.and().entriesListContains("id", getId(moderatedSiteGroups.get(0)))
.and().entriesListContains("role", UserRole.SiteContributor.toString())
.and().entriesListContains("id", getId(moderatedSiteGroups.get(1)))
.and().entriesListContains("role", UserRole.SiteCollaborator.toString())
.and().entriesListContains("id", getId(moderatedSiteGroups.get(2)))
.and().entriesListContains("role", UserRole.SiteConsumer.toString())
.and().entriesListContains("id", getId(moderatedSiteGroups.get(3)));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if any user gets moderated site groups with skipCount parameter applied")
public void getModeratedSiteGroupsUsingSkipCountParameter() throws Exception
{
RestSiteGroupModelsCollection siteGroups = restClient.authenticateUser(siteCreator).withCoreAPI().usingSite(moderatedSite).usingParams("skipCount=2").getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.OK);
siteGroups.assertThat().paginationField("count").is("2");
siteGroups.assertThat().paginationField("skipCount").is("2");
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if any user gets moderated site groups with high skipCount parameter applied")
public void getModeratedSiteGroupsUsingHighSkipCountParameter() throws Exception
{
RestSiteGroupModelsCollection siteGroups = restClient.authenticateUser(siteCreator).withCoreAPI().usingSite(moderatedSite).usingParams("skipCount=100").getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.OK);
siteGroups.assertThat().paginationField("count").is("0");
siteGroups.assertThat().paginationField("skipCount").is("100");
siteGroups.assertThat().entriesListIsEmpty();
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if any user gets moderated site groups with maxItems parameter applied and check all pagination fields")
public void getModeratedSiteGroupsUsingMaxItemsParameter() throws Exception
{
RestSiteGroupModelsCollection siteGroups = restClient.authenticateUser(siteCreator).withCoreAPI().usingSite(moderatedSite).usingParams("maxItems=1").getSiteGroups();
restClient.assertStatusCodeIs(HttpStatus.OK);
siteGroups.assertThat().paginationField("count").is("1");
siteGroups.assertThat().paginationField("hasMoreItems").is("true");
siteGroups.assertThat().paginationField("maxItems").is("1");
siteGroups.assertThat().paginationField("totalItems").is("4");
siteGroups.assertThat().entriesListCountIs(1);
}
List<GroupModel> addGroupToSite(SiteModel siteModel, UserRole ...roles) {
List<GroupModel> groups = new ArrayList<GroupModel>();
for (UserRole role: roles) {
GroupModel group = dataGroup.createRandomGroup();
restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingSite(siteModel).addSiteGroup(getId(group), role);
groups.add(group);
}
return groups;
}
String getId(GroupModel group) {
return "GROUP_" + group.getGroupIdentifier();
}
}

View File

@@ -0,0 +1,197 @@
package org.alfresco.rest.sites.groups;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.utility.Utility;
import org.alfresco.utility.constants.UserRole;
import org.alfresco.utility.data.DataUser;
import org.alfresco.utility.exception.DataPreparationException;
import org.alfresco.utility.model.GroupModel;
import org.alfresco.utility.model.SiteModel;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
import org.alfresco.utility.report.Bug;
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;
import java.util.ArrayList;
import java.util.List;
public class RemoveSiteGroupTests extends RestTest
{
private SiteModel publicSiteModel, privateSiteModel;
private UserModel adminUserModel;
private DataUser.ListUserWithRoles usersWithRoles;
@BeforeClass(alwaysRun = true)
public void dataPreparation() throws DataPreparationException
{
adminUserModel = dataUser.getAdminUser();
UserModel siteCreator = dataUser.createRandomTestUser();
publicSiteModel = dataSite.usingUser(siteCreator).createPublicRandomSite();
privateSiteModel = dataSite.usingUser(siteCreator).createPrivateRandomSite();
usersWithRoles = dataUser.addUsersWithRolesToSite(publicSiteModel, UserRole.SiteManager, UserRole.SiteCollaborator, UserRole.SiteConsumer, UserRole.SiteContributor);
addGroupToSite(publicSiteModel, UserRole.SiteManager, UserRole.SiteCollaborator, UserRole.SiteConsumer, UserRole.SiteContributor);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.SANITY })
@TestRail(section = { TestGroup.REST_API,
TestGroup.SITES }, executionType = ExecutionType.SANITY, description = "Verify manager can delete site group and gets status code 204, 'No Content'")
public void siteManagerIsAbleToDeleteSiteGroup() throws Exception
{
GroupModel group = addGroupToSite(publicSiteModel, UserRole.SiteConsumer).get(0);
restClient.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(publicSiteModel).deleteSiteGroup(getId(group));
restClient.assertStatusCodeIs(HttpStatus.NO_CONTENT);
Utility.sleep(300, 30000, () -> restClient.withCoreAPI().usingSite(publicSiteModel)
.getSiteGroups().assertThat().entriesListDoesNotContain("id", getId(group)));
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = { TestGroup.REST_API,
TestGroup.SITES }, executionType = ExecutionType.REGRESSION, description = "Verify collaborator cannot delete site group and gets status code 403, 'Forbidden'")
public void siteCollaboratorIsNotAbleToDeleteSiteGroup() throws Exception
{
GroupModel group = addGroupToSite(publicSiteModel, UserRole.SiteConsumer).get(0);
restClient.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteCollaborator));
restClient.withCoreAPI().usingSite(publicSiteModel).deleteSiteGroup(getId(group));
restClient.assertStatusCodeIs(HttpStatus.UNPROCESSABLE_ENTITY);
Utility.sleep(300, 30000, () -> restClient.withCoreAPI()
.usingSite(publicSiteModel).getSiteGroups()
.assertThat().entriesListContains("id", getId(group)));
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = { TestGroup.REST_API,
TestGroup.SITES }, executionType = ExecutionType.REGRESSION, description = "Verify contributor cannot delete site group and gets status code 403, 'Forbidden'")
public void siteContributorIsNotAbleToDeleteSiteGroup() throws Exception
{
GroupModel group = addGroupToSite(publicSiteModel, UserRole.SiteConsumer).get(0);
restClient.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteContributor));
restClient.withCoreAPI().usingSite(publicSiteModel).deleteSiteGroup(getId(group));
restClient.assertStatusCodeIs(HttpStatus.UNPROCESSABLE_ENTITY);
Utility.sleep(300, 30000, () -> restClient.withCoreAPI().usingSite(publicSiteModel)
.getSiteGroups().assertThat().entriesListContains("id", getId(group)));
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = { TestGroup.REST_API,
TestGroup.SITES }, executionType = ExecutionType.REGRESSION, description = "Verify consumer cannot delete site member and gets status code 403, 'Forbidden'")
public void siteConsumerIsNotAbleToDeleteSiteGroup() throws Exception
{
GroupModel group = addGroupToSite(publicSiteModel, UserRole.SiteConsumer).get(0);
restClient.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteConsumer)).withCoreAPI().usingSite(publicSiteModel).deleteSiteGroup(getId(group));
restClient.assertStatusCodeIs(HttpStatus.UNPROCESSABLE_ENTITY);
Utility.sleep(300, 30000, () -> restClient.withCoreAPI().usingSite(publicSiteModel)
.getSiteGroups().assertThat().entriesListContains("id", getId(group)));
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.SANITY })
@TestRail(section = { TestGroup.REST_API,
TestGroup.SITES }, executionType = ExecutionType.SANITY, description = "Verify that unauthenticated user is not able to delete site group")
public void unauthenticatedUserIsNotAuthorizedToDeleteSiteGroup() throws Exception
{
GroupModel group = addGroupToSite(publicSiteModel, UserRole.SiteConsumer).get(0);
UserModel inexistentUser = new UserModel("inexistent user", "inexistent password");
restClient.authenticateUser(inexistentUser).withCoreAPI().usingSite(publicSiteModel).deleteSiteGroup(getId(group));
restClient.assertStatusCodeIs(HttpStatus.UNAUTHORIZED);
}
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify manager can NOT delete site group for an inexistent user and gets status code 404, 'Not Found'")
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
public void managerIsNotAbleToDeleteInexistentSiteGroup() throws Exception
{
GroupModel inexistentUser = new GroupModel("inexistentUser");
restClient.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(publicSiteModel).deleteSiteGroup(getId(inexistentUser));
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError().containsSummary(String.format("An authority was not found for %s", getId(inexistentUser)));
}
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify manager can NOT delete site group for a non site group and gets status code 400, 'Bad Request'")
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
public void managerIsNotAbleToDeleteNotSiteGroup() throws Exception
{
GroupModel nonMember = dataGroup.createRandomGroup();
restClient.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(publicSiteModel).deleteSiteGroup(getId(nonMember));
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
.assertLastError().containsSummary(String.format("Given authority is not a member of the site"));
}
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that manager can NOT delete site group for an invalid site and gets status code 404, 'Not Found'")
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
public void managerIsNotAbleToDeleteSiteMemberOfInvalidSite() throws Exception
{
SiteModel invalidSite = new SiteModel("invalidSite");
GroupModel testGroupModel = dataGroup.createRandomGroup();
restClient.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(invalidSite).deleteSiteGroup(getId(testGroupModel));
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_WAS_NOT_FOUND, "invalidSite"));
}
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that admin can delete a site group of private site and gets status code 204")
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
public void adminIsAbleToDeletePrivateSiteGroup() throws Exception
{
GroupModel group = addGroupToSite(privateSiteModel, UserRole.SiteConsumer).get(0);
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(privateSiteModel).deleteSiteGroup(getId(group));
restClient.assertStatusCodeIs(HttpStatus.NO_CONTENT);
}
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that admin can not delete a site group twice and gets status code 404 for the second attempt")
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@Bug(id="ACE-5447")
public void adminIsNotAbleToRemoveSiteGroupTwice() throws Exception
{
GroupModel group = addGroupToSite(publicSiteModel, UserRole.SiteContributor).get(0);
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(publicSiteModel).deleteSiteGroup(getId(group));
restClient.assertStatusCodeIs(HttpStatus.NO_CONTENT);
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(publicSiteModel).deleteSiteGroup(getId(group));
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError()
.containsSummary("Given authority is not a member of the site");
}
List<GroupModel> addGroupToSite(SiteModel siteModel, UserRole ...roles) {
List<GroupModel> groups = new ArrayList<GroupModel>();
for (UserRole role: roles) {
GroupModel group = dataGroup.createRandomGroup();
restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingSite(siteModel).addSiteGroup(getId(group), role);
groups.add(group);
}
return groups;
}
String getId(GroupModel group) {
return "GROUP_" + group.getGroupIdentifier();
}
}

View File

@@ -0,0 +1,187 @@
package org.alfresco.rest.sites.groups;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.core.JsonBodyGenerator;
import org.alfresco.rest.core.RestRequest;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.rest.model.RestSiteMemberModel;
import org.alfresco.utility.constants.UserRole;
import org.alfresco.utility.data.DataUser;
import org.alfresco.utility.model.GroupModel;
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.HttpMethod;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class UpdateSiteGroupTests extends RestTest
{
private UserModel adminUser, siteCreator;
private GroupModel regularGroup;
private SiteModel publicSite;
private DataUser.ListUserWithRoles publicSiteUsers;
private GroupModel groupToBeUpdated;
@BeforeClass(alwaysRun=true)
public void dataPreparation() throws Exception
{
adminUser = dataUser.getAdminUser();
siteCreator = dataUser.createRandomTestUser();
publicSite = dataSite.usingUser(siteCreator).createPublicRandomSite();
publicSiteUsers = dataUser.addUsersWithRolesToSite(publicSite, UserRole.SiteManager, UserRole.SiteCollaborator, UserRole.SiteConsumer,
UserRole.SiteContributor);
regularGroup = dataGroup.createRandomGroup();
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that collaborator is not able to update site group membership and gets status code FORBIDDEN (403)")
public void collaboratorIsNotAbleToUpdateSiteGroup() throws Exception
{
groupToBeUpdated = dataGroup.createRandomGroup();
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(publicSite).addSiteGroup(getId(groupToBeUpdated), UserRole.SiteConsumer);
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteCollaborator));
restClient.withCoreAPI().usingSite(publicSite).updateSiteGroup(getId(groupToBeUpdated), UserRole.SiteCollaborator);
restClient.assertStatusCodeIs(HttpStatus.UNPROCESSABLE_ENTITY);
restClient.assertLastError()
.containsSummary(String.format("The current user does not have permissions to modify the membership details of the site %s.", publicSite.getTitle()));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that contributor is not able to update site membership and gets status code FORBIDDEN (403)")
public void contributorIsNotAbleToUpdateSiteGroup() throws Exception
{
groupToBeUpdated = dataGroup.createRandomGroup();
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(publicSite).addSiteGroup(getId(groupToBeUpdated), UserRole.SiteConsumer);
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteContributor));
restClient.withCoreAPI().usingSite(publicSite).updateSiteGroup(getId(groupToBeUpdated), UserRole.SiteCollaborator);
restClient.assertStatusCodeIs(HttpStatus.UNPROCESSABLE_ENTITY);
restClient.assertLastError()
.containsSummary(String.format("The current user does not have permissions to modify the membership details of the site %s.", publicSite.getTitle()));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that consumer is not able to update site group and gets status code FORBIDDEN (403)")
public void consumerIsNotAbleToUpdateSiteGroup() throws Exception
{
groupToBeUpdated = dataGroup.createRandomGroup();
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteManager));
restClient.withCoreAPI().usingSite(publicSite).addSiteGroup(getId(groupToBeUpdated), UserRole.SiteConsumer);
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteConsumer));
restClient.withCoreAPI().usingSite(publicSite).updateSiteGroup(getId(groupToBeUpdated), UserRole.SiteCollaborator);
restClient.assertStatusCodeIs(HttpStatus.UNPROCESSABLE_ENTITY);
restClient.assertLastError()
.containsSummary(String.format("The current user does not have permissions to modify the membership details of the site %s.", publicSite.getTitle()));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that admin is able to update site member and gets status code OK (200)")
public void adminIsAbleToUpdateSiteGroup() throws Exception
{
groupToBeUpdated = dataGroup.createRandomGroup();
restClient.authenticateUser(adminUser);
restClient.withCoreAPI().usingSite(publicSite).addSiteGroup(getId(groupToBeUpdated), UserRole.SiteConsumer);
restClient.withCoreAPI().usingSite(publicSite).updateSiteGroup(getId(groupToBeUpdated), UserRole.SiteCollaborator)
.assertThat().field("id").is(getId(groupToBeUpdated))
.and().field("role").is(UserRole.SiteCollaborator);
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.SANITY })
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.SANITY,
description = "Verify that unauthenticated user is not able to update site member")
public void unauthenticatedUserIsNotAuthorizedToUpdateSiteGroup() throws Exception
{
groupToBeUpdated = dataGroup.createRandomGroup();
restClient.authenticateUser(adminUser);
restClient.withCoreAPI().usingSite(publicSite).addSiteGroup(getId(groupToBeUpdated), UserRole.SiteConsumer);
UserModel inexistentUser = new UserModel("inexistent user", "inexistent password");
restClient.authenticateUser(inexistentUser);
restClient.withCoreAPI().usingSite(publicSite).updateSiteGroup(getId(groupToBeUpdated), UserRole.SiteCollaborator);
restClient.assertStatusCodeIs(HttpStatus.UNAUTHORIZED);
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if update site group request returns status code 404 when nonexistent siteId is used")
public void updateSiteGroupOfNonexistentSite() throws Exception
{
groupToBeUpdated = dataGroup.createRandomGroup();
SiteModel deletedSite = dataSite.usingUser(adminUser).createPublicRandomSite();
dataSite.deleteSite(deletedSite);
restClient.authenticateUser(adminUser).withCoreAPI().usingSite(deletedSite).updateSiteGroup(getId(groupToBeUpdated), UserRole.SiteConsumer);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, deletedSite.getId()));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if update site member request returns status code 400 when personId is not member of the site")
public void updateNotASiteMember() throws Exception
{
groupToBeUpdated = dataGroup.createRandomGroup();
restClient.authenticateUser(adminUser).withCoreAPI().usingSite(publicSite).updateSiteGroup(getId(groupToBeUpdated), UserRole.SiteConsumer);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
.assertLastError().containsSummary("authority is not a member of the site");
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if update site member request returns status code 404 when personId does not exist")
public void updateNonexistentSiteMember() throws Exception
{
GroupModel nonexistentUser = new GroupModel("nonexistentUser");
restClient.authenticateUser(adminUser).withCoreAPI().usingSite(publicSite).updateSiteGroup(getId(nonexistentUser), UserRole.SiteConsumer);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError().containsSummary(String.format("An authority was not found for %s", getId(nonexistentUser)));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if update site member request returns status code 404 when empty siteId is used")
public void updateSiteMemberUsingEmptySiteId() throws Exception
{
restClient.authenticateUser(adminUser).withCoreAPI().usingSite("").updateSiteGroup(getId(regularGroup), UserRole.SiteConsumer);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, ""));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if update site member request returns status code 405 when empty personId is used")
public void updateSiteMemberUsingEmptyPersonId() throws Exception
{
GroupModel emptyGroup = new GroupModel("");
restClient.authenticateUser(adminUser).withCoreAPI().usingSite(publicSite).updateSiteGroup(getId(emptyGroup), UserRole.SiteConsumer);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError().containsSummary(String.format("An authority was not found for %s", getId(emptyGroup)));
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if update site member request returns status code 400 when invalid role is used")
public void updateSiteMemberUsingInvalidRole() throws Exception
{
groupToBeUpdated = dataGroup.createRandomGroup();
restClient.authenticateUser(siteCreator).withCoreAPI();
restClient.authenticateUser(adminUser).withCoreAPI().usingSite(publicSite).updateSiteGroup(getId(groupToBeUpdated), UserRole.SiteConsumer);
String json = JsonBodyGenerator.keyValueJson("role","invalidRole");
RestRequest request = RestRequest.requestWithBody(HttpMethod.PUT, json, "sites/{siteId}/group-members/{groupId}", publicSite.getId(), getId(groupToBeUpdated));
restClient.processModel(RestSiteMemberModel.class, request);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
.assertLastError().containsSummary("authority is not a member of the site");
}
String getId(GroupModel group) {
return "GROUP_" + group.getGroupIdentifier();
}
}

View File

@@ -6,6 +6,7 @@ import org.alfresco.rest.model.RestSiteMemberModel;
import org.alfresco.rest.model.RestSiteMemberModelsCollection;
import org.alfresco.utility.constants.UserRole;
import org.alfresco.utility.data.DataUser.ListUserWithRoles;
import org.alfresco.utility.model.GroupModel;
import org.alfresco.utility.model.SiteModel;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
@@ -20,7 +21,7 @@ import org.testng.annotations.Test;
*/
public class GetSiteMembersTests extends RestTest
{
private SiteModel publicSite, privateSite, moderatedSite, moderatedSite2, moderatedSite3;
private SiteModel publicSite, privateSite, moderatedSite, moderatedSite2, moderatedSite3, moderatedSite4;
private RestSiteMemberModelsCollection siteMembers;
private ListUserWithRoles usersWithRoles, moderatedSiteUsers;
private UserModel regularUser, privateSiteConsumer, siteCreator;
@@ -38,6 +39,7 @@ public class GetSiteMembersTests extends RestTest
moderatedSite = dataSite.usingUser(siteCreator).createModeratedRandomSite();
moderatedSite2 = dataSite.usingUser(siteCreator).createModeratedRandomSite();
moderatedSite3 = dataSite.usingUser(siteCreator).createModeratedRandomSite();
moderatedSite4 = dataSite.usingUser(siteCreator).createModeratedRandomSite();
dataUser.addUserToSite(privateSiteConsumer, privateSite, UserRole.SiteConsumer);
dataUser.addUserToSite(privateSiteConsumer, moderatedSite3, UserRole.SiteConsumer);
@@ -351,4 +353,32 @@ public class GetSiteMembersTests extends RestTest
.and().entriesListContains("role", UserRole.SiteManager.toString())
.and().entriesListContains("id", siteCreator.getUsername());
}
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.REGRESSION })
@TestRail(section={TestGroup.REST_API, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if isMemberOfGroup if user part of the group")
public void verifyIsMemberOfGroupProps() throws Exception
{
GroupModel firstGroup = dataGroup.createRandomGroup();
UserModel user = dataUser.createRandomTestUser();
dataGroup.addListOfUsersToGroup(firstGroup, user);
siteMembers = restClient.authenticateUser(siteCreator).withCoreAPI()
.usingSite(moderatedSite4).getSiteMembers();
restClient.assertStatusCodeIs(HttpStatus.OK);
siteMembers.assertThat().entriesListCountIs(1);
restClient.withCoreAPI().usingSite(moderatedSite4).addSiteGroup("GROUP_" + firstGroup.getGroupIdentifier(), UserRole.SiteCollaborator);
siteMembers = restClient.withCoreAPI().usingSite(moderatedSite4).getSiteMembers();
restClient.assertStatusCodeIs(HttpStatus.OK);
siteMembers.assertThat().entriesListCountIs(2);
siteMembers.getEntryByIndex(0).assertThat().field("isMemberOfGroup").isNotNull();
siteMembers.getEntryByIndex(1).assertThat().field("isMemberOfGroup").isNotNull();
siteMembers = restClient.withCoreAPI().usingSite(moderatedSite4).usingParams("where=(isMemberOfGroup=false)").getSiteMembers();
restClient.assertStatusCodeIs(HttpStatus.OK);
siteMembers.assertThat().entriesListCountIs(1);
siteMembers.getEntries().get(0).assertThat().field("isMemberOfGroup").is(false);
}
}