From d83d4cac999032be278d53609e254019089a22fd Mon Sep 17 00:00:00 2001
From: monhaso <sonali.mohanty@ext.ec.europa.eu>
Date: Fri, 9 Sep 2022 00:12:06 +0200
Subject: [PATCH] New Test cases has been added.

---
 .../main/java/pages/domain/DomainPopup.java   |  86 +++++++---
 .../src/main/java/pages/users/UserPopup.java  |  63 ++++++-
 .../src/main/java/pages/users/UsersGrid.java  |   5 +
 .../src/main/java/pages/users/UsersPage.java  |  48 +++++-
 .../main/java/utils/enums/SMPMessages.java    |   2 +
 .../src/test/java/ui/DomainPgTest.java        |  46 +++++
 .../src/test/java/ui/LoginPgTest.java         |  53 +++++-
 .../src/test/java/ui/UsersPgTest.java         | 158 ++++++++++++++++--
 8 files changed, 405 insertions(+), 56 deletions(-)

diff --git a/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java b/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java
index de3b5367c..c659df403 100644
--- a/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java
+++ b/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java
@@ -13,50 +13,60 @@ import utils.PROPERTIES;
 public class DomainPopup extends PageComponent {
 	public DomainPopup(WebDriver driver) {
 		super(driver);
-		PageFactory.initElements( new AjaxElementLocatorFactory(driver, PROPERTIES.TIMEOUT), this);
+		PageFactory.initElements(new AjaxElementLocatorFactory(driver, PROPERTIES.TIMEOUT), this);
 
 		signatureCertSelect = new GenericSelect(driver, signatureCertSelectContainer);
 		smlClientAliasSelect = new GenericSelect(driver, smlClientAliasSelectContainer);
 
 
 	}
-	
+
 	@FindBy(css = "domain-details-dialog button:nth-child(1)")
 	WebElement okBtn;
-	
+
 	@FindBy(css = "domain-details-dialog button:nth-child(2)")
 	WebElement cancelBtn;
-	
+
 	@FindBy(css = "#domainCode_id")
 	WebElement domainCodeInput;
-	
+
 	@FindBy(css = "#smldomain_id")
 	WebElement smlDomainInput;
-	
+
 	@FindBy(css = "#signatureKeyAlias_id")
 	WebElement signatureCertSelectContainer;
 	GenericSelect signatureCertSelect;
 
 	@FindBy(css = "#smlSMPId_id")
 	WebElement smlSMPIdInput;
-	
+
+	@FindBy(css = "span.mat-slide-toggle-bar")
+	WebElement userClientCertHeaderToggle;
+
+	@FindBy(css = "#smlClientCertHeaderAuth_id-input")
+	WebElement userClientCertHeaderToggleInput;
+
+	/*@FindBy(css = "div.mat-form-field-infix >  div.ng-star-inserted")
+	WebElement invalidSmlSmpIdErrorMsg;*/
+
 //	@FindBy(css = "#smlClientHeader_id")
 //	WebElement smlClientHeaderInput;
-	
+
 	@FindBy(css = "#smlClientKeyAlias_id")
 	WebElement smlClientAliasSelectContainer;
 	GenericSelect smlClientAliasSelect;
 
 
-	public void clickOK(){
+	public void clickOK() {
 		waitForElementToBeClickable(okBtn).click();
 		waitForElementToBeGone(okBtn);
 	}
+
 	public void clickCancel() {
 		waitForElementToBeClickable(cancelBtn).click();
 		waitForElementToBeGone(cancelBtn);
 	}
-	
+
 	public boolean isLoaded() {
 		log.info("checking if domain popup is properly loaded");
 		return isVisible(okBtn)
@@ -70,16 +80,20 @@ public class DomainPopup extends PageComponent {
 
 	public boolean isDomainCodeInputEnabled() {
 		log.info("domain code input");
-		return isEnabled(domainCodeInput);}
-	public boolean isSMLDomainInputEnabled() {return isEnabled(smlDomainInput);}
+		return isEnabled(domainCodeInput);
+	}
 
-	public void fillSMLSMPIdInput(String text){
+	public boolean isSMLDomainInputEnabled() {
+		return isEnabled(smlDomainInput);
+	}
+
+	public void fillSMLSMPIdInput(String text) {
 		log.info("fill sml smp input with " + text);
 		waitForXMillis(500);
 		clearAndFillInput(smlSMPIdInput, text);
 	}
 
-	public void fillDataForNewDomain(String domainCode, String smlDomain, String smlSmpID, String clientCertHeader){
+	public void fillDataForNewDomain(String domainCode, String smlDomain, String smlSmpID, String clientCertHeader) {
 		log.info("filling data for new domain");
 		clearAndFillInput(domainCodeInput, domainCode);
 		clearAndFillInput(smlDomainInput, smlDomain);
@@ -88,31 +102,34 @@ public class DomainPopup extends PageComponent {
 		smlClientAliasSelect.selectFirstOption();
 	}
 
-    public String getDuplicateDomainErrorMsgText()
-	{
+	public String getDuplicateDomainErrorMsgText() {
 		WebElement duplicateDomainErrorMsg = driver.findElement(By.cssSelector(".mat-form-field-infix > div.ng-star-inserted"));
 		return duplicateDomainErrorMsg.getText();
+	}
 
-
+	public String getSmlSmpIdValidationMsg() {
+		WebElement invalidSmlSmpIdErrorMsg = driver.findElement(By.cssSelector("div.mat-form-field-infix > div.ng-star-inserted"));
+		try {
+			waitForElementToBeVisible(invalidSmlSmpIdErrorMsg);
+			return invalidSmlSmpIdErrorMsg.getText();
+		} catch (Exception e) {
+		}
+		return null;
 	}
-	public boolean isEnableOkButton()
-	{
+
+	public boolean isEnableOkButton() {
 		try {
 			return okBtn.isEnabled();
-		}
-		catch(Exception e)
-		{
+		} catch (Exception e) {
 			e.printStackTrace();
 			return false;
 		}
 	}
-	public boolean isEnableCancelButton()
-	{
+
+	public boolean isEnableCancelButton() {
 		try {
 			return cancelBtn.isEnabled();
-		}
-		catch(Exception e)
-		{
+		} catch (Exception e) {
 			e.printStackTrace();
 			return false;
 		}
@@ -129,5 +146,20 @@ public class DomainPopup extends PageComponent {
 		clearAndFillInput(smlDomainInput, SMLDomain);
 	}
 
+	public void clickUserClientCertHeaderToggle() {
+		waitForElementToBeClickable(userClientCertHeaderToggle);
+		waitForXMillis(500);
+		userClientCertHeaderToggle.click();
+		waitForXMillis(500);
+
+	}
+
+	public String checkedUserClientCertHeaderToggl() {
+
+		return userClientCertHeaderToggleInput.getAttribute("aria-checked");
+
+
+	}
+
 
 }
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 0c9780333..4049bb5e9 100644
--- a/smp-ui-tests/src/main/java/pages/users/UserPopup.java
+++ b/smp-ui-tests/src/main/java/pages/users/UserPopup.java
@@ -65,6 +65,23 @@ public class UserPopup extends PageComponent {
 
     @FindBy(css = "#role_id")
     WebElement rolesSelectContainer;
+
+    @FindBy(xpath = "//span[text()='Regenerate access token']")
+    WebElement regenarateAccessTokenBtn;
+
+    @FindBy(css = "label > button.mat-focus-indicator.mat-flat-button.mat-button-base.mat-primary")
+    WebElement importBtn;
+
+    @FindBy(xpath = "//span[text()='Show details']")
+    WebElement showDetailsBtn;
+
+    @FindBy(xpath = "//span[text()='Clear']")
+    WebElement clearBtn;
+
+    @FindBy(css = ".has-error.ng-star-inserted")
+    WebElement emailValidationError;
+
+
     public UserPopup(WebDriver driver) {
         super(driver);
         PageFactory.initElements(driver, this);
@@ -91,7 +108,7 @@ public class UserPopup extends PageComponent {
         return isEnabled(okBtn);
     }
 
-    public boolean isChangePasswordActive() {
+    public boolean isChangedPasswordActive() {
         return isEnabled(passChangedClose);
     }
 
@@ -135,12 +152,9 @@ public class UserPopup extends PageComponent {
         waitForElementToBeEnabled(userNameInput);
     }
 
-    //public void fillDetailsForm(String username, String pass, String confirmation)
-    public void fillDetailsForm(String username) {
+    public void fillDetailsForm(String username,String email) {
         clearAndFillInput(userNameInput, username);
-        //clearAndFillInput(passwordInput, pass);
-        //clearAndFillInput(confirmationInput, confirmation);
-        emailInput.click();
+        clearAndFillInput(emailInput,email);
     }
 
     public void clickSetOrChangePassword() {
@@ -201,6 +215,15 @@ public class UserPopup extends PageComponent {
         return null;
     }
 
+    public String userEmailValidationGetErrMsg(){
+        try {
+            waitForElementToBeVisible(emailValidationError);
+            return emailValidationError.getText();
+        } catch (Exception e) {
+        }
+        return null;
+    }
+
     public String getPassValidationError() {
         try {
             waitForElementToBeVisible(passValidationError);
@@ -234,4 +257,32 @@ public class UserPopup extends PageComponent {
         return passMatchValidationError.getText();
         //".mat-form-field-infix > div.has-error"
     }
+
+    public boolean isUsernameFieldEnabled(){
+        return isEnabled(userNameInput);
+    }
+
+    public boolean isEmailFieldEnabled(){
+        return isEnabled(emailInput);
+    }
+    public boolean isRoleSelectFieldEnabled(){
+        return isEnabled(rolesSelectContainer);
+    }
+    public boolean isSetOrChangePassOptionBtnEnabled(){
+        return isEnabled(changePassword);
+    }
+
+    public boolean isRegenerateAccesstokenBtnEnabled(){
+        return isEnabled(regenarateAccessTokenBtn);
+    }
+    public boolean isImportButtonActive(){
+        return isEnabled(importBtn);
+    }
+    public boolean isShowDetailsButtonActive(){
+        return isEnabled(showDetailsBtn);
+    }
+    public boolean isClearButtonActive(){
+        return isEnabled(clearBtn);
+    }
+
 }
diff --git a/smp-ui-tests/src/main/java/pages/users/UsersGrid.java b/smp-ui-tests/src/main/java/pages/users/UsersGrid.java
index f83fc1d0d..6ed41935a 100644
--- a/smp-ui-tests/src/main/java/pages/users/UsersGrid.java
+++ b/smp-ui-tests/src/main/java/pages/users/UsersGrid.java
@@ -90,6 +90,11 @@ public class UsersGrid extends BasicGrid {
 		    } while (pagination.hasNextPage());
 		      return -1;
 	     }
+	public boolean userHasCertificate(int index){
+		List<UserRowInfo> rows = getRows();
+		int i=index;
+		return rows.get(i).getCertificate().isEmpty();
+	}
 	}
 
 
diff --git a/smp-ui-tests/src/main/java/pages/users/UsersPage.java b/smp-ui-tests/src/main/java/pages/users/UsersPage.java
index 04b95c528..355894c43 100644
--- a/smp-ui-tests/src/main/java/pages/users/UsersPage.java
+++ b/smp-ui-tests/src/main/java/pages/users/UsersPage.java
@@ -24,6 +24,8 @@ public class UsersPage extends SMPPage {
     private WebElement editBtn;
     @FindBy(id = "deleteButton")
     private WebElement deleteBtn;
+    @FindBy(xpath = "//span[text()=' Edit truststore']")
+    private WebElement editTruststore;
 
     public UsersPage(WebDriver driver) {
         super(driver);
@@ -51,6 +53,10 @@ public class UsersPage extends SMPPage {
         log.info("save button");
         return isEnabled(saveBtn);
     }
+    public boolean isEditButtonEnabled() {
+        log.info("save button");
+        return isEnabled(editBtn);
+    }
 
     public boolean isDeleteButtonEnabled() {
         waitForXMillis(200);
@@ -106,7 +112,33 @@ public class UsersPage extends SMPPage {
 
     public boolean isNewButtonEnabled() {
         try {
-            return newBtn.isEnabled();
+            return isEnabled(newBtn);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
+    public boolean isEditTruststoreButtonEnabled(){
+        try {
+            return isEnabled(editTruststore);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return false;
+
+    }
+    public boolean isDeleteButtonVisibled(){
+        try {
+            return isVisible(deleteBtn);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
+
+    public boolean isEditButtonVisibled(){
+        try {
+            return isVisible(editBtn);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -114,4 +146,18 @@ public class UsersPage extends SMPPage {
     }
 
 
+    public boolean isCancelButtonVisibled() {
+
+        return isVisible(cancelBtn);
+    }
+
+    public boolean isSaveButtonVisibled() {
+
+        return isVisible(saveBtn);
+    }
+
+
+
+
+
 }
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 b85f2fd8f..17e23c793 100644
--- a/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
+++ b/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
@@ -77,4 +77,6 @@ public class SMPMessages {
 
 	public static final String KEYSTORE_IMPORTED_MSG = "Keystore %s imported!";
 	public static final String KEYSTORE_DELETION_MSG = "Certificate %s deleted!";
+	public static final String SMLSMPID_VALIDATION_MESSAGE = "SML SMP ID should be up to 63 characters long, should only contain alphanumeric and hyphen characters, should not start with a digit nor a hyphen and should not end with a hyphen.";
+	public static final String USER_EMAIL_VALIDATION_MESSAGE ="Email is invalid!";
 }
diff --git a/smp-ui-tests/src/test/java/ui/DomainPgTest.java b/smp-ui-tests/src/test/java/ui/DomainPgTest.java
index 301a131d4..9f9e87f04 100644
--- a/smp-ui-tests/src/test/java/ui/DomainPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/DomainPgTest.java
@@ -435,5 +435,51 @@ public class DomainPgTest extends BaseTest {
 		soft.assertAll();
 	}
 
+	@Test(description = "DMN-110")
+	public void mandatoryDomainIdFieldVerification()
+	{
+		SoftAssert soft = new SoftAssert();
+		DomainPage page = new DomainPage(driver);
+		String randstring =Generator.randomAlphaNumeric(10);
+		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+		DomainPopup popup = page.clickNew();
+		popup.fillDataForNewDomain("",randstring,randstring,randstring);
+		soft.assertTrue(!popup.isEnableOkButton(),"Ok button is not disabled after leave domain input empty");
+		soft.assertAll();
+	}
+
+	@Test(description = "DMN-120")
+	public void verifyInvalidSMLSMPIDField(){
+		SoftAssert soft = new SoftAssert();
+		DomainPage page = new DomainPage(driver);
+		String randstring =Generator.randomAlphaNumeric(10);
+		ArrayList<String> smlsmpId = new ArrayList<>(Arrays.asList("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnop",
+				"abc@k",
+				"abcd-",
+				"-abgxknvlk",
+				"1qwertyuvbnm"));
+		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+		DomainPopup popup = page.clickNew();
+		for(String smlsmpid : smlsmpId) {
+			popup.fillDataForNewDomain(randstring, randstring, smlsmpid, randstring);
+			soft.assertTrue(!popup.isEnableOkButton(),"OK button is enable after sending the invalid smlsmpId");
+			soft.assertEquals(popup.getSmlSmpIdValidationMsg(), SMPMessages.SMLSMPID_VALIDATION_MESSAGE,"Error message is not in list");
+
+		}
+       soft.assertAll();
+	}
+
+	@Test(description = "DMN-130")
+	public void clientCertHeaderToggleTest()
+	{
+		SoftAssert soft = new SoftAssert();
+		DomainPage page = new DomainPage(driver);
+		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+		DomainPopup popup = page.clickNew();
+		soft.assertEquals(popup.checkedUserClientCertHeaderToggl(),"false","The user toggle is on");
+		popup.clickUserClientCertHeaderToggle();
+		soft.assertEquals(popup.checkedUserClientCertHeaderToggl(),"true","The user toggle is off");
+		soft.assertAll();
+	}
 
 }
diff --git a/smp-ui-tests/src/test/java/ui/LoginPgTest.java b/smp-ui-tests/src/test/java/ui/LoginPgTest.java
index 732a86327..a0112ef70 100644
--- a/smp-ui-tests/src/test/java/ui/LoginPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/LoginPgTest.java
@@ -10,6 +10,8 @@ import pages.password.PasswordChangepopup;
 import pages.service_groups.search.SearchPage;
 import pages.components.baseComponents.SMPPage;
 import pages.login.LoginPage;
+import pages.users.UserPopup;
+import pages.users.UsersPage;
 import utils.Generator;
 import utils.enums.SMPMessages;
 import utils.rest.SMPRestClient;
@@ -255,23 +257,58 @@ public class LoginPgTest extends BaseTest {
 	public void passwordChangeForLoggedUser()
 	{
 		SoftAssert soft = new SoftAssert();
-		String username = Generator.randomAlphaNumeric(10);
+		String userName = Generator.randomAlphaNumeric(10);
 		String validPass = "Aabcdefghijklm1@";
-		SMPRestClient.createUser(username,"SYSTEM_ADMIN");
-		logger.info("created user " + username);
+		String validPass1 = "Aabcdefghijklm1@2";
+
 		SMPPage page = new SMPPage(driver);
 		logger.info("Going to login page");
 		page.pageHeader.goToLogin();
-		LoginPage loginPage = new LoginPage(driver);
-		SearchPage searchPage = loginPage.login(username, "QW!@qw12");
 
+		LoginPage loginPage = new LoginPage(driver);
+		HashMap<String, String> user = testDataProvider.getUserWithRole("SYS_ADMIN");
+		SearchPage searchPage = loginPage.login(user.get("username"), user.get("password"));
 		soft.assertTrue(searchPage.pageHeader.sandwichMenu.isLoggedIn(), "User is logged in");
-		soft.assertTrue(searchPage.isLoaded(), "Search page is loaded");
+		logger.info("Going to login page");
+		SMPRestClient.createUser(userName,"SMP_ADMIN");
+		logger.info("created user " + userName);
+		page.sidebar.goToPage(UsersPage.class);
+		UsersPage usersPage = new UsersPage(driver);
+		int index = usersPage.grid().scrollToUser(userName);
+		String adminPass = "123456";
+		usersPage.grid().selectRow(index);
+		UserPopup popup = usersPage.clickEdit();
+
+		try {
+			Thread.sleep(1000);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		popup.clickSetOrChangePassword();
+		popup.setOrChangePassword(adminPass, validPass, validPass);
+		popup.clickChangedPassword();
+		popup.clickCloseAfterChangedPass();
+		try {
+			Thread.sleep(1000);
+		} catch (Exception e) {
+		}
+		popup.clickOK();
+		usersPage.pageHeader.sandwichMenu.logout();
+		SearchPage searchpage = new SearchPage(driver);
+		logger.info("Going to login page");
+		searchpage.pageHeader.goToLogin();
+	/*	page.pageHeader.goToLogin();*/
+		LoginPage loginpage = new LoginPage(driver);
+		searchpage = loginpage.login(userName, "validPass");
+
+		soft.assertTrue(searchpage.pageHeader.sandwichMenu.isLoggedIn(), "User is logged in");
+		soft.assertTrue(searchpage.isLoaded(), "Search page is loaded");
 
-		PasswordChangepopup passDialog = searchPage.pageHeader.sandwichMenu.clickChangePasswordOption();
-		passDialog.fillDataForLoggedUser("QW!@qw12",validPass,validPass);
+		PasswordChangepopup passDialog = searchpage.pageHeader.sandwichMenu.clickChangePasswordOption();
+		passDialog.fillDataForLoggedUser(validPass,validPass1,validPass1);
 
 		passDialog.clickChangedPassword();
+		 passDialog.clickClosePasswordDialog();
 		/*SearchPage page = passDialog.clickCloseAfterChangedPassForLoggedUser();
 		soft.assertEquals(page.getTitle(),"Search");*/
 		//passDialog.clickOK();
diff --git a/smp-ui-tests/src/test/java/ui/UsersPgTest.java b/smp-ui-tests/src/test/java/ui/UsersPgTest.java
index e52d21f45..15f964c0f 100644
--- a/smp-ui-tests/src/test/java/ui/UsersPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/UsersPgTest.java
@@ -42,10 +42,11 @@ public class UsersPgTest extends BaseTest {
     public void existingUserPasswordDialogView() {
         SoftAssert soft = new SoftAssert();
         String username = Generator.randomAlphaNumeric(10);
+        String email = "system@gmail.com";
         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(username);
+        popup.fillDetailsForm(username,email);
         popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
         popup.clickOK();
         soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled");
@@ -91,6 +92,7 @@ public class UsersPgTest extends BaseTest {
     public void newUser() {
         String username = Generator.randomAlphaNumeric(10);
         String validPass = "Aabcdefghijklm1@";
+        String email = "system@gmail.com";
 
         SoftAssert soft = new SoftAssert();
 
@@ -100,7 +102,7 @@ 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.fillDetailsForm(username,email);
         popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
         popup.clickOK();
 
@@ -152,7 +154,7 @@ 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.fillDetailsForm("tst","smp@gmail.com");
         popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
 
         //popup.clickUserDetailsToggle();
@@ -160,11 +162,11 @@ public class UsersPgTest extends BaseTest {
         //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("#$^&*^%&$#@%@$#%$");
+        popup.fillDetailsForm("#$^&*^%&$#@%@$#%$","system@gmail.com");
         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");
+        popup.fillDetailsForm("QWERQWERQWERQWERQWERQWERQWERQWE33","system@gmail.com");
         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)");
 
@@ -176,6 +178,7 @@ public class UsersPgTest extends BaseTest {
     @Test(description = "USR-30")
     public void passwordValidation() {
         String username = Generator.randomAlphaNumeric(10);
+        String email = "system@gmail.com";
         ArrayList<String> passToValidate = new ArrayList<>(Arrays.asList("qwqw",
                 "QWERQWERQWERQWERQWERQWERQWERQWE33",
 //				"QWERTYUIOP",
@@ -191,7 +194,7 @@ public class UsersPgTest extends BaseTest {
         usersPage.clickVoidSpace();
 
         UserPopup popup = usersPage.clickNew();
-        popup.fillDetailsForm(username);
+        popup.fillDetailsForm(username,email);
         popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
         popup.clickOK();
         usersPage.clickSave().confirm();
@@ -208,7 +211,7 @@ public class UsersPgTest extends BaseTest {
             popup.clickClosePasswordDialog();
             popup.clickCancel();
 
-            soft.assertTrue(!popup.isChangePasswordActive(), String.format("ChangePassword button should be disabled until valid data is filled in the popup - %s ", pass));
+            soft.assertTrue(!popup.isChangedPasswordActive(), 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));
         }
 
@@ -317,6 +320,17 @@ public class UsersPgTest extends BaseTest {
         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\"");
+        popup.clickCancel();
+        int index2 = page.grid().scrollToUserWithRole("SERVICE_GROUP_ADMIN");
+
+        page.grid().selectRow(index2);
+        popup = page.clickEdit();
+
+        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();
     }
@@ -515,18 +529,19 @@ public class UsersPgTest extends BaseTest {
         soft.assertAll();
     }
 
-    @Test(description = "USR-121")
+    @Test(description = "USR-130")
     public void duplicateUserCreation() {
         SoftAssert soft = new SoftAssert();
         String userName = Generator.randomAlphaNumeric(10);
         String validPass = "Aabcdefghijklm1@";
+        String email = "system@gmail.com";
         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.fillDetailsForm(userName,email);
         popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
         popup.clickOK();
         soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
@@ -549,7 +564,7 @@ public class UsersPgTest extends BaseTest {
 
         page.clickNew();
 
-        popup.fillDetailsForm(userName);
+        popup.fillDetailsForm(userName,email);
         popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
         // popup.clickUserDetailsToggle();
         //popup.fillDetailsForm(userName);
@@ -560,18 +575,19 @@ public class UsersPgTest extends BaseTest {
         soft.assertAll();
     }
 
-    @Test(description = "USR-122")
+    @Test(description = "USR-140")
     public void verifyPasswordDoNotMatch() {
         String username = Generator.randomAlphaNumeric(10);
         String validPass = "Aabcdefghijklm1@";
         String confirmPass = "AS@!gh12fxghfnh43546";
+        String email = "system@gmail.com";
         String errorMsg = "Confirm valued does not match new password!";
         String adminPass = "123456";
         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.fillDetailsForm(username,email);
         popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
         popup.clickOK();
         soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled");
@@ -589,10 +605,11 @@ public class UsersPgTest extends BaseTest {
         soft.assertAll();
     }
 
-    @Test(description = "USR-123")
+    @Test(description = "USR-150")
     public void verifySuspendedUserwithoutPassword() {
         String username = Generator.randomAlphaNumeric(10);
         String password = "Aabcdefghijklm1@";
+        String email = "system@gmail.com";
 
         SoftAssert soft = new SoftAssert();
 
@@ -600,7 +617,7 @@ 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.fillDetailsForm(username,email);
         popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
         popup.clickOK();
 
@@ -647,4 +664,117 @@ public class UsersPgTest extends BaseTest {
 
         soft.assertAll();
     }
+
+   /* @Test(description = "USR-124")
+    public void creteInvalidUser() {
+
+        ArrayList<String> usernameToValidate = new ArrayList<>(Arrays.asList("qwq",
+                "QWERQWERQWERQWERQWERQWERQWERQWE33s",
+                "~1a#2d2dds"));
+        SoftAssert soft = new SoftAssert();
+        UsersPage usersPage = new UsersPage(driver);
+        usersPage.clickVoidSpace();
+        UserPopup popup = usersPage.clickNew();
+        for (String username : usernameToValidate) {
+            popup.fillDetailsForm(username);
+            popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
+            soft.assertTrue(!popup.isOKButtonActive(), "OK button is active after putting the invalidusername");
+            soft.assertEquals(popup.getUsernameValidationError(),SMPMessages.USERNAME_VALIDATION_MESSAGE,String.format("Username policy message is displayed - %s", username));
+        }
+    }*/
+
+    @Test(description = "USR-160")
+    public void userPageUIAppearanceAndBehaviour(){
+        SoftAssert soft = new SoftAssert();
+
+        UsersPage page = new UsersPage(driver);
+        soft.assertTrue(page.isLoaded());
+        soft.assertTrue(page.isNewButtonEnabled(), "New button is not enable");
+        soft.assertTrue(page.isEditTruststoreButtonEnabled(),"EditTruststore Button is not enabled");
+        soft.assertTrue(page.isDeleteButtonVisibled(),"Delete button is not visibled");
+        soft.assertTrue(page.isEditButtonVisibled(), "Edit button is not visibled");
+        soft.assertTrue(page.isSaveButtonVisibled(),"Save button is not visibled");
+        soft.assertTrue(page.isCancelButtonVisibled(), "Cancel button is not visibled");
+        soft.assertTrue(!page.isEditButtonEnabled(), "Edit button is  enabled");
+        soft.assertTrue(!page.isSaveButtonEnabled(),"Save button is  enabled");
+        soft.assertTrue(!page.isCancelButtonEnabled(), "Cancel button is  enabled");
+        int index = 0;
+        page.grid().selectRow(index);
+        soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is not enabled after row select(2)");
+        soft.assertTrue(page.isEditButtonEnabled(), "Edit button is not enabled after row select(2)");
+
+
+        soft.assertAll();
+    }
+
+    @Test(description = "USR-170")
+    public void editUserUIAppearanceAndBehaviour(){
+        SoftAssert soft = new SoftAssert();
+        UsersPage page = new UsersPage(driver);
+        soft.assertTrue(page.isLoaded());
+        String username = Generator.randomAlphaNumeric(10);
+        String email = "system@gmail.com";
+        UserPopup popup = page.clickNew();
+        soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");
+        popup.fillDetailsForm(username,email);
+        popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
+        popup.clickOK();
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+        soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled");
+
+        page.clickSave().confirm();
+
+        soft.assertTrue(!page.alertArea.getAlertMessage().isError(), "Message listed is success");
+        soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message listed is as expected");
+
+        int index = page.grid().scrollToUser(username);
+        page.grid().selectRow(index);
+        popup = page.clickEdit();
+        soft.assertTrue(!popup.isUsernameFieldEnabled(),"Username field is enabled for an existing user");
+        soft.assertTrue(popup.isEmailFieldEnabled(),"Email field is not enabled for an existing user");
+        soft.assertTrue(popup.isRoleSelectFieldEnabled(),"Role field is not enabled for an existing user");
+        soft.assertTrue(popup.isSetOrChangePassOptionBtnEnabled(),"SetOrChangePassOptionBtn field is not enabled for an existing user");
+        soft.assertTrue(popup.isRegenerateAccesstokenBtnEnabled(),"Email field is not enabled for an existing user");
+        soft.assertTrue(popup.isOKButtonActive(),"Ok btn is not enabled for an existing user in user popup");
+        soft.assertTrue(popup.isCancelButtonActive(),"Cancel btn is not enabled for an existing user in user popup");
+        soft.assertTrue(popup.isImportButtonActive(),"Import btn is not enabled for an existing user in user popup");
+        if(page.grid().userHasCertificate(index)) {
+            soft.assertTrue(popup.isShowDetailsButtonActive(), "ShowDetails btn is not enabled for an existing user in user popup");
+            soft.assertTrue(popup.isClearButtonActive(), "Clear btn is not enabled for an existing user in user popup");
+        }
+        else{
+            soft.assertTrue(!popup.isShowDetailsButtonActive(), "ShowDetails btn is enabled for an existing user in user popup");
+            soft.assertTrue(!popup.isClearButtonActive(), "Clear btn is enabled for an existing user in user popup");
+
+        }
+
+        soft.assertAll();
+
+
+    }
+
+    @Test(description = "USR-180")
+    public void userEmailValidation(){
+        SoftAssert soft = new SoftAssert();
+        UsersPage page = new UsersPage(driver);
+        soft.assertTrue(page.isLoaded());
+        String username = Generator.randomAlphaNumeric(10);
+        ArrayList<String> email = new ArrayList<>(Arrays.asList("sdfdgfdghxvfv@gmail.c",
+                "sdfdgfdghxvfv$gmail.com",
+                 "hdbvsdkvdsvf",
+                  "dshujhfgbid@gmail.co",
+                  "sdfdgfdghxvfv@cmail.com"));
+        UserPopup popup = page.clickNew();
+        soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");
+        for(String emailId:email)
+        {
+            popup.fillDetailsForm(username,emailId);
+            popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
+           soft.assertTrue(!popup.isOKButtonActive(),"OK button is active after s4ending invalid email");
+           soft.assertEquals(popup.userEmailValidationGetErrMsg(),SMPMessages.USER_EMAIL_VALIDATION_MESSAGE,"Message is not in the list");
+        }
+        soft.assertAll();
+    }
+
+
 }
-- 
GitLab