From 21ecbd5e3289a4be770dd4eae8dc2190d81ca79a Mon Sep 17 00:00:00 2001 From: Jayesh Kharode Date: Tue, 23 Jan 2024 13:39:03 +0530 Subject: [PATCH 1/9] MOSIP-31085 Signed-off-by: Jayesh Kharode --- .../pmpui/kernel/util/ConfigManager.java | 135 ++++++++++++++++++ .../pmpui/testcase/AdminAuthPolicyTest.java | 3 +- .../testcase/AdminDataSharePolicyTest.java | 3 +- .../testcase/PartnerRegisterAuthCredTest.java | 5 +- .../testcase/PartnerRegisterFTMTest.java | 5 +- .../PartnerRegisterSbiDeviceTest.java | 5 +- .../io/mosip/testrig/pmpui/testcase/TBD.java | 5 +- .../testrig/pmpui/utility/BaseClass.java | 44 +++--- .../mosip/testrig/pmpui/utility/Commons.java | 20 +-- .../mosip/testrig/pmpui/utility/JsonUtil.java | 23 ++- .../pmpui/utility/RegisterBaseClass.java | 26 ++-- 11 files changed, 206 insertions(+), 68 deletions(-) diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/kernel/util/ConfigManager.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/kernel/util/ConfigManager.java index 471ad0623..7d822fac8 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/kernel/util/ConfigManager.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/kernel/util/ConfigManager.java @@ -99,6 +99,42 @@ public class ConfigManager { // private static String pms_client_secret; // private static String pms_client_id; // private static String pms_app_id; + + + private static String HolidayDateCenter = "holidayDateCenter"; + private static String HolidayDate = "holidayDate"; + private static String Preappend = "preappend"; + private static String Splitdigit = "splitdigit"; + private static String JsonObjName = "jsonObjName"; + private static String Bulkwait = "bulkwait"; + private static String SbivalidDate = "sbivalidDate"; + private static String PublicKey = "publicKey"; + private static String SignPublicKey = "signPublicKey"; + private static String Headless = "headless"; + private static String Docker = "docker"; + private static String Langcode = "langcode"; + private static String SbiexpiryDate = "sbiexpiryDate";//loginlang + private static String Loginlang = "loginlang"; + private static String PolicyData = "policyData";//loginlang + private static String DataSharepolicyData = "dataSharepolicyData"; + + + private static String loginlang; + private static String langcode; + private static String docker; + private static String headless; + private static String signPublicKey; + private static String publicKey; + private static String sbivalidDate; + private static String bulkwait; + private static String sbiexpiryDate; + private static String jsonObjName; + private static String splitdigit; + private static String preappend; + private static String holidayDate; + private static String holidayDateCenter; + private static String policyData; + private static String dataSharepolicyData; // // private static String resident_client_secret; // private static String resident_client_id; @@ -356,6 +392,105 @@ public static void init() { //enableDebug threadCount langselect + holidayDateCenter =System.getenv(HolidayDateCenter) == null ? propsKernel.getProperty(HolidayDateCenter) : System.getenv(HolidayDateCenter); + propsKernel.setProperty(HolidayDateCenter, holidayDateCenter); + + holidayDate =System.getenv(HolidayDate) == null ? propsKernel.getProperty(HolidayDate) : System.getenv(HolidayDate); + propsKernel.setProperty(HolidayDate, holidayDate); + + preappend =System.getenv(Preappend) == null ? propsKernel.getProperty(Preappend) : System.getenv(Preappend); + propsKernel.setProperty(Preappend, preappend); + + splitdigit =System.getenv(Splitdigit) == null ? propsKernel.getProperty(Splitdigit) : System.getenv(Splitdigit); + propsKernel.setProperty(Splitdigit, splitdigit); + + jsonObjName =System.getenv(JsonObjName) == null ? propsKernel.getProperty(JsonObjName) : System.getenv(JsonObjName); + propsKernel.setProperty(JsonObjName, jsonObjName); + + bulkwait =System.getenv(Bulkwait) == null ? propsKernel.getProperty(Bulkwait) : System.getenv(Bulkwait); + propsKernel.setProperty(Bulkwait, bulkwait); + + + + sbivalidDate =System.getenv(SbivalidDate) == null ? propsKernel.getProperty(SbivalidDate) : System.getenv(SbivalidDate); + propsKernel.setProperty(SbivalidDate, sbivalidDate); + + sbiexpiryDate =System.getenv(SbiexpiryDate) == null ? propsKernel.getProperty(SbiexpiryDate) : System.getenv(SbiexpiryDate); + propsKernel.setProperty(SbiexpiryDate, sbiexpiryDate); + + publicKey =System.getenv(PublicKey) == null ? propsKernel.getProperty(PublicKey) : System.getenv(PublicKey); + propsKernel.setProperty(PublicKey, publicKey); + + signPublicKey =System.getenv(SignPublicKey) == null ? propsKernel.getProperty(SignPublicKey) : System.getenv(SignPublicKey); + propsKernel.setProperty(SignPublicKey, signPublicKey); + + headless =System.getenv(Headless) == null ? propsKernel.getProperty(Headless) : System.getenv(Headless); + propsKernel.setProperty(Headless, headless); + + docker =System.getenv(Docker) == null ? propsKernel.getProperty(Docker) : System.getenv(Docker); + propsKernel.setProperty(Docker, docker); + + langcode =System.getenv(Langcode) == null ? propsKernel.getProperty(Langcode) : System.getenv(Langcode); + propsKernel.setProperty(Langcode, langcode); + + loginlang =System.getenv(Loginlang) == null ? propsKernel.getProperty(Loginlang) : System.getenv(Loginlang); + propsKernel.setProperty(Loginlang, loginlang); + + policyData =System.getenv(PolicyData) == null ? propsKernel.getProperty(PolicyData) : System.getenv(PolicyData); + propsKernel.setProperty(PolicyData, policyData); + + dataSharepolicyData =System.getenv(DataSharepolicyData) == null ? propsKernel.getProperty(DataSharepolicyData) : System.getenv(DataSharepolicyData); + propsKernel.setProperty(DataSharepolicyData, dataSharepolicyData); + + } + public static String getpolicyData() { + return policyData; + } + public static String getdataSharepolicyData() { + return dataSharepolicyData; + } + public static String getloginlang() { + return loginlang; + } + public static String getlangcode() { + return langcode; + } + public static String getdocker() { + return docker; + } + public static String getheadless() { + return headless; + } + public static String getsignPublicKey() { + return signPublicKey; + } + public static String getpublicKey() { + return publicKey; + } + public static String getsbivalidDate() { + return sbivalidDate; + } + public static String getsbiexpiryDate() { + return sbiexpiryDate; + } + + public static String getbulkwait() { + return bulkwait; + } + public static String getjsonObjName() { + return jsonObjName; + } + public static String getsplitdigit() { + return splitdigit; + } + public static String getpreappend() { + return preappend; + } + public static String getholidayDate() { + return holidayDate; + } + public static String getholidayDateCenter() { + return holidayDateCenter; } // public static String getAuthDemoServicePort() { diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminAuthPolicyTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminAuthPolicyTest.java index ab213a166..1ba8caa6f 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminAuthPolicyTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminAuthPolicyTest.java @@ -6,6 +6,7 @@ import com.aventstack.extentreports.Status; +import io.mosip.testrig.pmpui.kernel.util.ConfigManager; import io.mosip.testrig.pmpui.utility.BaseClass; import io.mosip.testrig.pmpui.utility.Commons; import io.mosip.testrig.pmpui.utility.JsonUtil; @@ -33,7 +34,7 @@ public void adminAuthPolicyTest() throws InterruptedException{ String policyData; try { - policyData = JsonUtil.JsonObjParsing(Commons.getTestData(),"policyData"); + policyData = ConfigManager.getpolicyData(); Commons.enter(test,driver, By.id("policies"), policyData); } catch (Exception e) { // TODO Auto-generated catch block diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDataSharePolicyTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDataSharePolicyTest.java index ec3b0b66f..0ec5f979b 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDataSharePolicyTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDataSharePolicyTest.java @@ -6,6 +6,7 @@ import com.aventstack.extentreports.Status; +import io.mosip.testrig.pmpui.kernel.util.ConfigManager; import io.mosip.testrig.pmpui.utility.BaseClass; import io.mosip.testrig.pmpui.utility.Commons; import io.mosip.testrig.pmpui.utility.JsonUtil; @@ -33,7 +34,7 @@ public void adminDataSharePolicyTest() throws InterruptedException { test.log(Status.INFO, "Dropdoen selected"); String dataSharepolicyData; try { - dataSharepolicyData = JsonUtil.JsonObjParsing(Commons.getTestData(),"dataSharepolicyData"); + dataSharepolicyData =ConfigManager.getdataSharepolicyData(); Commons.enter(test,driver, By.id("policies"), dataSharepolicyData); Thread.sleep(500); } catch (Exception e) { diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterAuthCredTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterAuthCredTest.java index 28a229e55..298bf6eb3 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterAuthCredTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterAuthCredTest.java @@ -9,6 +9,7 @@ import com.aventstack.extentreports.Status; +import io.mosip.testrig.pmpui.kernel.util.ConfigManager; import io.mosip.testrig.pmpui.utility.Commons; import io.mosip.testrig.pmpui.utility.JsonUtil; import io.mosip.testrig.pmpui.utility.RealTimeReport; @@ -107,8 +108,8 @@ public void partnerRegisterAuthCredTest(String cer) throws InterruptedException, Commons.enter(test,driver, By.xpath("//input[@id='swVersion']"), data); Commons.enter(test,driver, By.xpath("//input[@id='swBinaryHash']"), data); - Commons.enter(test,driver, By.xpath("//input[@id='swCreateDateTime']"), JsonUtil.JsonObjParsing(Commons.getTestData(),"sbivalidDate")); - Commons.enter(test,driver, By.xpath("//input[@id='swExpiryDateTime']"), JsonUtil.JsonObjParsing(Commons.getTestData(),"sbiexpiryDate")); + Commons.enter(test,driver, By.xpath("//input[@id='swCreateDateTime']"),ConfigManager.getsbivalidDate()); + Commons.enter(test,driver, By.xpath("//input[@id='swExpiryDateTime']"), ConfigManager.getsbiexpiryDate()); Commons.click(test,driver, By.xpath("//button[@id='createButton']")); Commons.click(test,driver, By.xpath("//button[@id='confirmmessagepopup']")); Thread.sleep(3000); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterFTMTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterFTMTest.java index c3099d66d..e230f95de 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterFTMTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterFTMTest.java @@ -9,6 +9,7 @@ import com.aventstack.extentreports.Status; +import io.mosip.testrig.pmpui.kernel.util.ConfigManager; import io.mosip.testrig.pmpui.utility.Commons; import io.mosip.testrig.pmpui.utility.JsonUtil; import io.mosip.testrig.pmpui.utility.RealTimeReport; @@ -107,8 +108,8 @@ public void partnerRegisterFTMTest(String cer) throws InterruptedException, AWTE Commons.enter(test,driver, By.xpath("//input[@id='swVersion']"), data); Commons.enter(test,driver, By.xpath("//input[@id='swBinaryHash']"), data); - Commons.enter(test,driver, By.xpath("//input[@id='swCreateDateTime']"), JsonUtil.JsonObjParsing(Commons.getTestData(),"sbivalidDate")); - Commons.enter(test,driver, By.xpath("//input[@id='swExpiryDateTime']"), JsonUtil.JsonObjParsing(Commons.getTestData(),"sbiexpiryDate")); + Commons.enter(test,driver, By.xpath("//input[@id='swCreateDateTime']"), ConfigManager.getsbivalidDate()); + Commons.enter(test,driver, By.xpath("//input[@id='swExpiryDateTime']"),ConfigManager.getsbiexpiryDate()); Commons.click(test,driver, By.xpath("//button[@id='createButton']")); Commons.click(test,driver, By.xpath("//button[@id='confirmmessagepopup']")); Thread.sleep(3000); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterSbiDeviceTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterSbiDeviceTest.java index 53d602486..7e9cbd47c 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterSbiDeviceTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterSbiDeviceTest.java @@ -9,6 +9,7 @@ import com.aventstack.extentreports.Status; +import io.mosip.testrig.pmpui.kernel.util.ConfigManager; import io.mosip.testrig.pmpui.utility.Commons; import io.mosip.testrig.pmpui.utility.JsonUtil; import io.mosip.testrig.pmpui.utility.RealTimeReport; @@ -107,8 +108,8 @@ public void partnerRegisterSbiDeviceTest(String cer) throws InterruptedException Commons.enter(test,driver, By.xpath("//input[@id='swVersion']"), data); Commons.enter(test,driver, By.xpath("//input[@id='swBinaryHash']"), data); - Commons.enter(test,driver, By.xpath("//input[@id='swCreateDateTime']"), JsonUtil.JsonObjParsing(Commons.getTestData(),"sbivalidDate")); - Commons.enter(test,driver, By.xpath("//input[@id='swExpiryDateTime']"), JsonUtil.JsonObjParsing(Commons.getTestData(),"sbiexpiryDate")); + Commons.enter(test,driver, By.xpath("//input[@id='swCreateDateTime']"),ConfigManager.getsbivalidDate()); + Commons.enter(test,driver, By.xpath("//input[@id='swExpiryDateTime']"),ConfigManager.getsbiexpiryDate()); Commons.click(test,driver, By.xpath("//button[@id='createButton']")); Commons.click(test,driver, By.xpath("//button[@id='confirmmessagepopup']")); Thread.sleep(3000); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/TBD.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/TBD.java index 31bac03ef..5ab85852e 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/TBD.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/TBD.java @@ -7,6 +7,7 @@ import org.testng.annotations.Listeners; import org.testng.annotations.Test; +import io.mosip.testrig.pmpui.kernel.util.ConfigManager; import io.mosip.testrig.pmpui.utility.Commons; import io.mosip.testrig.pmpui.utility.JsonUtil; import io.mosip.testrig.pmpui.utility.RealTimeReport; @@ -102,8 +103,8 @@ public void registerCRUD(String cer) throws InterruptedException, AWTException{ Commons.enter(test,driver, By.xpath("//input[@id='swVersion']"), data); Commons.enter(test,driver, By.xpath("//input[@id='swBinaryHash']"), data); - Commons.enter(test,driver, By.xpath("//input[@id='swCreateDateTime']"), JsonUtil.JsonObjParsing(Commons.getTestData(),"sbivalidDate")); - Commons.enter(test,driver, By.xpath("//input[@id='swExpiryDateTime']"), JsonUtil.JsonObjParsing(Commons.getTestData(),"sbiexpiryDate")); + Commons.enter(test,driver, By.xpath("//input[@id='swCreateDateTime']"),ConfigManager.getsbivalidDate()); + Commons.enter(test,driver, By.xpath("//input[@id='swExpiryDateTime']"),ConfigManager.getsbiexpiryDate()); Commons.click(test,driver, By.xpath("//button[@id='createButton']")); Commons.click(test,driver, By.xpath("//button[@id='confirmmessagepopup']")); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/BaseClass.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/BaseClass.java index 13b649987..15d758366 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/BaseClass.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/BaseClass.java @@ -41,9 +41,7 @@ public class BaseClass { public static ExtentReports extent; public static ExtentTest test; private static final Logger logger = Logger.getLogger(BaseClass.class); - public void setLangcode(String langcode) throws Exception { - this.langcode = Commons.getFieldData("langcode"); - } + @BeforeMethod @@ -57,25 +55,23 @@ public void setUp() throws Exception { test=extent.createTest(env,getCommitId()); logger.info("Start set up"); - if(System.getProperty("os.name").equalsIgnoreCase("Linux")) { - - if(JsonUtil.JsonObjParsing(Commons.getTestData(),"Docker").equals("yes")) { - logger.info("Docker start"); - String configFilePath ="/usr/bin/chromedriver"; - System.setProperty("webdriver.chrome.driver", configFilePath); - }else { - WebDriverManager.chromedriver().setup(); - } + if(System.getProperty("os.name").equalsIgnoreCase("Linux") && ConfigManager.getdocker().equals("yes") ) { + + + logger.info("Docker start"); + String configFilePath ="/usr/bin/chromedriver"; + System.setProperty("webdriver.chrome.driver", configFilePath); + }else { WebDriverManager.chromedriver().setup(); logger.info("window chrome driver start"); } ChromeOptions options = new ChromeOptions(); - String headless=JsonUtil.JsonObjParsing(Commons.getTestData(),"headless"); + String headless=ConfigManager.getheadless(); if(headless.equalsIgnoreCase("yes")) { logger.info("Running is headless mode"); options.addArguments("--headless", "--disable-gpu","--no-sandbox", "--window-size=1920x1080","--disable-dev-shm-usage"); - + } driver=new ChromeDriver(options); @@ -89,21 +85,17 @@ public void setUp() throws Exception { //driver.findElement(By.linkText("Admin")).click(); String language1 = null; try { - //String loginlang = JsonUtil.JsonObjParsing(Commons.getTestData(),"loginlang"); - language1 = Commons.getFieldData("langcode"); + language1 = ConfigManager.getloginlang(); + String loginlang = null; System.out.println(language1); - if(!language1.equals("sin")) - {Commons.click(test,driver, By.xpath("//*[@id='kc-locale-dropdown']")); - String var = "//li/a[contains(text(),'" + language1 + "')]"; - Commons.click(test,driver, By.xpath(var)); + if(!language1.equals("sin")) { + loginlang = JsonUtil.JsonObjArrayListParsing2(ConfigManager.getlangcode()); + Commons.click(test,driver, By.xpath("//*[@id='kc-locale-dropdown']")); + String var = "//li/a[contains(text(),'" + loginlang + "')]"; + Commons.click(test,driver, By.xpath(var)); } - // - // if(!language1.equals("sin")) - // {Commons.click(driver, By.xpath("//*[@class='kc-dropdown']")); - // String var = "//*[@class='kc-dropdown-item']/a[contains(text(),'" + language1 + "')]"; - // Commons.click(driver, By.xpath(var)); - // } + } catch (Exception e) { e.getMessage(); } diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java index ecc9be71e..7a0583e11 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java @@ -24,6 +24,8 @@ import com.aventstack.extentreports.ExtentTest; import com.aventstack.extentreports.MediaEntityBuilder; +import io.mosip.testrig.pmpui.kernel.util.ConfigManager; + public class Commons extends BaseClass { private static final Logger logger = Logger.getLogger(Commons.class); public static String appendDate=getPreAppend()+getDateTime(); @@ -365,21 +367,9 @@ public static String getTestData() - public static String getFieldData(String idfield) throws Exception - { - return JsonUtil.JsonObjSimpleParsing(getTestData(), idfield); - } - - public static void clickSpan(ExtentTest test,WebDriver driver,String key) throws Exception { - - String val=Commons.getFieldData(key); - String var="//span[contains(text(),'"+ val+ "')]"; - Commons.click(test,driver,By.xpath(var)); - logger.info("clickSpan" + var ); - - } + public static void deactivate(ExtentTest test,WebDriver driver) throws InterruptedException { Commons.click(test,driver,By.id("ellipsis-button0")); @@ -625,7 +615,7 @@ public static String getPreAppend() { String preappend = null; try { - preappend = JsonUtil.JsonObjParsing(getTestData(),"preappend"); + preappend = ConfigManager.getpreappend(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -636,7 +626,7 @@ public static int getSplitdigit() { String splitdigit = null; try { - splitdigit = JsonUtil.JsonObjParsing(getTestData(),"splitdigit"); + splitdigit = ConfigManager.getsplitdigit(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/JsonUtil.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/JsonUtil.java index 6fa3802e8..46bf2638e 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/JsonUtil.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/JsonUtil.java @@ -15,6 +15,8 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; +import io.mosip.testrig.pmpui.kernel.util.ConfigManager; + public class JsonUtil { private static final org.slf4j.Logger logger= org.slf4j.LoggerFactory.getLogger(JsonUtil.class); @@ -117,7 +119,26 @@ public static List JsonObjArrayListParsing(String jsonIdentity, String i return list; } - +public static String JsonObjArrayListParsing2(String a) throws Exception { + + + JSONArray jsonArray = new JSONArray(a); + + + + for (int i = 0, size = jsonArray.length(); i < size; i++) { + JSONObject idItem = jsonArray.getJSONObject(i); + String lang = idItem.getString("language"); + String val = idItem.getString("value"); + if (lang.equals(ConfigManager.getloginlang())) { + return val; + } + + } + return ""; + + + } public static String readJsonFileText(String document) { String jsonTxt = null; diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/RegisterBaseClass.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/RegisterBaseClass.java index 18b3e461c..1ca0fd750 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/RegisterBaseClass.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/RegisterBaseClass.java @@ -43,9 +43,7 @@ public class RegisterBaseClass { public static ExtentReports extent; public static ExtentTest test; private static final org.slf4j.Logger logger= org.slf4j.LoggerFactory.getLogger(Commons.class); - public void setLangcode(String langcode) throws Exception { - this.langcode = Commons.getFieldData("langcode"); - } + @BeforeMethod @@ -60,29 +58,25 @@ public void setUp() throws Exception { test=extent.createTest(env,getCommitId()); logger.info("Start set up"); - if(System.getProperty("os.name").equalsIgnoreCase("Linux")) { - - if(JsonUtil.JsonObjParsing(Commons.getTestData(),"Docker").equals("yes")) { - logger.info("Docker start"); - String configFilePath ="/usr/bin/chromedriver"; - System.setProperty("webdriver.chrome.driver", configFilePath); - }else { - WebDriverManager.chromedriver().setup(); - } + if(System.getProperty("os.name").equalsIgnoreCase("Linux") && ConfigManager.getdocker().equals("yes") ) { + + + logger.info("Docker start"); + String configFilePath ="/usr/bin/chromedriver"; + System.setProperty("webdriver.chrome.driver", configFilePath); + }else { WebDriverManager.chromedriver().setup(); logger.info("window chrome driver start"); } ChromeOptions options = new ChromeOptions(); - String headless=JsonUtil.JsonObjParsing(Commons.getTestData(),"headless"); + String headless=ConfigManager.getheadless(); if(headless.equalsIgnoreCase("yes")) { logger.info("Running is headless mode"); options.addArguments("--headless", "--disable-gpu","--no-sandbox", "--window-size=1920x1080","--disable-dev-shm-usage"); - + } - - driver=new ChromeDriver(options); js = (JavascriptExecutor) driver; vars = new HashMap(); From 87b1e9c751edbe1dd6de312226beca4127c9b12d Mon Sep 17 00:00:00 2001 From: Jayesh Kharode Date: Thu, 25 Jan 2024 13:48:59 +0530 Subject: [PATCH 2/9] MOSIP-31295 Signed-off-by: Jayesh Kharode --- .../pmpui/kernel/util/ConfigManager.java | 861 +++++++++--------- .../pmpui/testcase/AdminAuthPolicyTest.java | 4 +- .../testcase/AdminDataSharePolicyTest.java | 4 +- .../testcase/AdminDeviceDetailsTest.java | 4 +- .../pmpui/testcase/AdminFtmDetailsTest.java | 4 +- .../AdminPartnerPolicyMappingTest.java | 4 +- .../pmpui/testcase/AdminPolicyGroupTest.java | 4 +- .../pmpui/testcase/AdminUploadCaCertTest.java | 3 +- .../testcase/PartnerLoginAuthCredTest.java | 3 +- .../testcase/PartnerRegisterAuthCredTest.java | 3 +- .../testcase/PartnerRegisterFTMTest.java | 3 +- .../PartnerRegisterSbiDeviceTest.java | 3 +- .../io/mosip/testrig/pmpui/testcase/TBD.java | 3 +- .../mosip/testrig/pmpui/utility/Commons.java | 609 +++++++------ .../pmpui/utility/RegisterBaseClass.java | 2 - .../testrig/pmpui/utility/Screenshot.java | 10 +- .../testrig/pmpui/utility/TestRunner.java | 247 +++-- .../main/resources/config/Kernel.properties | 22 +- .../resources/config/kernel_dev2.properties | 135 +++ 19 files changed, 1118 insertions(+), 810 deletions(-) create mode 100644 pmptest/src/main/resources/config/kernel_dev2.properties diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/kernel/util/ConfigManager.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/kernel/util/ConfigManager.java index 7d822fac8..9fa48cdb4 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/kernel/util/ConfigManager.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/kernel/util/ConfigManager.java @@ -14,47 +14,47 @@ public class ConfigManager { private static final org.slf4j.Logger logger= org.slf4j.LoggerFactory.getLogger(ConfigManager.class); - + private static String IAM_ADMINPORTAL_PATH = "PmpPortalPath"; - + private static String IAM_APIENVUSER = "apiEnvUser"; private static String IAM_APIINTERNALENDPOINT = "apiInternalEndPoint"; private static String MOSIP_IDREPO_CLIENT_SECRET = "mosip_idrepo_client_secret"; private static String MOSIP_IDREPO_CLIENT_ID = "mosip_idrepo_client_id"; private static String MOSIP_IDREPO_APP_ID = "mosip_idrepo_app_id"; -// - + // + private static String MOSIP_ADMIN_CLIENT_SECRET = "mosip_admin_client_secret"; private static String MOSIP_ADMIN_CLIENT_ID = "mosip_admin_client_id"; private static String MOSIP_ADMIN_APP_ID = "mosip_admin_app_id"; -// -// private static String MOSIP_REG_CLIENT_SECRET = "mosip_reg_client_secret"; -// private static String MOSIP_REG_CLIENT_ID = "mosip_reg_client_id"; -// private static String MOSIP_REGCLIENT_APP_ID = "mosip_regclient_app_id"; -// -// private static String MOSIP_IDA_CLIENT_SECRET = "mosip_ida_client_secret"; -// private static String MOSIP_IDA_CLIENT_ID = "mosip_ida_client_id"; -// private static String MOSIP_IDA_APP_ID = "mosip_ida_app_id"; -// -// private static String MOSIP_HOTLIST_CLIENT_SECRET = "mosip_hotlist_client_secret"; -// private static String MOSIP_HOTLIST_CLIENT_ID = "mosip_hotlist_client_id"; -// private static String MOSIP_HOTLIST_APP_ID = "mosip_hotlist_app_id"; -// + // + // private static String MOSIP_REG_CLIENT_SECRET = "mosip_reg_client_secret"; + // private static String MOSIP_REG_CLIENT_ID = "mosip_reg_client_id"; + // private static String MOSIP_REGCLIENT_APP_ID = "mosip_regclient_app_id"; + // + // private static String MOSIP_IDA_CLIENT_SECRET = "mosip_ida_client_secret"; + // private static String MOSIP_IDA_CLIENT_ID = "mosip_ida_client_id"; + // private static String MOSIP_IDA_APP_ID = "mosip_ida_app_id"; + // + // private static String MOSIP_HOTLIST_CLIENT_SECRET = "mosip_hotlist_client_secret"; + // private static String MOSIP_HOTLIST_CLIENT_ID = "mosip_hotlist_client_id"; + // private static String MOSIP_HOTLIST_APP_ID = "mosip_hotlist_app_id"; + // private static String MOSIP_AUTOMATION_CLIENT_SECRET = "mosip_testrig_client_secret"; private static String MOSIP_AUTOMATION_CLIENT_ID = "mosip_testrig_client_id"; -// private static String MOSIP_AUTOMATION_APP_ID = "mosip_automation_app_id"; -// + // private static String MOSIP_AUTOMATION_APP_ID = "mosip_automation_app_id"; + // private static String S3_HOST = "s3-host"; private static String S3_REGION = "s3-region"; private static String S3_USER_KEY = "s3-user-key"; private static String S3_SECRET_KEY = "s3-user-secret"; private static String S3_ACCOUNT = "s3-account"; private static String PUSH_TO_S3 = "push-reports-to-s3"; -// private static String ENABLE_DEBUG = "enableDebug"; -// private static String THREAD_COUNT = "threadCount"; -// private static String LANG_SELECT = "langselect"; -// -// + // private static String ENABLE_DEBUG = "enableDebug"; + // private static String THREAD_COUNT = "threadCount"; + // private static String LANG_SELECT = "langselect"; + // + // private static String DB_PORT = "db-port"; private static String DB_DOMAIN = "db-server"; private static String HIBERNATE_CONNECTION_DRIVER_CLASS = "hibernate.connection.driver_class"; @@ -62,45 +62,45 @@ public class ConfigManager { private static String HIBERNATE_DIALECT = "hibernate.dialect"; private static String HIBERNATE_SHOW_SQL = "hibernate.show_sql"; private static String HIBERNATE_CONTEXT_CLASS = "hibernate.current_session_context_class"; -// -// private static String AUDIT_DB_USER = "db-su-user"; -// private static String AUDIT_DB_PASS = "postgresql-password"; -// private static String AUDIT_DB_SCHEMA = "audit_db_schema"; -// -// private static String IDA_DB_USER = "db-su-user"; -// private static String IDA_DB_PASS = "postgresql-password"; -// private static String IDA_DB_SCHEMA = "ida_db_schema"; -// -// private static String PMS_DB_USER = "db-su-user"; -// private static String PMS_DB_PASS = "postgresql-password"; -// private static String PMS_DB_SCHEMA = "pms_db_schema"; -// -// private static String KM_DB_USER = "db-su-user"; -// private static String KM_DB_PASS = "postgresql-password"; -// private static String KM_DB_SCHEMA = "km_db_schema"; -// + // + // private static String AUDIT_DB_USER = "db-su-user"; + // private static String AUDIT_DB_PASS = "postgresql-password"; + // private static String AUDIT_DB_SCHEMA = "audit_db_schema"; + // + // private static String IDA_DB_USER = "db-su-user"; + // private static String IDA_DB_PASS = "postgresql-password"; + // private static String IDA_DB_SCHEMA = "ida_db_schema"; + // + // private static String PMS_DB_USER = "db-su-user"; + // private static String PMS_DB_PASS = "postgresql-password"; + // private static String PMS_DB_SCHEMA = "pms_db_schema"; + // + // private static String KM_DB_USER = "db-su-user"; + // private static String KM_DB_PASS = "postgresql-password"; + // private static String KM_DB_SCHEMA = "km_db_schema"; + // private static String MASTER_DB_USER = "db-su-user"; private static String MASTER_DB_PASS = "postgresql-password"; private static String MASTER_DB_SCHEMA = "master_db_schema"; -// + // private static String IAM_REALM_ID = "keycloak-realm-id"; private static String IAM_USERS_TO_CREATE = "iam-users-to-create"; private static String IAM_USERS_PASSWORD = "iam-users-password"; -// -// private static String AUTH_DEMO_SERVICE_PORT = "authDemoServicePort"; -// private static String AUTH_DEMO_SERVICE_BASE_URL = "authDemoServiceBaseURL"; -// private static String MOUNT_PATH = "mountPath"; -// private static String AUTHCERTS_PATH = "authCertsPath"; -// private static String MOUNT_PATH_FOR_SCENARIO = "mountPathForScenario"; -// -// private static String PACKET_UTILITY_BASE_URL = "packetUtilityBaseUrl"; + // + // private static String AUTH_DEMO_SERVICE_PORT = "authDemoServicePort"; + // private static String AUTH_DEMO_SERVICE_BASE_URL = "authDemoServiceBaseURL"; + // private static String MOUNT_PATH = "mountPath"; + // private static String AUTHCERTS_PATH = "authCertsPath"; + // private static String MOUNT_PATH_FOR_SCENARIO = "mountPathForScenario"; + // + // private static String PACKET_UTILITY_BASE_URL = "packetUtilityBaseUrl"; private static String REPORT_EXPIRATION_IN_DAYS = "reportExpirationInDays"; private static String SERVICES_NOT_DEPLOYED = "servicesNotDeployed"; -// private static String pms_client_secret; -// private static String pms_client_id; -// private static String pms_app_id; - - + // private static String pms_client_secret; + // private static String pms_client_id; + // private static String pms_app_id; + + private static String HolidayDateCenter = "holidayDateCenter"; private static String HolidayDate = "holidayDate"; private static String Preappend = "preappend"; @@ -117,8 +117,9 @@ public class ConfigManager { private static String Loginlang = "loginlang"; private static String PolicyData = "policyData";//loginlang private static String DataSharepolicyData = "dataSharepolicyData"; - - + private static String Testcases = "pmpscenariosToExecute"; + + private static String testcases; private static String loginlang; private static String langcode; private static String docker; @@ -135,50 +136,50 @@ public class ConfigManager { private static String holidayDateCenter; private static String policyData; private static String dataSharepolicyData; -// -// private static String resident_client_secret; -// private static String resident_client_id; -// private static String resident_app_id; -// -// private static String mpartner_mobile_client_id; -// private static String mpartner_mobile_client_secret; -// + // + // private static String resident_client_secret; + // private static String resident_client_id; + // private static String resident_app_id; + // + // private static String mpartner_mobile_client_id; + // private static String mpartner_mobile_client_secret; + // private static String idrepo_client_secret; private static String idrepo_client_id; private static String idrepo_app_id; -// - + // + private static String IAM_EXTERNAL_URL = "keycloak-external-url"; private static String admin_client_secret; private static String admin_client_id; private static String admin_app_id; -// -// private static String regproc_client_secret; -// private static String regproc_client_id; -// private static String regproc_app_id; -// -// private static String ida_client_secret; -// private static String ida_client_id; -// private static String ida_app_id; -// -// private static String hotlist_client_secret; -// private static String hotlist_client_id; -// private static String hotlist_app_id; -// + // + // private static String regproc_client_secret; + // private static String regproc_client_id; + // private static String regproc_app_id; + // + // private static String ida_client_secret; + // private static String ida_client_id; + // private static String ida_app_id; + // + // private static String hotlist_client_secret; + // private static String hotlist_client_id; + // private static String hotlist_app_id; + // private static String automation_client_secret; private static String automation_client_id; -// private static String automation_app_id; -// + // private static String automation_app_id; + // private static String s3_region; private static String s3_host; private static String s3_user_key; private static String s3_account; private static String s3_secret_key; private static String push_reports_to_s3; -// private static String enableDebug; -// private static String threadCount; -// private static String langselect; -// + // private static String enableDebug; + // private static String threadCount; + // private static String langselect; + // private static String serviceNotDeployedList; private static String enableDebug; private static String db_port; @@ -188,23 +189,23 @@ public class ConfigManager { private static String hibernate_dialect; private static String hibernate_show_sql; private static String hibernate_current_session_context_class; -// -// private static String audit_db_user; -// private static String audit_db_pass; -// private static String audit_db_schema; -// -// private static String ida_db_user; -// private static String ida_db_pass; -// private static String ida_db_schema; -// -// private static String pms_db_user; -// private static String pms_db_pass; -// private static String pms_db_schema; -// -// private static String km_db_user; -// private static String km_db_pass; -// private static String km_db_schema; -// + // + // private static String audit_db_user; + // private static String audit_db_pass; + // private static String audit_db_schema; + // + // private static String ida_db_user; + // private static String ida_db_pass; + // private static String ida_db_schema; + // + // private static String pms_db_user; + // private static String pms_db_pass; + // private static String pms_db_schema; + // + // private static String km_db_user; + // private static String km_db_pass; + // private static String km_db_schema; + // private static String master_db_user; private static String master_db_pass; private static String master_db_schema; @@ -216,13 +217,13 @@ public class ConfigManager { private static String iam_adminportal_path; private static String iam_apienvuser; private static String iam_apiinternalendpoint; -// private static String authDemoServicePort; -// private static String authDemoServiceBaseUrl; -// -// private static String mountPath; -// private static String authCertsPath; -// private static String mountPathForScenario; -// private static String packetUtilityBaseUrl; + // private static String authDemoServicePort; + // private static String authDemoServiceBaseUrl; + // + // private static String mountPath; + // private static String authCertsPath; + // private static String mountPathForScenario; + // private static String packetUtilityBaseUrl; public static Properties propsKernel; private static String reportExpirationInDays; @@ -242,39 +243,39 @@ public static String getValueForKey(String key) { public static void init() { // Loading Kernel property - + logger.info("file location for kernal"+TestRunner.getResourcePath() + "/config/"+TestRunner.GetKernalFilename()); propsKernel = getproperty(TestRunner.getResourcePath() + "/config/"+TestRunner.GetKernalFilename()); - - - + + + iamExternalURL =System.getenv(IAM_EXTERNAL_URL) == null ? propsKernel.getProperty(IAM_EXTERNAL_URL) - : System.getenv(IAM_EXTERNAL_URL); - - + : System.getenv(IAM_EXTERNAL_URL); + + logger.info("System.getenv(IAM_EXTERNAL_URL)=" + System.getenv(IAM_EXTERNAL_URL)); logger.info("iamExternalURL from getIAMUrl() =" + getIAMUrl()); -// pms_client_secret = getValueForKey(MOSIP_PMS_CLIENT_SECRET); -// pms_client_id = getValueForKey(MOSIP_PMS_CLIENT_ID); -// pms_app_id = getValueForKey(MOSIP_PMS_APP_ID); -// resident_client_secret = getValueForKey(MOSIP_RESIDENT_CLIENT_SECRET); -// resident_client_id = getValueForKey(MOSIP_RESIDENT_CLIENT_ID); -// resident_app_id = getValueForKey(MOSIP_RESIDENT_APP_ID); -// mpartner_mobile_client_id = getValueForKey(MOSIP_MOBILE_CLIENT_ID); -// mpartner_mobile_client_secret = getValueForKey(MOSIP_MOBILE_CLIENT_SECRET); + // pms_client_secret = getValueForKey(MOSIP_PMS_CLIENT_SECRET); + // pms_client_id = getValueForKey(MOSIP_PMS_CLIENT_ID); + // pms_app_id = getValueForKey(MOSIP_PMS_APP_ID); + // resident_client_secret = getValueForKey(MOSIP_RESIDENT_CLIENT_SECRET); + // resident_client_id = getValueForKey(MOSIP_RESIDENT_CLIENT_ID); + // resident_app_id = getValueForKey(MOSIP_RESIDENT_APP_ID); + // mpartner_mobile_client_id = getValueForKey(MOSIP_MOBILE_CLIENT_ID); + // mpartner_mobile_client_secret = getValueForKey(MOSIP_MOBILE_CLIENT_SECRET); iam_adminportal_path =System.getenv(IAM_ADMINPORTAL_PATH) == null ? propsKernel.getProperty(IAM_ADMINPORTAL_PATH) - : System.getenv(IAM_ADMINPORTAL_PATH); + : System.getenv(IAM_ADMINPORTAL_PATH); logger.info("adminportal_path from config manager::" + iam_adminportal_path); iam_apienvuser = System.getenv(IAM_APIENVUSER) == null ? propsKernel.getProperty(IAM_APIENVUSER) - : System.getenv(IAM_APIENVUSER); + : System.getenv(IAM_APIENVUSER); logger.info("apienvuser from config manager::" + iam_apienvuser); iam_apiinternalendpoint = System.getenv(IAM_APIINTERNALENDPOINT) == null ? propsKernel.getProperty(IAM_APIINTERNALENDPOINT) - : System.getenv(IAM_APIINTERNALENDPOINT); + : System.getenv(IAM_APIINTERNALENDPOINT); logger.info("apiinternalendpoint from config manager::" + iam_apiinternalendpoint); idrepo_client_secret = getValueForKey(MOSIP_IDREPO_CLIENT_SECRET); idrepo_client_id = getValueForKey(MOSIP_IDREPO_CLIENT_ID); @@ -282,18 +283,18 @@ public static void init() { admin_client_secret = getValueForKey(MOSIP_ADMIN_CLIENT_SECRET); admin_client_id = getValueForKey(MOSIP_ADMIN_CLIENT_ID); admin_app_id = getValueForKey(MOSIP_ADMIN_APP_ID); -// regproc_client_secret = getValueForKey(MOSIP_REG_CLIENT_SECRET); -// regproc_client_id = getValueForKey(MOSIP_REG_CLIENT_ID); -// regproc_app_id = getValueForKey(MOSIP_REGCLIENT_APP_ID); -// ida_client_secret = getValueForKey(MOSIP_IDA_CLIENT_SECRET); -// ida_client_id = getValueForKey(MOSIP_IDA_CLIENT_ID); -// ida_app_id = getValueForKey(MOSIP_IDA_APP_ID); -// hotlist_client_secret = getValueForKey(MOSIP_HOTLIST_CLIENT_SECRET); -// hotlist_client_id = getValueForKey(MOSIP_HOTLIST_CLIENT_ID); -// hotlist_app_id = getValueForKey(MOSIP_HOTLIST_APP_ID); + // regproc_client_secret = getValueForKey(MOSIP_REG_CLIENT_SECRET); + // regproc_client_id = getValueForKey(MOSIP_REG_CLIENT_ID); + // regproc_app_id = getValueForKey(MOSIP_REGCLIENT_APP_ID); + // ida_client_secret = getValueForKey(MOSIP_IDA_CLIENT_SECRET); + // ida_client_id = getValueForKey(MOSIP_IDA_CLIENT_ID); + // ida_app_id = getValueForKey(MOSIP_IDA_APP_ID); + // hotlist_client_secret = getValueForKey(MOSIP_HOTLIST_CLIENT_SECRET); + // hotlist_client_id = getValueForKey(MOSIP_HOTLIST_CLIENT_ID); + // hotlist_app_id = getValueForKey(MOSIP_HOTLIST_APP_ID); automation_client_secret = getValueForKey(MOSIP_AUTOMATION_CLIENT_SECRET); automation_client_id = getValueForKey(MOSIP_AUTOMATION_CLIENT_ID); -// automation_app_id = getValueForKey(MOSIP_AUTOMATION_APP_ID); + // automation_app_id = getValueForKey(MOSIP_AUTOMATION_APP_ID); s3_host = getValueForKey(S3_HOST); s3_region = getValueForKey(S3_REGION); s3_user_key = getValueForKey(S3_USER_KEY); @@ -307,141 +308,147 @@ public static void init() { hibernate_dialect = getValueForKey(HIBERNATE_DIALECT); hibernate_show_sql = getValueForKey(HIBERNATE_SHOW_SQL); hibernate_current_session_context_class = getValueForKey(HIBERNATE_CONTEXT_CLASS); -// audit_db_user = getValueForKey(AUDIT_DB_USER); -// audit_db_pass = getValueForKey(AUDIT_DB_PASS); -// audit_db_schema = getValueForKey(AUDIT_DB_SCHEMA); -// ida_db_user = getValueForKey(IDA_DB_USER); -// ida_db_pass = getValueForKey(IDA_DB_PASS); -// ida_db_schema = getValueForKey(IDA_DB_SCHEMA); -// pms_db_user = getValueForKey(PMS_DB_USER); -// pms_db_pass = getValueForKey(PMS_DB_PASS); -// pms_db_schema = getValueForKey(PMS_DB_SCHEMA); -// km_db_user = getValueForKey(KM_DB_USER); -// km_db_pass = getValueForKey(KM_DB_PASS); -// km_db_schema = getValueForKey(KM_DB_SCHEMA); + // audit_db_user = getValueForKey(AUDIT_DB_USER); + // audit_db_pass = getValueForKey(AUDIT_DB_PASS); + // audit_db_schema = getValueForKey(AUDIT_DB_SCHEMA); + // ida_db_user = getValueForKey(IDA_DB_USER); + // ida_db_pass = getValueForKey(IDA_DB_PASS); + // ida_db_schema = getValueForKey(IDA_DB_SCHEMA); + // pms_db_user = getValueForKey(PMS_DB_USER); + // pms_db_pass = getValueForKey(PMS_DB_PASS); + // pms_db_schema = getValueForKey(PMS_DB_SCHEMA); + // km_db_user = getValueForKey(KM_DB_USER); + // km_db_pass = getValueForKey(KM_DB_PASS); + // km_db_schema = getValueForKey(KM_DB_SCHEMA); master_db_user = getValueForKey(MASTER_DB_USER); master_db_pass = getValueForKey(MASTER_DB_PASS); master_db_schema = getValueForKey(MASTER_DB_SCHEMA); serviceNotDeployedList = System.getenv(SERVICES_NOT_DEPLOYED) == null ? propsKernel.getProperty(SERVICES_NOT_DEPLOYED) - : System.getenv(SERVICES_NOT_DEPLOYED); + : System.getenv(SERVICES_NOT_DEPLOYED); propsKernel.setProperty(SERVICES_NOT_DEPLOYED, serviceNotDeployedList); - + iam_adminportal_path =System.getenv(IAM_ADMINPORTAL_PATH) == null ? propsKernel.getProperty(IAM_ADMINPORTAL_PATH) - : System.getenv(IAM_ADMINPORTAL_PATH); - + : System.getenv(IAM_ADMINPORTAL_PATH); + logger.info("adminportal_path from config manager::" + iam_adminportal_path); iam_apienvuser = System.getenv(IAM_APIENVUSER) == null ? propsKernel.getProperty(IAM_APIENVUSER) - : System.getenv(IAM_APIENVUSER); + : System.getenv(IAM_APIENVUSER); logger.info("apienvuser from config manager::" + iam_apienvuser); - + iam_apiinternalendpoint = System.getenv(IAM_APIINTERNALENDPOINT) == null ? propsKernel.getProperty(IAM_APIINTERNALENDPOINT) - : System.getenv(IAM_APIINTERNALENDPOINT); + : System.getenv(IAM_APIINTERNALENDPOINT); logger.info("apiinternalendpoint from config manager::" + iam_apiinternalendpoint); -// + // iam_realm_id = getValueForKey(IAM_REALM_ID); iam_users_to_create = getValueForKey(IAM_USERS_TO_CREATE); iam_users_password = getValueForKey(IAM_USERS_PASSWORD); -// + // admin_client_secret = System.getenv(MOSIP_ADMIN_CLIENT_SECRET) == null ? propsKernel.getProperty(MOSIP_ADMIN_CLIENT_SECRET) - : System.getenv(MOSIP_ADMIN_CLIENT_SECRET); -// + : System.getenv(MOSIP_ADMIN_CLIENT_SECRET); + // logger.info("admin_client_secret="+admin_client_secret); propsKernel.setProperty(MOSIP_ADMIN_CLIENT_SECRET, admin_client_secret); -// -// authDemoServicePort = System.getenv(AUTH_DEMO_SERVICE_PORT) == null -// ? propsKernel.getProperty(AUTH_DEMO_SERVICE_PORT) -// : System.getenv(AUTH_DEMO_SERVICE_PORT); -// propsKernel.setProperty(AUTH_DEMO_SERVICE_PORT, authDemoServicePort); -// -// authDemoServiceBaseUrl = System.getenv(AUTH_DEMO_SERVICE_BASE_URL) == null -// ? propsKernel.getProperty(AUTH_DEMO_SERVICE_BASE_URL) -// : System.getenv(AUTH_DEMO_SERVICE_BASE_URL); -// propsKernel.setProperty(AUTH_DEMO_SERVICE_BASE_URL, authDemoServiceBaseUrl); -// -// mountPath = System.getenv(MOUNT_PATH) == null ? propsKernel.getProperty(MOUNT_PATH) : System.getenv(MOUNT_PATH); -// propsKernel.setProperty(MOUNT_PATH, mountPath); + // + // authDemoServicePort = System.getenv(AUTH_DEMO_SERVICE_PORT) == null + // ? propsKernel.getProperty(AUTH_DEMO_SERVICE_PORT) + // : System.getenv(AUTH_DEMO_SERVICE_PORT); + // propsKernel.setProperty(AUTH_DEMO_SERVICE_PORT, authDemoServicePort); + // + // authDemoServiceBaseUrl = System.getenv(AUTH_DEMO_SERVICE_BASE_URL) == null + // ? propsKernel.getProperty(AUTH_DEMO_SERVICE_BASE_URL) + // : System.getenv(AUTH_DEMO_SERVICE_BASE_URL); + // propsKernel.setProperty(AUTH_DEMO_SERVICE_BASE_URL, authDemoServiceBaseUrl); + // + // mountPath = System.getenv(MOUNT_PATH) == null ? propsKernel.getProperty(MOUNT_PATH) : System.getenv(MOUNT_PATH); + // propsKernel.setProperty(MOUNT_PATH, mountPath); reportExpirationInDays = System.getenv(REPORT_EXPIRATION_IN_DAYS) == null ? propsKernel.getProperty(REPORT_EXPIRATION_IN_DAYS) - : System.getenv(REPORT_EXPIRATION_IN_DAYS); + : System.getenv(REPORT_EXPIRATION_IN_DAYS); propsKernel.setProperty(REPORT_EXPIRATION_IN_DAYS, reportExpirationInDays); -// authCertsPath = System.getenv(AUTHCERTS_PATH) == null ? propsKernel.getProperty(AUTHCERTS_PATH) : System.getenv(AUTHCERTS_PATH); -// propsKernel.setProperty(AUTHCERTS_PATH, authCertsPath); -// -// mountPathForScenario = System.getenv(MOUNT_PATH_FOR_SCENARIO) == null ? propsKernel.getProperty(MOUNT_PATH_FOR_SCENARIO) : System.getenv(MOUNT_PATH_FOR_SCENARIO); -// propsKernel.setProperty(MOUNT_PATH_FOR_SCENARIO, mountPathForScenario); -// -// packetUtilityBaseUrl = System.getenv(PACKET_UTILITY_BASE_URL) == null ? propsKernel.getProperty(PACKET_UTILITY_BASE_URL) : System.getenv(PACKET_UTILITY_BASE_URL); -// propsKernel.setProperty(PACKET_UTILITY_BASE_URL, packetUtilityBaseUrl); -// + // authCertsPath = System.getenv(AUTHCERTS_PATH) == null ? propsKernel.getProperty(AUTHCERTS_PATH) : System.getenv(AUTHCERTS_PATH); + // propsKernel.setProperty(AUTHCERTS_PATH, authCertsPath); + // + // mountPathForScenario = System.getenv(MOUNT_PATH_FOR_SCENARIO) == null ? propsKernel.getProperty(MOUNT_PATH_FOR_SCENARIO) : System.getenv(MOUNT_PATH_FOR_SCENARIO); + // propsKernel.setProperty(MOUNT_PATH_FOR_SCENARIO, mountPathForScenario); + // + // packetUtilityBaseUrl = System.getenv(PACKET_UTILITY_BASE_URL) == null ? propsKernel.getProperty(PACKET_UTILITY_BASE_URL) : System.getenv(PACKET_UTILITY_BASE_URL); + // propsKernel.setProperty(PACKET_UTILITY_BASE_URL, packetUtilityBaseUrl); + // push_reports_to_s3 =System.getenv(PUSH_TO_S3) == null ? propsKernel.getProperty(PUSH_TO_S3) : System.getenv(PUSH_TO_S3); propsKernel.setProperty(PUSH_TO_S3, push_reports_to_s3); -// -// enableDebug =System.getenv(ENABLE_DEBUG) == null ? propsKernel.getProperty(ENABLE_DEBUG) : System.getenv(ENABLE_DEBUG); -// propsKernel.setProperty(ENABLE_DEBUG, enableDebug); -// -// threadCount =System.getenv(THREAD_COUNT) == null ? propsKernel.getProperty(THREAD_COUNT) : System.getenv(THREAD_COUNT); -// propsKernel.setProperty(THREAD_COUNT, threadCount); -// -// langselect =System.getenv(LANG_SELECT) == null ? propsKernel.getProperty(LANG_SELECT) : System.getenv(LANG_SELECT); -// propsKernel.setProperty(LANG_SELECT, langselect); - + // + // enableDebug =System.getenv(ENABLE_DEBUG) == null ? propsKernel.getProperty(ENABLE_DEBUG) : System.getenv(ENABLE_DEBUG); + // propsKernel.setProperty(ENABLE_DEBUG, enableDebug); + // + // threadCount =System.getenv(THREAD_COUNT) == null ? propsKernel.getProperty(THREAD_COUNT) : System.getenv(THREAD_COUNT); + // propsKernel.setProperty(THREAD_COUNT, threadCount); + // + // langselect =System.getenv(LANG_SELECT) == null ? propsKernel.getProperty(LANG_SELECT) : System.getenv(LANG_SELECT); + // propsKernel.setProperty(LANG_SELECT, langselect); + //enableDebug threadCount langselect holidayDateCenter =System.getenv(HolidayDateCenter) == null ? propsKernel.getProperty(HolidayDateCenter) : System.getenv(HolidayDateCenter); propsKernel.setProperty(HolidayDateCenter, holidayDateCenter); - + holidayDate =System.getenv(HolidayDate) == null ? propsKernel.getProperty(HolidayDate) : System.getenv(HolidayDate); propsKernel.setProperty(HolidayDate, holidayDate); - + preappend =System.getenv(Preappend) == null ? propsKernel.getProperty(Preappend) : System.getenv(Preappend); propsKernel.setProperty(Preappend, preappend); - + splitdigit =System.getenv(Splitdigit) == null ? propsKernel.getProperty(Splitdigit) : System.getenv(Splitdigit); propsKernel.setProperty(Splitdigit, splitdigit); - + jsonObjName =System.getenv(JsonObjName) == null ? propsKernel.getProperty(JsonObjName) : System.getenv(JsonObjName); propsKernel.setProperty(JsonObjName, jsonObjName); - + bulkwait =System.getenv(Bulkwait) == null ? propsKernel.getProperty(Bulkwait) : System.getenv(Bulkwait); propsKernel.setProperty(Bulkwait, bulkwait); - - - + + + sbivalidDate =System.getenv(SbivalidDate) == null ? propsKernel.getProperty(SbivalidDate) : System.getenv(SbivalidDate); propsKernel.setProperty(SbivalidDate, sbivalidDate); - + sbiexpiryDate =System.getenv(SbiexpiryDate) == null ? propsKernel.getProperty(SbiexpiryDate) : System.getenv(SbiexpiryDate); propsKernel.setProperty(SbiexpiryDate, sbiexpiryDate); - + publicKey =System.getenv(PublicKey) == null ? propsKernel.getProperty(PublicKey) : System.getenv(PublicKey); propsKernel.setProperty(PublicKey, publicKey); - + signPublicKey =System.getenv(SignPublicKey) == null ? propsKernel.getProperty(SignPublicKey) : System.getenv(SignPublicKey); propsKernel.setProperty(SignPublicKey, signPublicKey); - + headless =System.getenv(Headless) == null ? propsKernel.getProperty(Headless) : System.getenv(Headless); propsKernel.setProperty(Headless, headless); - + docker =System.getenv(Docker) == null ? propsKernel.getProperty(Docker) : System.getenv(Docker); propsKernel.setProperty(Docker, docker); - + langcode =System.getenv(Langcode) == null ? propsKernel.getProperty(Langcode) : System.getenv(Langcode); propsKernel.setProperty(Langcode, langcode); - + loginlang =System.getenv(Loginlang) == null ? propsKernel.getProperty(Loginlang) : System.getenv(Loginlang); propsKernel.setProperty(Loginlang, loginlang); - + policyData =System.getenv(PolicyData) == null ? propsKernel.getProperty(PolicyData) : System.getenv(PolicyData); propsKernel.setProperty(PolicyData, policyData); - + dataSharepolicyData =System.getenv(DataSharepolicyData) == null ? propsKernel.getProperty(DataSharepolicyData) : System.getenv(DataSharepolicyData); propsKernel.setProperty(DataSharepolicyData, dataSharepolicyData); + testcases =System.getenv(Testcases) == null ? propsKernel.getProperty(Testcases) : System.getenv(Testcases); + propsKernel.setProperty(Testcases, testcases); + + } + public static String gettestcases() { + return testcases; } public static String getpolicyData() { return policyData; @@ -473,7 +480,7 @@ public static String getsbivalidDate() { public static String getsbiexpiryDate() { return sbiexpiryDate; } - + public static String getbulkwait() { return bulkwait; } @@ -493,104 +500,104 @@ public static String getholidayDateCenter() { return holidayDateCenter; } -// public static String getAuthDemoServicePort() { -// return authDemoServicePort; -// } -// -// public static String getAuthDemoServiceBaseUrl() { -// return authDemoServiceBaseUrl; -// -// } -// -// public static String getLangselect() { -// return langselect; -// -// } -// -// public static String getThreadCount() { -// return threadCount; -// -// } -// -// public static String getEnableDebug() { -// return enableDebug; -// -// } -// -// public static String getmountPath() { -// return mountPath; -// } -// -// public static String getmountPathForScenario() { -// return mountPathForScenario; -// } -// -// public static String getpacketUtilityBaseUrl() { -// return packetUtilityBaseUrl; -// } -// -// public static String getauthCertsPath() { -// return authCertsPath; -// } -// -// public static Properties init(String abc) { -// propsKernel = getproperty(TestRunner.getResourcePath() + "/" + "config/Kernel.properties"); -// -// return propsKernel; -// } -// -// public static String getPmsClientSecret() { -// return pms_client_secret; -// } -// -// public static String getPmsClientId() { -// return pms_client_id; -// } -// -// public static String getPmsAppId() { -// return pms_app_id; -// } -// -// public static String getResidentClientSecret() { -// return resident_client_secret; -// } -// -// public static String getResidentClientId() { -// return resident_client_id; -// } -// -// public static String getResidentAppId() { -// return resident_app_id; -// } -// -// public static String getMPartnerMobileClientId() { -// return mpartner_mobile_client_id; -// } -// -// public static String getMPartnerMobileClientSecret() { -// return mpartner_mobile_client_secret; -// } -// + // public static String getAuthDemoServicePort() { + // return authDemoServicePort; + // } + // + // public static String getAuthDemoServiceBaseUrl() { + // return authDemoServiceBaseUrl; + // + // } + // + // public static String getLangselect() { + // return langselect; + // + // } + // + // public static String getThreadCount() { + // return threadCount; + // + // } + // + // public static String getEnableDebug() { + // return enableDebug; + // + // } + // + // public static String getmountPath() { + // return mountPath; + // } + // + // public static String getmountPathForScenario() { + // return mountPathForScenario; + // } + // + // public static String getpacketUtilityBaseUrl() { + // return packetUtilityBaseUrl; + // } + // + // public static String getauthCertsPath() { + // return authCertsPath; + // } + // + // public static Properties init(String abc) { + // propsKernel = getproperty(TestRunner.getResourcePath() + "/" + "config/Kernel.properties"); + // + // return propsKernel; + // } + // + // public static String getPmsClientSecret() { + // return pms_client_secret; + // } + // + // public static String getPmsClientId() { + // return pms_client_id; + // } + // + // public static String getPmsAppId() { + // return pms_app_id; + // } + // + // public static String getResidentClientSecret() { + // return resident_client_secret; + // } + // + // public static String getResidentClientId() { + // return resident_client_id; + // } + // + // public static String getResidentAppId() { + // return resident_app_id; + // } + // + // public static String getMPartnerMobileClientId() { + // return mpartner_mobile_client_id; + // } + // + // public static String getMPartnerMobileClientSecret() { + // return mpartner_mobile_client_secret; + // } + // public static String getAdminClientSecret() { return admin_client_secret; } -// + // public static String getAdminClientId() { return admin_client_id; } -// + // public static String getAdminAppId() { return admin_app_id; } -// + // public static String getIdRepoClientSecret() { return idrepo_client_secret; } -// + // public static String getidRepoClientId() { return idrepo_client_id; } -// + // public static String getidRepoAppId() { return idrepo_app_id; } @@ -603,201 +610,201 @@ public static String getiam_apienvuser() { public static String getiam_apiinternalendpoint() { return iam_apiinternalendpoint; } - + public static String getIAMUrl() { return iamExternalURL+"/auth"; - - } -// -// public static String getRegprocClientSecret() { -// return regproc_client_secret; -// } -// -// public static String getRegprocClientId() { -// return regproc_client_id; -// } -// -// public static String getRegprocAppId() { -// return regproc_app_id; -// } -// -// public static String getIdaClientSecret() { -// return ida_client_secret; -// } -// -// public static String getIdaClientId() { -// return ida_client_id; -// } -// -// public static String getIdaAppId() { -// return ida_app_id; -// } -// -// public static String getHotListClientSecret() { -// return hotlist_client_secret; -// } -// -// public static String getHotListClientId() { -// return hotlist_client_id; -// } -// -// public static String getHotListAppId() { -// return hotlist_app_id; -// } -// + + } + // + // public static String getRegprocClientSecret() { + // return regproc_client_secret; + // } + // + // public static String getRegprocClientId() { + // return regproc_client_id; + // } + // + // public static String getRegprocAppId() { + // return regproc_app_id; + // } + // + // public static String getIdaClientSecret() { + // return ida_client_secret; + // } + // + // public static String getIdaClientId() { + // return ida_client_id; + // } + // + // public static String getIdaAppId() { + // return ida_app_id; + // } + // + // public static String getHotListClientSecret() { + // return hotlist_client_secret; + // } + // + // public static String getHotListClientId() { + // return hotlist_client_id; + // } + // + // public static String getHotListAppId() { + // return hotlist_app_id; + // } + // public static String getAutomationClientSecret() { return automation_client_secret; } -// + // public static String getAutomationClientId() { return automation_client_id; } -// -// public static String getAutomationAppId() { -// return automation_app_id; -// } -// + // + // public static String getAutomationAppId() { + // return automation_app_id; + // } + // public static Boolean IsDebugEnabled() { return enableDebug.equalsIgnoreCase("yes"); } -// + // public static String getS3Host() { return s3_host; } public static String getReportExpirationInDays() { return reportExpirationInDays; } -// + // public static String getS3Region() { return s3_region; } -// + // public static String getS3UserKey() { return s3_user_key; } -// + // public static String getS3SecretKey() { return s3_secret_key; } -// + // public static String getS3Account() { return s3_account; } -// + // public static String getPushReportsToS3() { return push_reports_to_s3; } -// + // public static String getIdaDbUrl() { return "jdbc:postgresql://" + db_domain + ":" + db_port + "/mosip_ida"; } -// -// public static String getAuditDbUrl() { -// return "jdbc:postgresql://" + db_domain + ":" + db_port + "/mosip_audit"; -// } -// + // + // public static String getAuditDbUrl() { + // return "jdbc:postgresql://" + db_domain + ":" + db_port + "/mosip_audit"; + // } + // public static String getDbDriverClass() { return hibernate_connection_driver_class; } -// + // public static String getDbConnectionPoolSize() { return hibernate_connection_pool_size; } -// + // public static String getDbDialect() { return hibernate_dialect; } -// + // public static String getShowSql() { return hibernate_show_sql; } -// + // public static String getDbSessionContext() { return hibernate_current_session_context_class; } -// -// public static String getAuditDbUser() { -// return audit_db_user; -// } -// -// public static String getAuditDbPass() { -// logger.info("DB Password from ENV::: " + System.getenv(AUDIT_DB_PASS)); -// return audit_db_pass; -// } -// -// public static String getAuditDbSchema() { -// return audit_db_schema; -// } -// -// public static String getIdaDbUser() { -// return ida_db_user; -// } -// -// public static String getIdaDbPass() { -// return ida_db_pass; -// } -// -// public static String getIdaDbSchema() { -// return ida_db_schema; -// } -// -// public static String getPMSDbUrl() { -// return "jdbc:postgresql://" + db_domain + ":" + db_port + "/mosip_pms"; -// } -// -// public static String getKMDbUrl() { -// return "jdbc:postgresql://" + db_domain + ":" + db_port + "/mosip_keymgr"; -// } -// + // + // public static String getAuditDbUser() { + // return audit_db_user; + // } + // + // public static String getAuditDbPass() { + // logger.info("DB Password from ENV::: " + System.getenv(AUDIT_DB_PASS)); + // return audit_db_pass; + // } + // + // public static String getAuditDbSchema() { + // return audit_db_schema; + // } + // + // public static String getIdaDbUser() { + // return ida_db_user; + // } + // + // public static String getIdaDbPass() { + // return ida_db_pass; + // } + // + // public static String getIdaDbSchema() { + // return ida_db_schema; + // } + // + // public static String getPMSDbUrl() { + // return "jdbc:postgresql://" + db_domain + ":" + db_port + "/mosip_pms"; + // } + // + // public static String getKMDbUrl() { + // return "jdbc:postgresql://" + db_domain + ":" + db_port + "/mosip_keymgr"; + // } + // public static String getMASTERDbUrl() { return "jdbc:postgresql://" + db_domain + ":" + db_port + "/mosip_master"; } -// -// public static String getPMSDbUser() { -// return pms_db_user; -// } -// -// public static String getPMSDbPass() { -// return pms_db_pass; -// } -// -// public static String getPMSDbSchema() { -// return pms_db_schema; -// } -// -// public static String getKMDbUser() { -// return km_db_user; -// } -// -// public static String getKMDbPass() { -// return km_db_pass; -// } -// -// public static String getKMDbSchema() { -// return km_db_schema; -// } -// + // + // public static String getPMSDbUser() { + // return pms_db_user; + // } + // + // public static String getPMSDbPass() { + // return pms_db_pass; + // } + // + // public static String getPMSDbSchema() { + // return pms_db_schema; + // } + // + // public static String getKMDbUser() { + // return km_db_user; + // } + // + // public static String getKMDbPass() { + // return km_db_pass; + // } + // + // public static String getKMDbSchema() { + // return km_db_schema; + // } + // public static String getMasterDbUser() { return master_db_user; } -// + // public static String getMasterDbPass() { return master_db_pass; } -// + // public static String getMasterDbSchema() { return master_db_schema; } - + public static String getIAMRealmId() { return iam_realm_id; } - - + + public static String getIAMUsersToCreate() { return iam_users_to_create; } -// + // public static String getIAMUsersPassword() { return iam_users_password; } @@ -806,7 +813,7 @@ public static String getRolesForUser(String userId) { propsKernel = getproperty(TestRunner.getResourcePath() + "/" + "config/"+TestRunner.GetKernalFilename()); return propsKernel.getProperty("roles"); } - + public static boolean isInServiceNotDeployedList(String stringToFind) { synchronized (serviceNotDeployedList) { if (serviceNotDeployedList.isBlank()) @@ -837,8 +844,8 @@ private static Properties getproperty(String path) { return prop; } -// public static String getAuthDemoServiceUrl() { -// return ConfigManager.getAuthDemoServiceBaseUrl() + ":" + ConfigManager.getAuthDemoServicePort(); -// } - + // public static String getAuthDemoServiceUrl() { + // return ConfigManager.getAuthDemoServiceBaseUrl() + ":" + ConfigManager.getAuthDemoServicePort(); + // } + } \ No newline at end of file diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminAuthPolicyTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminAuthPolicyTest.java index 1ba8caa6f..658823ee8 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminAuthPolicyTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminAuthPolicyTest.java @@ -1,5 +1,7 @@ package io.mosip.testrig.pmpui.testcase; +import java.io.IOException; + import org.openqa.selenium.By; import org.testng.annotations.Listeners; import org.testng.annotations.Test; @@ -16,7 +18,7 @@ public class AdminAuthPolicyTest extends BaseClass { @Test(groups = {"AP"},dependsOnGroups = "PG") - public void adminAuthPolicyTest() throws InterruptedException{ + public void adminAuthPolicyTest() throws InterruptedException, IOException{ test=extent.createTest("AdminAuthPolicyTest", "verify Login"); Commons.click(test,driver, By.id("policymenugroup")); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDataSharePolicyTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDataSharePolicyTest.java index 0ec5f979b..017e30249 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDataSharePolicyTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDataSharePolicyTest.java @@ -1,5 +1,7 @@ package io.mosip.testrig.pmpui.testcase; +import java.io.IOException; + import org.openqa.selenium.By; import org.testng.annotations.Listeners; import org.testng.annotations.Test; @@ -16,7 +18,7 @@ public class AdminDataSharePolicyTest extends BaseClass { @Test(groups = "DSP",dependsOnGroups = "AP") - public void adminDataSharePolicyTest() throws InterruptedException { + public void adminDataSharePolicyTest() throws InterruptedException, IOException { test=extent.createTest("AdminDataSharePolicyTest", "verify Login"); Commons.click(test,driver, By.id("policymenugroup")); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDeviceDetailsTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDeviceDetailsTest.java index 9eb8227d5..52448a7fb 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDeviceDetailsTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminDeviceDetailsTest.java @@ -1,5 +1,7 @@ package io.mosip.testrig.pmpui.testcase; +import java.io.IOException; + import org.openqa.selenium.By; import org.testng.annotations.Listeners; import org.testng.annotations.Test; @@ -16,7 +18,7 @@ public class AdminDeviceDetailsTest extends BaseClass { private static final org.slf4j.Logger logger= org.slf4j.LoggerFactory.getLogger(AdminDeviceDetailsTest.class); @Test(groups = "DD",dataProvider = "data-provider-DEVICE-SBI",dependsOnGroups = {"SD","AP"}) - public void adminDeviceDetailsTest(String cer) throws InterruptedException { + public void adminDeviceDetailsTest(String cer) throws InterruptedException, IOException { String dropdwnVal=cer.substring(0, cer.indexOf("_", 0)); String orgName=cer.substring(0, cer.length()-4); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminFtmDetailsTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminFtmDetailsTest.java index 9e5c64889..cc3f1d4a1 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminFtmDetailsTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminFtmDetailsTest.java @@ -1,5 +1,7 @@ package io.mosip.testrig.pmpui.testcase; +import java.io.IOException; + import org.openqa.selenium.By; import org.testng.annotations.Listeners; import org.testng.annotations.Test; @@ -13,7 +15,7 @@ public class AdminFtmDetailsTest extends BaseClass { private static final org.slf4j.Logger logger= org.slf4j.LoggerFactory.getLogger(AdminFtmDetailsTest.class); @Test(groups = {"FD"},dataProvider = "data-provider-FTM",dependsOnGroups = "RFTM") - public void adminFtmDetailsTest(String cer) throws InterruptedException { + public void adminFtmDetailsTest(String cer) throws InterruptedException, IOException { test=extent.createTest("AdminFtmDetailsTest", "verify Login"); Commons.click(test,driver, By.xpath("//a[@href='#/pmp/resources/ftmdetails/view']")); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminPartnerPolicyMappingTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminPartnerPolicyMappingTest.java index d2ccf7872..57da6dba8 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminPartnerPolicyMappingTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminPartnerPolicyMappingTest.java @@ -1,5 +1,7 @@ package io.mosip.testrig.pmpui.testcase; +import java.io.IOException; + import org.openqa.selenium.By; import org.testng.annotations.Listeners; import org.testng.annotations.Test; @@ -14,7 +16,7 @@ public class AdminPartnerPolicyMappingTest extends BaseClass { @Test(groups = "PPM",dependsOnGroups = "RAC",dataProvider = "data-provider-AUTH" ) - public void adminPartnerPolicyMappingTest(String cer) throws InterruptedException { + public void adminPartnerPolicyMappingTest(String cer) throws InterruptedException, IOException { String dropdwnVal=cer.substring(0, cer.indexOf("_", 0)); String orgName=cer.substring(0, cer.length()-4); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminPolicyGroupTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminPolicyGroupTest.java index a25ff8d22..c3cb129ea 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminPolicyGroupTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminPolicyGroupTest.java @@ -1,5 +1,7 @@ package io.mosip.testrig.pmpui.testcase; +import java.io.IOException; + import org.openqa.selenium.By; import org.testng.annotations.Listeners; import org.testng.annotations.Test; @@ -14,7 +16,7 @@ public class AdminPolicyGroupTest extends BaseClass { @Test(groups = "PG",dependsOnGroups = "UFCC") - public void adminPolicyGroupTest() throws InterruptedException { + public void adminPolicyGroupTest() throws InterruptedException, IOException { test=extent.createTest("AdminPolicyGroupTest", "verify Login"); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminUploadCaCertTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminUploadCaCertTest.java index 7670e557b..39f8fad35 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminUploadCaCertTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/AdminUploadCaCertTest.java @@ -1,6 +1,7 @@ package io.mosip.testrig.pmpui.testcase; import java.awt.AWTException; +import java.io.IOException; import org.openqa.selenium.By; import org.testng.annotations.Test; @@ -12,7 +13,7 @@ public class AdminUploadCaCertTest extends BaseClass { @Test(groups = "UFCC",dataProvider = "data-provider-ca") - public void adminUploadCaCertTest(String cer) throws InterruptedException, AWTException { + public void adminUploadCaCertTest(String cer) throws InterruptedException, AWTException, IOException { diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerLoginAuthCredTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerLoginAuthCredTest.java index ec37509c0..5e89c899b 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerLoginAuthCredTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerLoginAuthCredTest.java @@ -1,6 +1,7 @@ package io.mosip.testrig.pmpui.testcase; import java.awt.AWTException; +import java.io.IOException; import org.openqa.selenium.By; import org.testng.annotations.Listeners; @@ -18,7 +19,7 @@ public class PartnerLoginAuthCredTest extends RegisterBaseClass { private static final org.slf4j.Logger logger= org.slf4j.LoggerFactory.getLogger(RealTimeReport.class); @Test(groups = "PLAC", dataProvider = "data-provider-AUTH" ,dependsOnGroups = {"PPM"}) - public void partnerLoginAuthCredTest(String cer) throws InterruptedException, AWTException{ + public void partnerLoginAuthCredTest(String cer) throws InterruptedException, AWTException, IOException{ //String datetime=Commons.getDateTime(); test=extent.createTest("PartnerLoginAuthCredTest", "verify Login"); String dropdwnVal=cer.substring(0, cer.indexOf("_", 0)); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterAuthCredTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterAuthCredTest.java index 298bf6eb3..4d70727fe 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterAuthCredTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterAuthCredTest.java @@ -1,6 +1,7 @@ package io.mosip.testrig.pmpui.testcase; import java.awt.AWTException; +import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.support.ui.Select; @@ -19,7 +20,7 @@ public class PartnerRegisterAuthCredTest extends RegisterBaseClass { private static final org.slf4j.Logger logger= org.slf4j.LoggerFactory.getLogger(PartnerRegisterAuthCredTest.class); @Test(groups = "RAC",dataProvider = "data-provider-AUTH" , dependsOnGroups = {"UFCC","DSP"}) - public void partnerRegisterAuthCredTest(String cer) throws InterruptedException, AWTException{ + public void partnerRegisterAuthCredTest(String cer) throws InterruptedException, AWTException, IOException{ String datetime=Commons.getDateTime(); String dropdwnVal=cer.substring(0, cer.indexOf("_", 0)); String orgName=cer.substring(0, cer.length()-4); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterFTMTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterFTMTest.java index e230f95de..1d1180aae 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterFTMTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterFTMTest.java @@ -1,6 +1,7 @@ package io.mosip.testrig.pmpui.testcase; import java.awt.AWTException; +import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.support.ui.Select; @@ -19,7 +20,7 @@ public class PartnerRegisterFTMTest extends RegisterBaseClass { private static final org.slf4j.Logger logger= org.slf4j.LoggerFactory.getLogger(PartnerRegisterFTMTest.class); @Test(groups = {"RFTM"},dataProvider = "data-provider-FTM" , dependsOnGroups = {"UFCC"}) - public void partnerRegisterFTMTest(String cer) throws InterruptedException, AWTException{ + public void partnerRegisterFTMTest(String cer) throws InterruptedException, AWTException, IOException{ String datetime=Commons.getDateTime(); String dropdwnVal=cer.substring(0, cer.indexOf("_", 0)); String orgName=cer.substring(0, cer.length()-4); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterSbiDeviceTest.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterSbiDeviceTest.java index 7e9cbd47c..10c3967a4 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterSbiDeviceTest.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/PartnerRegisterSbiDeviceTest.java @@ -1,6 +1,7 @@ package io.mosip.testrig.pmpui.testcase; import java.awt.AWTException; +import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.support.ui.Select; @@ -19,7 +20,7 @@ public class PartnerRegisterSbiDeviceTest extends RegisterBaseClass { private static final org.slf4j.Logger logger= org.slf4j.LoggerFactory.getLogger(PartnerRegisterSbiDeviceTest.class); @Test(groups = "RSD",dataProvider = "data-provider-DEVICE-SBI" , dependsOnGroups = {"UFCC","DSP"}) - public void partnerRegisterSbiDeviceTest(String cer) throws InterruptedException, AWTException{ + public void partnerRegisterSbiDeviceTest(String cer) throws InterruptedException, AWTException, IOException{ String datetime=Commons.getDateTime(); String dropdwnVal=cer.substring(0, cer.indexOf("_", 0)); String orgName=cer.substring(0, cer.length()-4); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/TBD.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/TBD.java index 5ab85852e..49755e76c 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/TBD.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/testcase/TBD.java @@ -1,6 +1,7 @@ package io.mosip.testrig.pmpui.testcase; import java.awt.AWTException; +import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.support.ui.Select; @@ -17,7 +18,7 @@ public class TBD extends RegisterBaseClass { private static final org.slf4j.Logger logger= org.slf4j.LoggerFactory.getLogger(TBD.class); @Test(groups = "R",dataProvider = "data-provider-partner" , dependsOnGroups = {"UFCC","DSP"}) - public void registerCRUD(String cer) throws InterruptedException, AWTException{ + public void registerCRUD(String cer) throws InterruptedException, AWTException, IOException{ String datetime=Commons.getDateTime(); String dropdwnVal=cer.substring(0, cer.indexOf("_", 0)); String orgName=cer.substring(0, cer.length()-4); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java index 7a0583e11..9d1c0a9f3 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java @@ -20,6 +20,7 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.Assert; +import org.testng.Reporter; import com.aventstack.extentreports.ExtentTest; import com.aventstack.extentreports.MediaEntityBuilder; @@ -30,31 +31,31 @@ public class Commons extends BaseClass { private static final Logger logger = Logger.getLogger(Commons.class); public static String appendDate=getPreAppend()+getDateTime(); public static String getDateTime() - { - - - DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HHmmss"); - LocalDateTime now = LocalDateTime.now(); - return dtf.format(now); - } - + { + + + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HHmmss"); + LocalDateTime now = LocalDateTime.now(); + return dtf.format(now); + } + public static String getUnique() - { - - - DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMddHHmm"); - LocalDateTime now = LocalDateTime.now(); - return dtf.format(now); - } - + { + + + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMddHHmm"); + LocalDateTime now = LocalDateTime.now(); + return dtf.format(now); + } + public static void filter(ExtentTest test,WebDriver driver, By by,String data) { logger.info("Inside Filter " + by + data); try { Commons.click( test,driver, By.id("Filter")); - - Commons.enter(test,driver, by, data); - Commons.click(test,driver, By.id("applyTxt")); + + Commons.enter(test,driver, by, data); + Commons.click(test,driver, By.id("applyTxt")); } catch (Exception e) { try { @@ -67,30 +68,30 @@ public static void filter(ExtentTest test,WebDriver driver, By by,String data) executor.executeScript("arguments[0].click();", driver.findElement(by)); } - + } - - public static void filter(ExtentTest test,WebDriver driver, By by1,By by2,String data1,String data2) throws InterruptedException { + + public static void filter(ExtentTest test,WebDriver driver, By by1,By by2,String data1,String data2) throws InterruptedException, IOException { logger.info("Inside Filter " + by1 + data1); logger.info("Inside Filter " + by2 + data2); - + Commons.click(test,driver, By.id("Filter")); - + Commons.enter( test,driver, by1, data1); Commons.enter( test,driver, by2, data2); Commons.click( test,driver, By.id("applyTxt")); - - + + } - + public static void filterCenter(ExtentTest test,WebDriver driver, By by,String data) { logger.info("Inside filterCenter " + by + data); try {Commons.click(test,driver, By.id("Filter")); - + Commons.dropdowncenter(test,driver, by, data); - + Commons.click(test,driver, By.id("applyTxt")); } catch (Exception e) { @@ -105,7 +106,7 @@ public static void filterCenter(ExtentTest test,WebDriver driver, By by,String } } - public static void click(ExtentTest test,WebDriver driver, By by) { + public static void click(ExtentTest test,WebDriver driver, By by) throws IOException { logger.info("Clicking " + by ); try { (new WebDriverWait(driver, 20)).until(ExpectedConditions.elementToBeClickable(by)); @@ -113,6 +114,8 @@ public static void click(ExtentTest test,WebDriver driver, By by) { driver.findElement(by).click(); Thread.sleep(2000); }catch (StaleElementReferenceException sere) { + Reporter.log("

"); + // simply retry finding the element in the refreshed DOM driver.findElement(by).click(); } @@ -138,265 +141,269 @@ public static void click(ExtentTest test,WebDriver driver, By by) { }} public static void clickWebelement(ExtentTest test,WebDriver driver, By by) throws IOException, InterruptedException { logger.info("Clicking " + by ); - + try { (new WebDriverWait(driver, 20)).until(ExpectedConditions.elementToBeClickable(by)); Thread.sleep(500); WebElement checkbox= driver.findElement(by); - js.executeScript("arguments[0].click();", checkbox); + js.executeScript("arguments[0].click();", checkbox); Thread.sleep(500); }catch (StaleElementReferenceException sere) { + Reporter.log("

"); + // simply retry finding the element in the refreshed DOM driver.findElement(by).click(); } - } - - - public static void enter(ExtentTest test,WebDriver driver, By by,String value) { + } + + + public static void enter(ExtentTest test,WebDriver driver, By by,String value) throws IOException { logger.info("Entering " + by +value); //value="10"; + try { + (new WebDriverWait(driver, 20)).until(ExpectedConditions.visibilityOfElementLocated(by)); + driver.findElement(by).clear(); + driver.findElement(by).sendKeys(value); try { - (new WebDriverWait(driver, 20)).until(ExpectedConditions.visibilityOfElementLocated(by)); - driver.findElement(by).clear(); - driver.findElement(by).sendKeys(value); - try { - Thread.sleep(8); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - }catch (StaleElementReferenceException sere) { - // simply retry finding the element in the refreshed DOM - driver.findElement(by).clear(); - driver.findElement(by).sendKeys(value); + Thread.sleep(8); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } - catch (TimeoutException toe) { - driver.findElement(by).clear(); - driver.findElement(by).sendKeys(value); - System.out.println( "Element identified by " + by.toString() + " was not clickable after 20 seconds"); - } } - + }catch (StaleElementReferenceException sere) { + Reporter.log("

"); + + // simply retry finding the element in the refreshed DOM + driver.findElement(by).clear(); + driver.findElement(by).sendKeys(value); + } + catch (TimeoutException toe) { + driver.findElement(by).clear(); + driver.findElement(by).sendKeys(value); + System.out.println( "Element identified by " + by.toString() + " was not clickable after 20 seconds"); + } } + public static void dropdown(ExtentTest test,WebDriver driver, By by) - { + { logger.info("Selecting DropDown Index Zero Value " + by ); - - try { - Thread.sleep(500); - click(test,driver,by);//REGION - Thread.sleep(500); - - String att= driver.findElement(by).getAttribute("aria-owns"); - String[] list=att.split(" "); - click(test, driver,By.id(list[0])); - try { + + try { + Thread.sleep(500); + click(test,driver,by);//REGION + Thread.sleep(500); + + String att= driver.findElement(by).getAttribute("aria-owns"); + String[] list=att.split(" "); + click(test, driver,By.id(list[0])); + try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } - }catch (Exception e) { - try { - test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - JavascriptExecutor executor = (JavascriptExecutor) driver; - executor.executeScript("arguments[0].click();", driver.findElement(by)); - + }catch (Exception e) { + try { + test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); } - } - + JavascriptExecutor executor = (JavascriptExecutor) driver; + executor.executeScript("arguments[0].click();", driver.findElement(by)); + + } + } + public static void dropdown(ExtentTest test,WebDriver driver, By by,String value) - { + { logger.info("Selecting DropDown By Value " + by +value ); - - try { - Thread.sleep(50); - click(test,driver,by); - Thread.sleep(50); - String val="'"+value +"'"; - - click(test,driver,By.xpath("//span[contains(text(),"+val+")]")); - try { + + try { + Thread.sleep(50); + click(test,driver,by); + Thread.sleep(50); + String val="'"+value +"'"; + + click(test,driver,By.xpath("//span[contains(text(),"+val+")]")); + try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } - }catch (Exception e) { - try { - test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - JavascriptExecutor executor = (JavascriptExecutor) driver; - executor.executeScript("arguments[0].click();", driver.findElement(by)); - + }catch (Exception e) { + try { + test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); } - } + JavascriptExecutor executor = (JavascriptExecutor) driver; + executor.executeScript("arguments[0].click();", driver.findElement(by)); + + } + } //option[@value,'FTM_PROVIDER'] - + public static void dropdownbyid(ExtentTest test,WebDriver driver, By by,String value) - { + { logger.info("Selecting DropDown By Value " + by +value ); - - try { - Thread.sleep(500); - click(test,driver,by); - Thread.sleep(500); - String val="'"+value +"'"; - - click(test,driver,By.id(value)); - try { + + try { + Thread.sleep(500); + click(test,driver,by); + Thread.sleep(500); + String val="'"+value +"'"; + + click(test,driver,By.id(value)); + try { Thread.sleep(500); - + } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } - }catch (Exception e) { - try { - test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - JavascriptExecutor executor = (JavascriptExecutor) driver; - executor.executeScript("arguments[0].click();", driver.findElement(by)); - + }catch (Exception e) { + try { + test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); } - } + JavascriptExecutor executor = (JavascriptExecutor) driver; + executor.executeScript("arguments[0].click();", driver.findElement(by)); + + } + } public static void selOption(ExtentTest test,WebDriver driver, By by,String value) - { + { logger.info("Selecting DropDown By Value " + by +value ); - - try { - Thread.sleep(50); - click(test,driver,by); - Thread.sleep(50); - String val="'"+value +"'"; - //select/option[contains(text(),'FTM Provider')] - // String xpath="//select/option[contains(text(),"+val+"]"; - //clickAction(test,driver,By.xpath(xpath)); - try { + + try { + Thread.sleep(50); + click(test,driver,by); + Thread.sleep(50); + String val="'"+value +"'"; + //select/option[contains(text(),'FTM Provider')] + // String xpath="//select/option[contains(text(),"+val+"]"; + //clickAction(test,driver,By.xpath(xpath)); + try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } - }catch (Exception e) { - try { - test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - JavascriptExecutor executor = (JavascriptExecutor) driver; - executor.executeScript("arguments[0].click();", driver.findElement(by)); - + }catch (Exception e) { + try { + test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); } - } - - + JavascriptExecutor executor = (JavascriptExecutor) driver; + executor.executeScript("arguments[0].click();", driver.findElement(by)); + + } + } + + public static void dropdowncenter(ExtentTest test,WebDriver driver, By by,String value) - { + { logger.info("Selecting DropDown By Value " + by +value ); - - try { - Thread.sleep(50); - click(test,driver,by); - Thread.sleep(50); - String val="'"+value +"'"; - - click(test,driver,By.id(value)); - try { + + try { + Thread.sleep(50); + click(test,driver,by); + Thread.sleep(50); + String val="'"+value +"'"; + + click(test,driver,By.id(value)); + try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } - }catch (Exception e) { - try { - test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - JavascriptExecutor executor = (JavascriptExecutor) driver; - executor.executeScript("arguments[0].click();", driver.findElement(by)); - + }catch (Exception e) { + try { + test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); } - } - + JavascriptExecutor executor = (JavascriptExecutor) driver; + executor.executeScript("arguments[0].click();", driver.findElement(by)); + + } + } + public static void dropdown(ExtentTest test,WebDriver driver, By by,By value) - { + { logger.info("Selecting DropDown By Value " + by +value ); - try { - Thread.sleep(50); - click(test,driver,by); - Thread.sleep(50); - click(test,driver,value); - - Thread.sleep(500); - - }catch (Exception e) { - try { - test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - JavascriptExecutor executor = (JavascriptExecutor) driver; - executor.executeScript("arguments[0].click();", driver.findElement(by)); + try { + Thread.sleep(50); + click(test,driver,by); + Thread.sleep(50); + click(test,driver,value); + + Thread.sleep(500); + }catch (Exception e) { + try { + test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); } - } + JavascriptExecutor executor = (JavascriptExecutor) driver; + executor.executeScript("arguments[0].click();", driver.findElement(by)); + + } + } public static String getTestData() { return JsonUtil.readJsonFileText("TestData.json"); } - - -// -// public static String getJsonData() -// { -// return JsonUtil.readJsonFileText("PolicyData.json"); -// } - - - - - - - public static void deactivate(ExtentTest test,WebDriver driver) throws InterruptedException { - + + + // + // public static String getJsonData() + // { + // return JsonUtil.readJsonFileText("PolicyData.json"); + // } + + + + + + + public static void deactivate(ExtentTest test,WebDriver driver) throws InterruptedException, IOException { + Commons.click(test,driver,By.id("ellipsis-button0")); Commons.click(test,driver, By.id("Deactivate0")); - Commons.click(test,driver,By.id("confirmpopup")); + Commons.click(test,driver,By.id("confirmpopup")); Commons.click(test,driver, By.id("confirmmessagepopup")); - logger.info("Click deactivate and Confirm"); - - + logger.info("Click deactivate and Confirm"); + + } - public static void activate(ExtentTest test,WebDriver driver) throws InterruptedException { + public static void activate(ExtentTest test,WebDriver driver) throws InterruptedException, IOException { - Commons.click(test,driver,By.id("ellipsis-button0")); + Commons.click(test,driver,By.id("ellipsis-button0")); Commons.click(test,driver, By.id("Activate0")); - Commons.click(test,driver,By.id("confirmpopup")); + Commons.click(test,driver,By.id("confirmpopup")); Commons.click(test,driver, By.id("confirmmessagepopup")); - logger.info("Click activate and Confirm"); + logger.info("Click activate and Confirm"); } public static void edit(ExtentTest test,WebDriver driver,String data,By by) { try {Commons.click(test,driver,By.id("ellipsis-button0")); Commons.click(test,driver, By.id("Edit0")); - + Assert.assertNotEquals(data, driver.findElement(by).getText()); driver.findElement(by).clear(); @@ -406,7 +413,7 @@ public static void edit(ExtentTest test,WebDriver driver,String data,By by) { Commons.click(test,driver, By.id("createButton")); Commons.click(test,driver, By.id("confirmmessagepopup")); - logger.info("Click Edit and Confirm" + by + data);} + logger.info("Click Edit and Confirm" + by + data);} catch (Exception e) { try { test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); @@ -423,7 +430,7 @@ public static void edit(ExtentTest test,WebDriver driver,String data,By by) { public static void editRes(ExtentTest test,WebDriver driver,String data,By by) { try{Commons.click(test,driver,By.id("ellipsis-button0")); Commons.click(test,driver, By.id("Edit0")); - + Assert.assertNotEquals(data, driver.findElement(by).getText()); driver.findElement(by).clear(); @@ -432,10 +439,10 @@ public static void editRes(ExtentTest test,WebDriver driver,String data,By by) { Commons.click(test,driver, By.id("createButton")); - Commons.click(test,driver,By.id("confirmpopup")); - Commons.click(test,driver, By.id("confirmmessagepopup")); + Commons.click(test,driver,By.id("confirmpopup")); + Commons.click(test,driver, By.id("confirmmessagepopup")); - logger.info("Click Edit and Confirm" + by + data); + logger.info("Click Edit and Confirm" + by + data); }catch (Exception e) { try { test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); @@ -451,7 +458,7 @@ public static void editRes(ExtentTest test,WebDriver driver,String data,By by) { public static void editCenter(ExtentTest test,WebDriver driver,String data,By by) { try{Commons.click(test,driver,By.id("ellipsis-button0")); Commons.click(test,driver, By.id("Edit0")); - + Assert.assertNotEquals(data, driver.findElement(by).getText()); driver.findElement(by).clear(); @@ -460,12 +467,12 @@ public static void editCenter(ExtentTest test,WebDriver driver,String data,By by Commons.click(test,driver, By.xpath("(//*[@id='createButton'])[1]")); - Commons.click(test,driver,By.id("confirmpopup")); - Commons.click(test,driver, By.id("confirmmessagepopup")); + Commons.click(test,driver,By.id("confirmpopup")); + Commons.click(test,driver, By.id("confirmmessagepopup")); - Commons.click(test,driver, By.xpath("(//*[@id='cancel'])[1]")); - Commons.click(test,driver, By.xpath("(//*[@id='cancel'])[1]")); - logger.info("Click editCenter and Confirm" + by + data);} + Commons.click(test,driver, By.xpath("(//*[@id='cancel'])[1]")); + Commons.click(test,driver, By.xpath("(//*[@id='cancel'])[1]")); + logger.info("Click editCenter and Confirm" + by + data);} catch (Exception e) { try { test.fail(e.getMessage(), MediaEntityBuilder.createScreenCaptureFromBase64String(Screenshot.ClickScreenshot(driver)).build()); @@ -478,43 +485,43 @@ public static void editCenter(ExtentTest test,WebDriver driver,String data,By by } } - - public static void create(ExtentTest test,WebDriver driver) throws InterruptedException { - + + public static void create(ExtentTest test,WebDriver driver) throws InterruptedException, IOException { + Commons.click(test,driver, By.xpath("//button[@id='createButton']")); Commons.click(test,driver, By.id("confirmmessagepopup")); - + logger.info("Click create"); - + } - public static void createRes(ExtentTest test,WebDriver driver) throws InterruptedException { - try { - Thread.sleep(500); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - + public static void createRes(ExtentTest test,WebDriver driver) throws InterruptedException, IOException { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Commons.click(test,driver, By.xpath("//button[@id='createButton']")); - Commons.click(test,driver,By.id("confirmpopup")); + Commons.click(test,driver,By.id("confirmpopup")); Commons.click(test,driver, By.id("confirmmessagepopup")); logger.info("Click and confirm"); - - + + } - public static void decommission(ExtentTest test,WebDriver driver) throws InterruptedException { - Commons.click(test,driver,By.id("ellipsis-button0")); - Commons.click(test,driver,By.id("Decommission0")); + public static void decommission(ExtentTest test,WebDriver driver) throws InterruptedException, IOException { + Commons.click(test,driver,By.id("ellipsis-button0")); + Commons.click(test,driver,By.id("Decommission0")); - Commons.click(test,driver,By.id("confirmpopup")); - Commons.click(test,driver, By.id("confirmmessagepopup")); - logger.info("Click decommission and confirm"); + Commons.click(test,driver,By.id("confirmpopup")); + Commons.click(test,driver, By.id("confirmmessagepopup")); + logger.info("Click decommission and confirm"); } public static void clickAction(ExtentTest test,WebDriver driver, By by) { - + try {Actions action = new Actions(driver); WebElement we=driver.findElement(by); @@ -532,34 +539,34 @@ public static void clickAction(ExtentTest test,WebDriver driver, By by) { } } - - - - + + + + public static String getText(WebDriver driver, By by) { - String str=driver.findElement(by).getText(); + String str=driver.findElement(by).getText(); return str; } - public static void uploadPartnerCertold(WebDriver driver, By by,String orgName,String folder,String str) throws InterruptedException { + public static void uploadPartnerCertold(WebDriver driver, By by,String orgName,String folder,String str) throws InterruptedException, IOException { // TODO Auto-generated method stub Commons.dropdown(test,driver, by, By.id(orgName) ); -try { - Thread.sleep(5000); -} catch (InterruptedException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); -} + try { + Thread.sleep(5000); + } catch (InterruptedException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } Commons.clickAction(test,driver, By.xpath("//*[@type='button']")); - + String filePath=null;; try { filePath = TestRunner.getResourcePath() + "/" + folder+str ; logger.info("uploadPartnerCertold"+filePath); } catch (Exception e) { - + // TODO Auto-generated catch block; e.printStackTrace(); } @@ -567,71 +574,71 @@ public static void uploadPartnerCertold(WebDriver driver, By by,String orgName,S Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null); Robot robot; try { - robot = new Robot(); - robot.delay(250); - robot.keyPress(KeyEvent.VK_ENTER); robot.keyRelease(KeyEvent.VK_ENTER); - robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_V); - robot.keyRelease(KeyEvent.VK_V); robot.delay(250); - robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_ENTER); - robot.delay(250); robot.keyRelease(KeyEvent.VK_ENTER); robot.delay(250); - Commons.click(test,driver, By.id("createButton")); - Commons.click(test,driver, By.id("confirmmessagepopup")); + robot = new Robot(); + robot.delay(250); + robot.keyPress(KeyEvent.VK_ENTER); robot.keyRelease(KeyEvent.VK_ENTER); + robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_V); + robot.keyRelease(KeyEvent.VK_V); robot.delay(250); + robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_ENTER); + robot.delay(250); robot.keyRelease(KeyEvent.VK_ENTER); robot.delay(250); + Commons.click(test,driver, By.id("createButton")); + Commons.click(test,driver, By.id("confirmmessagepopup")); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } } - - public static void uploadPartnerCert(WebDriver driver, By by,String orgName,String folder,String str) throws InterruptedException { + + public static void uploadPartnerCert(WebDriver driver, By by,String orgName,String folder,String str) throws InterruptedException, IOException { // TODO Auto-generated method stub Commons.dropdown(test,driver, by, By.id(orgName) ); -try { - Thread.sleep(5000); -} catch (InterruptedException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); -} - - + try { + Thread.sleep(5000); + } catch (InterruptedException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + String filePath=null;; try { filePath = TestRunner.getResourcePath() + "/" + folder+str ; logger.info("uploadPartnerCertold"+filePath); - Commons.enter(test, driver, By.id("fileInput"), filePath); + Commons.enter(test, driver, By.id("fileInput"), filePath); } catch (Exception e) { - + // TODO Auto-generated catch block; e.printStackTrace(); } - + Commons.click(test,driver, By.id("createButton")); Commons.click(test,driver, By.id("confirmmessagepopup")); - - + + } public static String getPreAppend() - { - String preappend = null; - try { - preappend = ConfigManager.getpreappend(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + { + String preappend = null; + try { + preappend = ConfigManager.getpreappend(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return preappend; } - return preappend; - } public static int getSplitdigit() - { - String splitdigit = null; - try { - splitdigit = ConfigManager.getsplitdigit(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + { + String splitdigit = null; + try { + splitdigit = ConfigManager.getsplitdigit(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return Integer.parseInt(splitdigit); } - return Integer.parseInt(splitdigit); - } } diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/RegisterBaseClass.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/RegisterBaseClass.java index 1ca0fd750..f9171e2c6 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/RegisterBaseClass.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/RegisterBaseClass.java @@ -90,8 +90,6 @@ public void setUp() throws Exception { @AfterMethod public void tearDown() throws InterruptedException { - Commons.click(test,driver, By.id("menuButton")); - Commons.click(test,driver, By.id("Logout")); driver.quit(); extent.flush(); } diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Screenshot.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Screenshot.java index 84a418860..1d8692692 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Screenshot.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Screenshot.java @@ -20,14 +20,8 @@ public static String ClickScreenshot(WebDriver driver) throws IOException { TakesScreenshot ss=(TakesScreenshot)driver; File so=ss.getScreenshotAs(OutputType.FILE); String path=null; - - if (TestRunner.checkRunType().equalsIgnoreCase("JAR")) { - path = TestRunner.getResourcePath()+"/Screenshots/"+System.currentTimeMillis()+".png"; - } else if (TestRunner.checkRunType().equalsIgnoreCase("IDE")) { - - - path = System.getProperty("user.dir") + System.getProperty("path.config")+ "/Screenshots/"+System.currentTimeMillis()+".png"; - }File des=new File(path); + path = TestRunner.getResourcePath()+ "/Screenshots/"+System.currentTimeMillis()+".png"; + File des=new File(path); FileHandler.copy(so, des); FileInputStream fis=new FileInputStream(path); byte[] bytes =IOUtils.toByteArray(fis); diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java index 14f38bf28..19bdf9a19 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java @@ -7,40 +7,45 @@ import org.apache.log4j.Logger; import org.testng.TestListenerAdapter; import org.testng.TestNG; +import org.testng.xml.XmlClass; +import org.testng.xml.XmlSuite; +import org.testng.xml.XmlTest; + +//import io.mosip.testrig.pmpui.dbaccess.DBManager; import io.mosip.testrig.pmpui.fw.util.AdminTestUtil; -import io.mosip.testrig.pmpui.testcase.AdminAuthPolicyTest; -import io.mosip.testrig.pmpui.testcase.AdminDataSharePolicyTest; -import io.mosip.testrig.pmpui.testcase.AdminDeviceDetailsTest; -import io.mosip.testrig.pmpui.testcase.AdminFtmDetailsTest; -import io.mosip.testrig.pmpui.testcase.AdminPartnerPolicyMappingTest; -import io.mosip.testrig.pmpui.testcase.AdminPolicyGroupTest; -import io.mosip.testrig.pmpui.testcase.AdminSbiDetailsTest; -import io.mosip.testrig.pmpui.testcase.AdminUploadCaCertTest; -import io.mosip.testrig.pmpui.testcase.PartnerLoginAuthCredTest; -import io.mosip.testrig.pmpui.testcase.PartnerRegisterAuthCredTest; -import io.mosip.testrig.pmpui.testcase.PartnerRegisterFTMTest; -import io.mosip.testrig.pmpui.testcase.PartnerRegisterSbiDeviceTest; -import io.mosip.testrig.pmpui.testcase.apicall; +import io.mosip.testrig.pmpui.kernel.util.ConfigManager; +import io.mosip.testrig.pmpui.testcase.*; + + + + + public class TestRunner { - private static final org.slf4j.Logger logger= org.slf4j.LoggerFactory.getLogger(TestRunner.class); - public static String jarUrl = TestRunner.class.getProtectionDomain().getCodeSource().getLocation().getPath(); + private static final Logger logger = Logger.getLogger(TestRunner.class); static TestListenerAdapter tla = new TestListenerAdapter(); - + public static String jarUrl = TestRunner.class.getProtectionDomain().getCodeSource().getLocation().getPath(); + public static String uin=""; + public static String perpetualVid=""; + public static String onetimeuseVid=""; + public static String temporaryVid=""; + static TestNG testNg; - + public static void main(String[] args) throws Exception { - -// if (checkRunType().equalsIgnoreCase("JAR")) { -// ExtractResource.removeOldMosipTestTestResource(); -// ExtractResource.extractResourceFromJar(); -// } + + // if (checkRunType().equalsIgnoreCase("JAR")) { + // ExtractResource.removeOldMosipTestTestResource(); + // ExtractResource.extractResourceFromJar(); + // } AdminTestUtil.initialize(); - /* testNg=new TestNG(); - + //DBManager.clearMasterDbData(); + //ConfigManager.getMasterDbPass(); + /* testNg=new TestNG(); + String listExcludedGroups=JsonUtil.JsonObjParsing(Commons.getTestData(),"setExcludedGroups"); testNg.setExcludedGroups(listExcludedGroups); //testNg.setPreserveOrder(true); @@ -57,46 +62,169 @@ public static void main(String[] args) throws Exception { PartnerRegisterAuthCredTest.class, PartnerRegisterFTMTest.class, PartnerRegisterSbiDeviceTest.class,apicall.class - + });*/ -// testNg.run(); + // testNg.run(); startTestRunner(); } - + public static void startTestRunner() throws Exception { File homeDir = null; TestNG runner = new TestNG(); - List suitefiles = new ArrayList(); - String os = System.getProperty("os.name"); - if (checkRunType().contains("IDE") || os.toLowerCase().contains("windows") == true) { - homeDir = new File(getResourcePath() + "/testngFile"); - - } else { - homeDir = new File(getResourcePath() + "/testngFile"); - - } - - for (File file : homeDir.listFiles()) { - if (file.getName().toLowerCase() != null) { - suitefiles.add(file.getAbsolutePath()); + if(!ConfigManager.gettestcases().equals("")) { + XmlSuite suite = new XmlSuite(); + suite.setName("MySuite"); + suite.addListener("io.mosip.testrig.pmpui.utility.EmailableReport"); + XmlClass AdminAuthPolicyTest = new XmlClass("io.mosip.testrig.pmpui.testcase.AdminAuthPolicyTest"); + XmlClass AdminDataSharePolicyTest = new XmlClass("io.mosip.testrig.pmpui.testcase.AdminDataSharePolicyTest"); + XmlClass AdminDeviceDetailsTest = new XmlClass("io.mosip.testrig.pmpui.testcase.AdminDeviceDetailsTest"); + XmlClass AdminFtmDetailsTest = new XmlClass("io.mosip.testrig.pmpui.testcase.AdminFtmDetailsTest"); + XmlClass AdminPartnerPolicyMappingTest = new XmlClass("io.mosip.testrig.pmpui.testcase.AdminPartnerPolicyMappingTest"); + XmlClass AdminPolicyGroupTest = new XmlClass("io.mosip.testrig.pmpui.testcase.AdminPolicyGroupTest"); + XmlClass AdminSbiDetailsTest = new XmlClass("io.mosip.testrig.pmpui.testcase.AdminSbiDetailsTest"); + XmlClass AdminUploadCaCertTest = new XmlClass("io.mosip.testrig.pmpui.testcase.AdminUploadCaCertTest"); + XmlClass PartnerLoginAuthCredTest = new XmlClass("io.mosip.testrig.pmpui.testcase.PartnerLoginAuthCredTest"); + XmlClass PartnerRegisterAuthCredTest = new XmlClass("io.mosip.testrig.pmpui.testcase.PartnerRegisterAuthCredTest"); + XmlClass PartnerRegisterFTMTest = new XmlClass("io.mosip.testrig.pmpui.testcase.PartnerRegisterFTMTest"); + XmlClass PartnerRegisterSbiDeviceTest= new XmlClass("io.mosip.testrig.pmpui.testcase.PartnerRegisterSbiDeviceTest"); + + List classes = new ArrayList<>(); + String[] a=ConfigManager.gettestcases().split(","); + for(String test:a) { + if(test.equals("AdminAuthPolicyTest")) { + classes.add(AdminUploadCaCertTest); + classes.add(AdminPolicyGroupTest); + classes.add(AdminAuthPolicyTest); + } + + if(test.equals("AdminDataSharePolicyTest")) { + classes.add(AdminUploadCaCertTest); + classes.add(AdminPolicyGroupTest); + classes.add(AdminAuthPolicyTest); + classes.add(AdminDataSharePolicyTest); + } + + if(test.equals("AdminDeviceDetailsTest")) { + classes.add(AdminUploadCaCertTest); + classes.add(AdminPolicyGroupTest); + classes.add(AdminAuthPolicyTest); + classes.add(AdminDeviceDetailsTest); + classes.add(AdminSbiDetailsTest); + classes.add(PartnerRegisterSbiDeviceTest); + classes.add(AdminDataSharePolicyTest); + } + + if(test.equals("AdminFtmDetailsTest")) { + classes.add(AdminUploadCaCertTest); + classes.add(PartnerRegisterFTMTest); + classes.add(AdminFtmDetailsTest); + } + + if(test.equals("AdminPartnerPolicyMappingTest")) { + classes.add(PartnerRegisterAuthCredTest); + classes.add(AdminUploadCaCertTest); + classes.add(AdminPolicyGroupTest); + classes.add(AdminAuthPolicyTest); + classes.add(AdminDataSharePolicyTest); + classes.add(AdminPartnerPolicyMappingTest); + } + + + if(test.equals("AdminPolicyGroupTest")) { + classes.add(AdminUploadCaCertTest); + classes.add(AdminPolicyGroupTest); + } + + if(test.equals("AdminSbiDetailsTest")) { + classes.add(AdminUploadCaCertTest); + classes.add(AdminPolicyGroupTest); + classes.add(AdminAuthPolicyTest); + classes.add(AdminDataSharePolicyTest); + classes.add(PartnerRegisterSbiDeviceTest); + classes.add(AdminSbiDetailsTest); + } + + if(test.equals("AdminUploadCaCertTest")) + classes.add(AdminUploadCaCertTest); + + + if(test.equals("PartnerLoginAuthCredTest")) { + classes.add(PartnerRegisterAuthCredTest); + classes.add(AdminUploadCaCertTest); + classes.add(AdminPolicyGroupTest); + classes.add(AdminAuthPolicyTest); + classes.add(AdminDataSharePolicyTest); + classes.add(AdminPartnerPolicyMappingTest); + classes.add(PartnerLoginAuthCredTest); + } + if(test.equals("PartnerRegisterAuthCredTest")) { + classes.add(AdminUploadCaCertTest); + classes.add(AdminPolicyGroupTest); + classes.add(AdminAuthPolicyTest); + classes.add(AdminDataSharePolicyTest); + classes.add(PartnerRegisterAuthCredTest); + } + if(test.equals("PartnerRegisterFTMTest")) { + classes.add(AdminUploadCaCertTest); + classes.add(PartnerRegisterFTMTest); + } + if(test.equals("PartnerRegisterSbiDeviceTest")) { + classes.add(AdminUploadCaCertTest); + classes.add(AdminPolicyGroupTest); + classes.add(AdminAuthPolicyTest); + classes.add(AdminDataSharePolicyTest); + classes.add(PartnerRegisterSbiDeviceTest); + } + + + } - } - - runner.setTestSuites(suitefiles); - + + XmlTest test = new XmlTest(suite); + test.setName("MyTest"); + test.setXmlClasses(classes); + + List suites = new ArrayList<>(); + suites.add(suite); + + runner.setXmlSuites(suites); + + }else { + List suitefiles = new ArrayList(); + String os = System.getProperty("os.name"); + if (checkRunType().contains("IDE") || os.toLowerCase().contains("windows") == true) { + homeDir = new File(getResourcePath() + "/testngFile"); + + } else { + homeDir = new File(getResourcePath() + "/testngFile"); + + } + + for (File file : homeDir.listFiles()) { + if (file.getName().toLowerCase() != null) { + suitefiles.add(file.getAbsolutePath()); + } + } + + runner.setTestSuites(suitefiles); + + + } + // Set other properties and run TestNG System.getProperties().setProperty("testng.outpur.dir", "testng-report"); runner.setOutputDirectory("testng-report"); - System.getProperties().setProperty("emailable.report2.name", "PMPUI-" + BaseTestCaseFunc.environment + "-" + System.getProperties().setProperty("emailable.report2.name", "PMPUI-" + BaseTestCaseFunc.environment + "-run-" + System.currentTimeMillis() + "-report.html"); runner.run(); - - + + // DBManager.clearMasterDbData(); System.exit(0); } - + + public static String getGlobalResourcePath() { if (checkRunType().equalsIgnoreCase("JAR")) { return new File(jarUrl).getParentFile().getAbsolutePath().toString(); @@ -109,22 +237,22 @@ public static String getGlobalResourcePath() { } return "Global Resource File Path Not Found"; } - + public static String getResourcePath() { if (checkRunType().equalsIgnoreCase("JAR")) { return new File(jarUrl).getParentFile().getAbsolutePath().toString()+"/resources/"; } else if (checkRunType().equalsIgnoreCase("IDE")) { - String path = System.getProperty("user.dir") + System.getProperty("path.config"); + String path = System.getProperty("user.dir") + System.getProperty("path.config"); - // String path = new File(TestRunner.class.getClassLoader().getResource("").getPath()).getAbsolutePath() - // .toString(); + // String path = new File(TestRunner.class.getClassLoader().getResource("").getPath()).getAbsolutePath() + // .toString(); if (path.contains("test-classes")) path = path.replace("test-classes", "classes"); return path; } return "Global Resource File Path Not Found"; } - + public static String checkRunType() { if (TestRunner.class.getResource("TestRunner.class").getPath().toString().contains(".jar")) return "JAR"; @@ -134,13 +262,14 @@ public static String checkRunType() { public static String GetKernalFilename(){ String path = System.getProperty("env.user"); String kernalpath=null; - if(System.getProperty("env.user")==null) { - kernalpath="Kernel.properties"; + if(System.getProperty("env.user")==null || System.getProperty("env.user").equals("")) { + kernalpath="Kernel.properties"; - }else { - kernalpath="Kernel_"+path+".properties"; - } - return kernalpath; + }else { + kernalpath="Kernel_"+path+".properties"; + } + return kernalpath; } + } diff --git a/pmptest/src/main/resources/config/Kernel.properties b/pmptest/src/main/resources/config/Kernel.properties index d647bb31b..798fd9d6d 100644 --- a/pmptest/src/main/resources/config/Kernel.properties +++ b/pmptest/src/main/resources/config/Kernel.properties @@ -33,7 +33,7 @@ admin_zone_userName=globaladmin mosip_regclient_app_id=registrationclient mosip_reg_client_id=mosip-reg-client mosip_reg_client_secret=3H9qsSxmYn4bXBk8 -iam-users-to-create=auto11 +iam-users-to-create=admin1 #iam-users-to-create=111997,220005,111992 iam-users-password=mosip123 roles=GLOBAL_ADMIN,ID_AUTHENTICATION,PARTNER_ADMIN,PMS_ADMIN,POLICYMANAGER,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,ZONAL_ADMIN @@ -83,6 +83,8 @@ enableDebug=no threadCount=1 # supported values are 0 ,1, 2 based on number of env languages langselect=0 +#suppport sin or eng,hin,kan,tam,fra,ara +loginlang=sin #----------------------------------AuthDemoService Host properties----------------------------------------------------------# #To run locally authDemoServiceBaseURL=http://localhost @@ -113,3 +115,21 @@ servicesNotDeployed= PmpPortalPath=https://pmp.dev2.mosip.net/ apiEnvUser=api-internal.dev2 apiInternalEndPoint=https://api-internal.dev2.mosip.net + +#----------------------------------Test_data--------------------------------------------- +pmpscenariosToExecute= +holidayDateCenter=27/12/2022 +holidayDate=12/27/2022 +preappend=00 +splitdigit=7 +jsonObjName=identity +bulkwait=10000 +sbivalidDate=12/27/2022 +sbiexpiryDate=12/27/2024 +policyData={\"authTokenType\":\"policy\",\"allowedKycAttributes\":[{\"attributeName\":\"fullName\"},{\"attributeName\":\"gender\"},{\"attributeName\":\"residenceStatus\"},{\"attributeName\":\"dateOfBirth\"},{\"attributeName\":\"photo\"},{\"attributeName\":\"civilRegistryNumber\"},{\"attributeName\":\"birthCertificateNumber\"},{\"attributeName\":\"flagidcs\"},{\"attributeName\":\"listCountry\"},{\"attributeName\":\"placeOfBirth\"},{\"attributeName\":\"flagb\"},{\"attributeName\":\"passportNumber\"},{\"attributeName\":\"referenceResidencyNumber\"},{\"attributeName\":\"resOuPass\"}],\"allowedAuthTypes\":[{\"authSubType\":\"IRIS\",\"authType\":\"bio\",\"mandatory\":false},{\"authSubType\":\"FINGER\",\"authType\":\"bio\",\"mandatory\":false},{\"authSubType\":\"\",\"authType\":\"otp\",\"mandatory\":false},{\"authSubType\":\"FACE\",\"authType\":\"bio\",\"mandatory\":false},{\"authSubType\":\"\",\"authType\":\"otp-request\",\"mandatory\":false},{\"authSubType\":\"\",\"authType\":\"kyc\",\"mandatory\":false},{\"authSubType\":\"\",\"authType\":\"demo\",\"mandatory\":false}]} +dataSharepolicyData={\"shareableAttributes\":[{\"attributeName\":\"fullName\",\"source\":[{\"attribute\":\"fullName\"}],\"encrypted\":true},{\"attributeName\":\"dateOfBirth\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":true},{\"attributeName\":\"gender\",\"source\":[{\"attribute\":\"gender\"}],\"encrypted\":true},{\"attributeName\":\"residenceStatus\",\"source\":[{\"attribute\":\"residenceStatus\"}],\"encrypted\":true},{\"attributeName\":\"phone\",\"source\":[{\"attribute\":\"phone\"}],\"encrypted\":true},{\"attributeName\":\"email\",\"source\":[{\"attribute\":\"email\"}],\"encrypted\":true},{\"attributeName\":\"dualCitizenshipAvailability\",\"source\":[{\"attribute\":\"dualCitizenshipAvailability\"}],\"encrypted\":true},{\"attributeName\":\"fatherName\",\"source\":[{\"attribute\":\"fatherName\"}],\"encrypted\":true},{\"attributeName\":\"shortenedPrintedName\",\"source\":[{\"attribute\":\"shortenedPrintedName\"}],\"encrypted\":true},{\"attributeName\":\"layName\",\"source\":[{\"attribute\":\"layName\"}],\"encrypted\":true},{\"attributeName\":\"nationalIdentityNumber\",\"source\":[{\"attribute\":\"nationalIdentityNumber\"}],\"encrypted\":true},{\"attributeName\":\"permanentAddress\",\"source\":[{\"attribute\":\"permanentAddress\"}],\"encrypted\":true},{\"attributeName\":\"temporaryAddress\",\"source\":[{\"attribute\":\"temporaryAddress\"}],\"encrypted\":true},{\"attributeName\":\"addressLine1\",\"source\":[{\"attribute\":\"addressLine1\"}],\"encrypted\":true},{\"attributeName\":\"addressLine2\",\"source\":[{\"attribute\":\"addressLine2\"}],\"encrypted\":true},{\"attributeName\":\"addressLine3\",\"source\":[{\"attribute\":\"addressLine3\"}],\"encrypted\":true},{\"attributeName\":\"region\",\"source\":[{\"attribute\":\"region\"}],\"encrypted\":true},{\"attributeName\":\"province\",\"source\":[{\"attribute\":\"province\"}],\"encrypted\":true},{\"attributeName\":\"profession\",\"source\":[{\"attribute\":\"profession\"}],\"encrypted\":true},{\"attributeName\":\"city\",\"source\":[{\"attribute\":\"city\"}],\"encrypted\":true},{\"attributeName\":\"postalCode\",\"source\":[{\"attribute\":\"postalCode\"}],\"encrypted\":true},{\"attributeName\":\"zone\",\"source\":[{\"attribute\":\"zone\"}],\"encrypted\":true},{\"attributeName\":\"preferredLang\",\"source\":[{\"attribute\":\"preferredLang\"}],\"encrypted\":false},{\"attributeName\":\"individualBiometrics\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\"}],\"encrypted\":true,\"format\":\"extraction\"}],\"dataSharePolicies\":{\"typeOfShare\":\"Data Share\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"Partner Based\",\"shareDomain\":\"datashare.datashare\",\"source\":\"IDRepository\"}} +publicKey=ZAEACwACAHIAIINxl2dEhLP4GpDMjUal1yT9UtduBlILZPKh2hszFGmqABAAFwALCAAAAQABAQDCHegKJ3vRn__8h1knXKiLA8qfO5LebzBlRO2tAcI3HvLyL9rPkVrXWYQ6wAn4VQk015C1hViU-7k752dYE5WUAUbgsxOHvvDPH1t72CNHNj9dyE86wGqR9AtK3yz0yf1IP_xgtWpiaQ2V9t2d3LtgPYWnRuPJbcl97nLXXL6PGfh1mRwsQUi94coEBPMZ9YLLOAFckPuDZt-lEcXIMkj8r0uNwAZUSEvGifTNWbLjC5BRlJBmvScIlptXqIwBaq2kSMVK2X1KbQ6TM8zkA_co4LEAIZfcpMgPn6RdW0yFtcx24HqrCY8v0DHregwoCPPpw8HvB-r5aR09mXG64zsJ +signPublicKey=AAZABAAEAHIAAAAQABQACwgAAAEAAQEAr93rKokeZGIzcCtFX3iyCvwpmfnd9jz0nF__0bxWr0mH8Zs0rhlG6vKRagx31I4CdrLAECOwMZ0r7Y3utTqHqelQE3MJLtboKITOqYRpBkqHSm1jGaEb8a1E9yoJri3tZrBCrAShimrN_SbtS1uKbJUG3cuVuE0gtGLI1d5wMfS_4PSz3RwvZtGHisEb3zbV6SLcJkgcDeMbUD7P25SVJd1xrJybuGIgyeSZxOgLzy1P-qHCiOXiAO9o06fwyIhIYbeZYz5th4rq7Rb6mRK9EWFpLrLvBL0F6USiidl8qNCxxZZFUp3W5xFANVYfRvgLKI33zBYniZ7aTE8PgrYa2w +headless=yes +docker=yes +langcode=[{"language":"tam","value":"தமிழà¯\uFFFD"},{"language":"kan","value":"à²\u2022ನà³\uFFFDನಡ"},{"language":"hin","value":"hin"},{"language":"eng1","value":"English"},{"language":"eng","value":"English"},{"language":"fra","value":"Français"},{"language":"ara","value":"Arabic"}] \ No newline at end of file diff --git a/pmptest/src/main/resources/config/kernel_dev2.properties b/pmptest/src/main/resources/config/kernel_dev2.properties new file mode 100644 index 000000000..e26e1889f --- /dev/null +++ b/pmptest/src/main/resources/config/kernel_dev2.properties @@ -0,0 +1,135 @@ +#Kernel resource uris +#Make sure all resource apis are covered +authenticationInternal=/v1/authmanager/authenticate/internal/useridPwd +zoneMappingUrl=/v1/masterdata/zoneuser +zoneNameUrl=/v1/masterdata/zones/zonename +zoneMappingActivateUrl=/v1/masterdata/zoneuser +userCenterMappingUrl=/v1/masterdata/usercentermapping +bulkUploadUrl=/v1/admin/bulkupload +#Below users are used for authentication +#PARTNER +#Dont change the partner id +#IDREPO +mosip_idrepo_app_id=idrepo +mosip_idrepo_client_id=mosip-idrepo-client +mosip_idrepo_client_secret=IGsZkHXcAoqGKRTA +#IDREPO +mosip_idrepo_app_id=idrepo +mosip_idrepo_client_id=mosip-idrepo-client +mosip_idrepo_client_secret=IGsZkHXcAoqGKRTA +keycloak-realm-id=mosip +keycloak-external-url=https://iam.dev2.mosip.net +mosip_testrig_client_id=mosip-testrig-client +mosip_testrig_client_secret=Xup50UX3AybAkzkH +admin +mosip_admin_app_id=admin +admin_password=mosip123 +admin_userName=auto11 +mosip_admin_client_id=mosip-admin-client +mosip_admin_client_secret=E4386XMrYOvoHMJ5 +#admin +admin_zone_password=mosip123 +admin_zone_userName=globaladmin +mosip_regclient_app_id=registrationclient +mosip_reg_client_id=mosip-reg-client +mosip_reg_client_secret=3H9qsSxmYn4bXBk8 +iam-users-to-create=admin1 +#iam-users-to-create=111997,220005,111992 +iam-users-password=mosip123 +roles=GLOBAL_ADMIN,ID_AUTHENTICATION,PARTNER_ADMIN,PMS_ADMIN,POLICYMANAGER,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,ZONAL_ADMIN +roles.globaladmin=GLOBAL_ADMIN,REGISTRATION_ADMIN,uma_authorization,ZONAL_ADMIN,default-roles-mosip +partner_url=jdbc:postgresql://dev2.mosip.net:5432/mosip_ida +#----------------------------------Database properties----------------------------------------------------------# +postgresqlUser=postgresql +db-port=5432 +db-server=dev2.mosip.net +hibernate.connection.driver_class=org.postgresql.Driver +hibernate.connection.pool_size=1 +hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect +hibernate.show_sql=true +hibernate.current_session_context_class=thread +db-su-user=postgres +postgresql-password=d52kjJuxp2 +pms_db_schema=pms +km_db_schema=keymgr +master_db_schema=master +audit_db_schema=audit +ida_db_schema=ida +db-server=dev2.mosip.net +keycloak-external-url=https://iam.dev2.mosip.net +audit_url=jdbc:postgresql://dev2.mosip.net:5432/mosip_audit +driver_class=org.postgresql.Driver +pool_size=1 +dialect=org.hibernate.dialect.PostgreSQLDialect +show_sql=true +current_session_context_class=thread +db-su-user=postgres +postgresql-password=d52kjJuxp2 +postgresqlUser=postgresql +db-port=5432 +db-server=dev2.mosip.net + + +s3-user-key=minioadmin +s3-user-secret=minioadmin +s3-host=http://minio.minio:9000 +s3-account=uiautomation +s3-region=null +reportExpirationInDays=3 +# supported values yes or no +push-reports-to-s3=no +enableDebug=no +# supported values are 1 to 8 +threadCount=1 +# supported values are 0 ,1, 2 based on number of env languages +langselect=0 +#suppport sin or eng,hin,kan,tam,fra,ara +loginlang=sin +#----------------------------------AuthDemoService Host properties----------------------------------------------------------# +#To run locally +authDemoServiceBaseURL=http://localhost +authDemoServicePort=8082 + +#To run in Docker +#authDemoServiceBaseURL=http://authdemo.apitestrig +#authDemoServicePort=80 + + +#----------------------------------IdP properties----------------------------------------------------------# + +currentUserURI=/#/uinservices/viewhistory +actuatorEndpoint=/resident/v1/actuator/env +actuatorIDAEndpoint=/idauthentication/v1/actuator/env +actuatorRegprocEndpoint=/registrationprocessor/v1/registrationtransaction/actuator/env +tokenEndpoint=/v1/esignet/oauth/token +validateBindingEndpoint=esignet-binding + +#To run in Docker +#authCertsPath=/home/mosip/authcerts + +#To run locally +authCertsPath= + +servicesNotDeployed= + +PmpPortalPath=https://pmp.dev2.mosip.net/ +apiEnvUser=api-internal.dev2 +apiInternalEndPoint=https://api-internal.dev2.mosip.net + +#----------------------------------Test_data--------------------------------------------- +pmpscenariosToExecute= +holidayDateCenter=27/12/2022 +holidayDate=12/27/2022 +preappend=00 +splitdigit=7 +jsonObjName=identity +bulkwait=10000 +sbivalidDate=12/27/2022 +sbiexpiryDate=12/27/2024 +policyData={\"authTokenType\":\"policy\",\"allowedKycAttributes\":[{\"attributeName\":\"fullName\"},{\"attributeName\":\"gender\"},{\"attributeName\":\"residenceStatus\"},{\"attributeName\":\"dateOfBirth\"},{\"attributeName\":\"photo\"},{\"attributeName\":\"civilRegistryNumber\"},{\"attributeName\":\"birthCertificateNumber\"},{\"attributeName\":\"flagidcs\"},{\"attributeName\":\"listCountry\"},{\"attributeName\":\"placeOfBirth\"},{\"attributeName\":\"flagb\"},{\"attributeName\":\"passportNumber\"},{\"attributeName\":\"referenceResidencyNumber\"},{\"attributeName\":\"resOuPass\"}],\"allowedAuthTypes\":[{\"authSubType\":\"IRIS\",\"authType\":\"bio\",\"mandatory\":false},{\"authSubType\":\"FINGER\",\"authType\":\"bio\",\"mandatory\":false},{\"authSubType\":\"\",\"authType\":\"otp\",\"mandatory\":false},{\"authSubType\":\"FACE\",\"authType\":\"bio\",\"mandatory\":false},{\"authSubType\":\"\",\"authType\":\"otp-request\",\"mandatory\":false},{\"authSubType\":\"\",\"authType\":\"kyc\",\"mandatory\":false},{\"authSubType\":\"\",\"authType\":\"demo\",\"mandatory\":false}]} +dataSharepolicyData={\"shareableAttributes\":[{\"attributeName\":\"fullName\",\"source\":[{\"attribute\":\"fullName\"}],\"encrypted\":true},{\"attributeName\":\"dateOfBirth\",\"source\":[{\"attribute\":\"dateOfBirth\"}],\"encrypted\":true},{\"attributeName\":\"gender\",\"source\":[{\"attribute\":\"gender\"}],\"encrypted\":true},{\"attributeName\":\"residenceStatus\",\"source\":[{\"attribute\":\"residenceStatus\"}],\"encrypted\":true},{\"attributeName\":\"phone\",\"source\":[{\"attribute\":\"phone\"}],\"encrypted\":true},{\"attributeName\":\"email\",\"source\":[{\"attribute\":\"email\"}],\"encrypted\":true},{\"attributeName\":\"dualCitizenshipAvailability\",\"source\":[{\"attribute\":\"dualCitizenshipAvailability\"}],\"encrypted\":true},{\"attributeName\":\"fatherName\",\"source\":[{\"attribute\":\"fatherName\"}],\"encrypted\":true},{\"attributeName\":\"shortenedPrintedName\",\"source\":[{\"attribute\":\"shortenedPrintedName\"}],\"encrypted\":true},{\"attributeName\":\"layName\",\"source\":[{\"attribute\":\"layName\"}],\"encrypted\":true},{\"attributeName\":\"nationalIdentityNumber\",\"source\":[{\"attribute\":\"nationalIdentityNumber\"}],\"encrypted\":true},{\"attributeName\":\"permanentAddress\",\"source\":[{\"attribute\":\"permanentAddress\"}],\"encrypted\":true},{\"attributeName\":\"temporaryAddress\",\"source\":[{\"attribute\":\"temporaryAddress\"}],\"encrypted\":true},{\"attributeName\":\"addressLine1\",\"source\":[{\"attribute\":\"addressLine1\"}],\"encrypted\":true},{\"attributeName\":\"addressLine2\",\"source\":[{\"attribute\":\"addressLine2\"}],\"encrypted\":true},{\"attributeName\":\"addressLine3\",\"source\":[{\"attribute\":\"addressLine3\"}],\"encrypted\":true},{\"attributeName\":\"region\",\"source\":[{\"attribute\":\"region\"}],\"encrypted\":true},{\"attributeName\":\"province\",\"source\":[{\"attribute\":\"province\"}],\"encrypted\":true},{\"attributeName\":\"profession\",\"source\":[{\"attribute\":\"profession\"}],\"encrypted\":true},{\"attributeName\":\"city\",\"source\":[{\"attribute\":\"city\"}],\"encrypted\":true},{\"attributeName\":\"postalCode\",\"source\":[{\"attribute\":\"postalCode\"}],\"encrypted\":true},{\"attributeName\":\"zone\",\"source\":[{\"attribute\":\"zone\"}],\"encrypted\":true},{\"attributeName\":\"preferredLang\",\"source\":[{\"attribute\":\"preferredLang\"}],\"encrypted\":false},{\"attributeName\":\"individualBiometrics\",\"group\":\"CBEFF\",\"source\":[{\"attribute\":\"individualBiometrics\"}],\"encrypted\":true,\"format\":\"extraction\"}],\"dataSharePolicies\":{\"typeOfShare\":\"Data Share\",\"validForInMinutes\":\"30\",\"transactionsAllowed\":\"2\",\"encryptionType\":\"Partner Based\",\"shareDomain\":\"datashare.datashare\",\"source\":\"IDRepository\"}} +publicKey=ZAEACwACAHIAIINxl2dEhLP4GpDMjUal1yT9UtduBlILZPKh2hszFGmqABAAFwALCAAAAQABAQDCHegKJ3vRn__8h1knXKiLA8qfO5LebzBlRO2tAcI3HvLyL9rPkVrXWYQ6wAn4VQk015C1hViU-7k752dYE5WUAUbgsxOHvvDPH1t72CNHNj9dyE86wGqR9AtK3yz0yf1IP_xgtWpiaQ2V9t2d3LtgPYWnRuPJbcl97nLXXL6PGfh1mRwsQUi94coEBPMZ9YLLOAFckPuDZt-lEcXIMkj8r0uNwAZUSEvGifTNWbLjC5BRlJBmvScIlptXqIwBaq2kSMVK2X1KbQ6TM8zkA_co4LEAIZfcpMgPn6RdW0yFtcx24HqrCY8v0DHregwoCPPpw8HvB-r5aR09mXG64zsJ +signPublicKey=AAZABAAEAHIAAAAQABQACwgAAAEAAQEAr93rKokeZGIzcCtFX3iyCvwpmfnd9jz0nF__0bxWr0mH8Zs0rhlG6vKRagx31I4CdrLAECOwMZ0r7Y3utTqHqelQE3MJLtboKITOqYRpBkqHSm1jGaEb8a1E9yoJri3tZrBCrAShimrN_SbtS1uKbJUG3cuVuE0gtGLI1d5wMfS_4PSz3RwvZtGHisEb3zbV6SLcJkgcDeMbUD7P25SVJd1xrJybuGIgyeSZxOgLzy1P-qHCiOXiAO9o06fwyIhIYbeZYz5th4rq7Rb6mRK9EWFpLrLvBL0F6USiidl8qNCxxZZFUp3W5xFANVYfRvgLKI33zBYniZ7aTE8PgrYa2w +headless=no +docker=yes +langcode=[{"language":"tam","value":"தமிழà¯\uFFFD"},{"language":"kan","value":"à²\u2022ನà³\uFFFDನಡ"},{"language":"hin","value":"hin"},{"language":"eng1","value":"English"},{"language":"eng","value":"English"},{"language":"fra","value":"Français"},{"language":"ara","value":"Arabic"}] \ No newline at end of file From 74468055ebf2e6655afc92c9abe5368dfa0917bf Mon Sep 17 00:00:00 2001 From: Jayesh Kharode Date: Thu, 25 Jan 2024 13:54:06 +0530 Subject: [PATCH 3/9] MOSIP-31295 Signed-off-by: Jayesh Kharode --- .../main/java/io/mosip/testrig/pmpui/utility/TestRunner.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java index 19bdf9a19..5dced03c6 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java @@ -89,8 +89,8 @@ public static void startTestRunner() throws Exception { XmlClass PartnerRegisterSbiDeviceTest= new XmlClass("io.mosip.testrig.pmpui.testcase.PartnerRegisterSbiDeviceTest"); List classes = new ArrayList<>(); - String[] a=ConfigManager.gettestcases().split(","); - for(String test:a) { + String[] Scenarioname=ConfigManager.gettestcases().split(","); + for(String test:Scenarioname) { if(test.equals("AdminAuthPolicyTest")) { classes.add(AdminUploadCaCertTest); classes.add(AdminPolicyGroupTest); From be97debba2042c2af9a55caa71f6d4aab4313ff0 Mon Sep 17 00:00:00 2001 From: Jayesh Kharode Date: Thu, 25 Jan 2024 14:00:04 +0530 Subject: [PATCH 4/9] MOSIP-31295 Signed-off-by: Jayesh Kharode --- .../testrig/pmpui/utility/TestRunner.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java index 5dced03c6..6ddc74b58 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/TestRunner.java @@ -91,20 +91,20 @@ public static void startTestRunner() throws Exception { List classes = new ArrayList<>(); String[] Scenarioname=ConfigManager.gettestcases().split(","); for(String test:Scenarioname) { - if(test.equals("AdminAuthPolicyTest")) { + if(test.equals("adminAuthPolicyTest")) { classes.add(AdminUploadCaCertTest); classes.add(AdminPolicyGroupTest); classes.add(AdminAuthPolicyTest); } - if(test.equals("AdminDataSharePolicyTest")) { + if(test.equals("adminDataSharePolicyTest")) { classes.add(AdminUploadCaCertTest); classes.add(AdminPolicyGroupTest); classes.add(AdminAuthPolicyTest); classes.add(AdminDataSharePolicyTest); } - if(test.equals("AdminDeviceDetailsTest")) { + if(test.equals("adminDeviceDetailsTest")) { classes.add(AdminUploadCaCertTest); classes.add(AdminPolicyGroupTest); classes.add(AdminAuthPolicyTest); @@ -114,13 +114,13 @@ public static void startTestRunner() throws Exception { classes.add(AdminDataSharePolicyTest); } - if(test.equals("AdminFtmDetailsTest")) { + if(test.equals("adminFtmDetailsTest")) { classes.add(AdminUploadCaCertTest); classes.add(PartnerRegisterFTMTest); classes.add(AdminFtmDetailsTest); } - if(test.equals("AdminPartnerPolicyMappingTest")) { + if(test.equals("adminPartnerPolicyMappingTest")) { classes.add(PartnerRegisterAuthCredTest); classes.add(AdminUploadCaCertTest); classes.add(AdminPolicyGroupTest); @@ -130,12 +130,12 @@ public static void startTestRunner() throws Exception { } - if(test.equals("AdminPolicyGroupTest")) { + if(test.equals("adminPolicyGroupTest")) { classes.add(AdminUploadCaCertTest); classes.add(AdminPolicyGroupTest); } - if(test.equals("AdminSbiDetailsTest")) { + if(test.equals("adminSbiDetailsTest")) { classes.add(AdminUploadCaCertTest); classes.add(AdminPolicyGroupTest); classes.add(AdminAuthPolicyTest); @@ -144,11 +144,11 @@ public static void startTestRunner() throws Exception { classes.add(AdminSbiDetailsTest); } - if(test.equals("AdminUploadCaCertTest")) + if(test.equals("adminUploadCaCertTest")) classes.add(AdminUploadCaCertTest); - if(test.equals("PartnerLoginAuthCredTest")) { + if(test.equals("partnerLoginAuthCredTest")) { classes.add(PartnerRegisterAuthCredTest); classes.add(AdminUploadCaCertTest); classes.add(AdminPolicyGroupTest); @@ -157,18 +157,18 @@ public static void startTestRunner() throws Exception { classes.add(AdminPartnerPolicyMappingTest); classes.add(PartnerLoginAuthCredTest); } - if(test.equals("PartnerRegisterAuthCredTest")) { + if(test.equals("partnerRegisterAuthCredTest")) { classes.add(AdminUploadCaCertTest); classes.add(AdminPolicyGroupTest); classes.add(AdminAuthPolicyTest); classes.add(AdminDataSharePolicyTest); classes.add(PartnerRegisterAuthCredTest); } - if(test.equals("PartnerRegisterFTMTest")) { + if(test.equals("partnerRegisterFTMTest")) { classes.add(AdminUploadCaCertTest); classes.add(PartnerRegisterFTMTest); } - if(test.equals("PartnerRegisterSbiDeviceTest")) { + if(test.equals("partnerRegisterSbiDeviceTest")) { classes.add(AdminUploadCaCertTest); classes.add(AdminPolicyGroupTest); classes.add(AdminAuthPolicyTest); From e0def6e932c4a2f09e7260957fade692eb34453d Mon Sep 17 00:00:00 2001 From: Jayesh Kharode Date: Thu, 25 Jan 2024 16:55:00 +0530 Subject: [PATCH 5/9] MOSIP-31295 Signed-off-by: Jayesh Kharode --- .../src/main/java/io/mosip/testrig/pmpui/utility/Commons.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java index 9d1c0a9f3..890e773b7 100644 --- a/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java +++ b/pmptest/src/main/java/io/mosip/testrig/pmpui/utility/Commons.java @@ -120,6 +120,7 @@ public static void click(ExtentTest test,WebDriver driver, By by) throws IOExce driver.findElement(by).click(); } catch (TimeoutException toe) { + Reporter.log("

"); driver.findElement(by).click(); try { Thread.sleep(500); @@ -178,6 +179,8 @@ public static void enter(ExtentTest test,WebDriver driver, By by,String value) t driver.findElement(by).sendKeys(value); } catch (TimeoutException toe) { + Reporter.log("

"); + driver.findElement(by).clear(); driver.findElement(by).sendKeys(value); System.out.println( "Element identified by " + by.toString() + " was not clickable after 20 seconds"); From ef1169797043ffb62251bc7712d551a90aaca6bc Mon Sep 17 00:00:00 2001 From: Jayesh Kharode Date: Mon, 29 Jan 2024 11:42:16 +0530 Subject: [PATCH 6/9] MOSIP-31085 Signed-off-by: Jayesh Kharode --- pmptest/src/main/resources/config/Kernel.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pmptest/src/main/resources/config/Kernel.properties b/pmptest/src/main/resources/config/Kernel.properties index 798fd9d6d..ea5f6101e 100644 --- a/pmptest/src/main/resources/config/Kernel.properties +++ b/pmptest/src/main/resources/config/Kernel.properties @@ -33,7 +33,7 @@ admin_zone_userName=globaladmin mosip_regclient_app_id=registrationclient mosip_reg_client_id=mosip-reg-client mosip_reg_client_secret=3H9qsSxmYn4bXBk8 -iam-users-to-create=admin1 +iam-users-to-create=auto11 #iam-users-to-create=111997,220005,111992 iam-users-password=mosip123 roles=GLOBAL_ADMIN,ID_AUTHENTICATION,PARTNER_ADMIN,PMS_ADMIN,POLICYMANAGER,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,ZONAL_ADMIN From 712830f3515d9bb589ba5fd642b08028ab071c29 Mon Sep 17 00:00:00 2001 From: Jayesh Kharode Date: Mon, 29 Jan 2024 12:11:08 +0530 Subject: [PATCH 7/9] MOSIP-31085 Signed-off-by: Jayesh Kharode --- .../resources/screenshots/1694759201611.png | Bin 0 -> 29209 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pmptest/src/main/resources/screenshots/1694759201611.png diff --git a/pmptest/src/main/resources/screenshots/1694759201611.png b/pmptest/src/main/resources/screenshots/1694759201611.png new file mode 100644 index 0000000000000000000000000000000000000000..11306963998c28039d5f0f703753a9272ef3f3b8 GIT binary patch literal 29209 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�e7Fwrk~>}=Fz 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

QiRzcX_1DKR!WIKU8Qn0(?lA zhjdF#QkJcEdaJSWcD9`iI&Q6L_29-nOI=Rd>uUcR?W#zzvcPZ0)z~KP$E9&#>wrB~ zLH5^2bvl8oDk`|q%h_dMue zKE9!(_@DDXeE3HW{+S2==z)Lqz(0E6A3gAo9{B&I2i_~x=w%*aDl2PFX@@zSbNLl} I=ElAM0t4W39{>OV literal 0 HcmV?d00001 From 2b93009293b09e65c86da0dbbaaa593a53d10cd3 Mon Sep 17 00:00:00 2001 From: Jayesh Kharode Date: Mon, 29 Jan 2024 12:25:04 +0530 Subject: [PATCH 8/9] MOSIP-31085 Signed-off-by: Jayesh Kharode --- .../resources/screenshots/1688696011861.png | Bin 28798 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pmptest/src/main/resources/screenshots/1688696011861.png diff --git a/pmptest/src/main/resources/screenshots/1688696011861.png b/pmptest/src/main/resources/screenshots/1688696011861.png deleted file mode 100644 index 2e1694d153ef966f6a044b045f2d45d28828b760..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28798 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 tixV}wbE`){_i$rwhQIJXKIZE(Bg6mz From dfc328e966765d8cec2d9bf4eab44c53bdebdd27 Mon Sep 17 00:00:00 2001 From: jayesh12234 <111957576+jayesh12234@users.noreply.github.com> Date: Mon, 29 Jan 2024 17:26:18 +0530 Subject: [PATCH 9/9] Delete pmptest/src/main/resources/screenshots directory Signed-off-by: jayesh12234 <111957576+jayesh12234@users.noreply.github.com> --- .../resources/screenshots/1694759201611.png | Bin 29209 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pmptest/src/main/resources/screenshots/1694759201611.png diff --git a/pmptest/src/main/resources/screenshots/1694759201611.png b/pmptest/src/main/resources/screenshots/1694759201611.png deleted file mode 100644 index 11306963998c28039d5f0f703753a9272ef3f3b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29209 zcmeGDXIN9+6E}>a-io4t4G<8pP^7CgL7E`Fmk>HCy?2mMVxcHa>C$^kNFu!kR1~Dw zfV70(i$Fpk5I7s~f1dN{vf`WotMftfd z1;u#-3W~Gl7cT%K7G36>z^^l&x=L~s$nM)q6cl$TRGvT6f1S2E;TI53KogIM-WmpF zXD_LIll>t3U-4D9yYxTb#oxd4Dj#hoTi>S_GX2ijIU&Qu#8FKrFK^UxzuvJDE2UIR zxRay&QP=6a@x^Dsp&Y?dckf=lWR;q{LTu$rR_E*pR{yaDk!Ib#b9zrv(|fh#?CHJi=ZgmahVLl<2mklLRrYtFf43K}f9Lsk z``^bGbpLMOd124Pt1hZNW|v1Y{2NPi{Q=pYBHv@iOg^;!lULuuqI1~yoQ1VlDWSd@ z|Gs?Ry1gG2&(YzgP!h^#^b>LVZ%HMoie|{R`;X(Lo@g{*!0UOKM&4`wG5Df-#j1;u z<%v=DK{Ho{y=&=V*}kl+76Zeh`}2o|2-d)?yx^~#)E|n5b8j5xH{9SR&ClMi<3#KF zgk_JJH)+=I{Bq2#REfo}{f1+#%DL+s6ff;?qHkvQ#SNT4Sz1<*c~Hz8ml+T>uW>7P zw&sf_4s775h;rrc?MRg#C~Y6On|4<~LCUz)K{;ip`gxCa5OVgf;>b$gT4kWfodWYR zzL2(l!nt;gw)5gxAyP+koEt5Epr??mNuGHvL(Z|wTkTVMoVsj1>geyWe9G?Pd9Cg` zoliK)w*5m3F3siFbM^{hVa2Zc!MZnQ=vo!Yj@|>_!PE z-|OV2!Zg?SUj<4$2GlAsiP@1w#%P~8`l!W$+u;Vn3X7B+mW1D6DiO~0cy+Z{ z>%|DY&BxKV+8=kT#zu=gUn)R*>fiLNbczCn^WZqz7?+FBolus=5UHUx&|YujFg_`) z(vRDr<88NbuyTkcGBrQ6GBQZrAjZeTu~UOdVf6;Gt}+3p5jev_79~x5Z{fFJB>*+9 zMW6a_6y8XTGpdD-OGQJMx z3{ueA9!6M0JYAD9^ltM*F9lU7V`w&Fp9bb?TGB$zS`_suK#zEEc(jC04?&Y3xxXz} zFx^f#x;S?(_I5!KIHrWpzh-(l#VUbK+t4QW%7FI!W_=wqwh=ui3B<(_t75G$X6tB} z)lWlGgVh_F252R0TglF@vN-;(#bSs!+mgvJy`#EuLKUlO|44!P#QV#qL{C`FgN#Th z=uzkob-mQfv<`+%Pt1mzP+||gCDI>j=!L%g?NZIl$ETiX-DXo>TwJUonyLW|PPzRS z)-X!Ue-?P-rnBnN1L^F}Gh{pgj?(|$r@O{0g&AXGVEFo(63+b?pFV1+U{t_&UzK2k zzMY&<#@t_sA?x3~folI_2O3m>*NB>5nj(aMa`K?7kjVQYc7eyc^#L`CdLVe9pz-!$ z2nlPL{a0D-oF!8{NZ9nLmQqnl)hYE93>BqI_7K~?bSfc@zzW+Yq^1_=_3N73G+|eK zIWoBT64+C_=E8tEEPyzY*tn#Ji-W7gIhb zLNu9ma$F;&3kuLW67?c#M_$o`N0DeHu9=j*=SU{uB;Z`TjE(C?mgNb%oH7 zB~*w)oy%`ol`R7pWOqlKKpypU&hpG~!#uoVCdRG-<(DjCE(>*-GZXS^77Sv8eR>~Z z`uiQ`jJr3)X_+MYF8C~++@yOpV+c)F8OVMGr!`r5FZUu{G&Ub=6@GtE0*my*Pm zniaVly?*(2B!oTkOTp;4${G2wsvm|MflW-TPkye2$2(yTVXnj|%9HKx)yPQm&TXOA z)O)Ft4D2+4m5A3Q(CSDX^qjBj7Bfu9gAeHG8|oIgzo%SoGm0Y&RHoML4NU63@Ci_1 zxTX8!vje{j)|+etA$Ep{j+k07qTs z`2F{VwNF03M~HdS4e00Y?v!-d$}Cz;S=EgJA%}E2+5W2v6ORccoksk$>Ws+JzO{)* z&o;=gHSJ2HcurhUriaPx)O=^>V3>IyBWdc~4T;<6fjWQ56K>vk3KzLHur~R{vKPa4 z)FV6_zZY+yyuH0g>#Mb)6ZlfmfZey!hjzI>vkPz-tlgw`*&kgf@+NFS{1YzV{RP6> zR~U^Q2Rj{n>Y7jTxo)1Os!!}o5kh?=7pss9X)v8Y^^Y(TUat$As|#W~lB}c)yF1q^ z?tS!Ak2EkW3ePOhEQ5V=d_EwfZ_N&`3;GhfGR!mPW87atqv)t)hKA+l#$UyOBRE_Y z7N!OBd7kNdo1w4go6x84&#ByLn2=49siCw2GB^>`fkEp@#uf%>1xR2>Sw zHqwqU7>+&azW8+(SH1R3j^xHaWB@z$-QWDC_Tx}7>||$)(lSbFJ9h!?^UKA0bEDPO z+O|D)27>;gWjwsRAdq+d1zOge$jI!q=|`ij|bnN#aK)%C`$Oj64bG6(KB2i(UWRu{a+2&EnbW90m)NUeY5?$;gTi0icVFc zPJ*=&KMBqhnoS}}tc{RE#PkW)w?bDnGRbAU?Teyw%R^%%N>D)gdXCUPl>^INdPla1*fprnbF(d^=_hqrD zI@31yM?8Go19aSE4iRutN&$CR^AxoLb#ret%btUilasG{;Xv_3eUrAl{CjqA(X!i< zhBXSw8H<>Hix7@ErmGCOKoG?W`}83~U)lIfe6kM<%9Eg?QK3@WS0M1oF5WsxHBx!4 z{Fk@=_8#fTk-s)9cAT0;ty2svH+vOjqQ_ES%&VBd$1aYujzX@p& z67EdIF5llDrRD`^z%b<=pz4C1%sck*cw!1Rc{hGt!`&@nS1Sx+DJzMP4jET6?Gd4*cpS8?!OzF#if<#!=q0ywE!6v7ZeoG&+J;OjcR|+>GfF zrZqjO9?#9PlF;?b*52ez3AgW(9*jC(ULzT0S-bA3c5co2=4;8}Kz=cI*Ps?XSQh~| zIYDgvW@NbDUp3$BFV|0Xhqt}InLCPPZJZu--QPewmWeW?xQ9UVE2^TyW@WU-M-6hg zD@)#xXN2thzAEK*M{huyt)Pn#IQwC3I;(Mu2Xs$GwLjRei>&ulZ)yqQL2bMpd&K59 zc78X!e|D^%%M^jFe^zRScz3#K7vH`-M^cHsu%q#LV99~FI7XF~o&D_P%a>(*YL&KU z*WM0@hBYHebrK;VA;sC**&tpDKtM%dj=RUXVQGt()!&6c-qx@gBX`% zPfcuLSW&v1sk54BtkF1e1Jd1JH72BAHplo&U_47>b0p}c+vKLP%j~-7hV%qHz_+8r z7Vl8(_@0=^xrk

e6VVPe5-Gf;Zz(10RQU(YeleW>`MS{ca1LsZ4v_Q#-=kjNdF zd2ye&MDNXjrxYf^dWsdzV>*PA0qu~N%SZ62p_~u0*;ZeN931Vd%5?Jv51aGtRA9r= zJ=LmASke}7dJSS%#3UP0^lHwbiM7dH-yPeEzd_v$8f!Wi4*wS|Z0!Vgt<193^auQs zMptC1%XDQ$iIcqV3M>y(1D=t+{SM0(6xD-p_%lxit&q^eJj$iCjrf(*2qDDRyqG#gwBz*i!utvMF^r{}` zWA1~>Aj#oe()r>T=7uSU^?pFKAto7pyTjy+;px}RqkdTR+8^Dq{Chl|j3d)kCBa4W z^hqc-otK(boSkuA4Jcg@($_pG4`B?oisdY%9e(BP4XvV>={k;)N=Ga54J|zbMjaXt zbt5=aFGsX{yGA?y+La@g{-Ray|1&TLi{5c<6;~Vc$orvNN#pKsR1GdMj@85jt0e-b z{H{W>567PrE0K|#Mhk=Jmz36VnD5F61Z1f3_Yo^cZ#7!mJMQl}jQ(@=uZC98%Dt0Dzg;vRbuE#{g)2y_b zEIZ8m>J+wiTg1FX)-_4TT=S4f2cW@zEPMULIzo8OiJ5}7S=cJ2Kz$&7VtrJ3!Z!fW zP~bWK`M$*Q`~hL3_4e+2nV((T16VpfVhS+p?V8q$Bl+dywK}o9dGV(HdxHsfXp8QO z-M31qaB(mLuSjdcjX8nzg0{km*6Mg(-op2EU29T;8zR)kw;p^+&x(AFyZ6l_VX&4+ z$#e@ITxab1reRATag$|*H0~TlB&i`a{(P$5M|f4@@QfyU^DANZ9SGfA2;NxFBpY6D z*T(MFmc+aE=iMqKjC~5Z8Fj64%yLN}Zqadp4sMazu%&`?)=bW{NUyPQw?(|Qt+#N$ zzDj(tUSBBFed>_c5 zqMU^^6ciQx#J)Y&DF3zF*hA>N{}4=JRMR~1YLgJKks%(@6c78)^+g>>$Tz+oELvZd zS)x81OC0aaqe#uHH`bx2uLZL%pbMT|w&<7Z>JPpt!UmPHNL|i}m-vd-8cSZ-Q`2=| z#_4Wg*U9Y8vZN;C&BC6)TmuoOOmm>Gq`Kx_VFqDw>D4&9oYD_`? zmy6t;oS=;G)ePF1`UZ>Tzm#rs5vd{*g?vw6{uIW{YdX#>d!U!gpF^j(ex=M@GMh*R zNsYCnV`Y?21VzCR6DMLDj}?2?$_o=_FGlfoY*qdDx8iIO3I#Sa{Bq%nvW~rq%D1SZ zvmc`(z*bgyDJdy8>FDOx%9j~&!Wt~xDE$C+wsgtBg7lbCnmZilJH5+h&9|hhQ1p(8 zoOy$etz3s^UhdD>%t_{trp*&EWG>~kK^LC`N$5HihQik1*dZ^mjI;8&UVdvk9unrT z-bAX)qo=FAfyYMbuNf{lq%*pe!_DbqUtrdS@uSgK0{K@ytWs&ql^umA75- zU53~eW9=Fgo2cNu7fi-vYO32&wh9~$n`@v@9xs;0HV4y za7H_S|Gkj!Optf30tvC{L}W0$#W)T)G|ftFh>)k%J}r-2(^-?whHQlH_}iU|%QTB7 ztwbAw`wuiE#xt=L|MC`AlmbA%QBhIYE_iHQ939Jq5`o~&61g0kks;7gc9WjIpru7| z#7WfkGDVLkY?;|?`vKg}Hm~ZOvWoMD?>6Zg-F)OA-cQ%T?4!9e#-$AHzEWvVD4VA! z6OstXXhQHvOKDi5-y(Py`Nbe5A7@5 zJ3~|4*k9a!-zObArZluEjhOEhX;i~Yk+q*T+RoocO5ehq={DGym|PaTHW}tO7twLE z{$W!TTe}Ck?yH#3$J30>BI90|mU8U!1hd-t>7|bjDWYcLkP4@&9TPd@#Qe_Aj)c#j z|KwOW-tqQPitzhy-hnb%WN4z@-Mp&$o6Fn+2TYT3X$_hJL?#%Bi8K;3)c-)EyY2H? zWVlOhfCXTk4A*lZuHpNQ9~)aU`>U#Uh?~oceh4~)VcxreHT$0VylQi!q`GnEM^aKI zX8e~WT=;u0xU!87?fv;tnCVW4F0d`;N$fO<~ z%+6=JI}Bh4et?r`c;d^UHqG?M`{a!o{oM|72RQ1*lcz2yPQEBsC6X*MQC zQdI~gfQ-5<=1QL4OD~FHva~9<=B^tQu+{UQ8-0ria5wtK78;@@Gf-Ffe#qhA2Tjn- z763F}9MawWQi`r}n7@DK-H?C`^NC7k5uHX&O2P`vP!&IS=`pa_1~Q0+CQQsL>XVkX z!H_a}#iD-BOTr||)<`qIkXEOqSKTOaj%C32HclFD|8W!RSJ65^vo$hah<5^@Ljq?l zkH#^qc}pxFGBGkjf*C}Kv}T6-NPoRol{4GlLOg-!GAq(TW81)q9+KF$P$`KWq3dFi zLJ<~>3rg~}YE2kx84*6s-Sl{!nFzn`&x6eTUn^( z^FKe-9xX*1r}+fB8IeYd?i-8pTaa^@t;IQ%VzSGjA3lRze%q*N%i}SlLr+Zi9n(G9 zwRI};^&W{D6=dt(*Y$SOO}wo$g?*Hsn16%vQ_+-u<(0zxzu_}fD7y`do2Q4?P5SBX zc(ZDBL|;`-GgETPtdz^GP~VXtOUvBwaGJ&4(p;veK51#1h2gX;`tpHjV#?nSZu$At zx=lgk%KZp4Ams&)yj}d~PYpfVL~18K-Z5bQMS6*NZf9%eM%1V1%Z9%JjcAL_t|sR3 z_RkLry0nAU5oSXf4;8FcqNO#(qe1pZOHGcMXmiamJ0tgN4p)3@)+_i3IFpSzwGt&;&#^g2iy9u z1KBpg#$D55dwVA7fMEYP-a_?(&-SDGW@h<;y;~wzl%0`^1E?*3ly2hvjgAVeL%!zkZ+96vCEO1HwJGbtRHMA#9*gFu`zo+akJxBZ7 zWJS8k7jQFP3r!Q1FX&@uM9SQH6r>TZ5ymkR6ag>#NVARX#~qvqN#?7R`RI<1|0^6>uG32b!SNBwzP!42?Y0~iRVsO1YloX z>G90)KSBk=7Gqg28E_2S7=(QSEjKoU7m>Nc%Tcfn{pk<->TGJ!f3LK;5p*H?DQ`^9}?9eaodF)_sZ`Kd! zn!S$wC|&5wqLLEzLe2D8cJj7zaan(CCHb#A*=w!9Gvld%hSafHFA*xl)a-mJi%QS? zTJk8?n!DQuT(B(CAgagR{eV#FRMw{bv0No=FmLo>Jr$*L;aa6`VES#P2&<#j`;2{o zRw9GEuUaM^-^+o#BApU-u@p$9j_&>zqXV+npLTBdQrMzt=+|69h*8ivU0rWZ0Tn$( zYQ6Up$l@l_d!O4c^}M_^dj5lJ7N$t=D;tm*i%WGBof^{SIH;Ol7I@XE8d#!#SYD^g z_`)Z2Pc^z+!~q76$(@S42~;hX9<>S2{vplb(aWET(j z=}>P}k4}fiIsd#B@~P>W;`8T4g)}E(dBa+P!pBoZCpzr>;WHDTeT?}s#Ulxk+k9!} zO6gXD%`Op)>eHA(>H>19xA2S5rdudcdI!3HPj}ursbld5uSxrz5#mOy^Y4p{*J8>v z!Q2NasNWx=6UrO(ZAfz-tWtM!wMwp-e3|uXPZZaU4tz={>d}yfp`&6J*HqN^Dk`Kt zrNjIyK!^0f^qUqM&4Jy{?{%bh9n!Q_zA7)Aj@iab^3B*sNLbE=Jp02)l*5aopwXb+ zn)QRV)X@gili>2!{G3)u3CSZd^K_H!aMPYK)%Ly+q9c5M+{dU+> zUU;dwjV>(mx1D%2TkNXF<9oTL3GhwwcsYmqDX6a*yt2%U+R$oL+~$nb@i0{{+~9?a z=MGoXFV1OXE*Z`(UG2V_l!K-IR}y@4XIyyMLxVLYd-c0LlW10E?98j~e{Id^u1PuCIP(f>co|3A6n{|{IH@3a*EwJ1 ztTM<{mm`Z5;VB97&YtySjp3OlPhvWR^s&`zrNMPM^C{IkR^NS;P(pGtd~J<&3_0GZ zZk_ZLs`R~%3R-|r&L|J*5U9FFQ?~b(Gt8H(P(yKQ=&=;JT z_TThyZnG$IABk0sb^vE>2DJXG@w>Gx#e`#^Yhx(;YN$Lhz|!TLHfF|@7d%!*?xL(T zSHmZ|-bz7hyGpSmpp#93Jo<%>q$~EreUDXiM{GA7(fhal(fB%8(vUoD5t4F9cuH9O zu}{biV_p0U!MRnw7-pDw_s=n>k}C0OT*f1_egPJOzziFr�e7Fwrk~>}=Fz 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

QiRzcX_1DKR!WIKU8Qn0(?lA zhjdF#QkJcEdaJSWcD9`iI&Q6L_29-nOI=Rd>uUcR?W#zzvcPZ0)z~KP$E9&#>wrB~ zLH5^2bvl8oDk`|q%h_dMue zKE9!(_@DDXeE3HW{+S2==z)Lqz(0E6A3gAo9{B&I2i_~x=w%*aDl2PFX@@zSbNLl} I=ElAM0t4W39{>OV