Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 967e8c72 authored by Mihai BOZ's avatar Mihai BOZ
Browse files

Added EditDomainPage, automated DOM-03 System admin is able to Invite/Remove users from domains

parent e20b95f6
No related branches found
No related tags found
No related merge requests found
Pipeline #81946 passed with warnings
Showing
with 141 additions and 65 deletions
......@@ -7,16 +7,21 @@ 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 PageWithGrid extends DomiSMPPage {
import java.util.List;
public class PageWithGrid extends DomiSMPPage {
private final static Logger LOG = LoggerFactory.getLogger(PageWithGrid.class);
@FindBy(css = "mat-form-field input")
public WebElement filterInput;
@FindBy(css = "data-panel >div >div> mat-toolbar button:first-of-type")
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,4 +35,19 @@ public class PageWithGrid extends DomiSMPPage {
public SmallGrid getDataPanelGrid() {
return new SmallGrid(driver, dataPanel);
}
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();
}
}
......@@ -21,8 +21,6 @@ public class SmallGrid extends DComponent {
super(driver);
PageFactory.initElements(driver, this);
this.parentElement = parentElement;
wait.forElementToBeVisible(parentElement);
}
......@@ -44,6 +42,7 @@ public class SmallGrid extends DComponent {
public WebElement searchValueInColumn(String columnName, String value) {
wait.forXMillis(100);
Integer numOfPages = getGridPagination().getTotalPageNumber();
List<WebElement> rowHeaders = getGridHeaders();
int columnIndex = -1;
......
......@@ -7,7 +7,7 @@ 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;
......@@ -22,15 +22,12 @@ public class SetChangePasswordDialog extends DComponent {
List<WebElement> fieldsError;
@FindBy(id = "cp_id")
private WebElement currentPasswordInput;
@SuppressWarnings("SpellCheckingInspection")
@FindBy(id = "np_id")
private WebElement newPasswordInput;
@FindBy(id = "cnp_id")
private WebElement confirmationPasswordInput;
@FindBy(id = "changeCurrentUserPasswordButton")
private WebElement setPasswordBtn;
@FindBy(id = "closeDialogButton")
private WebElement closeBtn;
public SetChangePasswordDialog(WebDriver driver) {
......
......@@ -10,10 +10,11 @@ import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pages.DomainsPage.DomainsPage;
import pages.ProfilePage.ProfilePage;
import pages.PropertiesPage.PropertiesPage;
import pages.UsersPage;
import pages.domainsPage.DomainsPage;
import pages.editDomainsPage.EditDomainsPage;
import pages.profilePage.ProfilePage;
import pages.propertiesPage.PropertiesPage;
import java.util.Objects;
......@@ -102,9 +103,11 @@ public class SideNavigationComponent extends DomiSMPPage {
// 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);
......
......@@ -32,6 +32,14 @@ public class InviteMembersPopup extends DComponent {
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();
}
}
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;
......@@ -17,8 +19,6 @@ public class MembersComponent extends DComponent {
@FindBy(id = "deleteButton")
private WebElement removeMemberBtn;
@FindBy(id = "deleteButton")
private WebElement deleteBtn;
@FindBy(css = "div domain-member-panel")
private WebElement sidePanel;
......@@ -40,4 +40,19 @@ public class MembersComponent extends DComponent {
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);
}
}
package pages.DomainsPage;
package pages.domainsPage;
import ddsl.dcomponents.DComponent;
import org.openqa.selenium.WebDriver;
......
package pages.DomainsPage;
package pages.domainsPage;
import ddsl.PageWithGrid;
import ddsl.dobjects.DButton;
......@@ -8,21 +8,13 @@ import org.openqa.selenium.support.FindBy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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(css = "[role = \"tab\"]")
private List<WebElement> tabList;
@FindBy(css = "smp-warning-panel span")
private WebElement warningLabel;
public DomainsPage(WebDriver driver) {
super(driver);
LOG.debug("Loading Domains page.");
......@@ -51,20 +43,6 @@ public class DomainsPage extends PageWithGrid {
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 getAlert() {
return getAlertArea().getAlertMessage();
}
public String getDomainWarningMessage() {
return warningLabel.getText();
......
package pages.DomainsPage;
package pages.domainsPage;
import ddsl.dcomponents.commonComponents.members.MembersComponent;
import org.openqa.selenium.WebDriver;
......
package pages.DomainsPage;
package pages.domainsPage;
import ddsl.dcomponents.DComponent;
import org.openqa.selenium.WebDriver;
......@@ -39,8 +39,6 @@ public class ResourceTab extends DComponent {
}
}
}
public void checkResource(String resourceName) {
wait.forElementToBeClickable(resourceOptions.get(0));
for (WebElement element : resourceOptions) {
......
package pages.DomainsPage;
package pages.domainsPage;
import ddsl.dcomponents.ConfirmationDialog;
import ddsl.dcomponents.DComponent;
......
package pages.editDomainsPage;
import ddsl.PageWithGrid;
import org.openqa.selenium.WebDriver;
public class EditDomainsPage extends PageWithGrid {
public EditDomainsPage(WebDriver driver) {
super(driver);
}
}
package pages.ProfilePage;
package pages.profilePage;
import ddsl.PageWithGrid;
import ddsl.dcomponents.commonComponents.UserDataCommonComponent;
......@@ -17,5 +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
package pages.ProfilePage;
package pages.profilePage;
import ddsl.dcomponents.DComponent;
import org.openqa.selenium.WebDriver;
......@@ -8,9 +8,9 @@ import org.openqa.selenium.support.PageFactory;
public class SuccesfullPasswordChangedPopup extends DComponent {
@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);
......
package pages.PropertiesPage;
package pages.propertiesPage;
import ddsl.dcomponents.Grid.BasicGrid;
import org.openqa.selenium.WebDriver;
......
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")
......
package pages.PropertiesPage;
package pages.propertiesPage;
import ddsl.dcomponents.DComponent;
import org.openqa.selenium.JavascriptExecutor;
......
package domiSMPTests.ui;
import ddsl.DomiSMPPage;
import ddsl.enums.Pages;
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.domainsPage.DomainsPage;
import pages.editDomainsPage.EditDomainsPage;
import rest.models.DomainModel;
import rest.models.UserModel;
......@@ -16,10 +18,12 @@ 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"));
......@@ -27,7 +31,7 @@ public class DomainsPgTests extends SeleniumTest {
domainsPage.getCreateDomainBtn().click();
domainsPage.getDomainTab().fillDomainData(domainModel);
domainsPage.getDomainTab().saveChanges();
String alert = domainsPage.getAlert();
String alert = domainsPage.getAlertMessageAndClose();
Assert.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");
domainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click();
......@@ -48,7 +52,7 @@ public class DomainsPgTests extends SeleniumTest {
domainsPage.getCreateDomainBtn().click();
domainsPage.getDomainTab().fillDomainData(domainModel);
domainsPage.getDomainTab().saveChanges();
String alert = domainsPage.getAlert();
String alert = domainsPage.getAlertMessageAndClose();
Assert.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");
domainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click();
......@@ -57,7 +61,7 @@ public class DomainsPgTests extends SeleniumTest {
domainsPage.getSMLIntegrationTab().saveChanges();
domainsPage.getSMLIntegrationTab().registerToSML();
alert = domainsPage.getAlert();
alert = domainsPage.getAlertMessageAndClose();
Assert.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] registered to sml!");
//Go to SML
......@@ -75,6 +79,7 @@ public class DomainsPgTests extends SeleniumTest {
DomainModel domainModel = DomainModel.generatePublicDomainModelWithoutSML();
DomiSMPPage homePage = new DomiSMPPage(driver);
LoginPage loginPage = homePage.goToLoginPage();
loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
......@@ -82,19 +87,65 @@ public class DomainsPgTests extends SeleniumTest {
domainsPage.getCreateDomainBtn().click();
domainsPage.getDomainTab().fillDomainData(domainModel);
domainsPage.getDomainTab().saveChanges();
String alert = domainsPage.getAlert();
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 el = domainsPage.getMembersTab().getMembersGrid().searchValueInColumn("Username", normalUser.getUsername());
Assert.assertNotNull(el);
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 {
}
}
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment