diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/DComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/DComponent.java index 1d13f1b91d5c1056fbb19fa2a0d86592f12e84a0..d2831d4db27203463bb3e419ffa343a3b613b3f6 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/DComponent.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/DComponent.java @@ -1,5 +1,6 @@ package ddsl.dcomponents; +import ddsl.dcomponents.mat.MatSelect; import ddsl.dobjects.DButton; import ddsl.dobjects.DInput; import ddsl.dobjects.DSelect; @@ -11,7 +12,7 @@ import utils.TestRunData; public class DComponent { /** - * Generic component which which gives access of driver, wait and wrappers of elements. This should be inhered by each component class. + * Generic component which gives access of driver, wait and wrappers of elements. This should be inhered by each component class. */ public DWait wait; @@ -35,4 +36,8 @@ public class DComponent { return new DSelect(driver, element); } + protected MatSelect weToMatSelect(WebElement element) { + return new MatSelect(driver, element); + } + } diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/mat/MatSelect.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/mat/MatSelect.java new file mode 100644 index 0000000000000000000000000000000000000000..f7c4d96c43f879ad0b1584c525d871d5ac596d57 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/mat/MatSelect.java @@ -0,0 +1,29 @@ +package ddsl.dcomponents.mat; + +import ddsl.dobjects.DObject; +import org.apache.commons.lang3.StringUtils; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.UnexpectedTagNameException; + + +public class MatSelect extends DObject { + + public MatSelect(WebDriver driver, WebElement element) { + super(driver, element); + String tagName = element.getTagName(); + if (null != tagName && StringUtils.equalsIgnoreCase("mat-select", tagName)) { + this.element = element; + } else { + throw new UnexpectedTagNameException("mat-select", tagName); + } + } + + public void selectByVisibleText(String value) { + element.click(); + WebElement option = element.findElement(By.xpath("//mat-option/span[contains(text(),'" + value + "')]")); + wait.forElementToBeVisible(option); + option.click(); + } +} diff --git a/domiSMP-ui-tests/src/main/java/pages/systemSettings/keyStorePage/KeyStoreImportDialog.java b/domiSMP-ui-tests/src/main/java/pages/systemSettings/keyStorePage/KeyStoreImportDialog.java index ef14d8e8dfdbd3388fb17c9fe8b2a8c93ca0be16..ba193b69e72816cd7e5fe3acb610175061606426 100644 --- a/domiSMP-ui-tests/src/main/java/pages/systemSettings/keyStorePage/KeyStoreImportDialog.java +++ b/domiSMP-ui-tests/src/main/java/pages/systemSettings/keyStorePage/KeyStoreImportDialog.java @@ -9,10 +9,12 @@ import org.openqa.selenium.support.PageFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +/** + * This is the page object for the Keystore import dialog. It contains the WebElements and the methods specific to the dialog. + * + */ public class KeyStoreImportDialog extends DComponent { - /** - * This is the page object for the Keystore import dialog. It contains the webelements and the methods specific to the dialog. - */ + private final static Logger LOG = LoggerFactory.getLogger(KeyStoreImportDialog.class); @FindBy(id = "keystore-file-upload") @@ -29,13 +31,12 @@ public class KeyStoreImportDialog extends DComponent { public KeyStoreImportDialog(WebDriver driver) { super(driver); PageFactory.initElements(driver, this); - } public void addCertificate(String filepath, KeyStoreTypes keyStoreTypes, String password) { try { importKeyStoreInput.sendKeys(filepath); - weToDSelect(keyStoreTypeDdl).selectValue(keyStoreTypes.toString()); + weToMatSelect(keyStoreTypeDdl).selectByVisibleText(keyStoreTypes.toString()); weToDInput(passwordIdInput).fill(password); } catch (Exception e) { diff --git a/domiSMP-ui-tests/src/main/java/utils/FileUtils.java b/domiSMP-ui-tests/src/main/java/utils/FileUtils.java index 605ad4bff868455be0c06a4451e1b15ef8e982d3..0123062dbed8818527976c57cef0ff72efaaf780 100644 --- a/domiSMP-ui-tests/src/main/java/utils/FileUtils.java +++ b/domiSMP-ui-tests/src/main/java/utils/FileUtils.java @@ -1,10 +1,26 @@ package utils; import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; public class FileUtils { + + private static final Path keystoreFolder = Paths.get("src", "main", "resources", "keystore"); + + public static String getAbsolutePath(String relativePath) { return new File(relativePath).getAbsolutePath(); } + /** + * Returns the absolute path of the keystore file in the keystore folder + * + * @param keystoreFileName the name of the keystore file + * @return the absolute path of the keystore file + */ + public static String getAbsoluteKeystorePath(String keystoreFileName) { + return keystoreFolder.resolve(keystoreFileName).toAbsolutePath().toString(); + } + } diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/KeystorePgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/KeystorePgTests.java index ade1185ab1f488cb8cc7c311a199772ed51f45b2..9cdf12ce5e4880611c8a2f55e433fe8ffa87af95 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/KeystorePgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/KeystorePgTests.java @@ -1,6 +1,7 @@ package domiSMPTests.ui; import ddsl.DomiSMPPage; +import ddsl.enums.KeyStoreTypes; import ddsl.enums.Pages; import domiSMPTests.SeleniumTest; import org.testng.annotations.BeforeClass; @@ -35,16 +36,47 @@ public class KeystorePgTests extends SeleniumTest { keystorePage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_KEYSTORE); } - //TODO: wait until the mat-select for certificate type is changed to select - @Test(description = "KEYS-02 System admin is able to import PKCS 12 Keystore") - public void SystemAdminIsAbleToImportPKCS12() throws Exception { - String path = FileUtils.getAbsolutePath("./src/main/resources/keystore/expired_keystore_JKS.jks"); + + @Test(description = "KEYS-02 System admin is able to import JKS Keystore") + public void systemAdminIsAbleToImportJKS() throws Exception { + String path = FileUtils.getAbsoluteKeystorePath("expired_keystore_JKS.jks"); KeyStoreImportDialog keyStoreImportDialog = keystorePage.clickImportkeyStoreBtn(); - //keyStoreImportDialog.addCertificate(path, KeyStoreTypes.JKS, "test123"); - //keyStoreImportDialog.clickImport(); + keyStoreImportDialog.addCertificate(path, KeyStoreTypes.JKS, "test1234"); + keyStoreImportDialog.clickImport(); + + String value = keystorePage.getAlertArea().getAlertMessage(); + sofAssertThatContains("Certificates added [blue_gw", value); + soft.assertAll(); + } + @Test(description = "KEYS-xx Wrong keystore type") + public void systemAdminImportFailedWithWrongKeystoreType() throws Exception { + String path = FileUtils.getAbsoluteKeystorePath("expired_keystore_JKS.jks"); + KeyStoreImportDialog keyStoreImportDialog = keystorePage.clickImportkeyStoreBtn(); + keyStoreImportDialog.addCertificate(path, KeyStoreTypes.PKCS12, "test1234"); + keyStoreImportDialog.clickImport(); + + String value = keystorePage.getAlertArea().getAlertMessage(); + sofAssertThatContains("Error occurred while importing keystore", value); + soft.assertAll(); } + @Test(description = "KEYS-xx Wrong keystore password") + public void systemAdminImportFailedWithWrongPassword() throws Exception { + String path = FileUtils.getAbsoluteKeystorePath("expired_keystore_JKS.jks"); + + KeyStoreImportDialog keyStoreImportDialog = keystorePage.clickImportkeyStoreBtn(); + keyStoreImportDialog.addCertificate(path, KeyStoreTypes.JKS, "wrongPassword"); + keyStoreImportDialog.clickImport(); + + String value = keystorePage.getAlertArea().getAlertMessage(); + sofAssertThatContains("Error occurred while importing keystore", value); + soft.assertAll(); + } + + private void sofAssertThatContains(String contains, String value) { + soft.assertTrue(value.contains(contains), "Expected to contain: ["+contains+"] but the value was: ["+value+"]"); + } }