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 21865c5e36ee27ce1661314969892d0212b4ce06..8b21fe07da7b0d864e91fc4fa4ae81e640415f8f 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/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java index 529dfab8fc577cef631a0ff47036bf26c4e27322..93fc4e7d30e615b1243c4839095714cbdcb15264 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java @@ -36,7 +36,7 @@ public class SubcategoryTabComponent extends DComponent { return new SmallGrid(driver, rightSidePanel); } - public void create() throws ElementNotInteractableException { + protected void create() throws ElementNotInteractableException { weToDButton(createBtn).click(); } diff --git a/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java b/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java index 4d63a784b67374eaef8cbea9212d011f397f13b6..c889ab45ab397734dce4654409071aec9aa6c1f5 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java @@ -15,7 +15,6 @@ public enum ResourceTypes { ResourceTypes(String name) { this.name = name; - } diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java index 2f92e02bc4e6f042a45e73ad22dd30aff78827ee..d9d418986ad100fc2e37f87333c814f97ea24db3 100644 --- a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java +++ b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java @@ -29,11 +29,6 @@ public class CreateGroupDetailsDialog extends DComponent { } -// public AlertComponent getAlertArea() { -// return new AlertComponent(driver); -// } - - public AlertComponent getAlertArea(){ if ( alertComponent == null){ alertComponent = new AlertComponent(driver); diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/CreateResourceDetailsDialog.java b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/CreateResourceDetailsDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..01972941a72add59ff6ed56b915e422368fabb9c --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/CreateResourceDetailsDialog.java @@ -0,0 +1,57 @@ +package pages.administration.editGroupsPage; + +import ddsl.dcomponents.AlertComponent; +import ddsl.dcomponents.DComponent; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.PageFactory; +import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; +import rest.models.ResourceModel; + +public class CreateResourceDetailsDialog extends DComponent { + + @FindBy(id = "resourceTypeIdentifier") + private WebElement resourceTypeDdl; + @FindBy(id = "identifierValue_id") + private WebElement resourceIdentifierInput; + @FindBy(id = "identifierScheme_id") + private WebElement resourceSchemeInput; + @FindBy(id = "visibility_id") + private WebElement resourceVisibilityDdl; + @FindBy(id = "saveButton") + private WebElement saveBtn; + private AlertComponent alertComponent = null; + + public CreateResourceDetailsDialog(WebDriver driver) { + super(driver); + PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getWaitTimeShort()), this); + + } + + public AlertComponent getAlertArea() { + if (alertComponent == null) { + alertComponent = new AlertComponent(driver); + } + return alertComponent; + } + + + public void fillResourceDetails(ResourceModel resourceModel) { + weToDSelect(resourceTypeDdl).selectValue(resourceModel.getResourceTypeIdentifier()); + weToDInput(resourceIdentifierInput).fill(resourceModel.getIdentifierValue()); + weToDInput(resourceSchemeInput).fill(resourceModel.getIdentifierScheme()); + + weToDSelect(resourceVisibilityDdl).selectValue(resourceModel.getVisibility()); + } + + public Boolean tryClickOnSave() { + wait.forElementToBeClickable(saveBtn); + if (weToDButton(saveBtn).isEnabled()) { + weToDButton(saveBtn).click(); + return true; + } else { + return false; + } + } +} 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 2cd13a80b0c7efef7f0170aa0e1ed3ada7ba5a04..e728928f077e2c330805a55a44b0206ec42b30a0 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,12 +27,17 @@ public class EditGroupsPage extends CommonPageWithTabs { weToMatSelect(domainDdl).selectByVisibleText(domainModel.getDomainCode()); } - public GroupMembersTab getDomainMembersTab() { + public GroupMembersTab getGroupMembersTab() { return new GroupMembersTab(driver); } - public ResourceTab getGroupTab() { + public ResourceTab getResourceTab() { 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/pages/administration/editGroupsPage/ResourceTab.java b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/ResourceTab.java index e6168652e390b56cfcb2039fcb2235951005f270..1f0a3b821bc1b4db4abd8d4500c68aa6bbfa975a 100644 --- a/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/ResourceTab.java +++ b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/ResourceTab.java @@ -5,7 +5,6 @@ import org.openqa.selenium.ElementNotInteractableException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.PageFactory; import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; -import pages.administration.editDomainsPage.CreateGroupDetailsDialog; /** * Page object Resource tab of EditGroups page. This contains the locators of the page and the methods for the behaviour of the page */ @@ -16,8 +15,8 @@ public class ResourceTab extends SubcategoryTabComponent { } - public CreateGroupDetailsDialog clickOnCreateNewResource() throws ElementNotInteractableException { + public CreateResourceDetailsDialog clickOnCreateNewResource() throws ElementNotInteractableException { create(); - return new CreateGroupDetailsDialog(driver); + return new CreateResourceDetailsDialog(driver); } } diff --git a/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java b/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java index 8e3bab9989e26bd065b0c74b56576c0965246580..34031ec10fb101add3361cb3ed149460023c510c 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 4c01579eab4c21ba228bc4f765dcf7e4106484ed..c2c224c9f5eeb35ed0aeda6e85ddbb1cc2622787 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 8818ef18297e686a3467fe27c9841e100ddd92da..45f72156c9e4835e1e24d156dc2ce8d36e1a71cf 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 0000000000000000000000000000000000000000..a25adef5698f5bf8655eca0308c5f38332a0dc06 --- /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 db1bd29575970abfa8c7ac1839177c4f8f4df4d2..32058cae93426412e46a6f7725c35423e248aa8a 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 3e3f1554fee9a8a0ebefc68f83fda54b4bd3c870..c17805b8615ef8fc395c599746a63d04b2349b01 100644 --- a/domiSMP-ui-tests/src/main/java/rest/UserClient.java +++ b/domiSMP-ui-tests/src/main/java/rest/UserClient.java @@ -5,31 +5,18 @@ 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); - } - } - + startSession(); 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 +40,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 1c3d1b8d4195ee8e85d1a37579f6cb4b1de20368..f6173cbef632199979734da5056d06dbaaa68613 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,32 +22,14 @@ public class DomainModel { private String smlSubdomain; private String smlParticipantIdentifierRegExp; private boolean smlClientCertAuth; - private int status; - + private Object actionMessage; + private Object defaultResourceTypeIdentifier; + private List<Object> groups; + private Long index; + private List<String> resourceDefinitions; + private Long status; public DomainModel() { } - - public static DomainModel generatePublicDomainModelWithoutSML() { - DomainModel domainModel = new DomainModel(); - domainModel.domainCode = "AUTDom" + Generator.randomAlphaNumeric(6); - domainModel.signatureKeyAlias = Utils.randomEnum(ResponseCertificates.values()).getName(); - domainModel.visibility = "PUBLIC"; - 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 String getSmlSmpId() { return smlSmpId; } @@ -80,8 +66,92 @@ public class DomainModel { return smlClientCertAuth; } - public int getStatus() { - return status; + public void setIndex(Long index) { + this.index = index; + } + + 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; + } + + public static DomainModel generatePublicDomainModelWithSML() { + DomainModel domainModel = new DomainModel(); + domainModel.domainCode = "AUTDom" + Generator.randomAlphaNumericValue(6); + domainModel.signatureKeyAlias = Utils.randomEnum(new ResponseCertificates[]{SMP_DOMAIN_01, SMP_DOMAIN_02}).getName(); + domainModel.visibility = "PUBLIC"; + domainModel.smlClientCertAuth = true; + domainModel.smlSubdomain = "AUTDomSML" + Generator.randomAlphaNumericValue(6); + domainModel.smlSmpId = "AUTSMLSMP" + Generator.randomAlphaNumericValue(4); + domainModel.smlClientKeyAlias = StringUtils.lowerCase(Utils.randomEnum(new ResponseCertificates[]{SMP_DOMAIN_01, SMP_DOMAIN_02}).toString()); + return domainModel; + } + + public static DomainModel generatePublicDomainModelWithoutSML() { + DomainModel domainModel = new DomainModel(); + domainModel.domainCode = "AUTDom" + Generator.randomAlphaNumericValue(6); + domainModel.signatureKeyAlias = Utils.randomEnum(ResponseCertificates.values()).getName(); + domainModel.visibility = "PUBLIC"; + return domainModel; } } 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 cf5e6a666c0ae6efc48e5a6ecbabb1dff2e889d5..dfc9576909a8b4b59f5d55dfb6af17ba32fb68c0 100644 --- a/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java +++ b/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java @@ -1,50 +1,73 @@ 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() { - GroupModel groupModel = new GroupModel(); - groupModel.groupName = ("AUT_groupName_" + Generator.randomAlphaNumeric(4)).toLowerCase(); - groupModel.groupDescription = Generator.randomAlphaNumeric(10).toLowerCase(); - groupModel.visibility = "PUBLIC"; - return groupModel; + public void setGroupName(String groupName) { + this.groupName = groupName; } - public static GroupModel generatePrivateDomain() { - GroupModel groupModel = new GroupModel(); - groupModel.groupName = ("AUT_groupName_" + Generator.randomAlphaNumeric(4)).toLowerCase(); - groupModel.groupDescription = Generator.randomAlphaNumeric(10).toLowerCase(); - groupModel.visibility = "PRIVATE"; - return groupModel; + public void setVisibility(String visibility) { + this.visibility = visibility; } - public String getGroupName() { - return groupName; + public void setGroupDescription(String groupDescription) { + this.groupDescription = groupDescription; } - public void setGroupName(String groupName) { - this.groupName = groupName; + public void setActionMessage(Object actionMessage) { + this.actionMessage = actionMessage; } - public String getVisibility() { - return visibility; + public String getGroupId() { + return groupId; } - public void setVisibility(String visibility) { - this.visibility = visibility; + 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; + public static GroupModel generatePublicGroup() { + GroupModel groupModel = new GroupModel(); + groupModel.groupName = ("AUT_groupName_" + Generator.randomAlphaNumericValue(4)).toLowerCase(); + groupModel.groupDescription = Generator.randomAlphaNumericValue(10).toLowerCase(); + groupModel.visibility = "PUBLIC"; + return groupModel; + } + + public static GroupModel generatePrivateGroup() { + GroupModel groupModel = new GroupModel(); + groupModel.groupName = ("AUT_groupName_" + Generator.randomAlphaNumericValue(4)).toLowerCase(); + groupModel.groupDescription = Generator.randomAlphaNumericValue(10).toLowerCase(); + groupModel.visibility = "PRIVATE"; + return groupModel; } + } diff --git a/domiSMP-ui-tests/src/main/java/rest/models/ResourceModel.java b/domiSMP-ui-tests/src/main/java/rest/models/ResourceModel.java new file mode 100644 index 0000000000000000000000000000000000000000..119fb50a7c9bfb9db8fa697ac3335c30d7f64d11 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/rest/models/ResourceModel.java @@ -0,0 +1,88 @@ + +package rest.models; + +import ddsl.enums.ResourceTypes; +import org.apache.commons.lang3.StringUtils; +import utils.Generator; +import utils.Utils; + +import static utils.Utils.getAllEnumValues; + + +public class ResourceModel { + + private Object actionMessage; + private String identifierScheme; + private String identifierValue; + private Long index; + private String resourceId; + private String resourceTypeIdentifier; + private Boolean smlRegistered; + private Long status; + private String visibility; + + public static ResourceModel generatePublicResource() { + ResourceModel resourceModel = new ResourceModel(); + resourceModel.resourceTypeIdentifier = StringUtils.lowerCase(Utils.randomEnum(getAllEnumValues(ResourceTypes.class)).getName()); + resourceModel.identifierValue = ("AUT_resourceIdentifier_" + Generator.randomAlphaNumericValue(4)).toLowerCase(); + resourceModel.identifierScheme = Generator.randomAlphabeticalValue(4).toLowerCase() + "-" + Generator.randomAlphaNumericValue(4).toLowerCase() + "-" + Generator.randomAlphaNumericValue(4).toLowerCase(); + resourceModel.visibility = "PUBLIC"; + return resourceModel; + } + + public String getIdentifierScheme() { + return identifierScheme; + } + + public void setIdentifierScheme(String identifierScheme) { + this.identifierScheme = identifierScheme; + } + + public String getIdentifierValue() { + return identifierValue; + } + + public void setIdentifierValue(String identifierValue) { + this.identifierValue = identifierValue; + } + + public String getResourceId() { + return resourceId; + } + + public void setResourceId(String resourceId) { + this.resourceId = resourceId; + } + + public String getResourceTypeIdentifier() { + return resourceTypeIdentifier; + } + + public void setResourceTypeIdentifier(String resourceTypeIdentifier) { + this.resourceTypeIdentifier = resourceTypeIdentifier; + } + + public void setActionMessage(Object actionMessage) { + this.actionMessage = actionMessage; + } + + public void setIndex(Long index) { + this.index = index; + } + + public void setSmlRegistered(Boolean smlRegistered) { + this.smlRegistered = smlRegistered; + } + + public void setStatus(Long status) { + this.status = status; + } + + public String getVisibility() { + return visibility; + } + + public void setVisibility(String visibility) { + this.visibility = visibility; + } +} diff --git a/domiSMP-ui-tests/src/main/java/rest/models/UserModel.java b/domiSMP-ui-tests/src/main/java/rest/models/UserModel.java index d44e011578a376a6170b6c974a23bdb4932d9cd0..64fd115e8317016d24668525d5d3a9e12519b922 100644 --- a/domiSMP-ui-tests/src/main/java/rest/models/UserModel.java +++ b/domiSMP-ui-tests/src/main/java/rest/models/UserModel.java @@ -16,6 +16,9 @@ public class UserModel { private String smpTheme; private String smpLocale; + public UserModel() { + } + public UserModel(String username, boolean active, String role, String emailAddress, String fullName, String smpTheme, String smpLocale) { this.username = username; this.active = active; @@ -26,9 +29,6 @@ public class UserModel { this.smpLocale = smpLocale; } - public UserModel() { - } - public String getUserId() { return userId; } @@ -96,11 +96,11 @@ public class UserModel { public static UserModel generateUserWithUSERrole() { UserModel userModel = new UserModel(); - userModel.username = ("AUT_username_" + Generator.randomAlphaNumeric(4)).toLowerCase(); + userModel.username = ("AUT_username_" + Generator.randomAlphaNumericValue(4)).toLowerCase(); userModel.active = true; userModel.role = ApplicationRoles.USER; - userModel.emailAddress = "AUT_email_" + Generator.randomAlphaNumeric(4) + "@automation.com"; - userModel.fullName = "AUT_fullname_" + Generator.randomAlphaNumeric(4); + userModel.emailAddress = "AUT_email_" + Generator.randomAlphaNumericValue(4) + "@automation.com"; + userModel.fullName = "AUT_fullname_" + Generator.randomAlphaNumericValue(4); userModel.smpTheme = SMPThemes.getRandomTheme(); userModel.smpLocale = "English"; return userModel; @@ -108,11 +108,11 @@ public class UserModel { public static UserModel generateUserWithADMINrole() { UserModel userModel = new UserModel(); - userModel.username = ("AUT_username_" + Generator.randomAlphaNumeric(4)).toLowerCase(); + userModel.username = ("AUT_username_" + Generator.randomAlphaNumericValue(4)).toLowerCase(); userModel.active = true; userModel.role = ApplicationRoles.SYSTEM_ADMIN; - userModel.emailAddress = "AUT_email_" + Generator.randomAlphaNumeric(4) + "@automation.com"; - userModel.fullName = "AUT_fullname_" + Generator.randomAlphaNumeric(4); + userModel.emailAddress = "AUT_email_" + Generator.randomAlphaNumericValue(4) + "@automation.com"; + userModel.fullName = "AUT_fullname_" + Generator.randomAlphaNumericValue(4); userModel.smpTheme = SMPThemes.getRandomTheme(); userModel.smpLocale = "English"; return userModel; @@ -120,8 +120,8 @@ public class UserModel { public static UserModel generateUserProfileData() { UserModel userModel = new UserModel(); - userModel.emailAddress = "AUT_email_" + Generator.randomAlphaNumeric(4) + "@automation.com"; - userModel.fullName = "AUT_fullname_" + Generator.randomAlphaNumeric(4); + userModel.emailAddress = "AUT_email_" + Generator.randomAlphaNumericValue(4) + "@automation.com"; + userModel.fullName = "AUT_fullname_" + Generator.randomAlphaNumericValue(4); userModel.smpTheme = SMPThemes.getRandomTheme(); userModel.smpLocale = "English"; return userModel; diff --git a/domiSMP-ui-tests/src/main/java/utils/Generator.java b/domiSMP-ui-tests/src/main/java/utils/Generator.java index d44721cd17cc4c0bea268fbe860386b880568be3..120c89647fb6ec8cd15f0abff4671e5aa12b08f1 100644 --- a/domiSMP-ui-tests/src/main/java/utils/Generator.java +++ b/domiSMP-ui-tests/src/main/java/utils/Generator.java @@ -2,8 +2,10 @@ package utils; public class Generator { private static final String ALPHA_NUMERIC_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + private static final String ALPHABETICAL_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - public static String randomAlphaNumeric(int count) { + + public static String randomAlphaNumericValue(int count) { StringBuilder builder = new StringBuilder(); while (count-- != 0) { int character = (int) (Math.random() * ALPHA_NUMERIC_STRING.length()); @@ -12,6 +14,15 @@ public class Generator { return builder.toString(); } + public static String randomAlphabeticalValue(int count) { + StringBuilder builder = new StringBuilder(); + while (count-- != 0) { + int character = (int) (Math.random() * ALPHABETICAL_STRING.length()); + builder.append(ALPHABETICAL_STRING.charAt(character)); + } + return builder.toString(); + } + } diff --git a/domiSMP-ui-tests/src/main/java/utils/TestRunData.java b/domiSMP-ui-tests/src/main/java/utils/TestRunData.java index 01fc5bff527b1d042fc2cf26ed097f30162d4d55..f07c5094397bdaed3636ce9e556445c76cdc5cab 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/main/java/utils/Utils.java b/domiSMP-ui-tests/src/main/java/utils/Utils.java index 37b3ecbf1776bf09264610414f4e4ba753590fa4..e0e79d554b6c97d0238de716ac7b24b4a3a1dc90 100644 --- a/domiSMP-ui-tests/src/main/java/utils/Utils.java +++ b/domiSMP-ui-tests/src/main/java/utils/Utils.java @@ -10,6 +10,10 @@ public class Utils { return values[x]; } + public static <T extends Enum<T>> T[] getAllEnumValues(Class<T> enumClass) { + return enumClass.getEnumConstants(); + } + public static String getAliasFromMessage(String message){ Pattern pattern = Pattern.compile("(?<= \\[)(.*?)(?=\\])"); Matcher matcher = pattern.matcher(message); diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java index cbfd7c5349649e6f0fc9a04a0ccee0088ed4e3ce..a3c5b1a99901fa4f8820e2932e15d3f965a96828 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java @@ -14,11 +14,10 @@ import pages.systemSettings.domainsPage.DomainsPage; import rest.models.DomainModel; import rest.models.UserModel; +/** + * This class has the tests against Domains Page + */ public class DomainsPgTests extends SeleniumTest { - - /** - * This class has the tests against Domains Page - */ DomiSMPPage homePage; LoginPage loginPage; DomainsPage domainsPage; @@ -35,7 +34,7 @@ public class DomainsPgTests extends SeleniumTest { @Test(description = "DOM-01 System admin is able to create Domains") - public void SystemAdminIsAbleToCreateDomains() throws Exception { + public void SystemAdminIsAbleToCreateDomains() { DomainModel domainModel = DomainModel.generatePublicDomainModelWithoutSML(); domainsPage.getCreateDomainBtn().click(); 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 4c43ea4ee0616ece2c794638c0e6d08f600ff73a..2c9b6e02d02d56cc3c4d29b8c09408b666db4873 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 25629381d77de543596d221374557315f1270bf4..06f35f31d8ad96495f539df7959c8d87442d6d18 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java @@ -4,15 +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 rest.models.DomainModel; -import rest.models.MemberModel; -import rest.models.UserModel; +import pages.administration.editGroupsPage.CreateResourceDetailsDialog; +import pages.administration.editGroupsPage.EditGroupsPage; +import rest.models.*; import java.util.Arrays; import java.util.List; @@ -20,10 +18,10 @@ import java.util.List; public class EditGroupsPgTests extends SeleniumTest { DomiSMPPage homePage; LoginPage loginPage; - EditDomainsPage editDomainPage; - String domainId; - DomainModel domainModel; + EditGroupsPage editGroupPage; UserModel adminUser; + DomainModel domainModel; + GroupModel groupModel; SoftAssert soft; @BeforeMethod(alwaysRun = true) @@ -31,28 +29,77 @@ 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 + rest.users().createUser(adminUser).getString("userId"); - MemberModel domainMember = new MemberModel(); - domainMember.setUsername(adminUser.getUsername()); - domainMember.setRoleType("ADMIN"); + //create domain + domainModel = rest.domains().createDomain(domainModel); - rest.users().createUser(adminUser); - JSONObject domainJson = rest.domains().createDomain(domainModel); - domainId = domainJson.get("domainId").toString(); - rest.domains().addMembersToDomain(domainId, domainMember); + //add users to domain + rest.domains().addMembersToDomain(domainModel, adminMember); + rest.domains().addMembersToDomain(domainModel, superMember); + + //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 = "EDTGRP-01 Group admins are able to invite/edit/remove group members", priority = 2) + public void groupAdminsAreAbleToInviteEditRemoveMembers() { + + 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(); } - @Test(description = "EDTDOM-01 Domain admins are able to invite/edit/remove members") - public void domainAdminsAreAbleToInviteEditRemoveMembers(){ + @Test(description = "EDTGRP-02 Group admins are able to create new resources", priority = 0) + public void groupsAdminsAreAbleToCreateNewResources() { + ResourceModel resourceModel = ResourceModel.generatePublicResource(); + editGroupPage.selectDomain(domainModel, groupModel); + editGroupPage.goToTab("Resources"); + CreateResourceDetailsDialog createResourceDetailsDialog = editGroupPage.getResourceTab().clickOnCreateNewResource(); + createResourceDetailsDialog.fillResourceDetails(resourceModel); + createResourceDetailsDialog.tryClickOnSave(); + soft.assertTrue(editGroupPage.getResourceTab().getGrid().isValuePresentInColumn("Identifier", resourceModel.getIdentifierValue())); + soft.assertAll(); } } diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/ProfilePgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/ProfilePgTests.java index 2c391ee2aeba48fa6f16fcabe018914cc423ea67..e01db86f744405a79c0db5bdceb9081e427146db 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/ProfilePgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/ProfilePgTests.java @@ -150,7 +150,7 @@ public class ProfilePgTests extends SeleniumTest { String oldPasswordExpiresOn = profilePage.profileData.getPasswordExpiresOnValue(); //profilePage.profileData.setChangePasswordBtn.click(); - String newPass = "Edeltest!23456789Edelt" + Generator.randomAlphaNumeric(4); + String newPass = "Edeltest!23456789Edelt" + Generator.randomAlphaNumericValue(4); SetChangePasswordDialog setChangePasswordDialog = profilePage.profileData.clickOnChangePassword(); setChangePasswordDialog.fillChangePassword(data.getNewPassword(), newPass); homePage = setChangePasswordDialog.TryClickOnChangePassword(); diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/PropertiesPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/PropertiesPgTests.java index 33f3de66bf7d1f5ef660e90e0a73b9e22d3bdfcf..598506a70542a05cf6aa5c408e9ae70ac5db0c15 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/PropertiesPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/PropertiesPgTests.java @@ -57,7 +57,7 @@ public class PropertiesPgTests extends SeleniumTest { public void propertyValueURLIsValidatedAccordingToExpectedFormat() throws Exception { String property = "bdmsl.integration.url"; - String wrongValue1 = Generator.randomAlphaNumeric(6); + String wrongValue1 = Generator.randomAlphaNumericValue(6); String wrongValue2 = wrongValue1 + ".com"; String wrongValue3 = "www." + wrongValue1 + ".com"; @@ -97,7 +97,7 @@ public class PropertiesPgTests extends SeleniumTest { public void propertyValueEmailIsValidatedAccordingToExpectedFormat() throws Exception { String property = "smp.alert.mail.from"; - String wrongValue1 = Generator.randomAlphaNumeric(6); + String wrongValue1 = Generator.randomAlphaNumericValue(6); String wrongValue2 = wrongValue1 + "@yahoo"; String wrongValue3 = wrongValue1 + ".com"; @@ -137,7 +137,7 @@ public class PropertiesPgTests extends SeleniumTest { public void propertyValueCRONexpressionIsValidatedAccordingToExpectedFormat() throws Exception { String property = "smp.alert.credentials.cronJobExpression"; - String wrongValue1 = Generator.randomAlphaNumeric(6); + String wrongValue1 = Generator.randomAlphaNumericValue(6); String wrongValue2 = "0 0/1 * * * * *"; String wrongValue3 = "0 A * * * * "; @@ -177,7 +177,7 @@ public class PropertiesPgTests extends SeleniumTest { public void propertyValueNumericIsValidatedAccordingToExpectedFormat() throws Exception { String property = "smp.ui.session.idle_timeout.user"; - String wrongValue1 = Generator.randomAlphaNumeric(6); + String wrongValue1 = Generator.randomAlphaNumericValue(6); String wrongValue2 = "333333333333333333333333333333333333333333333333333333"; String wrongValue3 = "0 A * * * * ";