diff --git a/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java b/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java index 8189d08ed5a19b15540dcea63ffdadfd30aff3a7..ecabeb5ebe0e2a7b0a7235227a3854b594caa30a 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java @@ -30,9 +30,6 @@ public class DomiSMPPage extends DComponent { private WebElement rightMenuBtn; @FindBy(id = "logout_id") private WebElement logoutMenuBtn; - @FindBy(className = "smp-expired-password-dialog") - private WebElement expiredPasswordDialog; - @FindBy(css = "#okbuttondialog_id ") private WebElement dialogOKbutton; @@ -75,30 +72,13 @@ public class DomiSMPPage extends DComponent { } public boolean isExpiredDialoginbuttonEnabled() { - return dialogOKbutton.isEnabled(); - } - - public boolean isExpiredPopupEnabled() { try { - return dialogOKbutton.isDisplayed(); + return dialogOKbutton.isEnabled(); } catch (Exception e) { LOG.info("Expiration poup not found", e); return false; } - - } - - public void closeExpirationPopupIfEnabled() { - try { - if (isExpiredPopupEnabled()) { - LOG.info("Expired password dialog is present."); - getSidebar().getExpiredDialoginbutton().click(); - } - } catch (Exception e) { - LOG.error("Could not close Expiration popup", e); - } } - public void waitForPageToLoaded() { wait.defaultWait.until(ExpectedConditions.visibilityOf(getBreadcrump().BreadcrumpItems.get(0))); } diff --git a/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java b/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java index b8de9affe439a510ced37c9c42446ecc93441231..a4f5dad87f4073f24d6b581cd44342f2392992ab 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java @@ -7,22 +7,26 @@ 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 org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; public class PageWithGrid extends DomiSMPPage { + private final static Logger LOG = LoggerFactory.getLogger(PageWithGrid.class); /** * Generic page used for pages which have small grid in the right of the page. This element gives access to action buttons and elements of the page. */ @FindBy(css = "mat-form-field input") - public WebElement FilterInput; + public WebElement filterInput; @FindBy(css = "data-panel >div >div> mat-toolbar button:first-of-type") - public WebElement AddBtn; - - @FindBy(css = "data-panel >div >div> mat-toolbar button:last-of-type") - public WebElement DeleteBtn; - @FindBy(css = "data-panel > div [class=\"smp-column-data\"]") - public WebElement SidePanel; + public WebElement addBtn; + @FindBy(css = "data-panel") + public WebElement dataPanel; + @FindBy(css = "[role = \"tab\"]") + private List<WebElement> tabList; public PageWithGrid(WebDriver driver) { super(driver); @@ -30,20 +34,25 @@ public class PageWithGrid extends DomiSMPPage { } public GridPagination getPagination() { - return new GridPagination(driver); + return new GridPagination(driver, dataPanel); } - public SmallGrid getGrid() { - return new SmallGrid(driver); + public SmallGrid getDataPanelGrid() { + return new SmallGrid(driver, dataPanel); } - public void filter(String filterValue) { - try { - weToDInput(FilterInput).fill(filterValue); - } catch (Exception e) { - throw new RuntimeException(e); + public void goToTab(String tabName) { + for (WebElement element : tabList) { + if (element.getText().contains(tabName)) { + element.click(); + wait.forAttributeToContain(element, "aria-selected", "true"); + LOG.debug("Domain tab {} is opened", tabName); + } } } + public String getAlertMessageAndClose() { + return getAlertArea().getAlertMessage(); + } } diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/AlertComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/AlertComponent.java index 312d30442bd118128e1c10c0871259847e34c30a..11c4c7ad9dd5492781bcc565266135cb4e8e66ab 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/AlertComponent.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/AlertComponent.java @@ -18,6 +18,10 @@ public class AlertComponent extends DComponent { @FindBy(id = "alertmessage_id") public WebElement alertToaster; + @FindBy(css = "[class = \"closebtn\"]") + public WebElement closeBtn; + + public AlertComponent(WebDriver driver) { super(driver); PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this); @@ -28,11 +32,11 @@ public class AlertComponent extends DComponent { wait.forElementToBeVisible(alertToaster, true); String alertMesageText = alertToaster.getText().replace("×", "").replaceAll("\n", ""); LOG.debug("Displayed message : {}.", alertToaster.getText()); - + closeBtn.click(); return alertMesageText; } catch (Exception e) { - LOG.debug("No messages displayed."); - return null; + LOG.error("No messages displayed."); + return "No alert message found"; } } diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/ConfirmationDialog.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/ConfirmationDialog.java index 96f00df89bb5b8283942b29ebaa2ab56197e9299..34632c53ecc34cbd70e879c293e1882b1e9cee8b 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/ConfirmationDialog.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/ConfirmationDialog.java @@ -29,7 +29,7 @@ public class ConfirmationDialog extends DComponent { LOG.info("dialog .. confirm"); wait.forElementToBeClickable(yesBtn); yesBtn.click(); - wait.forElementToBeClickable(yesBtn); + wait.forElementToBeGone(yesBtn); } public void cancel() { diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/GridPagination.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/GridPagination.java index a45faaf69b4491bffa0ace67d811f2ea1f19c115..1901de0d4b887dc9b0182196a9f2a62e9d2a6af9 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/GridPagination.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/GridPagination.java @@ -1,9 +1,9 @@ package ddsl.dcomponents.Grid; import ddsl.dcomponents.DComponent; +import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,34 +13,25 @@ import java.util.regex.Pattern; public class GridPagination extends DComponent { private final static Logger LOG = LoggerFactory.getLogger(GridPagination.class); + protected static final By currentElementsLblLocator = By.cssSelector("div.mat-mdc-paginator-range-label"); + protected static final By nextPageBtnLocator = By.cssSelector("[aria-label= \"Next page\"]"); + private final WebElement parentElement; - @FindBy(css = "#extension-paginator > div > div > div > div") - public WebElement currentElementsLbl; - - @FindBy(css = "#extension-paginator > div > div > div [aria-label = \"First page\"]") - public WebElement firstPageBtn; - @FindBy(css = "#extension-paginator > div > div > div [aria-label = \"Next page\"]") - public WebElement previousPageBtn; - - @FindBy(css = "#extension-paginator > div > div > div [aria-label = \"Next page\"]") - public WebElement nextPageBtn; - - @FindBy(css = "#extension-paginator > div > div > div [aria-label = \"Last page\"]") - public WebElement lastPageBtn; - - - public GridPagination(WebDriver driver) { + public GridPagination(WebDriver driver, WebElement parentElement) { super(driver); PageFactory.initElements(driver, this); + this.parentElement = parentElement; + } public Integer getTotalPageNumber() { - String val = currentElementsLbl.getText(); + String val = parentElement.findElement(currentElementsLblLocator).getText(); + Integer numofElementsPerPage = 5; Pattern pattern = Pattern.compile("of (\\d+)"); Matcher matcher = pattern.matcher(val); if (matcher.find()) { Integer totalRecord = Integer.parseInt(matcher.group(1)); - return (totalRecord % 5 == 0) ? (totalRecord / 5) : ((totalRecord / 5) + 1); + return (totalRecord % numofElementsPerPage == 0) ? (totalRecord / numofElementsPerPage) : ((totalRecord / numofElementsPerPage) + 1); } return null; } @@ -48,8 +39,8 @@ public class GridPagination extends DComponent { public void goToNextPage() { try { - if (weToDButton(nextPageBtn).isPresent()) { - weToDButton(nextPageBtn).click(); + if (weToDButton(parentElement.findElement(nextPageBtnLocator)).isPresent()) { + weToDButton(parentElement.findElement(nextPageBtnLocator)).click(); LOG.error("Click on Grid Next Page button"); } else { @@ -61,13 +52,4 @@ public class GridPagination extends DComponent { } } - - public void goToPreviousPage() throws Exception { - if (weToDButton(previousPageBtn).isEnabled()) { - weToDButton(previousPageBtn).click(); - - } else { - LOG.error("Previous page button is not available."); - } - } } 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 5d62cd0c2b86b1a94916e08fe4c896a5eb254707..46e8a983003ed1347cc2deee61586167ea62e30a 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 @@ -4,9 +4,7 @@ import ddsl.dcomponents.DComponent; import org.openqa.selenium.By; 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.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,29 +12,28 @@ import java.util.List; public class SmallGrid extends DComponent { private final static Logger LOG = LoggerFactory.getLogger(SmallGrid.class); + protected static final By gridHeadersLocator = By.cssSelector("table thead th"); + protected static final By gridRowsLocator = By.cssSelector("table tbody tr"); + private final WebElement parentElement; - @FindBy(css = "data-panel table thead th") - protected List<WebElement> gridHeaders; - @FindBy(css = "data-panel table tbody tr") - protected List<WebElement> gridRows; - public SmallGrid(WebDriver driver) { + public SmallGrid(WebDriver driver, WebElement parentElement) { super(driver); PageFactory.initElements(driver, this); + this.parentElement = parentElement; } public GridPagination getGridPagination() { - return new GridPagination(driver); + return new GridPagination(driver, parentElement); } - public List<WebElement> gerGridHeaders() { - return wait.defaultWait.until(ExpectedConditions.visibilityOfAllElements(gridHeaders)); + public List<WebElement> getGridHeaders() { + return parentElement.findElements(gridHeadersLocator); } public List<WebElement> getRows() { - wait.forXMillis(50); - return wait.defaultWait.until(ExpectedConditions.visibilityOfAllElements(gridRows)); + return parentElement.findElements(gridRowsLocator); } public List<WebElement> getCells(WebElement row) { @@ -45,8 +42,9 @@ public class SmallGrid extends DComponent { public WebElement searchValueInColumn(String columnName, String value) { + wait.forXMillis(100); Integer numOfPages = getGridPagination().getTotalPageNumber(); - List<WebElement> rowHeaders = gerGridHeaders(); + List<WebElement> rowHeaders = getGridHeaders(); int columnIndex = -1; for (int i = 0; i < rowHeaders.size(); i++) { if (rowHeaders.get(i).getText().equals(columnName)) { diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SetChangePasswordDialog.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SetChangePasswordDialog.java index a370088082e404d702ae91fde8d4e050a31081c4..c886b09be0e49e8c2a73fe8ab8518a4507a5dc91 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SetChangePasswordDialog.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SetChangePasswordDialog.java @@ -7,16 +7,16 @@ import org.openqa.selenium.support.PageFactory; import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import pages.ProfilePage.SuccesfullPasswordChangedPopup; +import pages.profilePage.SuccesfullPasswordChangedPopup; import java.util.ArrayList; import java.util.List; public class SetChangePasswordDialog extends DComponent { + /** - * Component object for dialog of changing password. + * Page object for the Set/change password dialog. This contains the locators of the page and the methods for the behaviour of the page */ - private final static Logger LOG = LoggerFactory.getLogger(SetChangePasswordDialog.class); @FindBy(css = ".smp-field-error") List<WebElement> fieldsError; @@ -28,8 +28,6 @@ public class SetChangePasswordDialog extends DComponent { private WebElement confirmationPasswordInput; @FindBy(id = "changeCurrentUserPasswordButton") private WebElement setPasswordBtn; - @FindBy(id = "closeDialogButton") - private WebElement closeBtn; public SetChangePasswordDialog(WebDriver driver) { diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java index fa01a60d1ae948ef13eafa75d356bca91faed111..20e217372fb3981ac8fa41a470c8c56b7865dac7 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java @@ -2,20 +2,20 @@ package ddsl.dcomponents; import ddsl.DomiSMPPage; import ddsl.enums.Pages; -import org.openqa.selenium.ElementNotInteractableException; import org.openqa.selenium.NoSuchElementException; 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 org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import pages.DomainsPage.DomainsPage; -import pages.ProfilePage.ProfilePage; -import pages.PropertiesPage.PropertiesPage; +import pages.TruststorePage; import pages.UsersPage; +import pages.editDomainsPage.EditDomainsPage; +import pages.profilePage.ProfilePage; +import pages.propertiesPage.PropertiesPage; import java.util.Objects; @@ -103,29 +103,16 @@ public class SideNavigationComponent extends DomiSMPPage { return null; } - public <T> T navigateTo2(Pages page) { - - wait.defaultWait.until(ExpectedConditions.visibilityOf(sideBar)); - if (page == Pages.SYSTEM_SETTINGS_DOMAINS) { - openSubmenu(systemSettingsExpand, domainsLnk); - return (T) new DomainsPage(driver); - } - return null; - - - } - - public DomiSMPPage navigateTo(Pages page) { - - wait.defaultWait.until(ExpectedConditions.visibilityOf(sideBar)); - + public <T> T navigateTo(Pages page) { LOG.debug("Get link to " + page.name()); // case SEARCH_RESOURCES: // expandSection(resourcesExpandLnk);s // return new DLink(driver, resourcesLnk); - // case ADMINISTRATION_EDIT_DOMAINS: - // expandSection(administrationExpand); - // return new DLink(driver, editDomainsLnk); + if (page == Pages.ADMINISTRATION_EDIT_DOMAINS) { + openSubmenu(administrationExpand, editDomainsLnk); + return (T) new EditDomainsPage(driver); + } + // case ADMINISTRATION_EDIT_GROUPS: // expandSection(administrationExpand); // return new DLink(driver, editGroupsLnk); @@ -135,25 +122,26 @@ public class SideNavigationComponent extends DomiSMPPage { if (page == Pages.SYSTEM_SETTINGS_USERS) { openSubmenu(systemSettingsExpand, usersLnk); - return new UsersPage(driver); + return (T) new UsersPage(driver); } if (page == Pages.SYSTEM_SETTINGS_DOMAINS) { openSubmenu(systemSettingsExpand, domainsLnk); - return new DomainsPage(driver); + return (T) new DomainsPage(driver); } // case SYSTEM_SETTINGS_KEYSTORE: // expandSection(systemSettingsExpand); // return new DLink(driver, keystoreLnk); - // case SYSTEM_SETTINGS_TRUSTSTORE: - // expandSection(systemSettingsExpand); - // return new DLink(driver, truststoreLnk); + if (page == Pages.SYSTEM_SETTINGS_TRUSTSTORE) { + openSubmenu(systemSettingsExpand, truststoreLnk); + return (T) new TruststorePage(driver); + } // case SYSTEM_SETTINGS_EXTENSIONS: // expandSection(systemSettingsExpand); // return new DLink(driver, extensionsLnk); if (page == Pages.SYSTEM_SETTINGS_PROPERTIES) { openSubmenu(systemSettingsExpand, propertiesLnk); - return new PropertiesPage(driver); + return (T) new PropertiesPage(driver); } // case SYSTEM_SETTINGS_ALERS: @@ -161,7 +149,7 @@ public class SideNavigationComponent extends DomiSMPPage { // return new DLink(driver, alersLnk); if (page == Pages.USER_SETTINGS_PROFILE) { openSubmenu(userSettingsExpand, profileLnk); - return new ProfilePage(driver); + return (T) new ProfilePage(driver); // case USER_SETTINGS_ACCESS_TOKEN: // //expandSection(userSettingsExpand); // //accessTokensLnk.click(); @@ -176,7 +164,6 @@ public class SideNavigationComponent extends DomiSMPPage { public Boolean isMenuAvailable(Pages page) { MenuNavigation navigationLinks = getNavigationLinks(page); try { - assert navigationLinks != null; if (navigationLinks.menuLink.isEnabled()) { navigationLinks.menuLink.click(); return navigationLinks.submenuLink.isEnabled(); @@ -189,31 +176,46 @@ public class SideNavigationComponent extends DomiSMPPage { } private void openSubmenu(WebElement menuBtn, WebElement submenuBtn) { - try { - submenuBtn.click(); - if (submenuBtn.getText().contains(getBreadcrump().getCurrentPage())) { - LOG.info("Current page is " + getBreadcrump().getCurrentPage()); - } else { - LOG.error("Current page is not as expected. EXPECTED: [{}] but ACTUAL PAGE [{}]", submenuBtn.getText(), getBreadcrump().getCurrentPage()); - throw new RuntimeException(); - } - - } catch (ElementNotInteractableException exception) { - - // closeExpirationPopupIfEnabled(); + if (!menuBtn.getAttribute("class").contains("cdk-focused")) { menuBtn.click(); - submenuBtn.click(); - if (submenuBtn.getText().contains(getBreadcrump().getCurrentPage())) { - LOG.info("Current page is " + getBreadcrump().getCurrentPage()); + } + submenuBtn.click(); + if (submenuBtn.getText().contains(getBreadcrump().getCurrentPage())) { + LOG.info("Current page is " + getBreadcrump().getCurrentPage()); - } else { - LOG.error("Current page is not as expected. EXPECTED: " + submenuBtn.getText() + "but ACTUAL PAGE: " + getBreadcrump().getCurrentPage()); - throw new RuntimeException(); - } + } else { + LOG.error("Current page is not as expected. EXPECTED: " + submenuBtn.getText() + "but ACTUAL PAGE: " + getBreadcrump().getCurrentPage()); + throw new RuntimeException(); } } +// private void openSubmenu(WebElement menuBtn, WebElement submenuBtn) { +// try { +// submenuBtn.click(); +// if (submenuBtn.getText().contains(getBreadcrump().getCurrentPage())) { +// LOG.info("Current page is " + getBreadcrump().getCurrentPage()); +// +// } else { +// LOG.error("Current page is not as expected. EXPECTED: [{}] but ACTUAL PAGE [{}]", submenuBtn.getText().toString(), getBreadcrump().getCurrentPage().toString()); +// throw new RuntimeException(); +// } +// +// } catch (ElementNotInteractableException exception) { +// +// // closeExpirationPopupIfEnabled(); +// menuBtn.click(); +// submenuBtn.click(); +// if (submenuBtn.getText().contains(getBreadcrump().getCurrentPage())) { +// LOG.info("Current page is " + getBreadcrump().getCurrentPage()); +// +// } else { +// LOG.error("Current page is not as expected. EXPECTED: " + submenuBtn.getText() + "but ACTUAL PAGE: " + getBreadcrump().getCurrentPage()); +// throw new RuntimeException(); +// } +// } +// } + public static class MenuNavigation { WebElement menuLink; WebElement submenuLink; diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/UserDataCommonComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/UserDataCommonComponent.java similarity index 90% rename from domiSMP-ui-tests/src/main/java/ddsl/dcomponents/UserDataCommonComponent.java rename to domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/UserDataCommonComponent.java index deb3c3deb17712a0b56a53a6fc9f167cefb67ff1..415c194853677b69c71bff3bd5f359efce1d49c0 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/UserDataCommonComponent.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/UserDataCommonComponent.java @@ -1,6 +1,7 @@ -package ddsl.dcomponents; +package ddsl.dcomponents.commonComponents; import ddsl.DomiSMPPage; +import ddsl.dcomponents.SetChangePasswordDialog; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -58,7 +59,7 @@ public class UserDataCommonComponent extends DomiSMPPage { return passwordExpiresOnLbl.getText(); } - public SetChangePasswordDialog setChangePasswordDialog() { + public SetChangePasswordDialog getChangePasswordDialog() { return new SetChangePasswordDialog(driver); } @@ -71,8 +72,8 @@ public class UserDataCommonComponent extends DomiSMPPage { if (!emailValue.isEmpty()) { weToDInput(fullNameInput).fill(fullNameValue); } - weToDSelect(themeSel).selectValue(selectThemeValue); - weToDSelect(localeSel).selectValue(localeValue); + weToDSelect(themeSel).selectByVisibleText(selectThemeValue); + weToDSelect(localeSel).selectByVisibleText(localeValue); } catch (Exception e) { diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/InviteMembersPopup.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/InviteMembersPopup.java new file mode 100644 index 0000000000000000000000000000000000000000..6ee55a3aaef384e183ab26f7c6d03b1d371149a6 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/InviteMembersPopup.java @@ -0,0 +1,45 @@ +package ddsl.dcomponents.commonComponents.members; + +import ddsl.dcomponents.DComponent; +import org.openqa.selenium.Keys; +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 org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class InviteMembersPopup extends DComponent { + private final static Logger LOG = LoggerFactory.getLogger(InviteMembersPopup.class); + @FindBy(id = "saveButton") + public WebElement saveBtn; + @FindBy(id = "member-user") + private WebElement selectMemberBtn; + @FindBy(css = "[formcontrolname=\"member-roleType\"]") + private WebElement selectMemberROleDdl; + + public InviteMembersPopup(WebDriver driver) { + super(driver); + PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this); + + } + + public void selectMember(String username, String role) { + LOG.debug("Inviting member {} with role {}", username, role); + selectMemberBtn.sendKeys(username); + selectMemberBtn.sendKeys(Keys.ARROW_DOWN); + selectMemberBtn.sendKeys(Keys.ENTER); + weToDSelect(selectMemberROleDdl).selectByVisibleText(role); + saveBtn.click(); + } + + public void changeRole(String newRole) { + + if (!weToDSelect(selectMemberROleDdl).getCurrentValue().equals(newRole)) { + weToDSelect(selectMemberROleDdl).selectByVisibleText(newRole); + LOG.debug("Changing role to {}", newRole); + } + saveBtn.click(); + } +} diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/MembersComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/MembersComponent.java new file mode 100644 index 0000000000000000000000000000000000000000..5ffa463fb9753f0e43989298d3495c0b3a0386c4 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/MembersComponent.java @@ -0,0 +1,58 @@ +package ddsl.dcomponents.commonComponents.members; + +import ddsl.dcomponents.ConfirmationDialog; +import ddsl.dcomponents.DComponent; +import ddsl.dcomponents.Grid.SmallGrid; +import ddsl.dobjects.DButton; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class MembersComponent extends DComponent { + private final static Logger LOG = LoggerFactory.getLogger(MembersComponent.class); + + @FindBy(id = "addMemberButton") + private WebElement inviteMemberBtn; + + @FindBy(id = "deleteButton") + private WebElement removeMemberBtn; + @FindBy(css = "div domain-member-panel") + private WebElement sidePanel; + + public MembersComponent(WebDriver driver) { + super(driver); + LOG.debug("Members component is loaded"); + //wait.forElementToBeVisible(inviteMemberBtn); + } + + public SmallGrid getMembersGrid() { + return new SmallGrid(driver, sidePanel); + } + + public InviteMembersPopup getInviteMembersPopup() { + return new InviteMembersPopup(driver); + } + + public DButton getInviteMemberBtn() { + return weToDButton(inviteMemberBtn); + } + + public void removeUser(String username) throws Exception { + getMembersGrid().searchValueInColumn("Username", username).click(); + weToDButton(removeMemberBtn).click(); + ConfirmationDialog confirmationDialog = new ConfirmationDialog(driver); + confirmationDialog.confirm(); + } + + public void changeRoleOfUser(String username, String newRole) throws Exception { + getMembersGrid().searchValueInColumn("Username", username).click(); + weToDButton(sidePanel.findElement(By.id("editButton"))).click(); + getInviteMembersPopup().changeRole(newRole); + + + } + +} diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DSelect.java b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DSelect.java index f9e1393b5a58053fbe8942aedd7244f28f10cce9..888bd256b5e9833cf444fb9bfbee1a285437e580 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DSelect.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DSelect.java @@ -15,10 +15,13 @@ public class DSelect extends DObject { super(driver, element); } - public void selectValue(String value) { + public void selectByVisibleText(String value) { select.selectByVisibleText(value); } + public void selectValue(String value) { + select.selectByValue(value); + } public String getCurrentValue() { return select.getAllSelectedOptions().get(0).getText(); } diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DWait.java b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DWait.java index 9ed3bf0c48c3aed01252756c464fdc0eced8246d..68cc7960407eb3789071cd310f5fc78b2eb16599 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DWait.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DWait.java @@ -17,6 +17,10 @@ public class DWait { private final static Logger LOG = LoggerFactory.getLogger(DWait.class); + /** + * Wait class which gives access to different types of waits. + */ + public final WebDriverWait defaultWait; public final WebDriverWait longWait; public final WebDriverWait shortWait; 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 0eda2cf5511692a983a3e3a28dc830464e33845c..37845e4722e585c72294373e87d951256cfb5f98 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java @@ -1,13 +1,15 @@ package ddsl.enums; -import java.util.Random; - public enum ResourceTypes { OASIS1("edelivery-oasis-smp-1.0-servicegroup (smp-1)"), OASIS2("edelivery-oasis-smp-2.0-servicegroup (oasis-bdxr-smp-2)"), OASIS3("edelivery-oasis-cppa-3.0-cpp (cpp)"); + public String getName() { + return name; + } + public final String name; @@ -16,12 +18,5 @@ public enum ResourceTypes { } - public static String getRandomResourceType() { - ResourceTypes[] resourceTypes = values(); - int size = resourceTypes.length; - Random random = new Random(); - int index = random.nextInt(size); - return resourceTypes[index].name; - } } diff --git a/domiSMP-ui-tests/src/main/java/ddsl/enums/ResponseCertificates.java b/domiSMP-ui-tests/src/main/java/ddsl/enums/ResponseCertificates.java index af3d3edcf1ac370fbf325ef0473126ea99ea1630..ec7d97701cf5d9447d6b2f6f90877784a075fdae 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/enums/ResponseCertificates.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/enums/ResponseCertificates.java @@ -1,29 +1,23 @@ package ddsl.enums; -import java.util.Random; - public enum ResponseCertificates { SMP_DOMAIN_02("smp_domain_02 (CN=smp_domain_02,O=digit,C=eu:000000006443d987)"), SMP_EDDSA_448("smp_eddsa_448 (CN=smp_eddsa_448,O=digit,C=eu:000000006443fcba)"), SMP_ECDSA_NIST_B409("smp_ecdsa_nist-b409 (CN=smp_ecdsa_nist-b409,O=digit,C=eu:000000006443fd57)"), - SMP_DOMAIN_01("smp_domain_01 (CN=smp_domain_01,O=digit,C=eu:000000006443d8a8"), - SAMPLE_KEY("sample_key (CN=demo-smp-signing-key,O=digit,C=eu:000000006443f9bc"), - SMP_EDDSA_25519("smp_eddsa_25519 (CN=smp_eddsa_25519,O=digit,C=eu:000000006443d95d"); + SMP_DOMAIN_01("smp_domain_01 (CN=smp_domain_01,O=digit,C=eu:000000006443d8a8)"), + SAMPLE_KEY("sample_key (CN=demo-smp-signing-key,O=digit,C=eu:000000006443f9bc)"), + SMP_EDDSA_25519("smp_eddsa_25519 (CN=smp_eddsa_25519,O=digit,C=eu:000000006443d95d)"); + + public String getName() { + return name; + } public final String name; ResponseCertificates(String name) { this.name = name; - } - public static String getRandomCertificate() { - ResponseCertificates[] certificates = values(); - int size = certificates.length; - Random random = new Random(); - int index = random.nextInt(size); - return certificates[index].name; - } } diff --git a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainTab.java new file mode 100644 index 0000000000000000000000000000000000000000..119d490642e1949e0e46c6d389679d0165d07871 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainTab.java @@ -0,0 +1,64 @@ +package pages.DomainsPage; + +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 org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import rest.models.DomainModel; + +public class DomainTab extends DComponent { + /** + * Page object for the Domains tab of Domains page. This contains the locators of the page and the methods for the behaviour of the page + */ + private final static Logger LOG = LoggerFactory.getLogger(DomainTab.class); + @FindBy(id = "domainCode_id") + private WebElement domainIdInput; + @FindBy(id = "signatureKeyAlias_id") + private WebElement responseSignatureCertificateDdl; + @FindBy(id = "domainVisibility_id") + private WebElement visibilityOfDomainDdl; + @FindBy(id = "saveButton") + private WebElement saveBtn; + public DomainTab(WebDriver driver) { + super(driver); + PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this); + + } + + public WebElement getDomainIdInput() { + return domainIdInput; + } + + public String getResponseSignatureCertificateSelectedValue() { + return weToDSelect(responseSignatureCertificateDdl).getCurrentValue(); + } + + public String getVisibilityOfDomainSelectedValue() { + return weToDSelect(visibilityOfDomainDdl).getCurrentValue().toUpperCase(); + } + + public void fillDomainData(DomainModel domainModel) { + + domainIdInput.sendKeys(domainModel.getDomainCode()); + weToDSelect(responseSignatureCertificateDdl).selectByVisibleText(domainModel.getSignatureKeyAlias()); + weToDSelect(visibilityOfDomainDdl).selectValue(domainModel.getVisibility()); + } + + public void saveChanges() { + if (saveBtn.isEnabled()) { + saveBtn.click(); + wait.forElementToBeDisabled(saveBtn); + if (saveBtn.getAttribute("disabled").equals("true")) { + LOG.debug("Domain tab changes were succesfully saved"); + } else { + LOG.error("Domain tab changes were not saved"); + } + } + } + + +} \ No newline at end of file diff --git a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainsPage.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainsPage.java index 3fd59dd32c8a6c627be059010a622e30bb10c39e..542358520a99f4da879942b317b7444561e54362 100644 --- a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainsPage.java +++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainsPage.java @@ -7,40 +7,21 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import rest.models.DomainModel; - -import java.util.List; public class DomainsPage extends PageWithGrid { /** * Page object for the Users page. This contains the locators of the page and the methods for the behaviour of the page */ private final static Logger LOG = LoggerFactory.getLogger(DomainsPage.class); - - @FindBy(id = "domainCode_id") - private WebElement domainIdInput; - @FindBy(id = "signatureKeyAlias_id") - private WebElement responseSignatureCertificateDdl; - - @FindBy(id = "domainVisibility_id") - private WebElement visibilityOfDomainDdl; - - @FindBy(id = "saveButton") - private WebElement saveBtn; - - @FindBy(css = "[role = \"tab\"] ") - private List<WebElement> tabList; - - private ResourceTab resourceTab; - - + @FindBy(css = "smp-warning-panel span") + private WebElement warningLabel; public DomainsPage(WebDriver driver) { super(driver); LOG.debug("Loading Domains page."); } public DButton getCreateDomainBtn() { - return new DButton(driver, AddBtn); + return new DButton(driver, addBtn); } public ResourceTab getResourceTab() { @@ -48,26 +29,23 @@ public class DomainsPage extends PageWithGrid { return new ResourceTab(driver); } + public DomainTab getDomainTab() { - public void fillDomainData(DomainModel domainModel) { + return new DomainTab(driver); + } - domainIdInput.sendKeys(domainModel.getDomainCode()); - weToDSelect(responseSignatureCertificateDdl).selectValue(domainModel.getSignatureKeyAlias()); + public SMLIntegrationTab getSMLIntegrationTab() { + + return new SMLIntegrationTab(driver); } - public String saveChangesAndGetMessage() { - saveBtn.click(); - return getAlertArea().getAlertMessage(); + public MembersTab getMembersTab() { + + return new MembersTab(driver); } - public void goToTab(String tabName) { - for (WebElement element : tabList) { - if (element.getText().contains(tabName)) { - element.click(); - wait.forAttributeToContain(element, "aria-selected", "true"); - LOG.debug("Domain tab {} is opened", tabName); - } - } + public String getDomainWarningMessage() { + return warningLabel.getText(); } diff --git a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/MembersTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/MembersTab.java new file mode 100644 index 0000000000000000000000000000000000000000..8b2bd56518aa133d25f138bf95705dd6471191c3 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/MembersTab.java @@ -0,0 +1,13 @@ +package pages.DomainsPage; + +import ddsl.dcomponents.commonComponents.members.MembersComponent; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.PageFactory; +import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; + +public class MembersTab extends MembersComponent { + public MembersTab(WebDriver driver) { + super(driver); + PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this); + } +} diff --git a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/ResourceTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/ResourceTab.java index 4e1bb994b3fa567515d5e8047930aeeb28dea540..891b637331fa88c1223374e6fa9eab9911f8cf91 100644 --- a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/ResourceTab.java +++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/ResourceTab.java @@ -14,7 +14,7 @@ import java.util.List; public class ResourceTab extends DComponent { /** - * Resource tab component of Domain page. Gives access to resource tab behaviour. + * Page object for the Resource tab of Domains page. This contains the locators of the page and the methods for the behaviour of the page */ private final static Logger LOG = LoggerFactory.getLogger(ResourceTab.class); @@ -35,12 +35,11 @@ public class ResourceTab extends DComponent { saveBtn.click(); if (saveBtn.getAttribute("disabled").equals("truw")) { LOG.debug("Resource tab changes were succesfully saved"); + } else { + LOG.error("Resource tab changes were not saved"); } - LOG.debug("Resource tab changes were not saved"); } } - - public void checkResource(String resourceName) { wait.forElementToBeClickable(resourceOptions.get(0)); for (WebElement element : resourceOptions) { diff --git a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/SMLIntegrationTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/SMLIntegrationTab.java new file mode 100644 index 0000000000000000000000000000000000000000..e40600c0947d257353ed057d1cfedf2c2500da1c --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/SMLIntegrationTab.java @@ -0,0 +1,86 @@ +package pages.DomainsPage; + +import ddsl.dcomponents.ConfirmationDialog; +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 org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import rest.models.DomainModel; + +public class SMLIntegrationTab extends DComponent { + + /** + * Page object for the SML integration tab of Domains page. This contains the locators of the page and the methods for the behaviour of the page + */ + private final static Logger LOG = LoggerFactory.getLogger(SMLIntegrationTab.class); + + @FindBy(id = "smldomain_id") + private WebElement smlDomainInput; + + @FindBy(id = "smlSMPId_id") + private WebElement smlsmpIdentifierInput; + + @FindBy(id = "smlClientKeyAlias_id") + private WebElement smlClientCertificateAliasDdl; + + @FindBy(id = "smlClientCertHeaderAuth_id-button") + private WebElement useClientCertBtn; + @FindBy(id = "saveButton") + private WebElement saveBtn; + + @FindBy(id = "registerButton") + private WebElement registerBtn; + + public SMLIntegrationTab(WebDriver driver) { + super(driver); + PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this); + + } + + public void fillSMLIntegrationTab(DomainModel domainModel) { + try { + weToDInput(smlDomainInput).fill(domainModel.getSmlSubdomain()); + weToDInput(smlsmpIdentifierInput).fill(domainModel.getSmlSmpId()); + //TODO : check of clientcertificatealias is changed from mat-select to select + weToDSelect(smlClientCertificateAliasDdl).selectByVisibleText(domainModel.getSignatureKeyAlias()); + weToDButton(useClientCertBtn).click(); + + } catch (Exception e) { + LOG.error("Cannot fill SML integration data"); + throw new RuntimeException(e); + } + + } + + public void saveChanges() { + if (saveBtn.isEnabled()) { + saveBtn.click(); + wait.forElementToBeDisabled(saveBtn); + if (saveBtn.getAttribute("disabled").equals("true")) { + LOG.debug("SML Integration tab changes were succesfully saved"); + } else { + LOG.error("SML Integration tab changes were not saved"); + } + } + } + + public void registerToSML() throws Exception { + try { + if (weToDButton(registerBtn).isEnabled()) { + weToDButton(registerBtn).click(); + ConfirmationDialog confirmationDialog = new ConfirmationDialog(driver); + confirmationDialog.confirm(); + } + + } catch (Exception e) { + LOG.error("Register button is not enabled"); + throw new Exception(e); + } + + } + +} \ No newline at end of file diff --git a/domiSMP-ui-tests/src/main/java/pages/LoginPage.java b/domiSMP-ui-tests/src/main/java/pages/LoginPage.java index 5aaba22ef4a5a921610371ae50ef8dc6bc4686f8..8dc5ea91f1daad86a2a28bbb0e115c1ef95d2266 100644 --- a/domiSMP-ui-tests/src/main/java/pages/LoginPage.java +++ b/domiSMP-ui-tests/src/main/java/pages/LoginPage.java @@ -51,7 +51,7 @@ public class LoginPage extends DomiSMPPage { } catch (Exception e) { LOG.debug("Password expiration popup is not present"); - throw new RuntimeException(e); + throw new RuntimeException("Password expiration popup is not present", e); } diff --git a/domiSMP-ui-tests/src/main/java/pages/SmlPage.java b/domiSMP-ui-tests/src/main/java/pages/SmlPage.java new file mode 100644 index 0000000000000000000000000000000000000000..761cb5fe7fbe012a2e40e76238cab809f80b530f --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/pages/SmlPage.java @@ -0,0 +1,36 @@ +package pages; + +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.DomainModel; + +import java.util.List; + +public class SmlPage extends DComponent { + + @FindBy(css = "body>pre") + private List<WebElement> dnsRecords; + + public SmlPage(WebDriver driver) { + super(driver); + PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this); + + } + + public boolean isDomainRegistered(DomainModel domainModel) { + String dnsRecord = domainModel.getSmlSmpId(); + + for (WebElement element : dnsRecords) { + String elementRecords = element.getText(); + + if (elementRecords.contains(dnsRecord)) { + return true; + } + } + return false; + } +} diff --git a/domiSMP-ui-tests/src/main/java/pages/TruststorePage.java b/domiSMP-ui-tests/src/main/java/pages/TruststorePage.java new file mode 100644 index 0000000000000000000000000000000000000000..f0e2053fb6a5880c53c52215f3d0355154ceffca --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/pages/TruststorePage.java @@ -0,0 +1,52 @@ +package pages; + +import ddsl.PageWithGrid; +import ddsl.dcomponents.Grid.SmallGrid; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class TruststorePage extends PageWithGrid { + /** + * Page object for the Truststorepage. This contains the locators of the page and the methods for the behaviour of the page + */ + + //TODO work in progress + @FindBy(id = "custom-file-upload") + private WebElement uploadInput; + @FindBy(id = "publicKeyType_id") + private WebElement publicKeyTypeLbl; + @FindBy(id = "alias_id") + private WebElement aliasIdLbl; + @FindBy(id = "certificateId_id") + private WebElement smpCertificateId; + @FindBy(id = "subject_id") + private WebElement subjectName; + + + public TruststorePage(WebDriver driver) { + super(driver); + } + + public SmallGrid getGrid() { + return new SmallGrid(driver, dataPanel); + } + + public String addCertificateAndReturnAlias(String filePath) { + uploadInput.sendKeys(filePath); + String certificateAlias = getAlertMessageAndClose(); + + Pattern pattern = Pattern.compile("(?<=alias \\[)(.*?)(?=\\])"); + Matcher matcher = pattern.matcher(certificateAlias); + if (matcher.find()) { + String result = matcher.group(1); + return result; + } + return null; + } + + +} diff --git a/domiSMP-ui-tests/src/main/java/pages/UsersPage.java b/domiSMP-ui-tests/src/main/java/pages/UsersPage.java index 2c59cae419e7fa41ffb300171089f11abf7bfe64..d6d8ea1c9cdbdebef6cc373704c742339b19c6a4 100644 --- a/domiSMP-ui-tests/src/main/java/pages/UsersPage.java +++ b/domiSMP-ui-tests/src/main/java/pages/UsersPage.java @@ -1,7 +1,7 @@ package pages; import ddsl.PageWithGrid; -import ddsl.dcomponents.UserDataCommonComponent; +import ddsl.dcomponents.commonComponents.UserDataCommonComponent; import ddsl.dobjects.DButton; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -32,7 +32,7 @@ public class UsersPage extends PageWithGrid { } public DButton getCreateUserBtn() { - return new DButton(driver, AddBtn); + return new DButton(driver, addBtn); } public String fillNewUserDataAndSave(UserModel newUserData) { diff --git a/domiSMP-ui-tests/src/main/java/pages/editDomainsPage/EditDomainsPage.java b/domiSMP-ui-tests/src/main/java/pages/editDomainsPage/EditDomainsPage.java new file mode 100644 index 0000000000000000000000000000000000000000..60915be694f858e0fbe36ed2640dec953e0fa5a9 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/pages/editDomainsPage/EditDomainsPage.java @@ -0,0 +1,10 @@ +package pages.editDomainsPage; + +import ddsl.PageWithGrid; +import org.openqa.selenium.WebDriver; + +public class EditDomainsPage extends PageWithGrid { + public EditDomainsPage(WebDriver driver) { + super(driver); + } +} diff --git a/domiSMP-ui-tests/src/main/java/pages/ProfilePage/ProfilePage.java b/domiSMP-ui-tests/src/main/java/pages/profilePage/ProfilePage.java similarity index 80% rename from domiSMP-ui-tests/src/main/java/pages/ProfilePage/ProfilePage.java rename to domiSMP-ui-tests/src/main/java/pages/profilePage/ProfilePage.java index 80cfce297e2384c188a87e8082c13c968e3e0524..918e72fa5faf06926b19a20c7da48501074a92e2 100644 --- a/domiSMP-ui-tests/src/main/java/pages/ProfilePage/ProfilePage.java +++ b/domiSMP-ui-tests/src/main/java/pages/profilePage/ProfilePage.java @@ -1,7 +1,7 @@ -package pages.ProfilePage; +package pages.profilePage; import ddsl.PageWithGrid; -import ddsl.dcomponents.UserDataCommonComponent; +import ddsl.dcomponents.commonComponents.UserDataCommonComponent; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,6 +17,6 @@ public class ProfilePage extends PageWithGrid { public ProfilePage(WebDriver driver) { super(driver); userData = new UserDataCommonComponent(driver); - + LOG.debug("Profile page has loaded"); } } \ No newline at end of file diff --git a/domiSMP-ui-tests/src/main/java/pages/ProfilePage/SuccesfullPasswordChangedPopup.java b/domiSMP-ui-tests/src/main/java/pages/profilePage/SuccesfullPasswordChangedPopup.java similarity index 90% rename from domiSMP-ui-tests/src/main/java/pages/ProfilePage/SuccesfullPasswordChangedPopup.java rename to domiSMP-ui-tests/src/main/java/pages/profilePage/SuccesfullPasswordChangedPopup.java index febf89b9b69ecbc629932b1e14533960503c3da3..0d88b9571012caf158074cf7b87826a43f4ddbf4 100644 --- a/domiSMP-ui-tests/src/main/java/pages/ProfilePage/SuccesfullPasswordChangedPopup.java +++ b/domiSMP-ui-tests/src/main/java/pages/profilePage/SuccesfullPasswordChangedPopup.java @@ -1,4 +1,4 @@ -package pages.ProfilePage; +package pages.profilePage; import ddsl.dcomponents.DComponent; import org.openqa.selenium.WebDriver; @@ -12,9 +12,9 @@ public class SuccesfullPasswordChangedPopup extends DComponent { * This class is used to map the succesfull password changed dialog. */ @FindBy(css = "#mat-mdc-dialog-2 > div > div > app-information-dialog > div > div.panel") - WebElement message; + private WebElement message; @FindBy(id = "closebuttondialog_id") - WebElement closeBtn; + private WebElement closeBtn; public SuccesfullPasswordChangedPopup(WebDriver driver) { super(driver); diff --git a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropGrid.java b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropGrid.java similarity index 95% rename from domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropGrid.java rename to domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropGrid.java index 16058b35f043180cc8d2de9f0b6a30fccebd92ad..176ad1c4524bb0946b95e229dcaff2d8a2b6f559 100644 --- a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropGrid.java +++ b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropGrid.java @@ -1,4 +1,4 @@ -package pages.PropertiesPage; +package pages.propertiesPage; import ddsl.dcomponents.Grid.BasicGrid; import org.openqa.selenium.WebDriver; diff --git a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertiesPage.java b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertiesPage.java similarity index 93% rename from domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertiesPage.java rename to domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertiesPage.java index 08ed90d4633a6f19f20c68c11641362c5e30f8d0..ab60bb507200589e394a0dfd85a8839c7a54d82e 100644 --- a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertiesPage.java +++ b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertiesPage.java @@ -1,4 +1,4 @@ -package pages.PropertiesPage; +package pages.propertiesPage; import ddsl.DomiSMPPage; import ddsl.dcomponents.ConfirmationDialog; @@ -19,12 +19,8 @@ public class PropertiesPage extends DomiSMPPage { @FindBy(id = "searchTable") private WebElement propertyTableContainer; - @FindBy(id = "cancelButton") - private WebElement cancelBtn; @FindBy(id = "saveButton") private WebElement saveBtn; - @FindBy(id = "editButton") - private WebElement editBtn; @FindBy(id = "searchProperty") private WebElement searchPropertyField; @FindBy(id = "searchbutton_id") diff --git a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertyPopup.java b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertyPopup.java similarity index 99% rename from domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertyPopup.java rename to domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertyPopup.java index 5aa06310ef575928243e399243f2d334d1ceb975..4e830cab48a610b7c1b3ceb2619f1a17944f6924 100644 --- a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertyPopup.java +++ b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertyPopup.java @@ -1,4 +1,4 @@ -package pages.PropertiesPage; +package pages.propertiesPage; import ddsl.dcomponents.DComponent; import org.openqa.selenium.JavascriptExecutor; 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 005f154c803c4f9333faae611ce0e5f5e47e13a1..0116b4950fc90ce972251803335bcc440a97aad3 100644 --- a/domiSMP-ui-tests/src/main/java/rest/models/DomainModel.java +++ b/domiSMP-ui-tests/src/main/java/rest/models/DomainModel.java @@ -2,6 +2,10 @@ package rest.models; import ddsl.enums.ResponseCertificates; import utils.Generator; +import utils.Utils; + +import static ddsl.enums.ResponseCertificates.SMP_DOMAIN_01; +import static ddsl.enums.ResponseCertificates.SMP_DOMAIN_02; public class DomainModel { @@ -22,13 +26,24 @@ public class DomainModel { public static DomainModel generatePublicDomainModelWithoutSML() { DomainModel domainModel = new DomainModel(); domainModel.domainCode = "AUTDom" + Generator.randomAlphaNumeric(6); - domainModel.signatureKeyAlias = ResponseCertificates.getRandomCertificate(); + 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}).getName(); return domainModel; } + public String getSmlSmpId() { return smlSmpId; } @@ -42,7 +57,7 @@ public class DomainModel { } public String getVisibility() { - return visibility; + return visibility.toUpperCase(); } public String getSmlClientKeyAlias() { diff --git a/domiSMP-ui-tests/src/main/java/utils/FileUtils.java b/domiSMP-ui-tests/src/main/java/utils/FileUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..605ad4bff868455be0c06a4451e1b15ef8e982d3 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/utils/FileUtils.java @@ -0,0 +1,10 @@ +package utils; + +import java.io.File; + +public class FileUtils { + public static String getAbsolutePath(String relativePath) { + return new File(relativePath).getAbsolutePath(); + } + +} diff --git a/domiSMP-ui-tests/src/main/java/utils/Generator.java b/domiSMP-ui-tests/src/main/java/utils/Generator.java index dcfbc6ec22b7473964d41df6031973a87c6f964f..d44721cd17cc4c0bea268fbe860386b880568be3 100644 --- a/domiSMP-ui-tests/src/main/java/utils/Generator.java +++ b/domiSMP-ui-tests/src/main/java/utils/Generator.java @@ -12,4 +12,6 @@ public class Generator { 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 4963100af413885b2a180ba3ab73f7aac5746a1f..8e814606fd2096f76a3fd01d05bb8f2cbda8c7ba 100644 --- a/domiSMP-ui-tests/src/main/java/utils/TestRunData.java +++ b/domiSMP-ui-tests/src/main/java/utils/TestRunData.java @@ -71,6 +71,12 @@ public class TestRunData { return url; } + public String getSMLUrl() { + String url = prop.getProperty("SML_URL"); + log.debug("Opening SML " + url); + return url; + } + public Integer getTIMEOUT() { return Integer.valueOf(prop.getProperty("SHORT_TIMEOUT_SECONDS")); } diff --git a/domiSMP-ui-tests/src/main/java/utils/Utils.java b/domiSMP-ui-tests/src/main/java/utils/Utils.java new file mode 100644 index 0000000000000000000000000000000000000000..4d997eb56fc6b21c9daf86b5806224ad6dc2a83e --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/utils/Utils.java @@ -0,0 +1,10 @@ +package utils; + +import java.util.Random; + +public class Utils { + public static <T extends Enum<?>> T randomEnum(T[] values) { + int x = new Random().nextInt(values.length); + return values[x]; + } +} diff --git a/domiSMP-ui-tests/src/main/resources/myLocal.properties b/domiSMP-ui-tests/src/main/resources/myLocal.properties index 4cb63757445890c4008d31682ebfbbddf9e5a084..4e8bff103aee661180a05dc1c828ff461509bc95 100644 --- a/domiSMP-ui-tests/src/main/resources/myLocal.properties +++ b/domiSMP-ui-tests/src/main/resources/myLocal.properties @@ -10,6 +10,7 @@ headless=false # Test system properties UI_BASE_URL=http://eulogin.protected.smp.local:8982/smp/ui #UI_BASE_URL=http://localhost:8080/smp/ui +SML_URL=http://localhost:8982/edelivery-sml/listDNS SYSTEM_ADMIN.username=system SYSTEM_ADMIN.password=123456 ROLE_ADMIN.username=admin diff --git a/domiSMP-ui-tests/src/main/resources/truststore/test.cer b/domiSMP-ui-tests/src/main/resources/truststore/test.cer new file mode 100644 index 0000000000000000000000000000000000000000..4082e07fbd6fd5bda3f9676a5aca06aa6f519d12 --- /dev/null +++ b/domiSMP-ui-tests/src/main/resources/truststore/test.cer @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICyjCCAbKgAwIBAgIEX3SoITANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJC +RTELMAkGA1UECwwCU1QxCzAJBgNVBAMMAlRFMB4XDTIwMDkzMDE1NDUzN1oXDTIx +MDkzMDE1NDUzN1owJzELMAkGA1UEBhMCQkUxCzAJBgNVBAsMAlNUMQswCQYDVQQD +DAJURTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKPhUN8vXynyj41Y +W8S+KIYqz+9TOyaVW2blAEqc3jiN83baPBnjEqPQjnTuWGTBE4jV4rR9FGjp48z9 +evhEvhoKjntzmN6UnsWELMFC6l3JgP6fci7WdEgS3gw7lgYxfbU4VNXtC4cSRbkD +vV5ccZa3EW3FzRk9PWRCL18xdh3BC/vwZ+FZ85Vv80F1PdO7gu+jPihT4lkWrZ0j +8dVUoMtwul5yXXrTR/cePJjG7jo+lamy7bIiBYxHFYq79ZbVaYfpjuhIsd83LR8u +LV3DrSFcSJ7SUPBWzEwLWh57SfnnEfy+CApufWioYgEkRoV0v6gvEO3cBRwyMenH +V4FuhncCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAHCnhGR9VlKSDmQw2j/tSwdOc +nfhctdOZNvlLzUBIPC4S4w49WtegwQEdxSN2+X/icJTJGUnnxeC3GPamH/2bOG5j +hw+5BYDYj3PfRHwvvhA/W2HwRXWdR4/WqVZhNKYI4qp1+zKV5B5oKmpy/K08aele +tlMSP4e8Pu9cABa3mhMj8oEC/DEkV44yTGphnNnKyBlCaL9vRzRJzHEzLV/RC8H2 +RpJrS3m8DTUaIsp+Ysm3j+hyYlUrd4+Yt/LDuyI2ZwsyRq/leaHJe13BguUniu73 +XXHsZEj9hLkTpclz7q0g38XqYiMr4bizHi02sDujpzpACo/iec8PUeB3aAsrhA== +-----END CERTIFICATE----- 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 20c403d88d24e376c850fce17e978b3c18e1d2a6..2428d69f0029834d6a88ac54ae48378167553272 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java @@ -1,39 +1,151 @@ package domiSMPTests.ui; + import ddsl.DomiSMPPage; import ddsl.enums.Pages; -import ddsl.enums.ResourceTypes; import domiSMPTests.SeleniumTest; +import org.openqa.selenium.WebElement; import org.testng.Assert; import org.testng.annotations.Test; import pages.DomainsPage.DomainsPage; import pages.LoginPage; +import pages.SmlPage; +import pages.editDomainsPage.EditDomainsPage; import rest.models.DomainModel; +import rest.models.UserModel; public class DomainsPgTests extends SeleniumTest { /** * This class has the tests against Domains Page */ + @Test(description = "DOM-01 System admin is able to create Domains") public void SystemAdminIsAbleToCreateDomains() throws Exception { DomainModel domainModel = DomainModel.generatePublicDomainModelWithoutSML(); + DomiSMPPage homePage = new DomiSMPPage(driver); + + LoginPage loginPage = homePage.goToLoginPage(); + loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password")); + + DomainsPage domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS); + domainsPage.getCreateDomainBtn().click(); + domainsPage.getDomainTab().fillDomainData(domainModel); + domainsPage.getDomainTab().saveChanges(); + String alert = domainsPage.getAlertMessageAndClose(); + Assert.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!"); + + domainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click(); + Assert.assertEquals(domainModel.getSignatureKeyAlias(), domainsPage.getDomainTab().getResponseSignatureCertificateSelectedValue()); + Assert.assertEquals(domainModel.getVisibility(), domainsPage.getDomainTab().getVisibilityOfDomainSelectedValue()); + Assert.assertEquals("To complete domain configuration, please select at least one resource type from the Resource Types tab", domainsPage.getDomainWarningMessage()); + } + + @Test(description = "DOM-02 System admin can integrates domain with SMP") + public void SystemAdminCanIntegrateDomainWithSMP() throws Exception { + DomainModel domainModel = DomainModel.generatePublicDomainModelWithSML(); DomiSMPPage homePage = new DomiSMPPage(driver); LoginPage loginPage = homePage.goToLoginPage(); loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password")); - DomainsPage domainsPage = homePage.getSidebar().navigateTo2(Pages.SYSTEM_SETTINGS_DOMAINS); + DomainsPage domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS); domainsPage.getCreateDomainBtn().click(); - domainsPage.fillDomainData(domainModel); - String alert = domainsPage.saveChangesAndGetMessage(); + domainsPage.getDomainTab().fillDomainData(domainModel); + domainsPage.getDomainTab().saveChanges(); + String alert = domainsPage.getAlertMessageAndClose(); Assert.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!"); - domainsPage.getGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click(); + domainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click(); + domainsPage.goToTab("SML integration"); + domainsPage.getSMLIntegrationTab().fillSMLIntegrationTab(domainModel); + domainsPage.getSMLIntegrationTab().saveChanges(); + domainsPage.getSMLIntegrationTab().registerToSML(); - domainsPage.goToTab("Resource Types"); - domainsPage.getResourceTab().checkResource(ResourceTypes.getRandomResourceType()); - domainsPage.getResourceTab().saveChanges(); + alert = domainsPage.getAlertMessageAndClose(); + Assert.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] registered to sml!"); + //Go to SML + driver.get(data.getSMLUrl()); + SmlPage smlPage = new SmlPage(driver); + Assert.assertTrue(smlPage.isDomainRegistered(domainModel), "Domain is not present in SML"); } -} + + @Test(description = "DOM-03 System admin is able to Invite/Remove users from domains") + public void SystemAdminIsAbleToInviteRemoveUsersFromDomains() throws Exception { + UserModel normalUser = UserModel.generateUserWithUSERrole(); + + rest.users().createUser(normalUser); + + DomainModel domainModel = DomainModel.generatePublicDomainModelWithoutSML(); + DomiSMPPage homePage = new DomiSMPPage(driver); + + LoginPage loginPage = homePage.goToLoginPage(); + loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password")); + + DomainsPage domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS); + domainsPage.getCreateDomainBtn().click(); + domainsPage.getDomainTab().fillDomainData(domainModel); + domainsPage.getDomainTab().saveChanges(); + String alert = domainsPage.getAlertMessageAndClose(); + Assert.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!"); + + //Invite user as VIEW and check if he has admin rights for domain + domainsPage.goToTab("Members"); + domainsPage.getMembersTab().getInviteMemberBtn().click(); + domainsPage.getMembersTab().getInviteMembersPopup().selectMember(normalUser.getUsername(), "VIEWER"); + WebElement userMemberElement = domainsPage.getMembersTab().getMembersGrid().searchValueInColumn("Username", normalUser.getUsername()); + Assert.assertNotNull(userMemberElement, "Invited user not found"); + + //check if user has admin rights to domain as VIEWER + homePage.logout(); + homePage.goToLoginPage(); + loginPage.login(normalUser.getUsername(), data.getNewPassword()); + EditDomainsPage editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); + WebElement domainElement = editDomainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()); + Assert.assertNull(domainElement, "Domain found for user which doesn't have rights"); + + homePage.logout(); + loginPage = homePage.goToLoginPage(); + loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password")); + domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS); + domainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click(); + domainsPage.goToTab("Members"); + domainsPage.getMembersTab().changeRoleOfUser(normalUser.getUsername(), "ADMIN"); + + //check if user has admin rights to domain as Admin + homePage.logout(); + homePage.goToLoginPage(); + loginPage.login(normalUser.getUsername(), data.getNewPassword()); + editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); + domainElement = editDomainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()); + Assert.assertNotNull(domainElement, "Domain found for user which doesn't have rights"); + + + //Remove member user and check if he has access to the domain + homePage.logout(); + homePage.goToLoginPage(); + loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password")); + domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS); + domainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click(); + domainsPage.goToTab("Members"); + domainsPage.getMembersTab().removeUser(normalUser.getUsername()); + userMemberElement = domainsPage.getMembersTab().getMembersGrid().searchValueInColumn("Username", normalUser.getUsername()); + Assert.assertNull(userMemberElement, "Domain found for user which doesn't have rights"); + + homePage.logout(); + homePage.goToLoginPage(); + loginPage.login(normalUser.getUsername(), data.getNewPassword()); + editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); + domainElement = editDomainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()); + Assert.assertNull(domainElement, "Domain found for user which doesn't have rights"); + + + } + + @Test(description = "DOM-03 System admin is able to Invite/Remove users from domains") + public void EditRsource() throws Exception { + + } + +} \ No newline at end of file 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 11edf65cbb5c053aebf97a2998b8a894a3e1602f..07d7f1a008932486c0702587e2e10784d0837632 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/ProfilePgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/ProfilePgTests.java @@ -6,8 +6,8 @@ import domiSMPTests.SeleniumTest; import org.testng.Assert; import org.testng.annotations.Test; import pages.LoginPage; -import pages.ProfilePage.ProfilePage; -import pages.PropertiesPage.PropertiesPage; +import pages.profilePage.ProfilePage; +import pages.propertiesPage.PropertiesPage; import rest.models.UserModel; import utils.Generator; @@ -64,7 +64,7 @@ public class ProfilePgTests extends SeleniumTest { loginPage.login(normalUser.getUsername(), data.getNewPassword()); //Navigate to page - ProfilePage profilePage = (ProfilePage) homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE); + ProfilePage profilePage = homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE); UserModel userNewProfileData = UserModel.generateUserProfileData(); profilePage.userData.fillUserProfileData(userNewProfileData.getEmailAddress(), userNewProfileData.getFullName(), userNewProfileData.getSmpTheme(), userNewProfileData.getSmpLocale()); @@ -89,7 +89,7 @@ public class ProfilePgTests extends SeleniumTest { loginPage.login(adminUser.getUsername(), data.getNewPassword()); //Navigate to page - profilePage = (ProfilePage) homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE); + profilePage = homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE); UserModel adminNewProfileData = UserModel.generateUserProfileData(); profilePage.userData.fillUserProfileData(adminNewProfileData.getEmailAddress(), adminNewProfileData.getFullName(), adminNewProfileData.getSmpTheme(), adminNewProfileData.getSmpLocale()); @@ -117,16 +117,16 @@ public class ProfilePgTests extends SeleniumTest { LoginPage loginPage = homePage.goToLoginPage(); loginPage.login(adminUser.getUsername(), data.getNewPassword()); - PropertiesPage propertiesPage = (PropertiesPage) homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_PROPERTIES); + PropertiesPage propertiesPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_PROPERTIES); propertiesPage.propertySearch(propertyValue); if (!propertiesPage.getPropertyValue(propertyValue).equals(newPropertyValue)) { propertiesPage.setPropertyValue("smp.passwordPolicy.validationRegex", "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[~`!@#$%^&+=\\-_<>.,?:;*/()|\\[\\]{}'\"\\\\]).{16,35}$"); propertiesPage.save(); } - ProfilePage profilePage = (ProfilePage) propertiesPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE); + ProfilePage profilePage = propertiesPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE); profilePage.userData.setChangePasswordBtn.click(); - Assert.assertEquals(0, profilePage.userData.setChangePasswordDialog().setNewPassword(data.getNewPassword(), "Edeltest!23456789Edeltest!234567890").size(), "Could not change the password of the user"); + Assert.assertEquals(0, profilePage.userData.getChangePasswordDialog().setNewPassword(data.getNewPassword(), "Edeltest!23456789Edeltest!234567890").size(), "Could not change the password of the user"); } @@ -135,21 +135,23 @@ public class ProfilePgTests extends SeleniumTest { public void UserShouldBeAbleToChangeHisPassword() throws Exception { UserModel adminUser = UserModel.generateUserWithADMINrole(); rest.users().createUser(adminUser); + DomiSMPPage homePage = new DomiSMPPage(driver); LoginPage loginPage = homePage.goToLoginPage(); loginPage.login(adminUser.getUsername(), data.getNewPassword()); - ProfilePage profilePage = (ProfilePage) loginPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE); + + ProfilePage profilePage = loginPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE); String oldLastSet = profilePage.userData.getLastSetValue(); String oldPasswordExpiresOn = profilePage.userData.getPasswordExpiresOnValue(); profilePage.userData.setChangePasswordBtn.click(); String newPass = "Edeltest!23456789Edelt" + Generator.randomAlphaNumeric(4); - Assert.assertEquals(profilePage.userData.setChangePasswordDialog().setNewPassword(data.getNewPassword(), newPass).size(), 0, "Could not change the password of the user"); + Assert.assertEquals(profilePage.userData.getChangePasswordDialog().setNewPassword(data.getNewPassword(), newPass).size(), 0, "Could not change the password of the user"); loginPage.login(adminUser.getUsername(), newPass); - profilePage = (ProfilePage) loginPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE); - + profilePage = loginPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE); + //TODO wait until the lastvalue and old password fields show value as text // Assert.assertNotSame(profilePage2.getLastSetValue(), oldLastSet, "Last set value is not reseted"); //Assert.assertNotSame(profilePage2.getPasswordExpiresOnValue(), oldPasswordExpiresOn, "Password expires on value is not reseted"); diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java new file mode 100644 index 0000000000000000000000000000000000000000..27bb41cc57d53281b88d6f1b69651fefde72eccd --- /dev/null +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java @@ -0,0 +1,33 @@ +package domiSMPTests.ui; + +import ddsl.DomiSMPPage; +import ddsl.enums.Pages; +import domiSMPTests.SeleniumTest; +import org.testng.Assert; +import org.testng.annotations.Test; +import pages.LoginPage; +import pages.TruststorePage; +import utils.FileUtils; + +public class TrustorePgTests extends SeleniumTest { + + //TODO work in progress + + @Test(description = "TRST-01 System admin is able to import certificates") + public void SystemAdminIsAbleToImportCertificates() throws Exception { + + + DomiSMPPage homePage = new DomiSMPPage(driver); + + LoginPage loginPage = homePage.goToLoginPage(); + loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password")); + + TruststorePage truststorepage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_TRUSTSTORE); + String path = FileUtils.getAbsolutePath("./src/main/resources/truststore/test.cer"); + + String certificateALias = truststorepage.addCertificateAndReturnAlias(path); + Assert.assertNotNull(certificateALias); + + } + +} diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java index ae4fd1e60f08417789735040586ae12fb9060bce..013bfef98783ee39fbe59671b76dfbb0386cdf97 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java @@ -18,19 +18,20 @@ public class UsersPgTests extends SeleniumTest { LoginPage loginPage = homePage.goToLoginPage(); loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password")); - UsersPage usersPage = (UsersPage) homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_USERS); + UsersPage usersPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_USERS); usersPage.getCreateUserBtn().click(); UserModel adminNewUserData = UserModel.generateUserWithADMINrole(); usersPage.fillNewUserDataAndSave(adminNewUserData); usersPage.refreshPage(); - usersPage.filter(adminNewUserData.getUsername()); - WebElement newUser = usersPage.getGrid().searchValueInColumn("Username", adminNewUserData.getUsername()); + // usersPage.filter(adminNewUserData.getUsername()); + WebElement newUser = usersPage.getDataPanelGrid().searchValueInColumn("Username", adminNewUserData.getUsername()); Assert.assertNotNull(newUser); newUser.click(); Assert.assertEquals(usersPage.getApplicationRoleValue(), adminNewUserData.getRole()); Assert.assertEquals(usersPage.getFullNameValue(), adminNewUserData.getFullName()); + Assert.assertTrue(usersPage.isSelectedUserActive(), "User active status is true"); Assert.assertEquals(usersPage.getEmailValue(), adminNewUserData.getEmailAddress()); Assert.assertEquals(usersPage.getSelectedThemeValue(), adminNewUserData.getSmpTheme()); @@ -45,7 +46,7 @@ public class UsersPgTests extends SeleniumTest { LoginPage loginPage = homePage.goToLoginPage(); loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password")); - UsersPage usersPage = (UsersPage) homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_USERS); + UsersPage usersPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_USERS); usersPage.getCreateUserBtn().click(); UserModel adminNewUserData = UserModel.generateUserWithADMINrole(); usersPage.fillNewUserDataAndSave(adminNewUserData); @@ -56,11 +57,5 @@ public class UsersPgTests extends SeleniumTest { Assert.assertEquals(alertMessage, "Invalid request [CreateUser]. Error: User with username [" + adminNewUserData.getUsername() + "] already exists!!"); - - - - - - } } \ No newline at end of file