diff --git a/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabs.java b/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabs.java new file mode 100644 index 0000000000000000000000000000000000000000..72ca6afc31743718b4357407210e7df2a5903db0 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabs.java @@ -0,0 +1,35 @@ +package ddsl; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +public class CommonPageWithTabs extends DomiSMPPage { + private final static Logger LOG = LoggerFactory.getLogger(CommonPageWithTabs.class); + + @FindBy(css = "[role = \"tab\"]") + private List<WebElement> tabList; + + public CommonPageWithTabs(WebDriver driver) { + super(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 getAlertMessageAndClose() { + + return getAlertArea().getAlertMessage(); + } +} diff --git a/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithGrid.java b/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabsAndGrid.java similarity index 54% rename from domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithGrid.java rename to domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabsAndGrid.java index b44802252370fb63eb88114f2a9e5d0a5c235d31..60b0db456c7b3c977e3a590df8a7e22f4b13e235 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithGrid.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabsAndGrid.java @@ -9,10 +9,8 @@ import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.List; - -public class CommonPageWithGrid extends DomiSMPPage { - private final static Logger LOG = LoggerFactory.getLogger(CommonPageWithGrid.class); +public class CommonPageWithTabsAndGrid extends CommonPageWithTabs { + private final static Logger LOG = LoggerFactory.getLogger(CommonPageWithTabsAndGrid.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. @@ -22,38 +20,17 @@ public class CommonPageWithGrid extends DomiSMPPage { public WebElement filterInput; @FindBy(css = "data-panel >div >div> mat-toolbar button:first-of-type") public WebElement addBtn; - @FindBy(css = "[class=smp-column-data]") - public WebElement dataPanel; @FindBy(css = "[class~=smp-column-label]") public WebElement rightPanel; - @FindBy(css = "[role = \"tab\"]") - private List<WebElement> tabList; - public CommonPageWithGrid(WebDriver driver) { + public CommonPageWithTabsAndGrid(WebDriver driver) { super(driver); PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getWaitTimeShort()), this); } - public SmallGrid getGrid() { + public SmallGrid getLeftSideGrid() { return new SmallGrid(driver, rightPanel); } - public SmallGrid getDataPanelGrid() { - return new SmallGrid(driver, rightPanel); - } - 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/SideNavigationComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java index 0ad5ee76623174e27d3e188e3c515d4f4a5b7edc..ea47811232f7a2a2713c8fbc79532de92db4fabb 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java @@ -12,6 +12,7 @@ import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import pages.administration.editDomainsPage.EditDomainsPage; +import pages.administration.editGroupsPage.EditGroupsPage; import pages.systemSettings.TruststorePage; import pages.systemSettings.UsersPage; import pages.systemSettings.domainsPage.DomainsPage; @@ -119,10 +120,12 @@ public class SideNavigationComponent extends DomiSMPPage { openSubmenu(administrationExpand, editDomainsLnk); return (T) new EditDomainsPage(driver); } + if (page == Pages.ADMINISTRATION_EDIT_GROUPS) { + openSubmenu(administrationExpand, editGroupsLnk); + return (T) new EditGroupsPage(driver); + } + - // case ADMINISTRATION_EDIT_GROUPS: - // expandSection(administrationExpand); - // return new DLink(driver, editGroupsLnk); // case ADMINISTRATION_EDIT_RESOURCES: // expandSection(administrationExpand); // return new DLink(driver, editResourcesLnk); diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java index c6b23c347d7c78c5559d89e2d55f30e668b34c73..f11c96a11595a28584c8b643def7ef23881b1f36 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java @@ -1,8 +1,8 @@ package ddsl.dcomponents.commonComponents.subcategoryTab; +import ddsl.dcomponents.ConfirmationDialog; import ddsl.dcomponents.DComponent; import ddsl.dcomponents.Grid.SmallGrid; -import org.apache.poi.ss.formula.functions.T; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -20,27 +20,34 @@ public class SubcategoryTabComponent extends DComponent { private WebElement resourceMembersBtn; @FindBy(id = "deleteButton") private WebElement deleteBtn; - @FindBy(css = "div smp-column-data") - private WebElement sidePanel; + @FindBy(css = "[class=smp-column-data]") + private WebElement rightSidePanel; public SubcategoryTabComponent(WebDriver driver) { super(driver); } public SmallGrid getGrid() { - return new SmallGrid(driver, sidePanel); + return new SmallGrid(driver, rightSidePanel); } - public DComponent create() throws Exception { + public void create() throws Exception { weToDButton(createBtn).click(); - return new DComponent(driver); } - public T edit(String columnName, String value) throws Exception { + protected void edit(String columnName, String value) throws Exception { WebElement tobeEdited = getGrid().searchAndGetElementInColumn(columnName, value); tobeEdited.click(); wait.forElementToBeEnabled(editBtn); weToDButton(editBtn).click(); - return new T(); + } + + protected void delete(String columnName, String value) throws Exception { + WebElement tobeDeleted = getGrid().searchAndGetElementInColumn(columnName, value); + tobeDeleted.click(); + wait.forElementToBeEnabled(deleteBtn); + weToDButton(deleteBtn).click(); + ConfirmationDialog confirmationDialog = new ConfirmationDialog(driver); + confirmationDialog.confirm(); } } diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DMatSelect.java b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DMatSelect.java new file mode 100644 index 0000000000000000000000000000000000000000..394cf1d1ecbf23d7b3e6aa504515b79042186b07 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DMatSelect.java @@ -0,0 +1,171 @@ +package ddsl.dobjects; + +import ddsl.dcomponents.ConfirmationDialog; +import ddsl.dcomponents.DComponent; +import org.apache.commons.lang3.StringUtils; +import org.openqa.selenium.By; +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; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + + +public class DMatSelect extends DComponent { + /** + * Generic wrapper for select element. + */ + private final static Logger LOG = LoggerFactory.getLogger(ConfirmationDialog.class); + + public WebElement selectContainer; + protected List<String> optionIDs = new ArrayList<String>(); + + @FindBy(css = "[class*=\"select-arrow\"]") + protected WebElement expandBtn; + + private By options = By.cssSelector("div > mat-option"); + private By selectedOption = By.cssSelector("[class*=\"-select-value\"]"); + + public DMatSelect(WebDriver driver, WebElement container) { + super(driver); + wait.forXMillis(100); + PageFactory.initElements(new AjaxElementLocatorFactory(container, data.getWaitTimeShort()), this); + + this.selectContainer = container; +// try { +// if (isDisplayed() && isEnabled()) { +// weToDButton(expandBtn).click(); +// extractOptionIDs(); +// contract(); +// } +// } catch (Exception e) { +// } + } + + public boolean isDisplayed() throws Exception { + try { + return weToDButton(expandBtn).isEnabled(); + } catch (Exception e) { + return false; + } + } + + public boolean isEnabled() { +// aria-disabled="true" + boolean isEnabled = true; + try { + isEnabled = !Boolean.valueOf((selectContainer).getAttribute("aria-disabled")); + } catch (Exception e) { + } + + return isEnabled; + } + + private void extractOptionIDs() throws Exception { + wait.forAttributeToContain(selectContainer, "aria-owns", "mat-option"); + String[] ids = selectContainer.getAttribute("aria-owns").split(" "); + optionIDs.addAll(Arrays.asList(ids)); + + // log.debug(optionIDs.size() + " option ids identified : " + optionIDs); + } + +// private void expand() throws Exception { +// try { +// weToDButton(expandBtn).click(); +// wait.forAttributeNotEmpty(selectContainer, "aria-owns"); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } + + private void contract() throws Exception { + try { + wait.forXMillis(200); + selectContainer.sendKeys(Keys.ESCAPE); + wait.forXMillis(200); + + } catch (Exception e) { + } + } + +// ----------------------------------------------------------------- + + protected List<DObject> getOptionElements() throws Exception { + weToDButton(expandBtn).click(); + + List<DObject> optionObj = new ArrayList<>(); + + for (int i = 0; i < optionIDs.size(); i++) { + String optionId = optionIDs.get(i); + WebElement option = driver.findElement(By.id(optionId)); + optionObj.add(new DObject(driver, option)); + } + return optionObj; + } + + public boolean selectOptionByText(String text) throws Exception { + LOG.debug("selecting option by text: " + text); + + if (StringUtils.isEmpty(text)) { + return false; + } + + List<DObject> optionObj = getOptionElements(); + if (optionObj.size() == 0) { + LOG.warn("select has no options "); + } + + for (DObject dObject : optionObj) { + if (StringUtils.equalsIgnoreCase(dObject.getText(), text)) { + dObject.click(); + return true; + } + } + + return false; + } + + public boolean deselectOptionByText(String text) throws Exception { + LOG.debug("selecting option by text: " + text); + + if (StringUtils.isEmpty(text)) { + return false; + } + + List<DObject> optionObj = getOptionElements(); + if (optionObj.size() == 0) { + LOG.warn("select has no options "); + } + + for (DObject dObject : optionObj) { + if (StringUtils.equalsIgnoreCase(dObject.getText(), text)) { + dObject.click(); + if (dObject.getAttribute("aria-selected").equals(true)) { + return true; + } + } + } + + return false; + } + + + public List<String> getOptionsTexts() throws Exception { + List<String> texts = new ArrayList<>(); + List<DObject> options = getOptionElements(); + + for (int i = 0; i < options.size(); i++) { + texts.add(options.get(i).getText()); + } + contract(); + return texts; + } + +} 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 37845e4722e585c72294373e87d951256cfb5f98..4d63a784b67374eaef8cbea9212d011f397f13b6 100644 --- a/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java +++ b/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java @@ -1,16 +1,16 @@ package ddsl.enums; 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)"); + OASIS1("edelivery-oasis-smp-1.0-servicegroup"), + OASIS2("edelivery-oasis-smp-2.0-servicegroup"), + OASIS3("edelivery-oasis-cppa-3.0-cpp"); public String getName() { return name; } - public final String name; + private final String name; ResourceTypes(String name) { diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java index 210a94000969f3b5155ace08a25bcf5523dc14bd..022bef5e0f06c42d5445f19f1320f812c444e6f9 100644 --- a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java +++ b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java @@ -1,10 +1,47 @@ package pages.administration.editDomainsPage; +import ddsl.dcomponents.AlertComponent; import ddsl.dcomponents.DComponent; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.PageFactory; +import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; +import rest.models.GroupModel; public class CreateGroupDetailsDialog extends DComponent { + @FindBy(id = "name_id") + private WebElement groupNameLbl; + @FindBy(id = "description_id") + private WebElement groupDescriptionLbl; + @FindBy(id = "group_id") + private WebElement groupVisibilityDdl; + @FindBy(id = "saveButton") + private WebElement saveBtn; public CreateGroupDetailsDialog(WebDriver driver) { super(driver); + PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getWaitTimeShort()), this); + + } + + public AlertComponent getAlertArea() { + return new AlertComponent(driver); + } + + + public void fillGroupDetails(GroupModel group) { + groupNameLbl.sendKeys(group.getGroupName()); + groupDescriptionLbl.sendKeys(group.getGroupDescription()); + weToDSelect(groupVisibilityDdl).selectValue(group.getVisibility()); + } + + public Boolean tryClickOnSave() throws Exception { + wait.forElementToBeClickable(saveBtn); + if (weToDButton(saveBtn).isEnabled()) { + weToDButton(saveBtn).click(); + return true; + } else { + return false; + } } } diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/EditDomainsPage.java b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/EditDomainsPage.java index b91b7f265b6e0748163d1222b5093459f779cd64..0b637b123c27e2875a7665dad8fdeb59dfe9db56 100644 --- a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/EditDomainsPage.java +++ b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/EditDomainsPage.java @@ -1,11 +1,11 @@ package pages.administration.editDomainsPage; -import ddsl.CommonPageWithGrid; +import ddsl.CommonPageWithTabsAndGrid; import org.openqa.selenium.WebDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class EditDomainsPage extends CommonPageWithGrid { +public class EditDomainsPage extends CommonPageWithTabsAndGrid { /** * Page object for the Edit domains page. This contains the locators of the page and the methods for the behaviour of the page */ @@ -21,4 +21,10 @@ public class EditDomainsPage extends CommonPageWithGrid { return new DomainMembersTab(driver); } + + public GroupTab getGroupTab() { + + return new GroupTab(driver); + } + } diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/GroupTab.java b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/GroupTab.java index 7af831e3465e5494407e8b60fe32c367d62cc8f8..a4cc878a0177dc34d3fb07f971f3a267c4e072eb 100644 --- a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/GroupTab.java +++ b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/GroupTab.java @@ -2,14 +2,28 @@ package pages.administration.editDomainsPage; import ddsl.dcomponents.commonComponents.subcategoryTab.SubcategoryTabComponent; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.PageFactory; +import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; public class GroupTab extends SubcategoryTabComponent { public GroupTab(WebDriver driver) { super(driver); + PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getWaitTimeShort()), this); + + } + + public CreateGroupDetailsDialog clickCreateNewGroup() throws Exception { + create(); + return new CreateGroupDetailsDialog(driver); } - @Override - public CreateGroupDetailsDialog create() { + public CreateGroupDetailsDialog clickEditGroup(String domainCode) throws Exception { + edit("Group name", domainCode); return new CreateGroupDetailsDialog(driver); } + + public void deleteGroup(String domainCode) throws Exception { + delete("Group name", domainCode); + } + } diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/EditGroupsPage.java b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/EditGroupsPage.java new file mode 100644 index 0000000000000000000000000000000000000000..6ec5b06f47338fd14c1f2de6ca2feb91d64f0f42 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/EditGroupsPage.java @@ -0,0 +1,41 @@ +package pages.administration.editGroupsPage; + +import ddsl.CommonPageWithTabs; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.ui.Select; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import rest.models.DomainModel; +import rest.models.GroupModel; + +public class EditGroupsPage extends CommonPageWithTabs { + /** + * Page object for the Edit groups page. This contains the locators of the page and the methods for the behaviour of the page + */ + private final static Logger LOG = LoggerFactory.getLogger(EditGroupsPage.class); + + @FindBy(id = "domain_id") + private WebElement domainDdl; + @FindBy(id = "group_id") + private Select groupDdl; + + public EditGroupsPage(WebDriver driver) { + super(driver); + LOG.debug("Loading Edit groups page."); + } + + public void selectGroup(DomainModel domainModel, GroupModel groupModel) throws Exception { + weToMatDSelect(domainDdl).selectOptionByText(domainModel.getDomainCode()); + } + + public GroupMembersTab getDomainMembersTab() { + return new GroupMembersTab(driver); + } + + public ResourceTab getGroupTab() { + return new ResourceTab(driver); + } + +} diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/GroupMembersTab.java b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/GroupMembersTab.java new file mode 100644 index 0000000000000000000000000000000000000000..a9a91de39d2105a6335d2ef0d99e346c0dba25b0 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/GroupMembersTab.java @@ -0,0 +1,15 @@ +package pages.administration.editGroupsPage; + +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 GroupMembersTab extends MembersComponent { + + public GroupMembersTab(WebDriver driver) { + super(driver); + PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getWaitTimeShort()), this); + } +} + diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/ResourceTab.java b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/ResourceTab.java new file mode 100644 index 0000000000000000000000000000000000000000..c359fa0e37ecd52274748b1196694b982262c145 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/ResourceTab.java @@ -0,0 +1,20 @@ +package pages.administration.editGroupsPage; + +import ddsl.dcomponents.commonComponents.subcategoryTab.SubcategoryTabComponent; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.PageFactory; +import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; +import pages.administration.editDomainsPage.CreateGroupDetailsDialog; + +public class ResourceTab extends SubcategoryTabComponent { + public ResourceTab(WebDriver driver) { + super(driver); + PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getWaitTimeShort()), this); + + } + + public CreateGroupDetailsDialog clickOnCreateNewResource() throws Exception { + create(); + return new CreateGroupDetailsDialog(driver); + } +} diff --git a/domiSMP-ui-tests/src/main/java/pages/systemSettings/TruststorePage.java b/domiSMP-ui-tests/src/main/java/pages/systemSettings/TruststorePage.java index 9a47d96ccd3b77aadae318a2683fafd374027104..76eced09d3ead2e9ac7072931bee84e4684da137 100644 --- a/domiSMP-ui-tests/src/main/java/pages/systemSettings/TruststorePage.java +++ b/domiSMP-ui-tests/src/main/java/pages/systemSettings/TruststorePage.java @@ -1,6 +1,7 @@ package pages.systemSettings; import ddsl.CommonCertificatePage; +import ddsl.dcomponents.Grid.SmallGrid; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -20,7 +21,9 @@ public class TruststorePage extends CommonCertificatePage { super(driver); } - + public SmallGrid getCertificateGrid() { + return new SmallGrid(driver, rightPanel); + } public String addCertificateAndReturnAlias(String filePath) { uploadInput.sendKeys(filePath); String certificateAlias = getAlertMessageAndClose(); diff --git a/domiSMP-ui-tests/src/main/java/pages/systemSettings/UsersPage.java b/domiSMP-ui-tests/src/main/java/pages/systemSettings/UsersPage.java index 44cdb562f90e2641710a80754166d28d3c207c9f..9a931a1529cff11852e6b4eadc50f2c736c1d7cb 100644 --- a/domiSMP-ui-tests/src/main/java/pages/systemSettings/UsersPage.java +++ b/domiSMP-ui-tests/src/main/java/pages/systemSettings/UsersPage.java @@ -1,6 +1,6 @@ package pages.systemSettings; -import ddsl.CommonPageWithGrid; +import ddsl.CommonPageWithTabsAndGrid; import ddsl.dcomponents.commonComponents.UserDataCommonComponent; import ddsl.dobjects.DButton; import org.openqa.selenium.WebDriver; @@ -10,7 +10,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import rest.models.UserModel; -public class UsersPage extends CommonPageWithGrid { +public class UsersPage extends CommonPageWithTabsAndGrid { /** * Page object for the Users page. This contains the locators of the page and the methods for the behaviour of the page */ diff --git a/domiSMP-ui-tests/src/main/java/pages/systemSettings/domainsPage/DomainsPage.java b/domiSMP-ui-tests/src/main/java/pages/systemSettings/domainsPage/DomainsPage.java index 9376628de4126cd9e692df22d32bfd028aa83f3e..7d1657e5b2c1a05bb68e200826809923367a2b2b 100644 --- a/domiSMP-ui-tests/src/main/java/pages/systemSettings/domainsPage/DomainsPage.java +++ b/domiSMP-ui-tests/src/main/java/pages/systemSettings/domainsPage/DomainsPage.java @@ -1,6 +1,6 @@ package pages.systemSettings.domainsPage; -import ddsl.CommonPageWithGrid; +import ddsl.CommonPageWithTabsAndGrid; import ddsl.dobjects.DButton; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -8,7 +8,7 @@ import org.openqa.selenium.support.FindBy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class DomainsPage extends CommonPageWithGrid { +public class DomainsPage extends CommonPageWithTabsAndGrid { /** * Page object for the Users page. This contains the locators of the page and the methods for the behaviour of the page */ diff --git a/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java b/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java index 4c473a7ba6e1374d91e1e7abd71834e9ce45bf1b..8e3bab9989e26bd065b0c74b56576c0965246580 100644 --- a/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java +++ b/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java @@ -78,12 +78,20 @@ public class BaseRestClient { protected ClientResponse jsonPUT(WebResource resource, String body) { return requestPUT(resource, body, MediaType.APPLICATION_JSON); } - protected ClientResponse requestPOST(WebResource resource, String params, String type) { + protected ClientResponse requestPOST(WebResource resource, String body) { + if (!isLoggedIn()) { + log.info("User is not loggedin"); + try { + createSession(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } WebResource.Builder builder = decorateBuilder(resource); - return builder.type(type).post(ClientResponse.class, params); + return builder.type(MediaType.APPLICATION_JSON).post(ClientResponse.class, body); } // -------------------------------------------- Login -------------------------------------------------------------- diff --git a/domiSMP-ui-tests/src/main/java/rest/DomainClient.java b/domiSMP-ui-tests/src/main/java/rest/DomainClient.java index 6b760ed5b52de66915d91f9c891caf955a988eda..4c01579eab4c21ba228bc4f765dcf7e4106484ed 100644 --- a/domiSMP-ui-tests/src/main/java/rest/DomainClient.java +++ b/domiSMP-ui-tests/src/main/java/rest/DomainClient.java @@ -3,11 +3,15 @@ package rest; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.sun.jersey.api.client.ClientResponse; +import ddsl.enums.ResourceTypes; import org.json.JSONObject; import rest.models.DomainModel; import rest.models.MemberModel; import utils.TestRunData; +import java.util.ArrayList; +import java.util.List; + public class DomainClient extends BaseRestClient { /** @@ -70,4 +74,31 @@ public class DomainClient extends BaseRestClient { return response.getEntity(MemberModel.class); } + public DomainModel addResourcesToDomain(String domainId, List<ResourceTypes> resourceTypesList) throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + List<String> resourceListToBeAdded = new ArrayList<>(); + for (ResourceTypes resourceType : resourceTypesList) { + resourceListToBeAdded.add(resourceType.getName()); + } + + String resourceTypes = mapper.writeValueAsString(resourceListToBeAdded); + if (!isLoggedIn()) { + try { + createSession(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + String addMemberPath = RestServicePaths.getAddResourcePath(TestRunData.getInstance().getUserId(), resourceTypes); + ClientResponse response = requestPOST(resource.path(addMemberPath), resourceTypes); + if (response.getStatus() != 200) { + try { + throw new SMPRestException("Could not add resource!", response); + } catch (SMPRestException e) { + throw new RuntimeException(e); + } + } + log.debug("Resources have been added!"); + return response.getEntity(DomainModel.class); + } } diff --git a/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java b/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java index fa47e3a3a688c465cf599ca34db6023c0e7eaccb..e85f3fcac00e67fce38f18fe59bdff0837064503 100644 --- a/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java +++ b/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java @@ -29,5 +29,9 @@ public class RestServicePaths { return "/edit/rest/" + currentUserId + "/domain/" + domainId + "/member/put"; } + public static String getAddResourcePath(String currentUserId, String domainId) { + return String.format("/internal/rest/domain/%userId/%domainId/update-resource-types", currentUserId, domainId); + } + } diff --git a/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java b/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java new file mode 100644 index 0000000000000000000000000000000000000000..cf5e6a666c0ae6efc48e5a6ecbabb1dff2e889d5 --- /dev/null +++ b/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java @@ -0,0 +1,50 @@ +package rest.models; + + +import utils.Generator; + +public class GroupModel { + private String groupName; + private String visibility; + private String groupDescription; + + public static GroupModel generatePublicDomain() { + GroupModel groupModel = new GroupModel(); + groupModel.groupName = ("AUT_groupName_" + Generator.randomAlphaNumeric(4)).toLowerCase(); + groupModel.groupDescription = Generator.randomAlphaNumeric(10).toLowerCase(); + groupModel.visibility = "PUBLIC"; + return groupModel; + } + + public static GroupModel generatePrivateDomain() { + GroupModel groupModel = new GroupModel(); + groupModel.groupName = ("AUT_groupName_" + Generator.randomAlphaNumeric(4)).toLowerCase(); + groupModel.groupDescription = Generator.randomAlphaNumeric(10).toLowerCase(); + groupModel.visibility = "PRIVATE"; + return groupModel; + } + + public String getGroupName() { + return groupName; + } + + public void setGroupName(String groupName) { + this.groupName = groupName; + } + + public String getVisibility() { + return visibility; + } + + public void setVisibility(String visibility) { + this.visibility = visibility; + } + + public String getGroupDescription() { + return groupDescription; + } + + public void setGroupDescription(String groupDescription) { + this.groupDescription = groupDescription; + } +} diff --git a/domiSMP-ui-tests/src/main/resources/myLocal.properties b/domiSMP-ui-tests/src/main/resources/myLocal.properties index 47920057f0b1778b26999e190f33d00b33287a76..91ecbb1a2a4469166b90b7c561e58ed6e3c89360 100644 --- a/domiSMP-ui-tests/src/main/resources/myLocal.properties +++ b/domiSMP-ui-tests/src/main/resources/myLocal.properties @@ -1,9 +1,9 @@ # Environment properties # Test runner properties -test.webdriver.path=./chromedriver.exe -test.webdriver.type=chrome -#test.webdriver.path=./geckodriver.exe -#test.webdriver.type=firefox +#test.webdriver.path=./chromedriver.exe +#test.webdriver.type=chrome +test.webdriver.path=./geckodriver.exe +test.webdriver.type=firefox test.webdriver.headless=false test.application.ui.url=http://eulogin.protected.smp.local:8982/smp/ui diff --git a/domiSMP-ui-tests/src/main/resources/truststore/test.cer b/domiSMP-ui-tests/src/main/resources/truststore/expiredCertificate.cer similarity index 100% rename from domiSMP-ui-tests/src/main/resources/truststore/test.cer rename to domiSMP-ui-tests/src/main/resources/truststore/expiredCertificate.cer diff --git a/domiSMP-ui-tests/src/main/resources/truststore/validCertificate.cer b/domiSMP-ui-tests/src/main/resources/truststore/validCertificate.cer new file mode 100644 index 0000000000000000000000000000000000000000..9a84d763f891ccfac7500f741d0ee92bfaef5c27 --- /dev/null +++ b/domiSMP-ui-tests/src/main/resources/truststore/validCertificate.cer @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDAzCCAeugAwIBAgIEEQ+g2DANBgkqhkiG9w0BAQsFADAyMQ8wDQYDVQQDDAZy +ZWRfZ3cxEjAQBgNVBAoTCWVEZWxpdmVyeTELMAkGA1UEBhMCQkUwHhcNMjMwMzIz +MDg0OTIyWhcNMzMwMzIyMDg0OTIyWjAyMQ8wDQYDVQQDDAZyZWRfZ3cxEjAQBgNV +BAoTCWVEZWxpdmVyeTELMAkGA1UEBhMCQkUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQCTt2UA2xulSq7S4XbazB7j2fquW+N/ybl4YI7ViwNjYbnFF9Hr +TCy5q36UVHzioInn0qjqhz16pzAyF+0zCQFGFhG0hC/zrODdYXk6YgGsxiecQr7K +Ac7OsCqAmRC6Y4hKoFmgunLEq3GwRpL4gMlZpd0nkfJaWpfgwJn6ZKebrs5u+71D +q+lMlROPH1lWyeq6vuzGeVhMR3jf1o8s77SRcpBS/ZsXWQ7AM8/Lih3etPzqmt/R +p9LAh49DOfmQF5BhANE5rETUpJkL1hc9lBTXh8f8XUcG/X0vvqZqO8CSuIqerC42 +T5AEBLjJRINEpM6tl5rI9U1c4zUnffyhkRh7AgMBAAGjITAfMB0GA1UdDgQWBBQL +X5ndwOUTSkSKKXxSbgSuyUeJPTANBgkqhkiG9w0BAQsFAAOCAQEAMS0qoxzmYmrm +kT2PiFnVoUKbx057DgaHzBa0lPNJX2tXxR05v/ZRGKImiTuij9WiCc0GRJF6llwd +19BzwC5z/hSoxH40nFaXjH9OXtANF+G6UmbiwltUcW9NSlnIR2yVDJGRwvpzLdTE +HEUiws4u80CNiz9ylVPJ58XclTlDiRLR2Glhq0zmFX+buMOjJRVT9RaLHgMZWJV0 +i506YSrKgjjNXIcL3PyR7ahBLEWw/qolgZtmAq/bgGIZe3bt/g6lF5wnpKZ3+P48 +h9v17PrxbDOyc7QDw9PEs6h4L1t06yUwK8gE96wyJBsnLZybkf4X/HyKA1yinJy9 +SXAnr3u8EA== +-----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 c72fd95c128450da7d7cd500f55b7a6880f13f3a..cbfd7c5349649e6f0fc9a04a0ccee0088ed4e3ce 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java @@ -44,7 +44,7 @@ public class DomainsPgTests extends SeleniumTest { String alert = domainsPage.getAlertMessageAndClose(); soft.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!"); - domainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); soft.assertEquals(domainModel.getSignatureKeyAlias(), domainsPage.getDomainTab().getResponseSignatureCertificateSelectedValue()); soft.assertEquals(domainModel.getVisibility(), domainsPage.getDomainTab().getVisibilityOfDomainSelectedValue()); soft.assertEquals("To complete domain configuration, please select at least one resource type from the Resource Types tab", domainsPage.getDomainWarningMessage()); @@ -62,7 +62,7 @@ public class DomainsPgTests extends SeleniumTest { String alert = domainsPage.getAlertMessageAndClose(); soft.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!"); - domainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); domainsPage.goToTab("SML integration"); domainsPage.getSMLIntegrationTab().fillSMLIntegrationTab(domainModel); domainsPage.getSMLIntegrationTab().saveChanges(); @@ -104,14 +104,14 @@ public class DomainsPgTests extends SeleniumTest { homePage.goToLoginPage(); loginPage.login(normalUser.getUsername(), data.getNewPassword()); EditDomainsPage editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - WebElement domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); + WebElement domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); soft.assertNull(domainElement, "Domain found for user which doesn't have rights"); homePage.logout(); loginPage = homePage.goToLoginPage(); loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password")); domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS); - domainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); domainsPage.goToTab("Members"); domainsPage.getMembersTab().changeRoleOfUser(normalUser.getUsername(), "ADMIN"); @@ -120,7 +120,7 @@ public class DomainsPgTests extends SeleniumTest { homePage.goToLoginPage(); loginPage.login(normalUser.getUsername(), data.getNewPassword()); editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); + domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); soft.assertNotNull(domainElement, "Domain found for user which doesn't have rights"); @@ -129,7 +129,7 @@ public class DomainsPgTests extends SeleniumTest { homePage.goToLoginPage(); loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password")); domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS); - domainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); domainsPage.goToTab("Members"); domainsPage.getMembersTab().removeUser(normalUser.getUsername()); userMemberElement = domainsPage.getMembersTab().getMembersGrid().searchAndGetElementInColumn("Username", normalUser.getUsername()); @@ -139,7 +139,7 @@ public class DomainsPgTests extends SeleniumTest { homePage.goToLoginPage(); loginPage.login(normalUser.getUsername(), data.getNewPassword()); editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); + domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); soft.assertNull(domainElement, "Domain found for user which doesn't have rights"); soft.assertAll(); diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java index a11f76ee393875a5dfaa2d11e57ba4ff3b483e2e..8fd3698cd01928267a1a145b125c38c8f34cdd88 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java @@ -6,11 +6,15 @@ import domiSMPTests.SeleniumTest; import org.json.JSONObject; import org.openqa.selenium.WebElement; import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Ignore; import org.testng.annotations.Test; import org.testng.asserts.SoftAssert; import pages.LoginPage; +import pages.administration.editDomainsPage.CreateGroupDetailsDialog; import pages.administration.editDomainsPage.EditDomainsPage; +import pages.administration.editGroupsPage.EditGroupsPage; import rest.models.DomainModel; +import rest.models.GroupModel; import rest.models.MemberModel; import rest.models.UserModel; @@ -51,7 +55,7 @@ public class EditDomainsPgTests extends SeleniumTest { rest.users().createUser(memberUser); //Invite user as VIEW and check if he has admin rights for domain - editDomainPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); editDomainPage.getDomainMembersTab().getInviteMemberBtn().click(); editDomainPage.getDomainMembersTab().getInviteMembersPopup().selectMember(memberUser.getUsername(), "VIEWER"); WebElement userMemberElement = editDomainPage.getDomainMembersTab().getMembersGrid().searchAndGetElementInColumn("Username", memberUser.getUsername()); @@ -62,14 +66,14 @@ public class EditDomainsPgTests extends SeleniumTest { homePage.goToLoginPage(); loginPage.login(memberUser.getUsername(), data.getNewPassword()); EditDomainsPage editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - WebElement domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); + WebElement domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); soft.assertNull(domainElement, "Domain found for user which doesn't have rights"); homePage.logout(); loginPage = homePage.goToLoginPage(); loginPage.login(adminUser.getUsername(), data.getNewPassword()); editDomainPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - editDomainPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); editDomainPage.getDomainMembersTab().changeRoleOfUser(memberUser.getUsername(), "ADMIN"); //check if user has admin rights to domain as Admin @@ -77,7 +81,7 @@ public class EditDomainsPgTests extends SeleniumTest { homePage.goToLoginPage(); loginPage.login(memberUser.getUsername(), data.getNewPassword()); editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); + domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); soft.assertNotNull(domainElement, "Domain found for user which doesn't have rights"); @@ -86,7 +90,7 @@ public class EditDomainsPgTests extends SeleniumTest { homePage.goToLoginPage(); loginPage.login(adminUser.getUsername(), data.getNewPassword()); editDomainPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - editDomainPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); editDomainPage.getDomainMembersTab().removeUser(memberUser.getUsername()); userMemberElement = editDomainPage.getDomainMembersTab().getMembersGrid().searchAndGetElementInColumn("Username", memberUser.getUsername()); soft.assertNull(userMemberElement, "Domain found for user which doesn't have rights"); @@ -95,10 +99,68 @@ public class EditDomainsPgTests extends SeleniumTest { homePage.goToLoginPage(); loginPage.login(memberUser.getUsername(), data.getNewPassword()); editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); - domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); + domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()); soft.assertNull(domainElement, "Domain found for user which doesn't have rights"); + soft.assertAll(); + + } + + @Ignore + @Test(description = "EDTDOM-02 Domain admins are able to create new groups") + public void DomainAdminsAreAbleToCreate() throws Exception { + GroupModel groupToBeCreated = GroupModel.generatePublicDomain(); + editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + + editDomainPage.goToTab("Group"); + + CreateGroupDetailsDialog createGroupDetailsDialog = editDomainPage.getGroupTab().clickCreateNewGroup(); + createGroupDetailsDialog.fillGroupDetails(groupToBeCreated); + Boolean isSaveSuccesfully = createGroupDetailsDialog.tryClickOnSave(); + soft.assertTrue(isSaveSuccesfully); + + WebElement createGroup = editDomainPage.getGroupTab().getGrid().searchAndGetElementInColumn("Group name", groupToBeCreated.getGroupName()); + soft.assertNotNull(createGroup); + + EditGroupsPage editgroupPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_GROUPS); + soft.assertAll(); + } + + @Test(description = "EDTDOM-03 Domain admins are not able to create duplicated groups") + public void DomainAdminsAreNotAbleToCreateDuplicatedGroups() throws Exception { + GroupModel duplicatedGroup = GroupModel.generatePublicDomain(); + + editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + editDomainPage.goToTab("Group"); + CreateGroupDetailsDialog createGroupDetailsDialog = editDomainPage.getGroupTab().clickCreateNewGroup(); + createGroupDetailsDialog.fillGroupDetails(duplicatedGroup); + Boolean isSaveSuccesfully = createGroupDetailsDialog.tryClickOnSave(); + soft.assertTrue(isSaveSuccesfully); + + + createGroupDetailsDialog = editDomainPage.getGroupTab().clickCreateNewGroup(); + createGroupDetailsDialog.fillGroupDetails(duplicatedGroup); + isSaveSuccesfully = createGroupDetailsDialog.tryClickOnSave(); + String duplicateAlertMessage = createGroupDetailsDialog.getAlertArea().getAlertMessage(); + soft.assertTrue(isSaveSuccesfully); + soft.assertEquals(duplicateAlertMessage, String.format("Invalid request [CreateGroup]. Error: Group with name [%s] already exists!!", duplicatedGroup.getGroupName())); soft.assertAll(); + } + + @Test(description = "EDTDOM-04 Domain admins are able to delete groups without resources") + public void DomainAdminsAreNotAbleToDeleteGroups() throws Exception { + GroupModel groupToBeDeleted = GroupModel.generatePublicDomain(); + editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click(); + editDomainPage.goToTab("Group"); + CreateGroupDetailsDialog createGroupDetailsDialog = editDomainPage.getGroupTab().clickCreateNewGroup(); + createGroupDetailsDialog.fillGroupDetails(groupToBeDeleted); + Boolean isSaveSuccesfully = createGroupDetailsDialog.tryClickOnSave(); + soft.assertTrue(isSaveSuccesfully); + + editDomainPage.getGroupTab().deleteGroup(groupToBeDeleted.getGroupName()); + String deleteMessage = editDomainPage.getAlertArea().getAlertMessage(); + soft.assertEquals(deleteMessage, String.format("Domain group [%s] deleted", groupToBeDeleted.getGroupName())); + soft.assertAll(); } } diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java new file mode 100644 index 0000000000000000000000000000000000000000..c1523f0419c8e49414f16d49b504c8c3af95766d --- /dev/null +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java @@ -0,0 +1,58 @@ +package domiSMPTests.ui; + +import ddsl.DomiSMPPage; +import ddsl.enums.Pages; +import ddsl.enums.ResourceTypes; +import domiSMPTests.SeleniumTest; +import org.json.JSONObject; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; +import org.testng.asserts.SoftAssert; +import pages.LoginPage; +import pages.administration.editDomainsPage.EditDomainsPage; +import rest.models.DomainModel; +import rest.models.MemberModel; +import rest.models.UserModel; + +import java.util.Arrays; +import java.util.List; + +public class EditGroupsPgTests extends SeleniumTest { + DomiSMPPage homePage; + LoginPage loginPage; + EditDomainsPage editDomainPage; + String domainId; + DomainModel domainModel; + UserModel adminUser; + SoftAssert soft; + + @BeforeMethod(alwaysRun = true) + public void beforeTest() throws Exception { + soft = new SoftAssert(); + domainModel = DomainModel.generatePublicDomainModelWithSML(); + adminUser = UserModel.generateUserWithADMINrole(); + + MemberModel domainMember = new MemberModel(); + domainMember.setUsername(adminUser.getUsername()); + domainMember.setRoleType("ADMIN"); + + rest.users().createUser(adminUser); + JSONObject domainJson = rest.domains().createDomain(domainModel); + domainId = domainJson.get("domainId").toString(); + rest.domains().addMembersToDomain(domainId, domainMember); + List<ResourceTypes> resourcesToBeAdded = Arrays.asList(ResourceTypes.OASIS1, ResourceTypes.OASIS3, ResourceTypes.OASIS2); + + + rest.domains().addResourcesToDomain(domainId, resourcesToBeAdded); + + homePage = new DomiSMPPage(driver); + loginPage = homePage.goToLoginPage(); + loginPage.login(adminUser.getUsername(), data.getNewPassword()); + editDomainPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS); + } + + @Test(description = "EDTDOM-01 Domain admins are able to invite/edit/remove members") + public void DomainAdminsAreAbleToInviteEditRemoveMembers() throws Exception { + + } +} diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java index eab74a9f293741221809091076bef77398dd8a0e..b1ea514be556bb45821cc1748824589a6e94f27a 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java @@ -3,6 +3,7 @@ package domiSMPTests.ui; import ddsl.DomiSMPPage; import ddsl.enums.Pages; import domiSMPTests.SeleniumTest; +import org.openqa.selenium.WebElement; import org.testng.annotations.Test; import org.testng.asserts.SoftAssert; import pages.LoginPage; @@ -11,7 +12,6 @@ import utils.FileUtils; public class TrustorePgTests extends SeleniumTest { - //TODO work in progress - wait for input elements to get text @Test(description = "TRST-01 System admin is able to import certificates") public void SystemAdminIsAbleToImportCertificates() throws Exception { @@ -23,16 +23,50 @@ public class TrustorePgTests extends SeleniumTest { 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 path = FileUtils.getAbsolutePath("./src/main/resources/truststore/validCertificate.cer"); String certificateALias = truststorepage.addCertificateAndReturnAlias(path); soft.assertNotNull(certificateALias); - // soft.assertEquals(truststorepage.getPublicKeyTypeLbl(), "RSA"); - // soft.assertEquals(truststorepage.getAliasIdLbl(), "smp_domain_02"); + soft.assertEquals(truststorepage.getPublicKeyTypeLbl(), "RSA"); + soft.assertEquals(truststorepage.getAliasIdLbl(), certificateALias); + soft.assertEquals(truststorepage.getSmpCertificateIdLbl(), "CN=red_gw,O=eDelivery,C=BE:00000000110fa0d8"); + soft.assertEquals(truststorepage.getSubjectNameLbl(), "C=BE,O=eDelivery,CN=red_gw"); + soft.assertEquals(truststorepage.getValidFromLbl(), "23-3-2023, 10:49:22"); + soft.assertEquals(truststorepage.getValidToLbl(), "22-3-2033, 10:49:22"); + soft.assertEquals(truststorepage.getIssuerLbl(), "C=BE,O=eDelivery,CN=red_gw"); + soft.assertEquals(truststorepage.getSerialNumberLbl(), "110fa0d8"); + soft.assertAll(); + + } + @Test(description = "TRST-02 System admin is able to import duplicated certificates") + public void SystemAdminIsAbleToImportDuplicatedCertificates() throws Exception { - soft.assertAll(); + SoftAssert soft = new SoftAssert(); + 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/validCertificate.cer"); + String certificateALias = truststorepage.addCertificateAndReturnAlias(path); + String duplicatedCertificateALias = truststorepage.addCertificateAndReturnAlias(path); + WebElement certificate = truststorepage.getCertificateGrid().searchAndGetElementInColumn("Alias", certificateALias); + soft.assertNotNull(certificate); + truststorepage.getLeftSideGrid().searchAndGetElementInColumn("Alias", duplicatedCertificateALias); + + soft.assertNotNull(duplicatedCertificateALias); + soft.assertEquals(truststorepage.getPublicKeyTypeLbl(), "RSA"); + soft.assertEquals(truststorepage.getAliasIdLbl(), duplicatedCertificateALias); + soft.assertEquals(truststorepage.getSmpCertificateIdLbl(), "CN=red_gw,O=eDelivery,C=BE:00000000110fa0d8"); + soft.assertEquals(truststorepage.getSubjectNameLbl(), "C=BE,O=eDelivery,CN=red_gw"); + soft.assertEquals(truststorepage.getValidFromLbl(), "23-3-2023, 10:49:22"); + soft.assertEquals(truststorepage.getValidToLbl(), "22-3-2033, 10:49:22"); + soft.assertEquals(truststorepage.getIssuerLbl(), "C=BE,O=eDelivery,CN=red_gw"); + soft.assertEquals(truststorepage.getSerialNumberLbl(), "110fa0d8"); + soft.assertAll(); } 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 1ff5d0ecf68fe59f66a90e55c2a326f4021363f9..d955fd4a8cf45fa9ea34b201435e5cd17d598b5d 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java @@ -34,7 +34,7 @@ public class UsersPgTests extends SeleniumTest { usersPage.refreshPage(); // usersPage.filter(adminNewUserData.getUsername()); - WebElement newUser = usersPage.getDataPanelGrid().searchAndGetElementInColumn("Username", adminNewUserData.getUsername()); + WebElement newUser = usersPage.getLeftSideGrid().searchAndGetElementInColumn("Username", adminNewUserData.getUsername()); soft.assertNotNull(newUser); newUser.click();