From eaa94f096fe138179d3dd37842691823e2f1d760 Mon Sep 17 00:00:00 2001
From: monhaso <sonali.mohanty@ext.ec.europa.eu>
Date: Wed, 20 Jul 2022 12:03:30 +0200
Subject: [PATCH] 1)some locators got changed and new locators have added.

---
 .../edit/ServiceGroupPopup.java               |   6 +-
 .../src/main/java/pages/users/UserPopup.java  |  83 ++++++++++-
 .../main/java/utils/enums/SMPMessages.java    |  10 +-
 .../src/test/java/ui/UsersPgTest.java         | 134 +++++++++++++-----
 4 files changed, 182 insertions(+), 51 deletions(-)

diff --git a/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceGroupPopup.java b/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceGroupPopup.java
index 0191de265..819a08f56 100644
--- a/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceGroupPopup.java
+++ b/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceGroupPopup.java
@@ -33,10 +33,10 @@ public class ServiceGroupPopup extends PageComponent {
 	private WebElement domainsPanelContainer;
 	public AccordionSection domainsPanel;
 
-	@FindBy(css = "mat-dialog-actions > div > button:nth-child(1)")
+	@FindBy(css = "mat-dialog-actions button:nth-child(1)")
 	private WebElement okButton;
 
-	@FindBy(css = "mat-dialog-actions > div > button:nth-child(2)")
+	@FindBy(css = "mat-dialog-actions button:nth-child(2)")
 	private WebElement cancelButton;
 
 	@FindBy(css = "#participantIdentifier_id")
@@ -57,7 +57,7 @@ public class ServiceGroupPopup extends PageComponent {
 	@FindBy(css = "mat-card-content > mat-toolbar > mat-toolbar-row > button:nth-child(3)")
 	private WebElement validateExtensionButton;
 
-	@FindBy(css = "mat-card-content > div > div.ng-star-inserted")
+	@FindBy(css = "mat-card-content > div.ng-star-inserted")
 	private WebElement errorContainer;
 
 
diff --git a/smp-ui-tests/src/main/java/pages/users/UserPopup.java b/smp-ui-tests/src/main/java/pages/users/UserPopup.java
index c6bc2a45a..33f3654fa 100644
--- a/smp-ui-tests/src/main/java/pages/users/UserPopup.java
+++ b/smp-ui-tests/src/main/java/pages/users/UserPopup.java
@@ -1,13 +1,17 @@
 package pages.users;
 
 import org.openqa.selenium.By;
+import org.openqa.selenium.JavascriptExecutor;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.PageFactory;
+import pages.components.ConfirmationDialog;
 import pages.components.GenericSelect;
 import pages.components.baseComponents.PageComponent;
 
+import static org.openqa.selenium.remote.DriverCommand.CLICK_ELEMENT;
+
 public class UserPopup extends PageComponent {
 	public UserPopup(WebDriver driver) {
 		super(driver);
@@ -28,13 +32,16 @@ public class UserPopup extends PageComponent {
 	@FindBy(id = "emailAddress_id")
 	WebElement emailInput;
 
-	@FindBy(id = "password_id")
+	@FindBy(id = "np_id")
 	WebElement passwordInput;
 
 	@SuppressWarnings("SpellCheckingInspection")
-	@FindBy(id = "usernameconfirmation_id")
+	@FindBy(id = "cnp_id")
 	WebElement confirmationInput;
 
+	@FindBy(css = "input#cp_id")
+	WebElement adminPassInput;
+
 	@FindBy(css = "mat-form-field.username> div > div.mat-form-field-flex > div > div")
 	WebElement usernameValidationError;
 
@@ -47,12 +54,24 @@ public class UserPopup extends PageComponent {
 	@FindBy(css = ".mat-form-field-infix > div.has-error")
 	WebElement passMatchValidationError;
 
-	@FindBy(css = "mat-dialog-content > table > tr > td > button:nth-child(1)")
+	@FindBy(css = "mat-dialog-actions button:nth-child(1)")
 	WebElement okBtn;
 
-	@FindBy(css = "mat-dialog-content > table > tr > td > button:nth-child(2)")
+	@FindBy(css = "mat-dialog-actions button:nth-child(2)")
 	WebElement cancelBtn;
 
+	@FindBy(css ="#changePassword_id")
+	WebElement changePassword;
+
+	@FindBy(css ="smp-password-change-dialog mat-dialog-actions button:nth-child(1)")
+	WebElement changedPassword;
+
+	@FindBy(css = "#nobuttondialog_id")
+	WebElement passChangedClose;
+
+	@FindBy(css = "smp-password-change-dialog mat-dialog-actions button:nth-child(2)")
+	WebElement passwordDialogClose;
+
 	@FindBy(css = "#role_id")
 	WebElement rolesSelectContainer;
 	public GenericSelect rolesSelect;
@@ -61,6 +80,12 @@ public class UserPopup extends PageComponent {
 	public boolean isOKButtonActive() {
 		return isEnabled(okBtn);
 	}
+	public boolean isChangePasswordActive() {
+		return isEnabled(passChangedClose);
+	}
+	public boolean isChangePasswordButtonActive() {
+		return isEnabled(changedPassword);
+	}
 
 	public boolean isCancelButtonActive() {
 		return isEnabled(cancelBtn);
@@ -98,12 +123,56 @@ public class UserPopup extends PageComponent {
 		waitForElementToBeEnabled(userNameInput);
 	}
 
-	public void fillDetailsForm(String username, String pass, String confirmation) {
+	//public void fillDetailsForm(String username, String pass, String confirmation)
+	public void fillDetailsForm(String username){
 		clearAndFillInput(userNameInput, username);
-		clearAndFillInput(passwordInput, pass);
-		clearAndFillInput(confirmationInput, confirmation);
+		//clearAndFillInput(passwordInput, pass);
+		//clearAndFillInput(confirmationInput, confirmation);
 		emailInput.click();
 	}
+	public void clickChangePassword(){
+		log.info("click change password");
+		waitForElementToBeClickable(changePassword);
+		changePassword.click();
+		//waitForElementToBeGone(changePassword);
+	}
+	public void clickCloseAfterChangedPass()
+	{
+		log.info("click close after change password");
+		try {
+			Thread.sleep(10000);
+		}
+		catch (Exception e){
+			e.printStackTrace();
+		}
+		waitForElementToBeClickable(passChangedClose);
+		log.info("ab");
+		passChangedClose.click();
+		log.info("bd");
+		waitForElementToBeGone(passChangedClose);
+		log.info("cd");
+	}
+	public ConfirmationDialog clickChangedPassword()
+	{
+		log.info("click changed password");
+		waitForElementToBeClickable(changedPassword);
+		changedPassword.click();
+		waitForElementToBeGone(changedPassword);
+		//return new UsersPage(driver);
+		return new ConfirmationDialog(driver);
+	}
+	public void setPassword(String adminPass,String newPass,String confirmPass)
+	{
+
+		clearAndFillInput(adminPassInput,adminPass);
+		clearAndFillInput(passwordInput,newPass);
+		clearAndFillInput(confirmationInput,confirmPass);
+	}
+	public void clickClosePasswordDialog()
+	{
+		passwordDialogClose.click();
+		waitForElementToBeGone(passwordDialogClose);
+	}
 
 
 	public String getUsernameValidationError() {
diff --git a/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java b/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
index 89da050ed..d43525c19 100644
--- a/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
+++ b/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
@@ -68,14 +68,8 @@ public class SMPMessages {
 	public static final String MSG_21 = "Unable to login. SMP is not running.";
 
 
-	public static final String USERNAME_VALIDATION_MESSAGE = "Username is case insensitive and can only contain alphanumeric characters (letters a-zA-Z, numbers 0-9) and must have from 4 to 32 characters!";
-	public static final String PASS_POLICY_MESSAGE = "Password should follow all of these rules:\n" +
-			"- Minimum length: 8 characters\n" +
-			"- Maximum length: 32 characters\n" +
-			"- At least one letter in lowercase\n" +
-			"- At least one letter in uppercase\n" +
-			"- At least one digit\n" +
-			"- At least one special character";
+	public static final String USERNAME_VALIDATION_MESSAGE = "Username can only contain alphanumeric characters (letters A-Z, numbers 0-9) and must have from 4 to 32 characters!";
+	public static final String PASS_POLICY_MESSAGE = "Minimum length: 16 characters;Maximum length: 32 characters;At least one letter in lowercase;At least one letter in uppercase;At least one digit;At least one special character";
 	public static final String PASS_NO_MATCH_MESSAGE = "Passwords do not match";
 	public static final String PASS_NO_EMPTY_MESSAGE = "You should type a password";
 
diff --git a/smp-ui-tests/src/test/java/ui/UsersPgTest.java b/smp-ui-tests/src/test/java/ui/UsersPgTest.java
index 47fd13702..beb55bf0e 100644
--- a/smp-ui-tests/src/test/java/ui/UsersPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/UsersPgTest.java
@@ -39,7 +39,7 @@ public class UsersPgTest extends BaseTest {
 	@Test(description = "USR-10")
 	public void newUser() {
 		String username = Generator.randomAlphaNumeric(10);
-		String validPass = "QW!@qw12";
+		String validPass = "Aabcdefghijklm1@";
 
 		SoftAssert soft = new SoftAssert();
 
@@ -49,13 +49,13 @@ public class UsersPgTest extends BaseTest {
 
 		UserPopup popup = usersPage.clickNew();
 		soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");
-
+		popup.fillDetailsForm(username);
 		popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
+		popup.clickOK();
 
-		popup.clickUserDetailsToggle();
+	    //popup.clickUserDetailsToggle();
+		//popup.fillDetailsForm(username, validPass, validPass);
 
-		popup.fillDetailsForm(username, validPass, validPass);
-		popup.clickOK();
 
 		soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled");
 		soft.assertTrue(usersPage.isCancelButtonEnabled(), "Cancel button is enabled");
@@ -66,6 +66,23 @@ public class UsersPgTest extends BaseTest {
 		soft.assertTrue(usersPage.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message listed is as expected");
 
         soft.assertTrue(usersPage.grid().isUserListed(username), "User present in the page");
+		String adminPass = "123456";
+		int index = usersPage.grid().scrollToUser(username);
+
+		usersPage.grid().selectRow(index);
+		popup = usersPage.clickEdit();
+		try{
+			Thread.sleep(10000);
+		}
+        catch(Exception e){
+			e.printStackTrace();
+		}
+		popup.clickChangePassword();
+	    popup.setPassword(adminPass,validPass,validPass);
+		popup.clickChangedPassword().cancel();
+		//popup.clickCloseAfterChangedPass();
+		popup.clickOK();
+		soft.assertTrue(usersPage.grid().isUserListed(username), "User present in the page");
 
 		soft.assertAll();
 	}
@@ -81,19 +98,19 @@ public class UsersPgTest extends BaseTest {
 		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.fillDetailsForm("tst");
 		popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
 
-		popup.clickUserDetailsToggle();
+		//popup.clickUserDetailsToggle();
 
-		popup.fillDetailsForm("tst", validPass, validPass);
+		//popup.fillDetailsForm("tst");
 		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);
+		popup.fillDetailsForm("#$^&*^%&$#@%@$#%$");
 		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);
+		popup.fillDetailsForm("QWERQWERQWERQWERQWERQWERQWERQWE33");
 		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)");
 
@@ -104,7 +121,7 @@ public class UsersPgTest extends BaseTest {
 	@SuppressWarnings("SpellCheckingInspection")
 	@Test(description = "USR-30")
 	public void passwordValidation() {
-
+		String username = Generator.randomAlphaNumeric(10);
 		ArrayList<String> passToValidate = new ArrayList<>(Arrays.asList("qwqw",
 				"QWERQWERQWERQWERQWERQWERQWERQWE33",
 //				"QWERTYUIOP",
@@ -117,17 +134,44 @@ public class UsersPgTest extends BaseTest {
 		SoftAssert soft = new SoftAssert();
 
 		UsersPage usersPage = new UsersPage(driver);
+		usersPage.clickVoidSpace();
 
+		UserPopup popup = usersPage.clickNew();
+		popup.fillDetailsForm("test11");
+		popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
+		popup.clickOK();
+		usersPage.clickSave().confirm();
+		soft.assertTrue(usersPage.grid().isUserListed(username), "User present in the page");
+		int index = usersPage.grid().scrollToUser(username);
+		usersPage.grid().selectRow(index);
+		String adminPass = "123456";
 		for (String pass : passToValidate) {
 //			usersPage.refreshPage();
-			usersPage.clickVoidSpace();
+			/*usersPage.clickVoidSpace();
 
 			UserPopup popup = usersPage.clickNew();
+			popup.fillDetailsForm("test11");
 			popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
-			popup.clickUserDetailsToggle();
+			popup.clickOK();
+
+			usersPage.clickSave().confirm();
+			soft.assertTrue(usersPage.grid().isUserListed("test11"), "User present in the page");*/
+
+			popup = usersPage.clickEdit();
 
-			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));
+			popup.clickChangePassword();
+			popup.setPassword(adminPass,pass,pass);
+			popup.clickClosePasswordDialog();
+			popup.clickCancel();
+			//popup.clickChangedPassword();
+			//popup.clickCloseAfterChangedPass();
+			//popup.clickCancel();
+
+
+			//popup.clickUserDetailsToggle();
+
+			//popup.fillDetailsForm("test11", pass, pass);
+			soft.assertTrue(!popup.isChangePasswordActive(), String.format("ChangePassword 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));
 		}
 
@@ -438,50 +482,74 @@ public class UsersPgTest extends BaseTest {
     public void duplicateUserCreation() {
         SoftAssert soft = new SoftAssert();
         String userName = Generator.randomAlphaNumeric(10);
-        String validPass = "QW!@qw12";
+        String validPass = "Aabcdefghijklm1@";
         UsersPage page = new UsersPage(driver);
 
         soft.assertTrue(page.isNewButtonEnabled(), "New button should be enabled");
 
         UserPopup popup = page.clickNew();
         soft.assertTrue(!popup.isOKButtonActive(), "OK button is enable before valid data is filled in the popup");
+		popup.fillDetailsForm(userName);
         popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
-        popup.clickUserDetailsToggle();
-        popup.fillDetailsForm(userName, validPass, validPass);
-        popup.clickOK();
-        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
-        page.clickSave().confirm();
+		popup.clickOK();
+		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+		page.clickSave().confirm();
+		String adminPass = "123456";
+		int index = page.grid().scrollToUser(userName);
+
+		page.grid().selectRow(index);
+		popup = page.clickEdit();
+
+		popup.clickChangePassword();
+		popup.setPassword(adminPass,validPass,validPass);
+		popup.clickChangedPassword();
+		popup.clickCloseAfterChangedPass();
+		popup.clickCancel();
+		soft.assertTrue(page.grid().isUserListed(userName), "User present in the page");
+
+		//popup.clickUserDetailsToggle();
+        //popup.fillDetailsForm(userName,validPass,validPass);
+
 
         page.clickNew();
-        soft.assertTrue(!popup.isOKButtonActive(), "OK button is enable before valid data is filled in the popup");
+
+		popup.fillDetailsForm(userName);
         popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
-        popup.clickUserDetailsToggle();
-        popup.fillDetailsForm(userName, validPass, validPass);
+       // popup.clickUserDetailsToggle();
+        //popup.fillDetailsForm(userName);
         soft.assertFalse(popup.isOKButtonActive(), "OK button is enable after duplicate user name is filled in the popup");
 
         soft.assertTrue(popup.isDuplicateUserNameErrorMsgDisPlayed(), "The user page is not containing the expected error message");
+		popup.clickCancel();
         soft.assertAll();
     }
 
     @Test(description = "USR-122")
     public void verifyPasswordDoNotMatch() {
         String username = Generator.randomAlphaNumeric(10);
-        String validPass = "QW!@qw12";
-        String confirmPass = "AS@!gh12";
+        String validPass = "Aabcdefghijklm1@";
+        String confirmPass = "AS@!gh12fxghfnh43546";
         String errorMsg = "Passwords do not match";
         SoftAssert soft = new SoftAssert();
 
         UsersPage usersPage = new UsersPage(driver);
         UserPopup popup = usersPage.clickNew();
         soft.assertTrue(!popup.isOKButtonActive(), "OK button is enable before valid data is filled in the popup");
-
+		popup.fillDetailsForm(username);
         popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
-
-        popup.clickUserDetailsToggle();
-
-        popup.fillDetailsForm(username, validPass, confirmPass);
-        soft.assertTrue(!popup.isOKButtonActive(), "OK button is enabled before valid data is filled in the popup(2)");
-        soft.assertEquals(popup.getPassDontMatchValidationMsg(), errorMsg, "confirmation input does not contain the message 'Passwords do not match' .");
+		popup.clickOK();
+		String adminPass = "123456";
+		int index = usersPage.grid().scrollToUser(username);
+
+		usersPage.grid().selectRow(index);
+		popup = usersPage.clickEdit();
+
+		popup.clickChangePassword();
+		popup.setPassword(adminPass,validPass,confirmPass);
+       // popup.clickUserDetailsToggle();
+		// popup.fillDetailsForm(username,validPass,confirmPass);
+        soft.assertTrue(!popup.isChangePasswordButtonActive(), "password change button is enabled before valid data is filled in the popup(2)");
+       // soft.assertEquals(popup.getPassDontMatchValidationMsg(), errorMsg, "confirmation input does not contain the message 'Passwords do not match' .");
         soft.assertAll();
     }
 
-- 
GitLab