diff --git a/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java b/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java index 6b6e4160adf85c40375fc570691f75b0cd597b26..8e67f7efbd1ed41bf74f9a2c45fe409e97e3c333 100644 --- a/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java +++ b/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java @@ -55,6 +55,9 @@ public class DomainPopup extends PageComponent { @FindBy(css = "div.mat-form-field-infix > div.ng-star-inserted") WebElement domainCodeValidationError; + @FindBy(css = "#MetadataTextArea") + private WebElement metadataTextArea; + @FindBy(css = "#smlClientKeyAlias_id") WebElement smlClientAliasSelectContainer; GenericSelect smlClientAliasSelect; @@ -70,6 +73,7 @@ public class DomainPopup extends PageComponent { waitForElementToBeGone(cancelBtn); } + public boolean isLoaded() { log.info("checking if domain popup is properly loaded"); return isVisible(okBtn) @@ -148,7 +152,29 @@ public class DomainPopup extends PageComponent { } } + public String domainCode63CharValidationGetErrMsg() { + try { + waitForElementToBeVisible(domainCodeValidationError); + return domainCodeValidationError.getAttribute("value"); + } catch (Exception e) { + } + return null; + } + public String getSmlSmpId63CharValidationMsg() { + WebElement invalidSmlSmpIdErrorMsg = driver.findElement(By.cssSelector("div.mat-form-field-infix > div.ng-star-inserted")); + try { + waitForElementToBeVisible(invalidSmlSmpIdErrorMsg); + return invalidSmlSmpIdErrorMsg.getAttribute("value"); + } catch (Exception e) { + } + return null; + } + + public String xmlFieldVALUE(){ + log.info("value is "+metadataTextArea.getAttribute("value")); + return metadataTextArea.getAttribute("value"); + } public void clearAndFillDomainCodeInput(String domainCode) { log.info("clear and fill domain code data"); clearAndFillInput(domainCodeInput, domainCode); diff --git a/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceMetadataPopup.java b/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceMetadataPopup.java index 0b98f19153ad4469ed169d93140ec628ce2ea735..b3998e7587e09a09395220ea5335463d273d316f 100644 --- a/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceMetadataPopup.java +++ b/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceMetadataPopup.java @@ -28,7 +28,7 @@ public class ServiceMetadataPopup extends PageComponent { private WebElement clearButton; @FindBy(css = "mat-card-content > mat-toolbar > mat-toolbar-row > button:nth-child(2)") private WebElement generateXMLButton; - @FindBy(css = "mat-card-content > mat-toolbar > mat-toolbar-row > button:nth-child(3)") + @FindBy(css = "mat-card-content > mat-toolbar > mat-toolbar-row > button:nth-child(4)") private WebElement validateButton; @FindBy(css = "#MetadataTextArea") @@ -49,6 +49,9 @@ public class ServiceMetadataPopup extends PageComponent { @FindBy(xpath = "//span[text() ='Metadata wizard']") private WebElement metadataWizardBtn; + @FindBy(css = "mat-card-content > div > div.ng-star-inserted:nth-child(2)") + private WebElement xmlValidationMsg; + @FindBy(css = "mat-dialog-content #domain_id") private WebElement domainSelectContainer; private GenericSelect domainSelect; @@ -73,6 +76,11 @@ public class ServiceMetadataPopup extends PageComponent { } + public String xmlFieldVALUE(){ + log.info("value is "+metadataTextArea.getAttribute("value")); + return metadataTextArea.getAttribute("value"); + } + public void fillForm(String domain, String docID, String docScheme) { waitForElementToBeVisible(documentIdentifierInput); domainSelect.selectWithIndex(0); @@ -83,7 +91,26 @@ public class ServiceMetadataPopup extends PageComponent { generateXMLButton.click(); } + public String captureTextOfMetadataTextArea(){ + return metadataTextArea.getText(); + } + + public void clickValidateBtn(){ + waitForElementToBeClickable(validateButton).click(); + } + public void clickGenerateXMLBtn(){ + waitForElementToBeClickable(generateXMLButton).click(); + } + public void clickClearBtn(){ + waitForElementToBeClickable(clearButton).click(); + } + public String getXMLValidationMessage(){ + return xmlValidationMsg.getText(); + } + public void addTextToMetadataTextArea(String generator){ + metadataTextArea.sendKeys(generator); + } public String docIDFieldValue(){ return documentIdentifierInput.getAttribute("value"); diff --git a/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java b/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java index 3aabdc70d5b7f026e9954b52d06e288194ca88a6..059b4b88bbd4962ca7349fdb44b50caab6a0930f 100644 --- a/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java +++ b/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java @@ -80,4 +80,15 @@ public class SMPMessages { public static final String SMLSMPID_VALIDATION_MESSAGE = "SML SMP ID should be up to 63 characters long, should only contain alphanumeric and hyphen characters, should not start with a digit nor a hyphen and should not end with a hyphen."; public static final String USER_EMAIL_VALIDATION_MESSAGE ="Email is invalid!"; public static final String DOMAINCODE_VALIDATION_MESSAGE = "Domain code must contain only chars and numbers and must be less than 63 chars long."; + public static final String VALID_XML_MESSAGE = "Servicemetadata is valid!"; + public static final String INVALID_XML_MESSAGE1 = "SAXParseException: XML document structures must start and end within the same entity."; + public static final String INVALID_XML_MESSAGE2 = "SAXParseException: Content is not allowed in prolog."; + public static final String INVALID_XML_MESSAGE3 = "SAXParseException: Content is not allowed in trailing section."; + public static final String INVALID_XML_MESSAGE4 = "SAXParseException: cvc-complex-type.2.3: Element 'ServiceMetadata' cannot have character [children], because the type's content type is element-only."; + public static final String INVALID_XML_MESSAGE5 = "SAXParseException: The end-tag for element type \"ServiceMetadata\" must end with a '>' delimiter."; + public static final String INVALID_XML_MESSAGE6 = "SAXParseException: cvc-complex-type.2.3: Element 'Process' cannot have character [children], because the type's content type is element-only."; + public static final String EMPTY_XML_WARN_MESSAGE = "Service metadata xml must not be empty"; + public static final String EMPTY_XML_MESSAGE = "Valid service metadata XML is required!"; + public static final String INVALID_XML_MESSAGE7 = "SAXParseException: The markup in the document following the root element must be well-formed."; + } diff --git a/smp-ui-tests/src/test/java/ui/DomainPgTest.java b/smp-ui-tests/src/test/java/ui/DomainPgTest.java index b69c199d8dd6c8092a533aa90669714eea89d188..635c3ea6d5b071dd796938034a1d3cfd49fdf2c7 100644 --- a/smp-ui-tests/src/test/java/ui/DomainPgTest.java +++ b/smp-ui-tests/src/test/java/ui/DomainPgTest.java @@ -177,6 +177,11 @@ public class DomainPgTest extends BaseTest { popup.fillDataForNewDomain(rndString, rndString, rndString, rndString); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } popup.clickOK(); soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled"); @@ -453,8 +458,7 @@ public class DomainPgTest extends BaseTest { SoftAssert soft = new SoftAssert(); DomainPage page = new DomainPage(driver); String randstring =Generator.randomAlphaNumeric(10); - ArrayList<String> smlsmpId = new ArrayList<>(Arrays.asList("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopmkjh", - "abc@k", + ArrayList<String> smlsmpId = new ArrayList<>(Arrays.asList("abc@k", "abcd-", "-abgxknvlk", "1qwertyuvbnm")); @@ -489,8 +493,7 @@ public class DomainPgTest extends BaseTest { soft.assertTrue(page.isLoaded(), "Check that the page is loaded"); ArrayList<String> domainCode = new ArrayList<>(Arrays.asList("sddfgf@", - "123%", - "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12345678901g")); + "123%")); DomainPopup popup = page.clickNew(); soft.assertTrue(popup.isLoaded(), "Domain popup is loaded"); @@ -509,4 +512,20 @@ public class DomainPgTest extends BaseTest { soft.assertAll(); } + @Test(description = "USR-150") + public void verifyNoOfCharcterAllowanceLimitInDomaincodeAndSMLSMPId(){ + SoftAssert soft = new SoftAssert(); + DomainPage page = new DomainPage(driver); + String randstring =Generator.randomAlphaNumeric(10); + String string = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12345678901g"; + + soft.assertTrue(page.isLoaded(), "Check that the page is not loaded"); + DomainPopup popup = page.clickNew(); + soft.assertTrue(popup.isLoaded(), "Domain popup is not loaded"); + popup.fillDataForNewDomain(string, randstring, string, randstring); + soft.assertEquals(popup.domainCode63CharValidationGetErrMsg(), SMPMessages.DOMAINCODE_VALIDATION_MESSAGE, "Message is not in the list"); + soft.assertEquals(popup.getSmlSmpId63CharValidationMsg(), SMPMessages.SMLSMPID_VALIDATION_MESSAGE,"Error message is not in list"); + + soft.assertAll(); + } } diff --git a/smp-ui-tests/src/test/java/ui/EditPgTest.java b/smp-ui-tests/src/test/java/ui/EditPgTest.java index 69f93b1338982127aa805e1454eac261f387f5e6..1ddfd3bfcc9489281e2f0385b9e27a46523dc8e7 100644 --- a/smp-ui-tests/src/test/java/ui/EditPgTest.java +++ b/smp-ui-tests/src/test/java/ui/EditPgTest.java @@ -10,6 +10,7 @@ import pages.service_groups.ServiceGroupGrid; import pages.service_groups.ServiceGroupRow; import pages.service_groups.edit.*; import utils.Generator; +import utils.enums.SMPMessages; import utils.rest.SMPRestClient; import java.util.List; @@ -166,7 +167,7 @@ public class EditPgTest extends BaseTest { ServiceGroupPopup popup = new ServiceGroupPopup(driver); soft.assertTrue(row0.getParticipantIdentifier().equalsIgnoreCase(popup.getParticipantIdentifierValue()), "Popup opened for appropriate service group"); - soft.assertTrue(row0.getParticipantIdentifier().equalsIgnoreCase(popup.getParticipantSchemeValue()), "Popup opened for appropriate service group"); + soft.assertTrue(row0.getParticipantScheme().equalsIgnoreCase(popup.getParticipantSchemeValue()), "Popup opened for appropriate service group"); soft.assertTrue(popup.isExtensionAreaEditable(), "extension area is editable"); soft.assertTrue(!popup.isParticipantIdentifierInputEnabled(), "Participant Identifier field is disabled"); @@ -436,6 +437,74 @@ public class EditPgTest extends BaseTest { soft.assertAll(); } + @Test(description = "EDT-140") + public void serviceMetadataXMLValidationRule(){ + SoftAssert soft = new SoftAssert(); + EditPage page = new EditPage(driver); + String generator = Generator.randomAlphaNumeric(10); + ServiceGroupGrid grid = page.getGrid(); + Integer index = 0; + ServiceGroupRowE row0 = grid.getRowsAs(ServiceGroupRowE.class).get(index); + ServiceMetadataPopup metadataPopup= row0.clickAddMetadata(); + metadataPopup.fillForm(generator,generator,generator); + metadataPopup.clickValidateBtn(); + soft.assertEquals(metadataPopup.getXMLValidationMessage(), SMPMessages.VALID_XML_MESSAGE,"The message is not in list"); + metadataPopup.clickClearBtn(); + metadataPopup.clickValidateBtn(); + soft.assertEquals(metadataPopup.getXMLValidationMessage(),SMPMessages.EMPTY_XML_WARN_MESSAGE,"The message is not in list"); + metadataPopup.clickGenerateXMLBtn(); + String xml1 = metadataPopup.captureTextOfMetadataTextArea(); + String invalidxml1 = xml1+"xcvjdvxv"; + metadataPopup.addTextToMetadataTextArea(invalidxml1); + metadataPopup.clickValidateBtn(); + soft.assertEquals(metadataPopup.getXMLValidationMessage(),SMPMessages.INVALID_XML_MESSAGE3,"The message error message is not in list"); + metadataPopup.clickClearBtn(); + metadataPopup.addTextToMetadataTextArea("xjvnkcfjblcf"); + metadataPopup.clickValidateBtn(); + soft.assertEquals(metadataPopup.getXMLValidationMessage(),SMPMessages.INVALID_XML_MESSAGE2,"The message error message is not in list"); + metadataPopup.clickClearBtn(); + + soft.assertAll(); + + } + + @Test(description = "EDT-150") + public void verifyServiceMetadataXMLClearBtn(){ + SoftAssert soft = new SoftAssert(); + EditPage page = new EditPage(driver); + String generator = Generator.randomAlphaNumeric(10); + ServiceGroupGrid grid = page.getGrid(); + Integer index = 0; + ServiceGroupRowE row0 = grid.getRowsAs(ServiceGroupRowE.class).get(index); + ServiceMetadataPopup metadataPopup= row0.clickAddMetadata(); + metadataPopup.fillForm(generator,generator,generator); + soft.assertNotEquals(metadataPopup.xmlFieldVALUE(),"","The xml field area is empty"); + metadataPopup.clickClearBtn(); + soft.assertEquals(metadataPopup.xmlFieldVALUE(),"","The clear button did not clear the xml field"); + soft.assertAll(); + } + + @Test(description = "EDT-160") + public void verifyServiceMetadataWizardOkBtn(){ + SoftAssert soft = new SoftAssert(); + EditPage page = new EditPage(driver); + String generator = Generator.randomAlphaNumeric(10); + ServiceGroupGrid grid = page.getGrid(); + int index = 0; + ServiceGroupRowE row0 = grid.getRowsAs(ServiceGroupRowE.class).get(index); + ServiceMetadataPopup metadataPopup= row0.clickAddMetadata(); + ServiceMetadataWizardPopup metadataWizard = metadataPopup.clickMetadataWizard(); + soft.assertTrue(!metadataPopup.isParticipantIdentifierEnabled(),"participantId field is enabled for an existing service group in service metadata popup"); + soft.assertTrue(!metadataPopup.isParticipantSchemeEnabled(),"participantScheme field is enabled for an existing service group in service metadata popup"); + soft.assertFalse(metadataWizard.isEnableOkBtn(),"OK button is enable before providing the valid data"); + metadataWizard.fillForm(generator,generator,generator,generator,"bdxr-transport-ebms3-as4-v1p0","internal/rest/domain"); + metadataWizard.fillCerificateBox(generator); + soft.assertTrue(metadataWizard.isEnableOkBtn(),"OK button is disable after providing the valid data"); + + soft.assertAll(); + + } + private int scrollToSG(String pi) { EditPage page = new EditPage(driver);