From 4559d98db09efb7a5b9cf438a1796c5378e535ed Mon Sep 17 00:00:00 2001 From: bozmiha <Mihai.BOZ@ext.ec.europa.eu> Date: Fri, 13 Dec 2024 11:22:48 +0200 Subject: [PATCH] added automated tests for Domains Page --- .../java/pages/search/ResourcePageGrid.java | 49 +++- .../main/java/pages/search/ResourcesPage.java | 9 + .../systemSettings/domainsPage/DomainTab.java | 37 ++- .../domainsPage/SMLIntegrationTab.java | 10 +- .../src/main/java/rest/GroupClient.java | 2 +- .../java/domiSMPTests/ui/DomainsPgTests.java | 217 +++++++++++++++--- 6 files changed, 278 insertions(+), 46 deletions(-) diff --git a/domismp-tests/domismp-tests-ui/src/main/java/pages/search/ResourcePageGrid.java b/domismp-tests/domismp-tests-ui/src/main/java/pages/search/ResourcePageGrid.java index a02217032..e6fadf1b9 100644 --- a/domismp-tests/domismp-tests-ui/src/main/java/pages/search/ResourcePageGrid.java +++ b/domismp-tests/domismp-tests-ui/src/main/java/pages/search/ResourcePageGrid.java @@ -91,6 +91,50 @@ public class ResourcePageGrid extends DComponent { } + public boolean isElementPresentInTheGrid(String columnName, String value) { + + wait.forXMillis(data.getWaitTimeoutShortMilliseconds()); + int numOfPages; + try { + numOfPages = getGridPagination().getTotalPageNumber(); + } catch (Exception e) { + LOG.debug("No pagination found"); + numOfPages = 1; + } + List<WebElement> rowHeaders = getGridHeaders(); + int columnIndex = -1; + for (int i = 0; i < rowHeaders.size(); i++) { + if (rowHeaders.get(i).getText().equals(columnName)) { + columnIndex = i; + break; + } + } + if (columnIndex == -1) { + LOG.error("No element found"); + throw new NoSuchElementException("Column not found"); + } + for (int pageNr = 0; 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(value)) { + LOG.debug("[{}] found on page [{}]", value, pageNr); + return true; + } + } + + if (numOfPages > 1) { + getGridPagination().goToNextPage(); + } + } + return false; + + + } + + public void openSubresource(String resourceColumn, String resourceValue, String columnNameSubresouce, String valueSubresource) { wait.forXMillis(data.getWaitTimeoutShortMilliseconds()); @@ -165,12 +209,9 @@ public class ResourcePageGrid extends DComponent { isElementPresent = true; WebElement urlCell = cells.get(2); urlCell.findElement(By.cssSelector("a")).click(); + return; } } - if (isElementPresent) { - return; - } - if (!isElementPresent) { throw new NoSuchElementException("Value [" + value + "] was not found in the grid"); diff --git a/domismp-tests/domismp-tests-ui/src/main/java/pages/search/ResourcesPage.java b/domismp-tests/domismp-tests-ui/src/main/java/pages/search/ResourcesPage.java index 0c2d9ef89..8bd99fe52 100644 --- a/domismp-tests/domismp-tests-ui/src/main/java/pages/search/ResourcesPage.java +++ b/domismp-tests/domismp-tests-ui/src/main/java/pages/search/ResourcesPage.java @@ -90,4 +90,13 @@ public class ResourcesPage extends DomiSMPPage { } } + + public boolean isResourcePresent(String resourceIdentifier, String resourceScheme) { + weToDInput(resourceIdentifierInput).fill(resourceIdentifier); + weToDInput(resourceSchemeInput).fill(resourceScheme); + LOG.debug("Click on Open URL for " + resourceIdentifier); + weToDButton(searchBtn).click(); + wait.forXMillis(data.getWaitTimeoutShortMilliseconds()); + return getGrid().isElementPresentInTheGrid("Resource URL", "Open URL"); + } } diff --git a/domismp-tests/domismp-tests-ui/src/main/java/pages/systemSettings/domainsPage/DomainTab.java b/domismp-tests/domismp-tests-ui/src/main/java/pages/systemSettings/domainsPage/DomainTab.java index c5d47fa9b..3fd4d6eef 100644 --- a/domismp-tests/domismp-tests-ui/src/main/java/pages/systemSettings/domainsPage/DomainTab.java +++ b/domismp-tests/domismp-tests-ui/src/main/java/pages/systemSettings/domainsPage/DomainTab.java @@ -1,6 +1,8 @@ package pages.systemSettings.domainsPage; import ddsl.dcomponents.DComponent; +import ddsl.dcomponents.mat.MatSelect; +import ddsl.dobjects.DSelect; import ddsl.enums.ResponseCertificates; import org.apache.poi.util.StringUtil; import org.openqa.selenium.WebDriver; @@ -22,6 +24,8 @@ public class DomainTab extends DComponent { private WebElement responseSignatureCertificateDdl; @FindBy(id = "domainVisibility_id") private WebElement visibilityOfDomainDdl; + @FindBy(id = "domainDefaultResourceType_id") + private WebElement defaultResourceTypeForDomainDdl; @FindBy(id = "saveButton") private WebElement saveBtn; @@ -31,10 +35,6 @@ public class DomainTab extends DComponent { } - public WebElement getDomainIdInput() { - return domainIdInput; - } - public String getResponseSignatureCertificateSelectedValue() { return weToMatSelect(responseSignatureCertificateDdl).getCurrentText(); } @@ -59,18 +59,31 @@ public class DomainTab extends DComponent { weToDSelect(visibilityOfDomainDdl).selectValue(domainModel.getVisibility()); } + public void changeVisibility(String visibilityValue) { + String currentValue = getVisibilityOfDomainSelectedValue(); + if (!currentValue.equals(visibilityValue)) { + weToDSelect(visibilityOfDomainDdl).selectValue(visibilityValue); + } + } + + public MatSelect getResponseSigunatureCertificateDdl() { + return weToMatSelect(responseSignatureCertificateDdl); + } + + public DSelect getDefaultResourceTypeDdl() { + return weToDSelect(defaultResourceTypeForDomainDdl); + } + public void saveChanges() { - if (saveBtn.isEnabled()) { - saveBtn.click(); + if (weToDButton(saveBtn).isEnabled()) { + weToDButton(saveBtn).click(); wait.forElementToBeDisabled(saveBtn); - try { - saveBtn.getAttribute("disabled").equals("true"); - LOG.debug("Domain tab changes were succesfully saved"); - } catch (NullPointerException e) { - LOG.debug("Domain tab changes were not saved"); + if (!(weToDButton(saveBtn).getAttribute("disabled") == null)) { + LOG.debug("Domain tab changes were succesfully saved"); + } else { + LOG.error("Domain tab changes were not saved"); } - } } diff --git a/domismp-tests/domismp-tests-ui/src/main/java/pages/systemSettings/domainsPage/SMLIntegrationTab.java b/domismp-tests/domismp-tests-ui/src/main/java/pages/systemSettings/domainsPage/SMLIntegrationTab.java index fa4f0cf3f..2a77090e2 100644 --- a/domismp-tests/domismp-tests-ui/src/main/java/pages/systemSettings/domainsPage/SMLIntegrationTab.java +++ b/domismp-tests/domismp-tests-ui/src/main/java/pages/systemSettings/domainsPage/SMLIntegrationTab.java @@ -70,10 +70,11 @@ public class SMLIntegrationTab extends DComponent { } public void saveChanges() { - if (saveBtn.isEnabled()) { - saveBtn.click(); + if (weToDButton(saveBtn).isEnabled()) { + weToDButton(saveBtn).click(); wait.forElementToBeDisabled(saveBtn); - if (saveBtn.getDomAttribute("disabled").equals("true")) { + + if (!(weToDButton(saveBtn).getAttribute("disabled") == null)) { LOG.debug("SML Integration tab changes were succesfully saved"); } else { LOG.error("SML Integration tab changes were not saved"); @@ -129,6 +130,9 @@ public class SMLIntegrationTab extends DComponent { return weToDSelect(smlClientCertificateAliasDdl); } + public DInput getSMLDomainInput() { + return weToDInput(smlDomainInput); + } } diff --git a/domismp-tests/domismp-tests-ui/src/main/java/rest/GroupClient.java b/domismp-tests/domismp-tests-ui/src/main/java/rest/GroupClient.java index aaf97d87d..70181cb07 100644 --- a/domismp-tests/domismp-tests-ui/src/main/java/rest/GroupClient.java +++ b/domismp-tests/domismp-tests-ui/src/main/java/rest/GroupClient.java @@ -29,7 +29,7 @@ public class GroupClient extends BaseRestClient { ClientResponse response = jsonPUT(resource.path(addGroupMemberPath), membersJson); if (response.getStatus() != 200) { try { - throw new SMPRestException("Could not add members to group", response); + throw new SMPRestException("Could not add members to group", response.getStatus(), response.getEntity(String.class)); } catch (SMPRestException e) { throw new RuntimeException(e); } diff --git a/domismp-tests/domismp-tests-ui/src/test/java/domiSMPTests/ui/DomainsPgTests.java b/domismp-tests/domismp-tests-ui/src/test/java/domiSMPTests/ui/DomainsPgTests.java index a1684a288..fb91b6a76 100644 --- a/domismp-tests/domismp-tests-ui/src/test/java/domiSMPTests/ui/DomainsPgTests.java +++ b/domismp-tests/domismp-tests-ui/src/test/java/domiSMPTests/ui/DomainsPgTests.java @@ -15,6 +15,7 @@ import org.testng.asserts.SoftAssert; import pages.LoginPage; import pages.SmlPage; import pages.administration.editDomainsPage.EditDomainsPage; +import pages.search.ResourcesPage; import pages.systemSettings.domainsPage.DomainsPage; import rest.models.*; import utils.Generator; @@ -24,6 +25,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static ddsl.enums.ResponseCertificates.SMP_DOMAIN_01; + /** * This class has the tests against Domains Page */ @@ -209,12 +212,10 @@ public class DomainsPgTests extends SeleniumTest { GroupModel groupModel = GroupModel.generatePublicGroup(); ResourceModel resourceModel = ResourceModel.generatePublicResourceUnregisteredToSML(); - MemberModel superMember = new MemberModel(); superMember.setUsername(TestRunData.getInstance().getAdminUsername()); superMember.setRoleType("ADMIN"); - //create domain domainModel = rest.domains().createDomain(domainModel); @@ -228,11 +229,9 @@ public class DomainsPgTests extends SeleniumTest { //create group for domain groupModel = rest.domains().createGroupForDomain(domainModel, groupModel); - //add resource to group rest.resources().createResourceForGroup(domainModel, groupModel, resourceModel); - domainsPage.refreshPage(); domainsPage .getLeftSideGrid().searchAndClickElementInColumn("Domain code", domainModel.getDomainCode()); @@ -243,23 +242,86 @@ public class DomainsPgTests extends SeleniumTest { soft.assertAll(); } - @Test(description = "DOM-10 System admin is able to change the Resource Type only if it is not used by a resource") - public void systemAdminIsAbleToChangeTheResourceTypeOnlyIfItIsNotUsedByAResource() throws Exception { + @Test(description = "DOM-07 System admin can delete only unregister SML domains") + public void systemAdminCanDeleteOnlyUnregisterSMLDomains() throws Exception { DomainModel domainModelGenerated = DomainModel.generatePublicDomainModelWithSML(); + + MemberModel superMember = new MemberModel(); + superMember.setUsername(TestRunData.getInstance().getAdminUsername()); + superMember.setRoleType("ADMIN"); + + //create domain + DomainModel domainModel = rest.domains().createDomain(domainModelGenerated); + + //add users to domain + 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); + + domainsPage.refreshPage(); + + domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + domainsPage.goToTab("SML integration"); + domainsPage.getSMLIntegrationTab().fillSMLIntegrationTab(domainModelGenerated); + domainsPage.getSMLIntegrationTab().saveChanges(); + domainsPage.getSMLIntegrationTab().registerToSML(); + + String alert = domainsPage.getAlertMessageAndClose(); + soft.assertEquals(alert, "Domain [" + domainModel.getDomainCode() + "] registered to SML!"); + soft.assertFalse(domainsPage.getDeleteBtn().isEnabled(), "Delete button is enabled!"); + + domainsPage.getSMLIntegrationTab().unregisterToSML(); + domainsPage.deleteandConfirm(); + soft.assertFalse(domainsPage.getLeftSideGrid().isValuePresentInColumn("Domain code", domainModel.getDomainCode()), "Deleted domain is still in the grid"); + soft.assertAll(); + } + + @Test(description = "DOM-08 System admin is able to change the visibility of a domain") + public void systemAdminIsAbleToChangeTheVisibilityOfADomain() throws Exception { + DomainModel domainModel = DomainModel.generatePublicDomainModelWithoutSML(); + domainModel.setVisibility("PRIVATE"); + UserModel normalUserForAdminRole = UserModel.generateUserWithUSERrole(); + UserModel normalUserForViewerRole = UserModel.generateUserWithUSERrole(); + UserModel norightsUser = UserModel.generateUserWithUSERrole(); + GroupModel groupModel = GroupModel.generatePublicGroup(); ResourceModel resourceModel = ResourceModel.generatePublicResourceUnregisteredToSML(); - resourceModel.setResourceTypeIdentifier(ResourceTypes.OASIS3.getName()); + + MemberModel adminMember = new MemberModel() { + }; + adminMember.setUsername(normalUserForAdminRole.getUsername()); + adminMember.setRoleType("ADMIN"); + adminMember.setHasPermissionReview(true); + + MemberModel viewMember = new MemberModel() { + }; + viewMember.setUsername(normalUserForViewerRole.getUsername()); + viewMember.setRoleType("VIEWER"); + viewMember.setHasPermissionReview(true); MemberModel superMember = new MemberModel(); superMember.setUsername(TestRunData.getInstance().getAdminUsername()); superMember.setRoleType("ADMIN"); + //create user + String noRightsUserId = rest.users().createUser(norightsUser).getString("userId"); + String viewUserId = rest.users().createUser(normalUserForViewerRole).getString("userId"); + String adminUserId = rest.users().createUser(normalUserForAdminRole).getString("userId"); + + //Set password for users + rest.users().changePassword(noRightsUserId, data.getNewPassword()); + rest.users().changePassword(viewUserId, data.getNewPassword()); + rest.users().changePassword(adminUserId, data.getNewPassword()); //create domain - DomainModel domainModel = rest.domains().createDomain(domainModelGenerated); + domainModel = rest.domains().createDomain(domainModel); //add users to domain + rest.domains().addMembersToDomain(domainModel, viewMember); rest.domains().addMembersToDomain(domainModel, superMember); + rest.domains().addMembersToDomain(domainModel, adminMember); + //add resources to domain List<ResourceTypes> resourcesToBeAdded = Arrays.asList(ResourceTypes.OASIS1, ResourceTypes.OASIS3, ResourceTypes.OASIS2); domainModel = rest.domains().addResourcesToDomain(domainModel, resourcesToBeAdded); @@ -267,27 +329,71 @@ public class DomainsPgTests extends SeleniumTest { //create group for domain groupModel = rest.domains().createGroupForDomain(domainModel, groupModel); + //add users to groups + rest.groups().addMembersToGroup(domainModel, groupModel, viewMember); //add resource to group - rest.resources().createResourceForGroup(domainModel, groupModel, resourceModel); - domainsPage.refreshPage(); + resourceModel = rest.resources().createResourceForGroup(domainModel, groupModel, resourceModel); + rest.resources().addMembersToResource(domainModel, groupModel, resourceModel, viewMember); + + //System is able to see private resource with private domain + ResourcesPage searchResourcesPage = domainsPage.getSidebar().navigateTo(Pages.SEARCH_RESOURCES); + soft.assertTrue(searchResourcesPage.isResourcePresent(resourceModel.getIdentifierValue(), resourceModel.getIdentifierScheme()), "System admin is NOT able to see private resource with private domain"); + + //Not login user is not able to see private resource with private domain. + searchResourcesPage.logout(); + searchResourcesPage = homePage.getSidebar().navigateTo(Pages.SEARCH_RESOURCES); + soft.assertFalse(searchResourcesPage.isResourcePresent(resourceModel.getIdentifierValue(), resourceModel.getIdentifierScheme()), "Not login user is able to see private resource with private domain"); + + //Admin user with domain Admin rights can see private resource with private domain + loginPage = homePage.goToLoginPage(); + loginPage.login(normalUserForViewerRole.getUsername(), data.getNewPassword()); + searchResourcesPage = homePage.getSidebar().navigateTo(Pages.SEARCH_RESOURCES); + soft.assertTrue(searchResourcesPage.isResourcePresent(resourceModel.getIdentifierValue(), resourceModel.getIdentifierScheme()), "Admin user with domain Admin rights can NOT see private resource with private domain"); + + //normal user with domain Admin rights is able to see resource of private domain. + searchResourcesPage.logout(); + loginPage = homePage.goToLoginPage(); + loginPage.login(normalUserForAdminRole.getUsername(), data.getNewPassword()); + searchResourcesPage = homePage.getSidebar().navigateTo(Pages.SEARCH_RESOURCES); + soft.assertTrue(searchResourcesPage.isResourcePresent(resourceModel.getIdentifierValue(), resourceModel.getIdentifierScheme()), "User with domain admin rights is NOT able to public resource of private domain"); + + //user without rights is NOT able to see resource of private domain. + searchResourcesPage.logout(); + loginPage = homePage.goToLoginPage(); + loginPage.login(norightsUser.getUsername(), data.getNewPassword()); + searchResourcesPage = homePage.getSidebar().navigateTo(Pages.SEARCH_RESOURCES); + soft.assertFalse(searchResourcesPage.isResourcePresent(resourceModel.getIdentifierValue(), resourceModel.getIdentifierScheme()), "User with no rights is able to see public resource of private domain"); + searchResourcesPage.logout(); + + //Change the visibility of domain to PUBLIC + loginPage = homePage.goToLoginPage(); + loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password")); + domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS); domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); - domainsPage.goToTab("Resource Types"); - domainsPage.getResourceTypesTab().checkResource("edelivery-oasis-smp-1.0-servicegroup (smp-1)", false); - domainsPage.getResourceTypesTab().saveChanges(); - soft.assertFalse(domainsPage.getResourceTypesTab().getResourceTypeStatus("edelivery-oasis-smp-1.0-servicegroup (smp-1)")); + domainsPage.getDomainTab().changeVisibility("PUBLIC"); + domainsPage.getDomainTab().saveChanges(); - domainsPage.getResourceTypesTab().checkResource("edelivery-oasis-cppa-3.0-cpp (cpp)", false); - domainsPage.getResourceTypesTab().saveChanges(); - soft.assertEquals(domainsPage.getAlertMessageAndClose(), "Can not remove resource definition [edelivery-oasis-cppa-3.0-cpp] from domain [" + domainModel.getDomainCode() + "], because it has resources. Resource count [1]!"); + //User not logged in able to see public resource of public domain. + searchResourcesPage.logout(); + searchResourcesPage = homePage.getSidebar().navigateTo(Pages.SEARCH_RESOURCES); + soft.assertTrue(searchResourcesPage.isResourcePresent(resourceModel.getIdentifierValue(), resourceModel.getIdentifierScheme()), "Not login user is able not to see public resource of public domain"); + + //User with no rights in able to see public resource of public domain. + loginPage = homePage.goToLoginPage(); + loginPage.login(norightsUser.getUsername(), data.getNewPassword()); + searchResourcesPage = homePage.getSidebar().navigateTo(Pages.SEARCH_RESOURCES); + soft.assertTrue(searchResourcesPage.isResourcePresent(resourceModel.getIdentifierValue(), resourceModel.getIdentifierScheme()), "User with no rights is NOT able to see public resource of public domain"); + searchResourcesPage.logout(); soft.assertAll(); } - @Test(description = "DOM-07 System admin can delete only unregister SML domains") - public void systemAdminCanDeleteOnlyUnregisterSMLDomains() throws Exception { + @Test(description = "DOM-09 System admin is able to modify the domain") + public void systemAdminIsAbleToModifyTheDomain() throws Exception { DomainModel domainModelGenerated = DomainModel.generatePublicDomainModelWithSML(); + domainModelGenerated.setSignatureKeyAlias(SMP_DOMAIN_01.getAlias()); MemberModel superMember = new MemberModel(); superMember.setUsername(TestRunData.getInstance().getAdminUsername()); @@ -306,24 +412,84 @@ public class DomainsPgTests extends SeleniumTest { domainsPage.refreshPage(); domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + domainsPage.getDomainTab().getResponseSigunatureCertificateDdl().selectByVisibleText("smp_domain_02 (CN=smp_domain_02,O=digit,C=eu:000000006443d987)"); + domainsPage.getDomainTab().getDefaultResourceTypeDdl().selectValue(ResourceTypes.OASIS2.getName()); + + domainsPage.getDomainTab().saveChanges(); + + soft.assertEquals(domainsPage.getDomainTab().getResponseSignatureCertificateSelectedValue(), "smp_domain_02 (CN=smp_domain_02,O=digit,C=eu:000000006443d987)", "Response Signature Certificate was not updated"); + soft.assertEquals(domainsPage.getDomainTab().getDefaultResourceTypeDdl().getCurrentValue(), "Oasis SMP 2.0 ServiceGroup (edelivery-oasis-smp-2.0-servicegroup)", "Default ResourceType was not updated"); + + //Register domain to SML domainsPage.goToTab("SML integration"); domainsPage.getSMLIntegrationTab().fillSMLIntegrationTab(domainModelGenerated); domainsPage.getSMLIntegrationTab().saveChanges(); domainsPage.getSMLIntegrationTab().registerToSML(); - String alert = domainsPage.getAlertMessageAndClose(); soft.assertEquals(alert, "Domain [" + domainModel.getDomainCode() + "] registered to SML!"); - soft.assertFalse(domainsPage.getDeleteBtn().isEnabled(), "Delete button is enabled!"); - domainsPage.getSMLIntegrationTab().unregisterToSML(); - domainsPage.deleteandConfirm(); - soft.assertFalse(domainsPage.getLeftSideGrid().isValuePresentInColumn("Domain code", domainModel.getDomainCode()), "Deleted domain is still in the grid"); + + String smlDomain = "AUTNew" + Generator.randomAlphabeticalValue(3); + domainsPage.getSMLIntegrationTab().getSMLDomainInput().fill(smlDomain); + domainsPage.getSMLIntegrationTab().saveChanges(); + soft.assertEquals(domainsPage.getSMLIntegrationTab().getSMLDomainInput().getText(), smlDomain, "SML Domain value was not updated."); + + //Update SML Client Certificate Alias with a value which is not registered to SML + domainsPage.getSMLIntegrationTab().getSMLClientCertificateAliasDdl().selectByVisibleText("sample_key (CN=demo-smp-signing-key,O=digit,C=eu:000000006443f9bc)"); + domainsPage.getSMLIntegrationTab().saveChanges(); + String smlIntegrationError = domainsPage.getAlertMessageAndClose(); + soft.assertTrue(smlIntegrationError.startsWith("SML integration error! Error: UnauthorizedFault: [ERR-102]"), "No error appears when selecting a certificate which cannot be added to SML"); + + //Update SML Client Certificate Alias with a value which is registered to SML + domainsPage.getSMLIntegrationTab().getSMLClientCertificateAliasDdl().selectByVisibleText("smp_domain_01 (CN=smp_domain_01,O=digit,C=eu:000000006443d8a8)"); + domainsPage.getSMLIntegrationTab().saveChanges(); + soft.assertEquals(domainsPage.getSMLIntegrationTab().getSMLClientCertificateAliasDdl().getCurrentValue(), "smp_domain_01 (CN=smp_domain_01,O=digit,C=eu:000000006443d8a8)", "SML Domain value was not updated."); soft.assertAll(); } - //Ignore tag should be removed when + @Test(description = "DOM-10 System admin is able to change the Resource Type only if it is not used by a resource") + public void systemAdminIsAbleToChangeTheResourceTypeOnlyIfItIsNotUsedByAResource() throws Exception { + DomainModel domainModelGenerated = DomainModel.generatePublicDomainModelWithSML(); + GroupModel groupModel = GroupModel.generatePublicGroup(); + ResourceModel resourceModel = ResourceModel.generatePublicResourceUnregisteredToSML(); + resourceModel.setResourceTypeIdentifier(ResourceTypes.OASIS3.getName()); + + MemberModel superMember = new MemberModel(); + superMember.setUsername(TestRunData.getInstance().getAdminUsername()); + superMember.setRoleType("ADMIN"); + + + //create domain + DomainModel domainModel = rest.domains().createDomain(domainModelGenerated); + + //add users to domain + 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 resource to group + rest.resources().createResourceForGroup(domainModel, groupModel, resourceModel); + domainsPage.refreshPage(); + + domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + domainsPage.goToTab("Resource Types"); + domainsPage.getResourceTypesTab().checkResource("edelivery-oasis-smp-1.0-servicegroup (smp-1)", false); + domainsPage.getResourceTypesTab().saveChanges(); + soft.assertFalse(domainsPage.getResourceTypesTab().getResourceTypeStatus("edelivery-oasis-smp-1.0-servicegroup (smp-1)")); + + domainsPage.getResourceTypesTab().checkResource("edelivery-oasis-cppa-3.0-cpp (cpp)", false); + domainsPage.getResourceTypesTab().saveChanges(); + soft.assertEquals(domainsPage.getAlertMessageAndClose(), "Can not remove resource definition [edelivery-oasis-cppa-3.0-cpp] from domain [" + domainModel.getDomainCode() + "], because it has resources. Resource count [1]!"); + + soft.assertAll(); + } @Test(description = "DOM-15 - User tries to add invalid SML SMP identifier and receives error") public void systemAdminTriesToAddInvalidSMLSMPIdentifierAndReceivesError() throws Exception { DomainModel domainModelGenerated = DomainModel.generatePublicDomainModelWithSML(); @@ -365,7 +531,6 @@ public class DomainsPgTests extends SeleniumTest { soft.assertAll(); } - @Test(description = "DOM-16 - SML Cert Alias dropdown field contains all keys from the keystore") public void smlCertAliasDowndownContainsAllKeysFromKeystore() throws Exception { DomainModel domainModelGenerated = DomainModel.generatePublicDomainModelWithSML(); -- GitLab