Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 4407fb75 authored by Joze RIHTARSIC's avatar Joze RIHTARSIC
Browse files

Merge branch 'development' of...

Merge branch 'development' of https://ec.europa.eu/digital-building-blocks/code/scm/edelivery/smp into EDELIVERY-12010-smp-automation-related-improvements

# Conflicts:
#	domiSMP-ui-tests/src/main/java/utils/TestRunData.java
parents 45515817 dfd0e958
No related branches found
No related tags found
No related merge requests found
Pipeline #97287 failed
Showing
with 359 additions and 112 deletions
......@@ -33,18 +33,18 @@ public class BaseRestClient {
this.password = password;
}
public BaseRestClient() {
this.username = data.getAdminUser().get("username");
this.password = data.getAdminUser().get("password");
}
// ---------------------------------------Default request methods -------------------------------------------------
protected ClientResponse requestPUT(WebResource resource, String params, String type) {
protected ClientResponse requestPUT(WebResource resource, JSONObject body, String type) {
if (!isLoggedIn()) {
log.info("User is not loggedin");
try {
refreshCookies();
createSession();
} catch (Exception e) {
throw new RuntimeException(e);
}
......@@ -52,15 +52,15 @@ public class BaseRestClient {
WebResource.Builder builder = decorateBuilder(resource);
return builder.type(type).put(ClientResponse.class, params);
return builder.type(type).put(ClientResponse.class, body.toString());
}
protected ClientResponse requestPUT(WebResource resource, JSONObject body, String type) {
protected ClientResponse requestPUT(WebResource resource, String body, String type) {
if (!isLoggedIn()) {
log.info("User is not loggedin");
try {
refreshCookies();
createSession();
} catch (Exception e) {
throw new RuntimeException(e);
}
......@@ -68,13 +68,16 @@ public class BaseRestClient {
WebResource.Builder builder = decorateBuilder(resource);
return builder.type(type).put(ClientResponse.class, body.toString());
return builder.type(type).put(ClientResponse.class, body);
}
protected ClientResponse jsonPUT(WebResource resource, JSONObject body) {
return requestPUT(resource, body, MediaType.APPLICATION_JSON);
}
protected ClientResponse jsonPUT(WebResource resource, String body) {
return requestPUT(resource, body, MediaType.APPLICATION_JSON);
}
protected ClientResponse requestPOST(WebResource resource, String params, String type) {
......@@ -88,7 +91,7 @@ public class BaseRestClient {
protected WebResource.Builder decorateBuilder(WebResource resource) {
WebResource.Builder builder = resource.getRequestBuilder();
cookies = TestRunData.getInstance().getCookies();;
if (null != cookies) {
log.debug("");
for (NewCookie cookie : cookies) {
......@@ -96,66 +99,60 @@ public class BaseRestClient {
log.debug("cookie " + cookie + " is added to the builder");
}
}
if (null != token) {
builder = builder.header("X-XSRF-TOKEN", token);
if (null != TestRunData.getInstance().getXSRFToken()) {
builder = builder.header("X-XSRF-TOKEN", TestRunData.getInstance().getXSRFToken());
}
return builder;
}
public List<NewCookie> login() throws SMPRestException {
public void createSession() throws Exception {
log.debug("Rest client using to login: " + this.username);
HashMap<String, String> params = new HashMap<>();
params.put("username", this.username);
params.put("password", this.password);
ClientResponse response = resource.path(RestServicePaths.LOGIN).type(MediaType.APPLICATION_JSON).post(ClientResponse.class, new JSONObject(params).toString());
JSONObject responseBody = new JSONObject(response.getEntity(String.class));
// extract userId to be used in the Paths of the requests
if (response.getStatus() == 200) {
// extract userId to be used in the Paths of the requests
data.setUserId((String) responseBody.get("userId"));
log.debug("Last Userid is " + data.getUserId());
log.debug(String.format("UserID: %s is stored!", TestRunData.getInstance().getUserId()));
if (response.getStatus() == 200) {
return response.getCookies();
data.setCookies(response.getCookies());
log.debug("Cookies are stored!");
if (null != TestRunData.getInstance().getCookies()) {
token = extractToken();
} else {
throw new Exception("Could not login, COOKIES are not found!");
}
} else {
throw new SMPRestException("Login failed", response);
}
}
private String extractToken() {
String mytoken = null;
for (NewCookie cookie : cookies) {
for (NewCookie cookie : TestRunData.getInstance().getCookies()) {
if (StringUtils.equalsIgnoreCase(cookie.getName(), "XSRF-TOKEN")) {
mytoken = cookie.getValue();
}
}
return mytoken;
}
public void refreshCookies() throws Exception {
if (isLoggedIn()) {
return;
}
cookies = login();
if (null != cookies) {
token = extractToken();
} else {
throw new Exception("Could not login, tests will not be able to generate necessary data!");
}
if (null == token) {
throw new Exception("Could not obtain XSRF token, tests will not be able to generate necessary data!");
}
data.setXSRFToken(mytoken);
log.debug("XSRF-Token " + mytoken + " has been stored!");
return mytoken;
}
public boolean isLoggedIn() {
WebResource.Builder builder = decorateBuilder(resource.path(RestServicePaths.CONNECTED));
int response = builder.get(ClientResponse.class).getStatus();
log.debug("Connected endpoint returns: " + response);
log.debug("UserID is: " + data.getUserId());
return (!(response == 401) && !data.getUserId().isEmpty());
return (!(response == 401));
}
}
package rest;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sun.jersey.api.client.ClientResponse;
import org.json.JSONObject;
import rest.models.DomainModel;
import rest.models.MemberModel;
import utils.TestRunData;
public class DomainClient extends BaseRestClient {
......@@ -19,13 +23,13 @@ public class DomainClient extends BaseRestClient {
if (!isLoggedIn()) {
try {
refreshCookies();
createSession();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
String createDomainPath = RestServicePaths.getDomainPath(data.userId);
String createDomainPath = RestServicePaths.getCreateDomainPath(TestRunData.getInstance().getUserId());
ClientResponse response = jsonPUT(resource.path(createDomainPath), domainJson);
JSONObject responseBody = new JSONObject(response.getEntity(String.class));
......@@ -42,4 +46,28 @@ public class DomainClient extends BaseRestClient {
}
public MemberModel addMembersToDomain(String domainId, MemberModel domainMember) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
String membersJson = mapper.writeValueAsString(domainMember);
if (!isLoggedIn()) {
try {
createSession();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
String addMemberPath = RestServicePaths.getDomainAddMemberPath(TestRunData.getInstance().getUserId(), domainId);
ClientResponse response = jsonPUT(resource.path(addMemberPath), membersJson);
if (response.getStatus() != 200) {
try {
throw new SMPRestException("Could not create domain", response);
} catch (SMPRestException e) {
throw new RuntimeException(e);
}
}
log.debug("Member: " + domainMember.getUsername() + " has been added!");
return response.getEntity(MemberModel.class);
}
}
......@@ -19,10 +19,15 @@ public class RestServicePaths {
//Domains paths
public static String getDomainPath(String currentUserId) {
public static String getCreateDomainPath(String currentUserId) {
return "/internal/rest/domain/" + currentUserId + "/create";
}
public static String getDomainAddMemberPath(String currentUserId, String domainId) {
return "/edit/rest/" + currentUserId + "/domain/" + domainId + "/member/put";
}
}
......@@ -3,6 +3,7 @@ package rest;
import com.sun.jersey.api.client.ClientResponse;
import org.json.JSONObject;
import rest.models.UserModel;
import utils.TestRunData;
public class UserClient extends BaseRestClient {
......@@ -21,13 +22,13 @@ public class UserClient extends BaseRestClient {
if (!isLoggedIn()) {
try {
refreshCookies();
createSession();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
String usersPath = RestServicePaths.getUsersPath(data.userId);
String usersPath = RestServicePaths.getUsersPath(TestRunData.getInstance().getUserId());
ClientResponse response = jsonPUT(resource.path(usersPath), usrObj);
JSONObject responseBody = new JSONObject(response.getEntity(String.class));
......@@ -53,7 +54,7 @@ public class UserClient extends BaseRestClient {
public JSONObject changePassword(String forUserId, String newPassword) {
String changePasswordPath = RestServicePaths.getChangePasswordPath(data.userId, forUserId);
String changePasswordPath = RestServicePaths.getChangePasswordPath(TestRunData.getInstance().getUserId(), forUserId);
JSONObject passwordChangeBody = new JSONObject();
passwordChangeBody.put("currentPassword", password);
passwordChangeBody.put("newPassword", newPassword);
......
package rest.models;
public class MemberModel {
private String fullName;
private String memberOf;
private String roleType;
private String memberId;
private String username;
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getMemberOf() {
return memberOf;
}
public void setMemberOf(String memberOf) {
this.memberOf = memberOf;
}
public String getRoleType() {
return roleType;
}
public void setRoleType(String roleType) {
this.roleType = roleType;
}
public String getMemberId() {
return memberId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
......@@ -5,11 +5,13 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.ws.rs.core.NewCookie;
import java.io.File;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.HashMap;
import java.util.List;
import java.util.Properties;
/**
......@@ -36,6 +38,9 @@ public class TestRunData {
ADMIN_PASSWORD("test.user.SYSTEM_ADMIN.password", "123456", "Password for username with admin/system role. User is used for setting up the test data"),
USER_USERNAME("test.user.USER.username", "user", "Username with user role (not admin). User is used for basic tests"),
USER_PASSWORD("test.user.USER.password", "123456", "Password for username with user role"),
TEST_DATA_PASSWORD_DEFAULT("test.data.password.default", "QW!@QW!@qw12qw12", "Default password when creating new users"),
TEST_DATA_PASSWORD_NEW("test.data.password.new", "Test1234!Test1234!", "New Password when changing users password "),
;
String propertyName;
......@@ -78,7 +83,11 @@ public class TestRunData {
public static SimpleDateFormat REST_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
public static SimpleDateFormat REST_JMS_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
static Properties prop = new Properties();
public String userId;
protected final Logger log = LoggerFactory.getLogger(this.getClass());
public String XSRFToken;
public List<NewCookie> cookies;
private String userId;
private static TestRunData instance;
......@@ -99,6 +108,14 @@ public class TestRunData {
return userId;
}
public List<NewCookie> getCookies() {
return cookies;
}
public void setCookies(List<NewCookie> cookies) {
this.cookies = cookies;
}
public void setUserId(String userId) {
this.userId = userId;
}
......@@ -136,8 +153,12 @@ public class TestRunData {
return getUser(ApplicationRoles.SYSTEM_ADMIN);
}
public String getDefaultPassword() {
return getPropertyValue(TestEnvironmentProperty.TEST_DATA_PASSWORD_DEFAULT);
}
public String getNewPassword() {
return prop.getProperty("new.password");
return getPropertyValue(TestEnvironmentProperty.TEST_DATA_PASSWORD_NEW);
}
public String getUiBaseUrl() {
......@@ -192,6 +213,7 @@ public class TestRunData {
return getPropertyValue(TestEnvironmentProperty.WEBDRIVER_TYPE);
}
public String downloadFolderPath() {
return System.getProperty("user.dir") + File.separator + "downloadFiles";
}
......@@ -202,4 +224,11 @@ public class TestRunData {
return value;
}
public String getXSRFToken() {
return XSRFToken;
}
public void setXSRFToken(String xsrfToken) {
this.XSRFToken = xsrfToken;
}
}
# Local runner, Edeltest2 target, Single tenancy
# Environment properties
# Test runner properties
test.webdriver.path=./chromedriver.exe
test.webdriver.type=chrome
......@@ -8,13 +8,17 @@ test.webdriver.type=chrome
test.webdriver.headless=false
test.application.ui.url=http://eulogin.protected.smp.local:8982/smp/ui
test.sml.url=http://localhost:8982/edelivery-sml/listDNS
test.timeout.long=15
test.timeout.short=5
test.reports.folder=./reports/
# test specific properties
test.user.SYSTEM_ADMIN.username=system
test.user.SYSTEM_ADMIN.password=123456
test.user.USER.username=user
test.user.USER.password=123456
test.timeout.long=15
test.timeout.short=5
test.reports.folder=./reports/
test.data.password.default=QW!@QW!@qw12qw12
test.data.password.new=Test1234!Test1234!
# OLD PROPERTIES
# webdriver.ie.driver=MicrosoftWebDriver.exe
......
......@@ -9,7 +9,7 @@ import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
import pages.LoginPage;
import pages.SmlPage;
import pages.administration.EditDomainsPage;
import pages.administration.editDomainsPage.EditDomainsPage;
import pages.systemSettings.domainsPage.DomainsPage;
import rest.models.DomainModel;
import rest.models.UserModel;
......@@ -146,5 +146,25 @@ public class DomainsPgTests extends SeleniumTest {
}
@Test(description = "DOM-04 System admin is not able to create duplicated Domains")
public void SystemAdminIsNotAbleToCreateDuplicatedDomains() throws Exception {
UserModel normalUser = UserModel.generateUserWithUSERrole();
DomainModel domainModel = DomainModel.generatePublicDomainModelWithoutSML();
rest.users().createUser(normalUser);
domainsPage.getCreateDomainBtn().click();
domainsPage.getDomainTab().fillDomainData(domainModel);
domainsPage.getDomainTab().saveChanges();
String alert = domainsPage.getAlertMessageAndClose();
soft.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");
domainsPage.getCreateDomainBtn().click();
domainsPage.getDomainTab().fillDomainData(domainModel);
domainsPage.getDomainTab().saveChanges();
alert = domainsPage.getAlertMessageAndClose();
soft.assertEquals(alert, "Invalid domain data! Domain with code [" + domainModel.getDomainCode() + "] already exists!");
soft.assertAll();
}
}
\ No newline at end of file
package domiSMPTests.ui;
import ddsl.DomiSMPPage;
import ddsl.enums.Pages;
import domiSMPTests.SeleniumTest;
import org.json.JSONObject;
import org.openqa.selenium.WebElement;
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;
public class EditDomainsPgTests 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);
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 {
UserModel memberUser = UserModel.generateUserWithADMINrole();
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.getDomainMembersTab().getInviteMemberBtn().click();
editDomainPage.getDomainMembersTab().getInviteMembersPopup().selectMember(memberUser.getUsername(), "VIEWER");
WebElement userMemberElement = editDomainPage.getDomainMembersTab().getMembersGrid().searchAndGetElementInColumn("Username", memberUser.getUsername());
soft.assertNotNull(userMemberElement, "Invited user is found");
//check if user has admin rights to domain as VIEWER
homePage.logout();
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());
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.getDomainMembersTab().changeRoleOfUser(memberUser.getUsername(), "ADMIN");
//check if user has admin rights to domain as Admin
homePage.logout();
homePage.goToLoginPage();
loginPage.login(memberUser.getUsername(), data.getNewPassword());
editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
soft.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(adminUser.getUsername(), data.getNewPassword());
editDomainPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
editDomainPage.getDataPanelGrid().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");
homePage.logout();
homePage.goToLoginPage();
loginPage.login(memberUser.getUsername(), data.getNewPassword());
editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
soft.assertNull(domainElement, "Domain found for user which doesn't have rights");
soft.assertAll();
}
}
package domiSMPTests.ui;
import ddsl.DomiSMPPage;
import ddsl.dcomponents.SetChangePasswordDialog;
import ddsl.enums.Pages;
import domiSMPTests.SeleniumTest;
import org.testng.Assert;
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.systemSettings.propertiesPage.PropertiesPage;
import pages.systemSettings.propertiesPage.PropertyPopup;
......@@ -12,24 +16,32 @@ import pages.userSettings.ProfilePage;
import rest.models.UserModel;
import utils.Generator;
import java.util.List;
public class ProfilePgTests extends SeleniumTest {
/**
* This class has the tests against Profile Page
*/
SoftAssert soft = new SoftAssert();
DomiSMPPage homePage;
LoginPage loginPage;
@BeforeMethod(alwaysRun = true)
public void beforeTest() throws Exception {
soft = new SoftAssert();
homePage = new DomiSMPPage(driver);
loginPage = homePage.goToLoginPage();
}
@Test(description = "PROF-01 All logged users are able to view the Profile Page")
public void AllLoggedUsersShouldAbleToSeeProfilePage() throws Exception {
UserModel normalUser = UserModel.generateUserWithUSERrole();
rest.users().createUser(normalUser);
DomiSMPPage homePage = new DomiSMPPage(driver);
LoginPage loginPage = homePage.goToLoginPage();
loginPage.login(normalUser.getUsername(), data.getNewPassword());
//Check if menu is available
Assert.assertTrue(homePage.getSidebar().isMenuAvailable(Pages.USER_SETTINGS_PROFILE));
soft.assertTrue(homePage.getSidebar().isMenuAvailable(Pages.USER_SETTINGS_PROFILE));
//Navigate to page
homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
......@@ -44,64 +56,56 @@ public class ProfilePgTests extends SeleniumTest {
loginPage.login(adminUser.getUsername(), data.getNewPassword());
//Check if menu is available
Assert.assertTrue(homePage.getSidebar().isMenuAvailable(Pages.USER_SETTINGS_PROFILE));
soft.assertTrue(homePage.getSidebar().isMenuAvailable(Pages.USER_SETTINGS_PROFILE));
//Navigate to page
homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
//Check if ProfilePage is not available for anonymous users
homePage.logout();
Assert.assertFalse(homePage.getSidebar().isMenuAvailable(Pages.USER_SETTINGS_PROFILE));
soft.assertFalse(homePage.getSidebar().isMenuAvailable(Pages.USER_SETTINGS_PROFILE));
soft.assertAll();
}
@Test(description = "PROF-02 All loggedin users are able to update profile data")
public void AllLoggedUsersShouldAbleToUpdateProfilePage() throws Exception {
UserModel normalUser = UserModel.generateUserWithUSERrole();
rest.users().createUser(normalUser);
DomiSMPPage homePage = new DomiSMPPage(driver);
LoginPage loginPage = homePage.goToLoginPage();
loginPage.login(normalUser.getUsername(), data.getNewPassword());
//Navigate to page
ProfilePage profilePage = homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
UserModel userNewProfileData = UserModel.generateUserProfileData();
profilePage.userData.fillUserProfileData(userNewProfileData.getEmailAddress(), userNewProfileData.getFullName(), userNewProfileData.getSmpTheme(), userNewProfileData.getSmpLocale());
profilePage.profileData.fillUserProfileData(userNewProfileData.getEmailAddress(), userNewProfileData.getFullName(), userNewProfileData.getSmpTheme(), userNewProfileData.getSmpLocale());
profilePage.refreshPage();
//Verify if data is changed
Assert.assertEquals(profilePage.userData.getEmailAddress(), userNewProfileData.getEmailAddress(), "Email value is different");
Assert.assertEquals(profilePage.userData.getFullName(), userNewProfileData.getFullName(), "Full name value is different");
Assert.assertEquals(profilePage.userData.getSelectedTheme(), userNewProfileData.getSmpTheme(), "Selected theme value is different");
Assert.assertEquals(profilePage.userData.getSelectedLocale(), userNewProfileData.getSmpLocale(), "Locale value is different");
soft.assertEquals(profilePage.profileData.getEmailAddress(), userNewProfileData.getEmailAddress(), "Email value is different");
soft.assertEquals(profilePage.profileData.getFullName(), userNewProfileData.getFullName(), "Full name value is different");
soft.assertEquals(profilePage.profileData.getSelectedTheme(), userNewProfileData.getSmpTheme(), "Selected theme value is different");
soft.assertEquals(profilePage.profileData.getSelectedLocale(), userNewProfileData.getSmpLocale(), "Locale value is different");
homePage.logout();
UserModel adminUser = UserModel.generateUserWithUSERrole();
rest.users().createUser(adminUser);
homePage = new DomiSMPPage(driver);
loginPage = homePage.goToLoginPage();
loginPage.login(adminUser.getUsername(), data.getNewPassword());
//Navigate to page
profilePage = homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
UserModel adminNewProfileData = UserModel.generateUserProfileData();
profilePage.userData.fillUserProfileData(adminNewProfileData.getEmailAddress(), adminNewProfileData.getFullName(), adminNewProfileData.getSmpTheme(), adminNewProfileData.getSmpLocale());
profilePage.profileData.fillUserProfileData(adminNewProfileData.getEmailAddress(), adminNewProfileData.getFullName(), adminNewProfileData.getSmpTheme(), adminNewProfileData.getSmpLocale());
profilePage.refreshPage();
//Verify if data is changed
Assert.assertEquals(profilePage.userData.getEmailAddress(), adminNewProfileData.getEmailAddress());
Assert.assertEquals(profilePage.userData.getFullName(), adminNewProfileData.getFullName());
Assert.assertEquals(profilePage.userData.getSelectedTheme(), adminNewProfileData.getSmpTheme());
Assert.assertEquals(profilePage.userData.getSelectedLocale(), adminNewProfileData.getSmpLocale());
soft.assertEquals(profilePage.profileData.getEmailAddress(), adminNewProfileData.getEmailAddress());
soft.assertEquals(profilePage.profileData.getFullName(), adminNewProfileData.getFullName());
soft.assertEquals(profilePage.profileData.getSelectedTheme(), adminNewProfileData.getSmpTheme());
soft.assertEquals(profilePage.profileData.getSelectedLocale(), adminNewProfileData.getSmpLocale());
soft.assertAll();
}
......@@ -112,13 +116,9 @@ public class ProfilePgTests extends SeleniumTest {
String new40CharactersPasswordValue = "Edeltest!23456789Edeltest!234567890sssf";
UserModel adminUser = UserModel.generateUserWithADMINrole();
rest.users().createUser(adminUser);
DomiSMPPage homePage = new DomiSMPPage(driver);
LoginPage loginPage = homePage.goToLoginPage();
loginPage.login(adminUser.getUsername(), data.getNewPassword());
PropertiesPage propertiesPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_PROPERTIES);
propertiesPage.propertySearch(propertyName);
if (!propertiesPage.getPropertyValue(propertyName).equals(newPropertyValue)) {
......@@ -128,37 +128,42 @@ public class ProfilePgTests extends SeleniumTest {
propertiesPage.save();
}
ProfilePage profilePage = propertiesPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
profilePage.userData.setChangePasswordBtn.click();
Assert.assertEquals(0, profilePage.userData.getChangePasswordDialog().setNewPassword(data.getNewPassword(), new40CharactersPasswordValue).size(), "Could not change the password of the user");
ProfilePage profilePage = homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
SetChangePasswordDialog setChangePasswordDialog = profilePage.profileData.clickOnChangePassword();
setChangePasswordDialog.fillChangePassword(data.getNewPassword(), new40CharactersPasswordValue);
List<String> errors = setChangePasswordDialog.getFieldErrorMessage();
DomiSMPPage homepage = setChangePasswordDialog.TryClickOnChangePassword();
soft.assertEquals(errors.size(), 0, "Could not change the password of the user");
soft.assertNotNull(homepage, "Could not change the password of the user");
soft.assertAll();
}
@Ignore
@Test(description = "PROF-04 User should be able to change his password")
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 = loginPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
String oldLastSet = profilePage.userData.getLastSetValue();
String oldPasswordExpiresOn = profilePage.userData.getPasswordExpiresOnValue();
String oldLastSet = profilePage.profileData.getLastSetValue();
String oldPasswordExpiresOn = profilePage.profileData.getPasswordExpiresOnValue();
profilePage.userData.setChangePasswordBtn.click();
//profilePage.profileData.setChangePasswordBtn.click();
String newPass = "Edeltest!23456789Edelt" + Generator.randomAlphaNumeric(4);
SetChangePasswordDialog setChangePasswordDialog = profilePage.profileData.clickOnChangePassword();
setChangePasswordDialog.fillChangePassword(data.getNewPassword(), newPass);
homePage = setChangePasswordDialog.TryClickOnChangePassword();
Assert.assertEquals(profilePage.userData.getChangePasswordDialog().setNewPassword(data.getNewPassword(), newPass).size(), 0, "Could not change the password of the user");
soft.assertNotNull(homePage, "Could not change the password of the user");
homePage.goToLoginPage();
loginPage.login(adminUser.getUsername(), newPass);
profilePage = loginPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
//TODO wait until the lastvalue and old password fields show value as text
// Assert.assertNotSame(profilePage.userData.getLastSetValue(), oldLastSet, "Last set value is not reseted");
// Assert.assertNotSame(profilePage.userData.getPasswordExpiresOnValue(), oldPasswordExpiresOn, "Password expires on value is not reseted");
Assert.assertNotSame(profilePage.profileData.getLastSetValue(), oldLastSet, "Last set value is not reseted");
//TODO: passwordexpiresOn label has a different id after the value is set reason why the test is failing with not element found
Assert.assertNotSame(profilePage.profileData.getPasswordExpiresOnValue(), oldPasswordExpiresOn, "Password expires on value is not reseted");
}
}
......@@ -4,18 +4,27 @@ import ddsl.DomiSMPPage;
import ddsl.enums.Pages;
import domiSMPTests.SeleniumTest;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
import pages.LoginPage;
import pages.systemSettings.UsersPage;
import rest.models.UserModel;
public class UsersPgTests extends SeleniumTest {
SoftAssert soft;
DomiSMPPage homePage;
LoginPage loginPage;
@BeforeMethod(alwaysRun = true)
public void beforeTest() throws Exception {
soft = new SoftAssert();
homePage = new DomiSMPPage(driver);
loginPage = homePage.goToLoginPage();
}
@Test(description = "USR-01 System admin is able to create new users")
public void SystemAdminIsAbleToCreateNewUsers() throws Exception {
DomiSMPPage homePage = new DomiSMPPage(driver);
LoginPage loginPage = homePage.goToLoginPage();
loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
UsersPage usersPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_USERS);
......@@ -26,24 +35,25 @@ public class UsersPgTests extends SeleniumTest {
usersPage.refreshPage();
// usersPage.filter(adminNewUserData.getUsername());
WebElement newUser = usersPage.getDataPanelGrid().searchAndGetElementInColumn("Username", adminNewUserData.getUsername());
Assert.assertNotNull(newUser);
soft.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");
soft.assertEquals(usersPage.getApplicationRoleValue(), adminNewUserData.getRole());
soft.assertEquals(usersPage.getFullNameValue(), adminNewUserData.getFullName());
soft.assertTrue(usersPage.isSelectedUserActive(), "User active status is true");
soft.assertEquals(usersPage.getEmailValue(), adminNewUserData.getEmailAddress());
soft.assertEquals(usersPage.getSelectedThemeValue(), adminNewUserData.getSmpTheme());
soft.assertEquals(usersPage.getSelectedLocaleValue(), adminNewUserData.getSmpLocale());
Assert.assertEquals(usersPage.getEmailValue(), adminNewUserData.getEmailAddress());
Assert.assertEquals(usersPage.getSelectedThemeValue(), adminNewUserData.getSmpTheme());
Assert.assertEquals(usersPage.getSelectedLocaleValue(), adminNewUserData.getSmpLocale());
soft.assertAll();
}
@Test(description = "USR-02 USR-02 System admin is not able to create duplicated user")
public void SystemAdminIsNotAbleToCreateDuplicatedUser() throws Exception {
DomiSMPPage homePage = new DomiSMPPage(driver);
LoginPage loginPage = homePage.goToLoginPage();
loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
UsersPage usersPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_USERS);
......@@ -54,8 +64,7 @@ public class UsersPgTests extends SeleniumTest {
usersPage.refreshPage();
usersPage.getCreateUserBtn().click();
String alertMessage = usersPage.fillNewUserDataAndSave(adminNewUserData);
Assert.assertEquals(alertMessage, "Invalid request [CreateUser]. Error: User with username [" + adminNewUserData.getUsername() + "] already exists!!");
soft.assertEquals(alertMessage, "Invalid request [CreateUser]. Error: User with username [" + adminNewUserData.getUsername() + "] already exists!!");
soft.assertAll();
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment