From 890253f6e741703ba5ba132b417fb231d4a9090a Mon Sep 17 00:00:00 2001 From: bozmiha <Mihai.BOZ@ext.ec.europa.eu> Date: Fri, 20 Oct 2023 18:15:34 +0300 Subject: [PATCH] added methods to addresources to domain, add members to domain, create groups of domains, add members to groups, created tests for EditGroupsPage Signed-off-by: bozmiha <Mihai.BOZ@ext.ec.europa.eu> --- .../java/ddsl/dcomponents/Grid/SmallGrid.java | 40 ++++++- .../editGroupsPage/EditGroupsPage.java | 10 +- .../src/main/java/rest/BaseRestClient.java | 44 +++---- .../src/main/java/rest/DomainClient.java | 55 ++++----- .../src/main/java/rest/DomiSMPRestClient.java | 7 +- .../src/main/java/rest/GroupClient.java | 37 ++++++ .../src/main/java/rest/RestServicePaths.java | 11 ++ .../src/main/java/rest/UserClient.java | 23 +--- .../main/java/rest/models/DomainModel.java | 109 +++++++++++++++--- .../src/main/java/rest/models/GroupModel.java | 52 ++++++--- .../src/main/java/utils/TestRunData.java | 4 + .../domiSMPTests/ui/EditDomainsPgTests.java | 70 +++-------- .../domiSMPTests/ui/EditGroupsPgTests.java | 65 ++++++++--- 13 files changed, 340 insertions(+), 187 deletions(-) create mode 100644 domiSMP-ui-tests/src/main/java/rest/GroupClient.java diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/SmallGrid.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/SmallGrid.java index 21865c5e3..8b21fe07d 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/SmallGrid.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/SmallGrid.java @@ -103,6 +103,45 @@ public class SmallGrid extends DComponent { } return false; } + + public String getColumnValueForSpecificRow(String columnNameToSearch, String valueToSearch, String searchedColumnValue) { + wait.forXMillis(100); + Integer numOfPages = getGridPagination().getTotalPageNumber(); + List<WebElement> rowHeaders = getGridHeaders(); + int columnIndex = -1; + int searchedColumnIndex = -1; + + for (int i = 0; i < rowHeaders.size(); i++) { + if (rowHeaders.get(i).getText().equals(columnNameToSearch)) { + columnIndex = i; + } else if (rowHeaders.get(i).getText().equals(searchedColumnValue)) { + searchedColumnIndex = i; + } + if (columnIndex != -1 && searchedColumnIndex != -1) { + break; + } + } + + if (columnIndex == -1 || searchedColumnIndex == -1) { + LOG.debug("Search value was not found in the grid"); + return null; + } + for (int pageNr = 1; pageNr < numOfPages + 1; pageNr++) { + + List<WebElement> rows = getRows(); + for (WebElement row : rows) { + List<WebElement> cells = getCells(row); + WebElement currentCell = cells.get(columnIndex); + if (currentCell.getText().equals(valueToSearch)) { + LOG.debug("[{}] found on page [{}]", valueToSearch, pageNr); + return cells.get(searchedColumnIndex).getText(); + } + } + getGridPagination().goToNextPage(); + + } + return null; + } public void searchAndClickElementInColumn(String columnName, String value) { wait.forXMillis(100); @@ -117,7 +156,6 @@ public class SmallGrid extends DComponent { } if (columnIndex == -1) { LOG.error("No element found"); - ; } for (int pageNr = 1; pageNr < numOfPages + 1; pageNr++) { diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/EditGroupsPage.java b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/EditGroupsPage.java index 2cd13a80b..e3a6524dd 100644 --- a/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/EditGroupsPage.java +++ b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/EditGroupsPage.java @@ -4,7 +4,6 @@ import ddsl.CommonPageWithTabs; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; -import org.openqa.selenium.support.ui.Select; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import rest.models.DomainModel; @@ -17,7 +16,7 @@ public class EditGroupsPage extends CommonPageWithTabs { @FindBy(id = "domain_id") private WebElement domainDdl; @FindBy(id = "group_id") - private Select groupDdl; + private WebElement groupDdl; public EditGroupsPage(WebDriver driver) { super(driver); @@ -28,7 +27,7 @@ public class EditGroupsPage extends CommonPageWithTabs { weToMatSelect(domainDdl).selectByVisibleText(domainModel.getDomainCode()); } - public GroupMembersTab getDomainMembersTab() { + public GroupMembersTab getGroupMembersTab() { return new GroupMembersTab(driver); } @@ -36,4 +35,9 @@ public class EditGroupsPage extends CommonPageWithTabs { return new ResourceTab(driver); } + public void selectDomain(DomainModel domainModel, GroupModel groupModel) { + weToMatSelect(domainDdl).selectByVisibleText(domainModel.getDomainCode()); + weToMatSelect(groupDdl).selectByVisibleText(groupModel.getGroupName()); + } + } diff --git a/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java b/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java index 8e3bab998..34031ec10 100644 --- a/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java +++ b/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java @@ -41,15 +41,7 @@ public class BaseRestClient { // ---------------------------------------Default request methods ------------------------------------------------- protected ClientResponse requestPUT(WebResource resource, JSONObject body, String type) { - if (!isLoggedIn()) { - log.info("User is not loggedin"); - try { - createSession(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - + startSession(); WebResource.Builder builder = decorateBuilder(resource); return builder.type(type).put(ClientResponse.class, body.toString()); @@ -57,15 +49,7 @@ public class BaseRestClient { protected ClientResponse requestPUT(WebResource resource, String body, String type) { - if (!isLoggedIn()) { - log.info("User is not loggedin"); - try { - createSession(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - + startSession(); WebResource.Builder builder = decorateBuilder(resource); return builder.type(type).put(ClientResponse.class, body); @@ -80,15 +64,7 @@ public class BaseRestClient { } protected ClientResponse requestPOST(WebResource resource, String body) { - if (!isLoggedIn()) { - log.info("User is not loggedin"); - try { - createSession(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - + startSession(); WebResource.Builder builder = decorateBuilder(resource); return builder.type(MediaType.APPLICATION_JSON).post(ClientResponse.class, body); @@ -114,7 +90,7 @@ public class BaseRestClient { return builder; } - public void createSession() throws Exception { + private void createNewSession() throws Exception { log.debug("Rest client using to login: " + this.username); HashMap<String, String> params = new HashMap<>(); params.put("username", this.username); @@ -156,11 +132,21 @@ public class BaseRestClient { return mytoken; } - public boolean isLoggedIn() { + private boolean isLoggedIn() { WebResource.Builder builder = decorateBuilder(resource.path(RestServicePaths.CONNECTED)); int response = builder.get(ClientResponse.class).getStatus(); log.debug("Connected endpoint returns: " + response); return (!(response == 401)); } + + public void startSession() { + if (!isLoggedIn()) { + try { + createNewSession(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } } diff --git a/domiSMP-ui-tests/src/main/java/rest/DomainClient.java b/domiSMP-ui-tests/src/main/java/rest/DomainClient.java index 4c01579ea..c2c224c9f 100644 --- a/domiSMP-ui-tests/src/main/java/rest/DomainClient.java +++ b/domiSMP-ui-tests/src/main/java/rest/DomainClient.java @@ -6,6 +6,7 @@ import com.sun.jersey.api.client.ClientResponse; import ddsl.enums.ResourceTypes; import org.json.JSONObject; import rest.models.DomainModel; +import rest.models.GroupModel; import rest.models.MemberModel; import utils.TestRunData; @@ -21,22 +22,11 @@ public class DomainClient extends BaseRestClient { super(); } - public JSONObject createDomain(DomainModel domainModel) { + public DomainModel createDomain(DomainModel domainModel) { JSONObject domainJson = new JSONObject(domainModel); - - if (!isLoggedIn()) { - try { - createSession(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - String createDomainPath = RestServicePaths.getCreateDomainPath(TestRunData.getInstance().getUserId()); - ClientResponse response = jsonPUT(resource.path(createDomainPath), domainJson); - JSONObject responseBody = new JSONObject(response.getEntity(String.class)); if (response.getStatus() != 200) { try { throw new SMPRestException("Could not create domain", response); @@ -45,22 +35,13 @@ public class DomainClient extends BaseRestClient { } } log.debug("Domain: " + domainModel.getDomainCode() + " has been created successfully!"); - return responseBody; - + return response.getEntity(DomainModel.class); } - - public MemberModel addMembersToDomain(String domainId, MemberModel domainMember) throws JsonProcessingException { + public MemberModel addMembersToDomain(DomainModel domainModel, MemberModel domainMember) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); String membersJson = mapper.writeValueAsString(domainMember); - if (!isLoggedIn()) { - try { - createSession(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - String addMemberPath = RestServicePaths.getDomainAddMemberPath(TestRunData.getInstance().getUserId(), domainId); + String addMemberPath = RestServicePaths.getDomainAddMemberPath(TestRunData.getInstance().getUserId(), domainModel.getDomainId()); ClientResponse response = jsonPUT(resource.path(addMemberPath), membersJson); if (response.getStatus() != 200) { @@ -74,7 +55,7 @@ public class DomainClient extends BaseRestClient { return response.getEntity(MemberModel.class); } - public DomainModel addResourcesToDomain(String domainId, List<ResourceTypes> resourceTypesList) throws JsonProcessingException { + public DomainModel addResourcesToDomain(DomainModel domainModel, List<ResourceTypes> resourceTypesList) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); List<String> resourceListToBeAdded = new ArrayList<>(); for (ResourceTypes resourceType : resourceTypesList) { @@ -82,14 +63,7 @@ public class DomainClient extends BaseRestClient { } String resourceTypes = mapper.writeValueAsString(resourceListToBeAdded); - if (!isLoggedIn()) { - try { - createSession(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - String addMemberPath = RestServicePaths.getAddResourcePath(TestRunData.getInstance().getUserId(), resourceTypes); + String addMemberPath = RestServicePaths.getAddResourcePath(TestRunData.getInstance().getUserId(), domainModel.getDomainId()); ClientResponse response = requestPOST(resource.path(addMemberPath), resourceTypes); if (response.getStatus() != 200) { try { @@ -101,4 +75,19 @@ public class DomainClient extends BaseRestClient { log.debug("Resources have been added!"); return response.getEntity(DomainModel.class); } + + public GroupModel createGroupForDomain(DomainModel domainModel, GroupModel groupToBeCreated) { + JSONObject groupJson = new JSONObject(groupToBeCreated); + String createGroupPath = RestServicePaths.getCreateGroupPath(TestRunData.getInstance().getUserId(), domainModel.getDomainId()); + ClientResponse response = jsonPUT(resource.path(createGroupPath), groupJson); + if (response.getStatus() != 200) { + try { + throw new SMPRestException("Could not create group!", response); + } catch (SMPRestException e) { + throw new RuntimeException(e); + } + } + log.debug("Group have been added!"); + return response.getEntity(GroupModel.class); + } } diff --git a/domiSMP-ui-tests/src/main/java/rest/DomiSMPRestClient.java b/domiSMP-ui-tests/src/main/java/rest/DomiSMPRestClient.java index 8818ef182..45f72156c 100644 --- a/domiSMP-ui-tests/src/main/java/rest/DomiSMPRestClient.java +++ b/domiSMP-ui-tests/src/main/java/rest/DomiSMPRestClient.java @@ -4,15 +4,16 @@ public class DomiSMPRestClient extends BaseRestClient { public DomiSMPRestClient() { super(); } - - // -------------------------------------------- get clients ----------------------------------------------------------- public UserClient users() { return new UserClient(username, password); } - public DomainClient domains() { return new DomainClient(); } + public GroupClient groups() { + return new GroupClient(); + } + } diff --git a/domiSMP-ui-tests/src/main/java/rest/GroupClient.java b/domiSMP-ui-tests/src/main/java/rest/GroupClient.java new file mode 100644 index 000000000..a25adef56 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/rest/GroupClient.java @@ -0,0 +1,37 @@ +package rest; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.sun.jersey.api.client.ClientResponse; +import rest.models.DomainModel; +import rest.models.GroupModel; +import rest.models.MemberModel; +import utils.TestRunData; + +/** + * Rest client for group actions + */ +public class GroupClient extends BaseRestClient { + + public GroupClient() { + super(); + } + + public MemberModel addMembersToGroup(DomainModel domainModel, GroupModel groupModel, MemberModel groupMember) throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + String membersJson = mapper.writeValueAsString(groupMember); + + String addGroupMemberPath = RestServicePaths.getGroupAddMemberPath(TestRunData.getInstance().getUserId(), domainModel.getDomainId(), groupModel.getGroupId()); + + ClientResponse response = jsonPUT(resource.path(addGroupMemberPath), membersJson); + if (response.getStatus() != 200) { + try { + throw new SMPRestException("Could not add members to group", response); + } catch (SMPRestException e) { + throw new RuntimeException(e); + } + } + log.debug("Member: " + groupMember.getUsername() + " has been added!"); + return response.getEntity(MemberModel.class); + } +} diff --git a/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java b/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java index db1bd2957..32058cae9 100644 --- a/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java +++ b/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java @@ -41,4 +41,15 @@ public class RestServicePaths { } + //Groups + public static String getCreateGroupPath(String currentUserId, String domainId) { + + return CONTEXT_PATH_EDIT + currentUserId + "/domain/" + domainId + "/group/create"; + } + + public static String getGroupAddMemberPath(String currentUserId, String domainId, String groupId) { + + return CONTEXT_PATH_EDIT + currentUserId + "/domain/" + domainId + "/group/" + groupId + "/member/put"; + } + } diff --git a/domiSMP-ui-tests/src/main/java/rest/UserClient.java b/domiSMP-ui-tests/src/main/java/rest/UserClient.java index 3e3f1554f..80301f2d4 100644 --- a/domiSMP-ui-tests/src/main/java/rest/UserClient.java +++ b/domiSMP-ui-tests/src/main/java/rest/UserClient.java @@ -5,31 +5,17 @@ import org.json.JSONObject; import rest.models.UserModel; import utils.TestRunData; +/** + * Rest client for user actions + */ public class UserClient extends BaseRestClient { - - - /** - * Rest client for user actions - */ - public UserClient(String username, String password) { super(username, password); } - public JSONObject createUser(UserModel user) { JSONObject usrObj = new JSONObject(user); - - if (!isLoggedIn()) { - try { - createSession(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - String usersPath = RestServicePaths.getUsersPath(TestRunData.getInstance().getUserId()); - ClientResponse response = jsonPUT(resource.path(usersPath), usrObj); JSONObject responseBody = new JSONObject(response.getEntity(String.class)); // extract userId to be used in the Paths of the requests @@ -53,13 +39,10 @@ public class UserClient extends BaseRestClient { public JSONObject changePassword(String forUserId, String newPassword) { - String changePasswordPath = RestServicePaths.getChangePasswordPath(TestRunData.getInstance().getUserId(), forUserId); JSONObject passwordChangeBody = new JSONObject(); passwordChangeBody.put("currentPassword", password); passwordChangeBody.put("newPassword", newPassword); - - ClientResponse response = jsonPUT(resource.path(changePasswordPath), passwordChangeBody); return new JSONObject(response.getEntity(String.class)); } diff --git a/domiSMP-ui-tests/src/main/java/rest/models/DomainModel.java b/domiSMP-ui-tests/src/main/java/rest/models/DomainModel.java index 1c3d1b8d4..a06ec1b23 100644 --- a/domiSMP-ui-tests/src/main/java/rest/models/DomainModel.java +++ b/domiSMP-ui-tests/src/main/java/rest/models/DomainModel.java @@ -1,9 +1,12 @@ package rest.models; import ddsl.enums.ResponseCertificates; +import org.apache.commons.lang3.StringUtils; import utils.Generator; import utils.Utils; +import java.util.List; + import static ddsl.enums.ResponseCertificates.SMP_DOMAIN_01; import static ddsl.enums.ResponseCertificates.SMP_DOMAIN_02; @@ -11,6 +14,7 @@ public class DomainModel { private String smlSmpId; private String domainCode; + private String domainId; private boolean smlRegistered; private String visibility; private String smlClientKeyAlias; @@ -18,10 +22,12 @@ public class DomainModel { private String smlSubdomain; private String smlParticipantIdentifierRegExp; private boolean smlClientCertAuth; - private int status; - - public DomainModel() { - } + private Object actionMessage; + private Object defaultResourceTypeIdentifier; + private List<Object> groups; + private Long index; + private List<String> resourceDefinitions; + private Long status; public static DomainModel generatePublicDomainModelWithoutSML() { DomainModel domainModel = new DomainModel(); @@ -31,19 +37,8 @@ public class DomainModel { return domainModel; } - public static DomainModel generatePublicDomainModelWithSML() { - DomainModel domainModel = new DomainModel(); - domainModel.domainCode = "AUTDom" + Generator.randomAlphaNumeric(6); - domainModel.signatureKeyAlias = Utils.randomEnum(new ResponseCertificates[]{SMP_DOMAIN_01, SMP_DOMAIN_02}).getName(); - domainModel.visibility = "PUBLIC"; - domainModel.smlClientCertAuth = true; - domainModel.smlSubdomain = "AUTDomSML" + Generator.randomAlphaNumeric(6); - domainModel.smlSmpId = "AUTSMLSMP" + Generator.randomAlphaNumeric(4); - domainModel.smlClientKeyAlias = Utils.randomEnum(new ResponseCertificates[]{SMP_DOMAIN_01, SMP_DOMAIN_02}).toString().toLowerCase(); - return domainModel; + public DomainModel() { } - - public String getSmlSmpId() { return smlSmpId; } @@ -80,9 +75,89 @@ public class DomainModel { return smlClientCertAuth; } - public int getStatus() { + public static DomainModel generatePublicDomainModelWithSML() { + DomainModel domainModel = new DomainModel(); + domainModel.domainCode = "AUTDom" + Generator.randomAlphaNumeric(6); + domainModel.signatureKeyAlias = Utils.randomEnum(new ResponseCertificates[]{SMP_DOMAIN_01, SMP_DOMAIN_02}).getName(); + domainModel.visibility = "PUBLIC"; + domainModel.smlClientCertAuth = true; + domainModel.smlSubdomain = "AUTDomSML" + Generator.randomAlphaNumeric(6); + domainModel.smlSmpId = "AUTSMLSMP" + Generator.randomAlphaNumeric(4); + domainModel.smlClientKeyAlias = StringUtils.lowerCase(Utils.randomEnum(new ResponseCertificates[]{SMP_DOMAIN_01, SMP_DOMAIN_02}).toString()); + return domainModel; + } + + public void setIndex(Long index) { + this.index = index; + } + + public Long getStatus() { return status; } + + public void setStatus(Long status) { + this.status = status; + } + + public void setResourceDefinitions(List<String> resourceDefinitions) { + this.resourceDefinitions = resourceDefinitions; + } + + public void setSmlSmpId(String smlSmpId) { + this.smlSmpId = smlSmpId; + } + + public void setDomainCode(String domainCode) { + this.domainCode = domainCode; + } + + public String getDomainId() { + return domainId; + } + + public void setDomainId(String domainId) { + this.domainId = domainId; + } + + public void setSmlRegistered(boolean smlRegistered) { + this.smlRegistered = smlRegistered; + } + + public void setVisibility(String visibility) { + this.visibility = visibility; + } + + public void setSmlClientKeyAlias(String smlClientKeyAlias) { + this.smlClientKeyAlias = smlClientKeyAlias; + } + + public void setSignatureKeyAlias(String signatureKeyAlias) { + this.signatureKeyAlias = signatureKeyAlias; + } + + public void setSmlSubdomain(String smlSubdomain) { + this.smlSubdomain = smlSubdomain; + } + + public void setSmlParticipantIdentifierRegExp(String smlParticipantIdentifierRegExp) { + this.smlParticipantIdentifierRegExp = smlParticipantIdentifierRegExp; + } + + public void setSmlClientCertAuth(boolean smlClientCertAuth) { + this.smlClientCertAuth = smlClientCertAuth; + } + + public void setActionMessage(Object actionMessage) { + this.actionMessage = actionMessage; + } + + public void setDefaultResourceTypeIdentifier(Object defaultResourceTypeIdentifier) { + this.defaultResourceTypeIdentifier = defaultResourceTypeIdentifier; + } + + public void setGroups(List<Object> groups) { + this.groups = groups; + } } diff --git a/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java b/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java index cf5e6a666..08c85e280 100644 --- a/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java +++ b/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java @@ -1,14 +1,18 @@ package rest.models; - import utils.Generator; + public class GroupModel { private String groupName; private String visibility; private String groupDescription; + private Object actionMessage; + private String groupId; + private Long index; + private Long status; - public static GroupModel generatePublicDomain() { + public static GroupModel generatePublicGroup() { GroupModel groupModel = new GroupModel(); groupModel.groupName = ("AUT_groupName_" + Generator.randomAlphaNumeric(4)).toLowerCase(); groupModel.groupDescription = Generator.randomAlphaNumeric(10).toLowerCase(); @@ -16,7 +20,7 @@ public class GroupModel { return groupModel; } - public static GroupModel generatePrivateDomain() { + public static GroupModel generatePrivateGroup() { GroupModel groupModel = new GroupModel(); groupModel.groupName = ("AUT_groupName_" + Generator.randomAlphaNumeric(4)).toLowerCase(); groupModel.groupDescription = Generator.randomAlphaNumeric(10).toLowerCase(); @@ -24,27 +28,47 @@ public class GroupModel { return groupModel; } - public String getGroupName() { - return groupName; - } - public void setGroupName(String groupName) { this.groupName = groupName; } - public String getVisibility() { - return visibility; - } - public void setVisibility(String visibility) { this.visibility = visibility; } + public void setGroupDescription(String groupDescription) { + this.groupDescription = groupDescription; + } + + public void setActionMessage(Object actionMessage) { + this.actionMessage = actionMessage; + } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public void setIndex(Long index) { + this.index = index; + } + + public void setStatus(Long status) { + this.status = status; + } + + public String getGroupName() { + return groupName; + } + public String getVisibility() { + return visibility; + } public String getGroupDescription() { return groupDescription; } - public void setGroupDescription(String groupDescription) { - this.groupDescription = groupDescription; - } + } diff --git a/domiSMP-ui-tests/src/main/java/utils/TestRunData.java b/domiSMP-ui-tests/src/main/java/utils/TestRunData.java index 01fc5bff5..f07c50943 100644 --- a/domiSMP-ui-tests/src/main/java/utils/TestRunData.java +++ b/domiSMP-ui-tests/src/main/java/utils/TestRunData.java @@ -153,6 +153,10 @@ public class TestRunData { return getUser(ApplicationRoles.SYSTEM_ADMIN); } + public String getAdminUsername() { + return getUser(ApplicationRoles.SYSTEM_ADMIN).get("username"); + } + public String getDefaultPassword() { return getPropertyValue(TestEnvironmentProperty.TEST_DATA_PASSWORD_DEFAULT); } diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java index 4c43ea4ee..2c9b6e02d 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java @@ -3,7 +3,6 @@ package domiSMPTests.ui; import ddsl.DomiSMPPage; import ddsl.enums.Pages; import domiSMPTests.SeleniumTest; -import org.json.JSONObject; import org.openqa.selenium.WebElement; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Ignore; @@ -39,9 +38,8 @@ public class EditDomainsPgTests extends SeleniumTest { domainMember.setRoleType("ADMIN"); rest.users().createUser(adminUser); - JSONObject domainJson = rest.domains().createDomain(domainModel); - domainId = domainJson.get("domainId").toString(); - rest.domains().addMembersToDomain(domainId, domainMember); + domainModel = rest.domains().createDomain(domainModel); + rest.domains().addMembersToDomain(domainModel, domainMember); homePage = new DomiSMPPage(driver); loginPage = homePage.goToLoginPage(); @@ -51,64 +49,30 @@ public class EditDomainsPgTests extends SeleniumTest { @Test(description = "EDTDOM-01 Domain admins are able to invite/edit/remove members") public void DomainAdminsAreAbleToInviteEditRemoveMembers() throws Exception { - UserModel memberUser = UserModel.generateUserWithADMINrole(); - rest.users().createUser(memberUser); + UserModel domainMember = UserModel.generateUserWithUSERrole(); + rest.users().createUser(domainMember); - //Invite user as VIEW and check if he has admin rights for domain - editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + //Add user editDomainPage.getDomainMembersTab().getInviteMemberBtn().click(); - editDomainPage.getDomainMembersTab().getInviteMembersPopup().selectMember(memberUser.getUsername(), "VIEWER"); - WebElement userMemberElement = editDomainPage.getDomainMembersTab().getMembersGrid().searchAndGetElementInColumn("Username", memberUser.getUsername()); - soft.assertNotNull(userMemberElement, "Invited user is found"); - - //check if user has admin rights to domain as VIEWER - homePage.logout(); - homePage.goToLoginPage(); - loginPage.login(memberUser.getUsername(), data.getNewPassword()); - EditDomainsPage editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - WebElement domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); - soft.assertNull(domainElement, "Domain found for user which doesn't have rights"); - - homePage.logout(); - loginPage = homePage.goToLoginPage(); - loginPage.login(adminUser.getUsername(), data.getNewPassword()); - editDomainPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); - editDomainPage.getDomainMembersTab().changeRoleOfUser(memberUser.getUsername(), "ADMIN"); + editDomainPage.getDomainMembersTab().getInviteMembersPopup().selectMember(domainMember.getUsername(), "VIEWER"); + soft.assertTrue(editDomainPage.getDomainMembersTab().getMembersGrid().isValuePresentInColumn("Username", domainMember.getUsername())); - //check if user has admin rights to domain as Admin - homePage.logout(); - homePage.goToLoginPage(); - loginPage.login(memberUser.getUsername(), data.getNewPassword()); - editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); - soft.assertNotNull(domainElement, "Domain found for user which doesn't have rights"); + //Change role of user + editDomainPage.getDomainMembersTab().changeRoleOfUser(domainMember.getUsername(), "ADMIN"); + String currentRoleTypeOfuser = editDomainPage.getDomainMembersTab().getMembersGrid().getColumnValueForSpecificRow("Username", domainMember.getUsername(), "Role type"); + soft.assertEquals(currentRoleTypeOfuser, "ADMIN"); + //Remove user + editDomainPage.getDomainMembersTab().removeUser(domainMember.getUsername()); + soft.assertFalse(editDomainPage.getDomainMembersTab().getMembersGrid().isValuePresentInColumn("Username", domainMember.getUsername())); - //Remove member user and check if he has access to the domain - homePage.logout(); - homePage.goToLoginPage(); - loginPage.login(adminUser.getUsername(), data.getNewPassword()); - editDomainPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); - editDomainPage.getDomainMembersTab().removeUser(memberUser.getUsername()); - userMemberElement = editDomainPage.getDomainMembersTab().getMembersGrid().searchAndGetElementInColumn("Username", memberUser.getUsername()); - soft.assertNull(userMemberElement, "Domain found for user which doesn't have rights"); - - homePage.logout(); - homePage.goToLoginPage(); - loginPage.login(memberUser.getUsername(), data.getNewPassword()); - editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); - soft.assertNull(domainElement, "Domain found for user which doesn't have rights"); soft.assertAll(); - } @Ignore @Test(description = "EDTDOM-02 Domain admins are able to create new groups") public void domainAdminsAreAbleToCreate() throws Exception { - GroupModel groupToBeCreated = GroupModel.generatePublicDomain(); + GroupModel groupToBeCreated = GroupModel.generatePublicGroup(); editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); editDomainPage.goToTab("Group"); @@ -128,7 +92,7 @@ public class EditDomainsPgTests extends SeleniumTest { @Test(description = "EDTDOM-03 Domain admins are not able to create duplicated groups") public void domainAdminsAreNotAbleToCreateDuplicatedGroups() throws Exception { - GroupModel duplicatedGroup = GroupModel.generatePublicDomain(); + GroupModel duplicatedGroup = GroupModel.generatePublicGroup(); editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); editDomainPage.goToTab("Group"); @@ -149,7 +113,7 @@ public class EditDomainsPgTests extends SeleniumTest { @Test(description = "EDTDOM-04 Domain admins are able to delete groups without resources") public void domainAdminsAreNotAbleToDeleteGroups() throws Exception { - GroupModel groupToBeDeleted = GroupModel.generatePublicDomain(); + GroupModel groupToBeDeleted = GroupModel.generatePublicGroup(); editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); editDomainPage.goToTab("Group"); diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java index 25629381d..b53198594 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java @@ -4,13 +4,13 @@ import ddsl.DomiSMPPage; import ddsl.enums.Pages; import ddsl.enums.ResourceTypes; import domiSMPTests.SeleniumTest; -import org.json.JSONObject; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import org.testng.asserts.SoftAssert; import pages.LoginPage; -import pages.administration.editDomainsPage.EditDomainsPage; +import pages.administration.editGroupsPage.EditGroupsPage; import rest.models.DomainModel; +import rest.models.GroupModel; import rest.models.MemberModel; import rest.models.UserModel; @@ -20,10 +20,11 @@ import java.util.List; public class EditGroupsPgTests extends SeleniumTest { DomiSMPPage homePage; LoginPage loginPage; - EditDomainsPage editDomainPage; + EditGroupsPage editGroupPage; String domainId; - DomainModel domainModel; UserModel adminUser; + DomainModel domainModel; + GroupModel groupModel; SoftAssert soft; @BeforeMethod(alwaysRun = true) @@ -31,28 +32,64 @@ public class EditGroupsPgTests extends SeleniumTest { soft = new SoftAssert(); domainModel = DomainModel.generatePublicDomainModelWithSML(); adminUser = UserModel.generateUserWithADMINrole(); + groupModel = GroupModel.generatePublicGroup(); + MemberModel adminMember = new MemberModel() { + }; + adminMember.setUsername(adminUser.getUsername()); + adminMember.setRoleType("ADMIN"); + + MemberModel superMember = new MemberModel(); + superMember.setUsername(data.getAdminUsername()); + superMember.setRoleType("ADMIN"); + + //create user + String adminUserId = rest.users().createUser(adminUser).getString("userId"); + + //create domain + domainModel = rest.domains().createDomain(domainModel); - MemberModel domainMember = new MemberModel(); - domainMember.setUsername(adminUser.getUsername()); - domainMember.setRoleType("ADMIN"); + //add users to domain + rest.domains().addMembersToDomain(domainModel, adminMember); + rest.domains().addMembersToDomain(domainModel, superMember); - rest.users().createUser(adminUser); - JSONObject domainJson = rest.domains().createDomain(domainModel); - domainId = domainJson.get("domainId").toString(); - rest.domains().addMembersToDomain(domainId, domainMember); + //add resources to domain List<ResourceTypes> resourcesToBeAdded = Arrays.asList(ResourceTypes.OASIS1, ResourceTypes.OASIS3, ResourceTypes.OASIS2); + domainModel = rest.domains().addResourcesToDomain(domainModel, resourcesToBeAdded); + //create group for domain + groupModel = rest.domains().createGroupForDomain(domainModel, groupModel); + + //add users to groups + rest.groups().addMembersToGroup(domainModel, groupModel, adminMember); - rest.domains().addResourcesToDomain(domainId, resourcesToBeAdded); homePage = new DomiSMPPage(driver); loginPage = homePage.goToLoginPage(); loginPage.login(adminUser.getUsername(), data.getNewPassword()); - editDomainPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); + editGroupPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_GROUPS); } - @Test(description = "EDTDOM-01 Domain admins are able to invite/edit/remove members") + @Test(description = "EDTGRP-01 Group admins are able to invite/edit/remove group members", priority = 2) public void domainAdminsAreAbleToInviteEditRemoveMembers(){ + UserModel domainMember = UserModel.generateUserWithUSERrole(); + rest.users().createUser(domainMember); + + editGroupPage.selectDomain(domainModel, groupModel); + //Add user + editGroupPage.getGroupMembersTab().getInviteMemberBtn().click(); + editGroupPage.getGroupMembersTab().getInviteMembersPopup().selectMember(domainMember.getUsername(), "VIEWER"); + soft.assertTrue(editGroupPage.getGroupMembersTab().getMembersGrid().isValuePresentInColumn("Username", domainMember.getUsername())); + + //Change role of user + editGroupPage.getGroupMembersTab().changeRoleOfUser(domainMember.getUsername(), "ADMIN"); + String currentRoleTypeOfuser = editGroupPage.getGroupMembersTab().getMembersGrid().getColumnValueForSpecificRow("Username", domainMember.getUsername(), "Role type"); + soft.assertEquals(currentRoleTypeOfuser, "ADMIN"); + + //Remove user + editGroupPage.getGroupMembersTab().removeUser(domainMember.getUsername()); + soft.assertFalse(editGroupPage.getGroupMembersTab().getMembersGrid().isValuePresentInColumn("Username", domainMember.getUsername())); + + soft.assertAll(); } } -- GitLab