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

Skip to content
Snippets Groups Projects
UsersPgTest.java 16.9 KiB
Newer Older
package ui;

import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
import pages.components.ConfirmationDialog;
import pages.components.baseComponents.SMPPage;
import pages.components.messageArea.AlertMessage;
import pages.users.UserPopup;
import pages.users.UserRowInfo;
import pages.users.UsersPage;
import utils.Generator;
import utils.TestDataProvider;
import utils.enums.SMPMessages;
import utils.rest.SMPRestClient;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class UsersPgTest extends BaseTest {
	@AfterMethod
Catalin QA's avatar
Catalin QA committed
	public void logoutAndReset() {
Catalin QA's avatar
Catalin QA committed
		genericLogoutProcedure();
	@BeforeMethod
Catalin QA's avatar
Catalin QA committed
	public void loginAndGoToUsersPage() {

Catalin QA's avatar
Catalin QA committed
		SMPPage page = genericLoginProcedure("SYS_ADMIN");
		logger.info("Going to Users page");
		page.sidebar.goToPage(UsersPage.class);
	}
	@Test(description = "USR-10")
Catalin QA's avatar
Catalin QA committed
	public void newUser() {
		String username = Generator.randomAlphaNumeric(10);
		String validPass = "QW!@qw12";
		SoftAssert soft = new SoftAssert();

		UsersPage usersPage = new UsersPage(driver);
//		soft.assertTrue(usersPage.isNewButtonEnabled(), "New button should be enabled");
		UserPopup popup = usersPage.clickNew();
		soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");
		popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
		popup.clickUserDetailsToggle();

		popup.fillDetailsForm(username, validPass, validPass);
		popup.clickOK();

		soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled");
		soft.assertTrue(usersPage.isCancelButtonEnabled(), "Cancel button is enabled");

		usersPage.clickSave().confirm();

		soft.assertTrue(!usersPage.alertArea.getAlertMessage().isError(), "Message listed is success");
		soft.assertTrue(usersPage.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message listed is as expected");

		soft.assertTrue(isUserListed(username), "User present in the page");

		soft.assertAll();
	}


	@Test(description = "USR-20")
Catalin QA's avatar
Catalin QA committed
	public void usernameValidation() {
		String username = Generator.randomAlphaNumeric(10);
		String validPass = "QW!@qw12";

		SoftAssert soft = new SoftAssert();

		UsersPage usersPage = new UsersPage(driver);
		UserPopup popup = usersPage.clickNew();
		soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");

		popup.rolesSelect.selectOptionWithText("SMP_ADMIN");

		popup.clickUserDetailsToggle();

		popup.fillDetailsForm("tst", validPass, validPass);
		soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup(2)");
		soft.assertEquals(popup.getUsernameValidationError(), SMPMessages.USERNAME_VALIDATION_MESSAGE, "Validation error message is displayed(2)");
		popup.fillDetailsForm("#$^&*^%&$#@%@$#%$", validPass, validPass);
		soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup(3)");
		soft.assertEquals(popup.getUsernameValidationError(), SMPMessages.USERNAME_VALIDATION_MESSAGE, "Validation error message is displayed(3)");
		//noinspection SpellCheckingInspection
		popup.fillDetailsForm("QWERQWERQWERQWERQWERQWERQWERQWE33", validPass, validPass);
		soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup(4)");
		soft.assertEquals(popup.getUsernameValidationError(), SMPMessages.USERNAME_VALIDATION_MESSAGE, "Validation error message is displayed(4)");
	@SuppressWarnings("SpellCheckingInspection")
	@Test(description = "USR-30")
Catalin QA's avatar
Catalin QA committed
	public void passwordValidation() {

		ArrayList<String> passToValidate = new ArrayList<>(Arrays.asList("qwqw",
comanca's avatar
comanca committed
				"QWERQWERQWERQWERQWERQWERQWERQWE33",
//				"QWERTYUIOP",
//				"qwertyuiop",
//				"321654987",
//				"~!@#$%^&*()_",
//				"~1Aa#",
				"~1a#2d2dds"));

		SoftAssert soft = new SoftAssert();

		UsersPage usersPage = new UsersPage(driver);

		for (String pass : passToValidate) {
comanca's avatar
comanca committed
//			usersPage.refreshPage();
			usersPage.clickVoidSpace();

			UserPopup popup = usersPage.clickNew();
			popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
			popup.clickUserDetailsToggle();

			popup.fillDetailsForm("test11", pass, pass);
			soft.assertTrue(!popup.isOKButtonActive(), String.format("OK button should be disabled until valid data is filled in the popup - %s ", pass));
			soft.assertEquals(popup.getPassValidationError(), SMPMessages.PASS_POLICY_MESSAGE, String.format("Pass policy message is displayed - %s", pass));
		}

		soft.assertAll();
	}

	@Test(description = "USR-40")
Catalin QA's avatar
Catalin QA committed
	public void listedRoles() {

		ArrayList<String> expectedRoleValues = new ArrayList<>(Arrays.asList("SYSTEM_ADMIN", "SMP_ADMIN", "SERVICE_GROUP_ADMIN"));

		SoftAssert soft = new SoftAssert();

		UsersPage usersPage = new UsersPage(driver);
		UserPopup popup = usersPage.clickNew();
		List<String> listedRoles = popup.rolesSelect.getOptionTexts();

		soft.assertTrue(expectedRoleValues.size() == listedRoles.size(), "Number of roles is the same as expected");

		for (String expected : expectedRoleValues) {
			boolean found = false;
			for (String listedRole : listedRoles) {
Catalin QA's avatar
Catalin QA committed
				if (listedRole.equalsIgnoreCase(expected)) {
					found = true;
				}
			}
			soft.assertTrue(found, "Role found in page " + expected);
		}

		soft.assertAll();
	}

	@Test(description = "USR-50")
Catalin QA's avatar
Catalin QA committed
	public void deleteSYS_ADMIN() {

		String username = Generator.randomAlphaNumeric(10);
		SMPRestClient.createUser(username, "SYSTEM_ADMIN");
		SoftAssert soft = new SoftAssert();

Catalin QA's avatar
Catalin QA committed
		log.info("created user " + username);
		UsersPage page = new UsersPage(driver);
Catalin QA's avatar
Catalin QA committed
		page.refreshPage();

		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");

		int index = scrollToUser(username);
		page.grid().selectRow(index);
		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");

		page.clickDelete();
		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted");
		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted");
		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted");

		page.clickCancel().confirm();
		new ConfirmationDialog(driver).confirm();
		soft.assertTrue(isUserListed(username), "After canceling delete user is still listed");


		index = scrollToUser(username);
		page.grid().selectRow(index);
		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select(2)");

		page.clickDelete();
		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted(2)");
		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted(2)");
		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted(2)");

		page.clickSave().confirm();

		soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message listed is as expected");
		soft.assertTrue(!isUserListed(username), "After saving deleted user is not listed");

		soft.assertAll();
	}

	@Test(description = "USR-60")
Catalin QA's avatar
Catalin QA committed
	public void changeRoleSYS_ADMIN() {

		SoftAssert soft = new SoftAssert();

		UsersPage page = new UsersPage(driver);
		int index = scrollToUserWithRole("SYSTEM_ADMIN");

		page.grid().selectRow(index);
		UserPopup popup = page.clickEdit();
		List<String> options = popup.rolesSelect.getOptionTexts();
		soft.assertTrue(options.size() == 1, "Role dropdown has only one value");
		soft.assertTrue(options.get(0).equalsIgnoreCase("SYSTEM_ADMIN"), "Role dropdown has only one value and that is \"SYSTEM_ADMIN\"");

		soft.assertAll();
	}

	@Test(description = "USR-70")
Catalin QA's avatar
Catalin QA committed
	public void changeRoleNON_SYS_ADMIN() {

		SoftAssert soft = new SoftAssert();

		UsersPage page = new UsersPage(driver);
		int index = scrollToUserWithRole("SMP_ADMIN");

		page.grid().selectRow(index);
		UserPopup popup = page.clickEdit();

		List<String> options = popup.rolesSelect.getOptionTexts();
		soft.assertTrue(options.size() == 2, "Role dropdown has only two values");
		soft.assertTrue(options.get(0).equalsIgnoreCase("SMP_ADMIN"), "Role dropdown has value \"SMP_ADMIN\"");
		soft.assertTrue(options.get(1).equalsIgnoreCase("SERVICE_GROUP_ADMIN"), "Role dropdown has value \"SERVICE_GROUP_ADMIN\"");

		soft.assertAll();
	}

	@Test(description = "USR-80")
Catalin QA's avatar
Catalin QA committed
	public void deleteOWNUserRecord() {

		String username = new TestDataProvider().getUserWithRole("SYS_ADMIN").get("username");

		SoftAssert soft = new SoftAssert();

		UsersPage page = new UsersPage(driver);
		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");

		int index = scrollToUser(username);
		page.grid().selectRow(index);
		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");

		page.clickDelete();
		AlertMessage message = page.alertArea.getAlertMessage();
		soft.assertTrue(message.isError(), "Listed message is error");
		soft.assertTrue(message.getMessage().equalsIgnoreCase(SMPMessages.USER_OWN_DELETE_ERR), "Listed message has appropriate text");

		soft.assertAll();
	}

	@Test(description = "USR-90")
Catalin QA's avatar
Catalin QA committed
	public void deleteSMP_ADMIN() {

		String username = Generator.randomAlphaNumeric(10);
		SMPRestClient.createUser(username, "SMP_ADMIN");
		SoftAssert soft = new SoftAssert();

Catalin QA's avatar
Catalin QA committed
		log.info("Created username " + username);


		UsersPage page = new UsersPage(driver);
Catalin QA's avatar
Catalin QA committed
		page.refreshPage();
		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");

		int index = scrollToUser(username);
		page.grid().selectRow(index);
		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");

		page.clickDelete();
		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted");
		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted");
		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted");

		page.clickCancel().confirm();
		new ConfirmationDialog(driver).confirm();
		soft.assertTrue(isUserListed(username), "After canceling delete user is still listed");


		index = scrollToUser(username);
		page.grid().selectRow(index);
		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select(2)");

		page.clickDelete();
		page.waitForXMillis(200);
		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted(2)");
		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted(2)");
		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted(2)");

		page.clickSave().confirm();

		soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message is as expected");
		soft.assertTrue(!isUserListed(username), "After saving deleted user is not listed");

		soft.assertAll();
	}

	@Test(description = "USR-100")
Catalin QA's avatar
Catalin QA committed
	public void deleteSERVICE_GROUP_ADMIN() {

		String username = Generator.randomAlphaNumeric(10);
		SMPRestClient.createUser(username, "SERVICE_GROUP_ADMIN");
Catalin QA's avatar
Catalin QA committed
		log.info("Created username" + username);
		SoftAssert soft = new SoftAssert();

		UsersPage page = new UsersPage(driver);
Catalin QA's avatar
Catalin QA committed
		page.refreshPage();
		page.waitForRowsToLoad();

		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");

		int index = scrollToUser(username);
		page.grid().selectRow(index);
		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");

		page.clickDelete();
		page.waitForRowsToLoad();

		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted");
		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted");
		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted");

		page.clickCancel().confirm();
		new ConfirmationDialog(driver).confirm();
		page.waitForRowsToLoad();
		soft.assertTrue(isUserListed(username), "After canceling delete user is still listed");


		index = scrollToUser(username);
		page.grid().selectRow(index);
		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select(2)");

		page.clickDelete();
		page.waitForRowsToLoad();
		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted(2)");
		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted(2)");
		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted(2)");

		page.clickSave().confirm();

		soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message is as expected");
		soft.assertTrue(!isUserListed(username), "After saving deleted user is not listed");

		soft.assertAll();
	}

	@Test(description = "USR-110")
Catalin QA's avatar
Catalin QA committed
	public void deleteSG_ADMINWithSG() {

		String username = Generator.randomAlphaNumeric(10);
		String pi = Generator.randomAlphaNumeric(10);
		String ps = Generator.randomAlphaNumeric(10);

		String expectedErrorMess = String.format("Delete validation error Could not delete user with ownerships! User: %s owns SG count: 1.", username);

		SMPRestClient.createUser(username, "SERVICE_GROUP_ADMIN");
		SMPRestClient.createServiceGroup(pi, ps,
				new ArrayList<>(Arrays.asList(username)),
				new ArrayList<>(Arrays.asList(createdDomains.get(0)))
Catalin QA's avatar
Catalin QA committed
		log.info("Created username " + username);
		log.info("Created service group " + pi);

		SoftAssert soft = new SoftAssert();

		UsersPage page = new UsersPage(driver);
Catalin QA's avatar
Catalin QA committed
		page.refreshPage();

		int index = scrollToUser(username);
		page.grid().selectRow(index);
		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");

		page.clickDelete();
		AlertMessage message = page.alertArea.getAlertMessage();
		soft.assertTrue(message.isError(), "Page shows error message when deleting user with SG");
		soft.assertTrue(message.getMessage().equalsIgnoreCase(expectedErrorMess), "Desired message appears");

		SMPRestClient.deleteSG(pi);
		SMPRestClient.deleteUser(username);

		soft.assertAll();
	}

	@Test(description = "USR-120")
Catalin QA's avatar
Catalin QA committed
	public void deleteSMP_ADMINWithSG() {

		String username = Generator.randomAlphaNumeric(10);
		String pi = Generator.randomAlphaNumeric(10);
		String ps = Generator.randomAlphaNumeric(10);

		String expectedErrorMess = String.format("Delete validation error Could not delete user with ownerships! User: %s owns SG count: 1.", username);

		SMPRestClient.createUser(username, "SMP_ADMIN");
		SMPRestClient.createServiceGroup(pi, ps,
				new ArrayList<>(Arrays.asList(username)),
comanca's avatar
comanca committed
				new ArrayList<>(Arrays.asList(createdDomains.get(0)))
Catalin QA's avatar
Catalin QA committed
		log.info("Created username "+ username);

		SoftAssert soft = new SoftAssert();

		UsersPage page = new UsersPage(driver);
Catalin QA's avatar
Catalin QA committed
		page.refreshPage();

		int index = scrollToUser(username);
		page.grid().selectRow(index);
		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");

		page.clickDelete();
		page.waitForXMillis(500);
		AlertMessage message = page.alertArea.getAlertMessage();
		soft.assertTrue(message.isError(), "Page shows error message when deleting user with SG");
		soft.assertTrue(message.getMessage().equalsIgnoreCase(expectedErrorMess), "Desired message appears");

		SMPRestClient.deleteSG(pi);
		SMPRestClient.deleteUser(username);

Catalin QA's avatar
Catalin QA committed
	private boolean isUserListed(String username) {
		boolean end = false;

		UsersPage page = new UsersPage(driver);
		page.pagination.skipToFirstPage();

		while (!end) {
			page = new UsersPage(driver);
			List<UserRowInfo> rows = page.grid().getRows();

			for (UserRowInfo row : rows) {
Catalin QA's avatar
Catalin QA committed
				if (row.getUsername().equalsIgnoreCase(username)) {
Catalin QA's avatar
Catalin QA committed
			if (page.pagination.hasNextPage()) {
				page.pagination.goToNextPage();
Catalin QA's avatar
Catalin QA committed
			} else {
				end = true;
			}
Catalin QA's avatar
Catalin QA committed
	private int scrollToUser(String username) {

		UsersPage page = new UsersPage(driver);
		page.pagination.skipToFirstPage();

		boolean end = false;
		while (!end) {
			page = new UsersPage(driver);

			List<UserRowInfo> rows = page.grid().getRows();
			for (int i = 0; i < rows.size(); i++) {
Catalin QA's avatar
Catalin QA committed
				if (rows.get(i).getUsername().equalsIgnoreCase(username)) {
Catalin QA's avatar
Catalin QA committed
			if (page.pagination.hasNextPage()) {
				page.pagination.goToNextPage();
Catalin QA's avatar
Catalin QA committed
			} else {
				end = true;
			}
Catalin QA's avatar
Catalin QA committed
	private int scrollToUserWithRole(String role) {
		UsersPage page = new UsersPage(driver);
		page.pagination.skipToFirstPage();

		boolean end = false;
		while (!end) {
			page = new UsersPage(driver);

			List<UserRowInfo> rows = page.grid().getRows();
			for (int i = 0; i < rows.size(); i++) {
Catalin QA's avatar
Catalin QA committed
				if (rows.get(i).getRole().equalsIgnoreCase(role)) {
Catalin QA's avatar
Catalin QA committed
			if (page.pagination.hasNextPage()) {
				page.pagination.goToNextPage();
Catalin QA's avatar
Catalin QA committed
			} else {
				end = true;
			}