diff --git a/pom.xml b/pom.xml index de06f3cc2fba4eba68cd3c248c021c86bb96982a..5e08d1af1528909e9cbba9ced8db828d8c630a0d 100644 --- a/pom.xml +++ b/pom.xml @@ -26,6 +26,7 @@ <module>smp-server-library</module> <module>smp-angular</module> <module>smp-webapp</module> + <module>smp-soapui-tests</module> </modules> <properties> @@ -710,81 +711,6 @@ </build> <profiles> - <!-- soap ui --> - <profile> - <id>run-soapui</id> - <build> - <defaultGoal>test</defaultGoal> - <plugins> - <plugin> - <groupId>com.smartbear.soapui</groupId> - <artifactId>soapui-pro-maven-plugin</artifactId> - <version>5.0.0</version> - <configuration> - <outputFolder>${sonar.jacoco.codeCoveragePath}/surefire-reports</outputFolder> - <junitReport>true</junitReport> - <printReport>true</printReport> - <settingsFile>${basedir}/soapui/soapui-settings.xml</settingsFile> - <soapuiProperties> - <property> - <name>soapui.scripting.library</name> - <value>${basedir}/groovy</value> - </property> - <property> - <name>soapui.logroot</name> - <value>${sonar.jacoco.codeCoveragePath}/soapui/logs/</value> - </property> - <property> - <name>http.nonProxyHosts</name> - <value>localhost|127.*|[::1]</value> - </property> - </soapuiProperties> - <testFailIgnore>true</testFailIgnore> - <projectFile>${basedir}/soapui/SMP4.0-Generic-soapui-project.xml</projectFile> - <testSuite>PASSING_AUTO_BAMBOO</testSuite> - <!--If you want to execute single test case <testCase>SMP001-Create ServiceGroup-Basic Flow-Admin Service Group specified</testCase>--> - <projectProperties> - <value>url=${url}</value> - <value>SMPAdminUser=${SMPAdminUser}</value> - <value>SMPAdminPassword=${SMPAdminPassword}</value> - </projectProperties> - </configuration> - - <executions> - <execution> - <phase>integration-test</phase> - <goals> - <goal>test</goal> - </goals> - </execution> - </executions> - - </plugin> - - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - <version>${jacoco.maven.plugin.version}</version> - <executions> - <execution> - <phase>post-integration-test</phase> - - <goals> - <goal>dump</goal> - </goals> - <configuration> - <destFile>${sonar.jacoco.reportPath}</destFile> - <address>${sonar.jacoco.remoteAddress}</address> - <port>${sonar.jacoco.remotePort}</port> - <reset>false</reset> - <append>true</append> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> <profile> <id>dependency-check</id> <build> diff --git a/smp-soapui-tests/pom.xml b/smp-soapui-tests/pom.xml index 74c2e998a10296ba4b61159cb87c86102beb739b..d659e57b7be5f6d8551c0fb882e0a0d91b74cbe0 100644 --- a/smp-soapui-tests/pom.xml +++ b/smp-soapui-tests/pom.xml @@ -20,54 +20,82 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> - <build> - <plugins> - <plugin> - <groupId>com.smartbear.soapui</groupId> - <artifactId>soapui-pro-maven-plugin</artifactId> - <version>5.0.0</version> - <executions> - <execution> - <phase>test</phase> - <goals> - <goal>test</goal> - </goals> - </execution> - </executions> - <configuration> - <outputFolder>${project.build.directory}/surefire-reports</outputFolder> - <junitReport>true</junitReport> - <printReport>true</printReport> - <soapuiProperties> - <property> - <name>soapui.scripting.library</name> - <value>${project.basedir}/groovy</value> - </property> - <property> - <name>soapui.logroot</name> - <value>${project.build.directory}/soapui/logs/</value> - </property> - <property> - <name>http.nonProxyHosts</name> - <value>localhost|127.*|[::1]</value> - </property> - </soapuiProperties> - <testFailIgnore>true</testFailIgnore> - <projectFile>${project.basedir}/soapui/SMP4.0-Generic-soapui-project.xml</projectFile> - <testSuite>PASSING_AUTO_BAMBOO</testSuite> - <!--If you want to execute single test case <testCase>SMP001-Create ServiceGroup-Basic Flow-Admin Service Group specified</testCase>--> - <!-- testCase>SMP063-EDELIVERY-364 slash encoding-Tomcat</testCase --> - <!-- testCase>SMP079-EDELIVERY-2806-Basic Flow-BlueCote UTF8 chars</testCase --> - <!-- testCase>SMP094-Basic Flow-ClientCert-UTF8-Variants</testCase --> + <profiles> + <!-- soap ui --> + <profile> + <id>run-soapui</id> + <build> + <defaultGoal>test</defaultGoal> + <plugins> + <plugin> + <groupId>com.smartbear.soapui</groupId> + <artifactId>soapui-pro-maven-plugin</artifactId> + <version>5.0.0</version> + <configuration> + <outputFolder>${sonar.jacoco.codeCoveragePath}/surefire-reports</outputFolder> + <junitReport>true</junitReport> + <printReport>true</printReport> + <settingsFile>${basedir}/soapui/soapui-settings.xml</settingsFile> + <soapuiProperties> + <property> + <name>soapui.scripting.library</name> + <value>${basedir}/groovy</value> + </property> + <property> + <name>soapui.logroot</name> + <value>${sonar.jacoco.codeCoveragePath}/soapui/logs/</value> + </property> + <property> + <name>http.nonProxyHosts</name> + <value>localhost|127.*|[::1]</value> + </property> + </soapuiProperties> + <testFailIgnore>true</testFailIgnore> + <projectFile>${basedir}/soapui/SMP4.0-Generic-soapui-project.xml + </projectFile> + <testSuite>PASSING_AUTO_BAMBOO</testSuite> + <!--If you want to execute single test case <testCase>SMP001-Create ServiceGroup-Basic Flow-Admin Service Group specified</testCase>--> + <projectProperties> + <value>url=${url}</value> + <value>SMPAdminUser=${SMPAdminUser}</value> + <value>SMPAdminPassword=${SMPAdminPassword}</value> + </projectProperties> + </configuration> - <projectProperties> - <value>url=${url}</value> - <value>SMPAdminUser=${SMPAdminUser}</value> - <value>SMPAdminPassword=${SMPAdminPassword}</value> - </projectProperties> - </configuration> + <executions> + <execution> + <phase>integration-test</phase> + <goals> + <goal>test</goal> + </goals> + </execution> + </executions> - </plugin> - </plugins> - </build> + </plugin> + + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + <version>${jacoco.maven.plugin.version}</version> + <executions> + <execution> + <phase>post-integration-test</phase> + + <goals> + <goal>dump</goal> + </goals> + <configuration> + <destFile>${sonar.jacoco.reportPath}</destFile> + <address>${sonar.jacoco.remoteAddress}</address> + <port>${sonar.jacoco.remotePort}</port> + <reset>false</reset> + <append>true</append> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project> diff --git a/smp-ui-tests/src/main/java/pages/components/Sidebar.java b/smp-ui-tests/src/main/java/pages/components/Sidebar.java index 7d2d243ec3cd69b5c139e62b8327ad22040ca569..b08531486f4b32f323de620b3fc9ac00a71c9b64 100644 --- a/smp-ui-tests/src/main/java/pages/components/Sidebar.java +++ b/smp-ui-tests/src/main/java/pages/components/Sidebar.java @@ -1,5 +1,6 @@ package pages.components; +import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -39,6 +40,12 @@ public class Sidebar extends PageComponent { @FindBy(id = "sidebar_user_id") private WebElement userLnk; + @FindBy(css = "mat-icon[role=img][mattooltip=Collapse]") + private WebElement collapseButton; + + @FindBy(xpath = "//button[@id='sidebar_search_id']//span[text()='Search']") + private WebElement sidebarSearchText; + /* Receives the Page object class as parameter and based on the class name it navigates to the appropriate page and returns an instance of that class */ public <T extends SMPPage> T goToPage(Class<T> expect){ @@ -80,5 +87,13 @@ public class Sidebar extends PageComponent { public boolean isUsersLnkEnabled(){ return isVisible(userLnk) && isEnabled(userLnk); } - + public boolean isSidebarSearchTextEnable(){ + return isVisible(sidebarSearchText) && isEnabled(sidebarSearchText); + } + public void collapsingSideBar(){ + collapseButton.click(); + } + public void expandingSideBar(){ + driver.findElement(By.cssSelector("mat-icon[role=img][mattooltip=Expand]")).click(); + } } diff --git a/smp-ui-tests/src/main/java/pages/components/grid/BasicGrid.java b/smp-ui-tests/src/main/java/pages/components/grid/BasicGrid.java index 680bf656640c09fc6f140d37b605b9b6140db0ac..6b7bbc777a7b895cd6515b3ac1b2dc7318e3ac8e 100644 --- a/smp-ui-tests/src/main/java/pages/components/grid/BasicGrid.java +++ b/smp-ui-tests/src/main/java/pages/components/grid/BasicGrid.java @@ -21,7 +21,6 @@ public class BasicGrid extends PageComponent { super(driver); log.info("Loading basic grid"); -// waitToLoad(); waitForRowsToLoad(); PageFactory.initElements( new DefaultElementLocatorFactory(container) , this); @@ -31,15 +30,6 @@ public class BasicGrid extends PageComponent { } -// private void waitToLoad(){ -// try { -// waitForXMillis(500); -// waitForElementToBeGone(driver.findElement(loadingBar)); -// } catch (Exception e) { -// -// } -// } - @FindBy(css = "datatable-header div.datatable-row-center datatable-header-cell") diff --git a/smp-ui-tests/src/main/java/pages/domain/DomainGrid.java b/smp-ui-tests/src/main/java/pages/domain/DomainGrid.java index ba6cd51785ad71e00c9a8c17b3c5a19e20bf82a6..41b7ec3d0057a8d2f831b1471e6f45097e2d83fb 100644 --- a/smp-ui-tests/src/main/java/pages/domain/DomainGrid.java +++ b/smp-ui-tests/src/main/java/pages/domain/DomainGrid.java @@ -42,7 +42,6 @@ public class DomainGrid extends BasicGrid { } } - rowInfos.add(row); } diff --git a/smp-ui-tests/src/main/java/pages/domain/DomainPage.java b/smp-ui-tests/src/main/java/pages/domain/DomainPage.java index 58f3eab67fe45250e569b38b79fcb05a50f63858..b1841b0f90e1295cd18209e57ec4902ea9c41ccb 100644 --- a/smp-ui-tests/src/main/java/pages/domain/DomainPage.java +++ b/smp-ui-tests/src/main/java/pages/domain/DomainPage.java @@ -8,6 +8,7 @@ import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; import pages.components.ConfirmationDialog; import pages.components.baseComponents.PaginationControls; import pages.components.baseComponents.SMPPage; +import pages.keystore.KeyStoreEditDialog; import utils.PROPERTIES; public class DomainPage extends SMPPage { @@ -35,6 +36,9 @@ public class DomainPage extends SMPPage { @FindBy(id = "deleteButton") private WebElement deleteBtn; + @FindBy(xpath = "//span[text()=' Edit keystore']") + private WebElement editKeyStore; + public PaginationControls pagination = new PaginationControls(driver); @@ -97,6 +101,12 @@ public class DomainPage extends SMPPage { waitForElementToBeClickable(editBtn).click(); return new DomainPopup(driver); } + + public KeyStoreEditDialog clickEditKeyStore(){ + log.info("clicking edit keystore"); + waitForElementToBeClickable(editKeyStore).click(); + return new KeyStoreEditDialog(driver); + } public DomainGrid grid(){ diff --git a/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java b/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java index 135527e96dc19f0fcf2a51d8c17158833a347d6b..de3b5367c2ed301f737f5c1d536e6a559ad6db5a 100644 --- a/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java +++ b/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java @@ -120,9 +120,14 @@ public class DomainPopup extends PageComponent { } public void clearAndFillDomainCodeInput(String domainCode) { - log.info("filling only domain code data for new domain"); + log.info("clear and fill domain code data"); clearAndFillInput(domainCodeInput, domainCode); } + public void clearAndFillSMLDomainInput(String SMLDomain) { + log.info("filling only domain code data for new domain"); + clearAndFillInput(smlDomainInput, SMLDomain); + } + } diff --git a/smp-ui-tests/src/main/java/pages/keystore/KeyStoreEditDialog.java b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreEditDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..a0ecc98ea26b0484136756d746ed106aaaf7ea09 --- /dev/null +++ b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreEditDialog.java @@ -0,0 +1,50 @@ +package pages.keystore; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.PageFactory; +import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; +import pages.components.baseComponents.PageComponent; +import pages.domain.DomainGrid; +import pages.domain.DomainPage; +import utils.PROPERTIES; + + +public class KeyStoreEditDialog extends PageComponent { + + public KeyStoreEditDialog(WebDriver driver){ + super(driver); + PageFactory.initElements( new AjaxElementLocatorFactory(driver, PROPERTIES.TIMEOUT), this); + + } + + @FindBy(css = "#keystoreTable_id") + private WebElement keystoreTable; + + @FindBy(xpath = "//span[text()='Import keystore']") + private WebElement importKeystore; + + @FindBy(css = "button[mat-dialog-close]") + private WebElement closeBtn; + + public KeyStoreImportDialog clickImportKeystore() + { + log.info("clicking import keystore"); + waitForElementToBeClickable(importKeystore).click(); + waitForElementToBeGone(importKeystore); + return new KeyStoreImportDialog(driver); + } + + public DomainPage clickCloseInKeystore(){ + log.info("clicking close btn in keystore edit dialog"); + waitForElementToBeClickable(closeBtn).click(); + waitForElementToBeGone(closeBtn); + return new DomainPage(driver); + } + + public KeyStoreGrid grid(){ + return new KeyStoreGrid(driver, keystoreTable); + } + +} diff --git a/smp-ui-tests/src/main/java/pages/keystore/KeyStoreGrid.java b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreGrid.java new file mode 100644 index 0000000000000000000000000000000000000000..0236d8c2355e7a903ab1490e11cd19345d88e28d --- /dev/null +++ b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreGrid.java @@ -0,0 +1,41 @@ +package pages.keystore; + + +import org.openqa.selenium.By; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.PageFactory; +import org.openqa.selenium.support.pagefactory.DefaultElementLocatorFactory; +import pages.components.ConfirmationDialog; +import pages.components.baseComponents.PageComponent; +import pages.components.grid.BasicGrid; +import pages.domain.DomainRow; + +import java.util.ArrayList; +import java.util.List; + +public class KeyStoreGrid extends BasicGrid { + + public KeyStoreGrid(WebDriver driver, WebElement container) { + super(driver,container); + log.info("Loading KeyStoreGrid"); + waitForRowsToLoad(); + PageFactory.initElements(new DefaultElementLocatorFactory(container), this); + } + + + private By cellSelector = By.cssSelector("#keystoreTable_id datatable-body-cell"); + + + + public ConfirmationDialog deleteKeyStore(int rowNum) { + WebElement gridRow = gridRows.get(rowNum); + List<WebElement> cells = gridRow.findElements(cellSelector); + WebElement deleteButton = cells.get(2).findElement(By.cssSelector("button[mattooltip='Delete certificate']")); + waitForElementToBeClickable(deleteButton).click(); + return new ConfirmationDialog(driver); + } +} diff --git a/smp-ui-tests/src/main/java/pages/keystore/KeyStoreImportDialog.java b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreImportDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..69be05c3b36d297db704ac049174997be3b2a2c9 --- /dev/null +++ b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreImportDialog.java @@ -0,0 +1,75 @@ +package pages.keystore; +import org.apache.log4j.Logger; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.PageFactory; +import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; +import pages.components.baseComponents.PageComponent; +import utils.PROPERTIES; + +import java.awt.*; +import java.awt.datatransfer.StringSelection; +import java.awt.event.KeyEvent; +import java.io.File; +import java.net.URL; + +public class KeyStoreImportDialog extends PageComponent{ + protected Logger log = Logger.getLogger(this.getClass()); + public KeyStoreImportDialog(WebDriver driver) { + super(driver); + PageFactory.initElements(new AjaxElementLocatorFactory(driver, PROPERTIES.TIMEOUT), this); + } + @FindBy(xpath = "//span[text()='Import']") + private WebElement importBtn; + + @FindBy(css = "keystore-import-dialog button[mat-dialog-close]") + private WebElement cancelBtn; + + @FindBy(css = "button[mat-dialog-close]") + private WebElement closeBtn; + + @FindBy(css = "#keystore-file-upload") + private WebElement chooseKeystore; + + @FindBy(css = "#keystoreFilename") + private WebElement keyStoreFileInput; + + @FindBy(css = "#password_id") + private WebElement passwordInput; + + public KeyStoreEditDialog clickImportBtn() + { + log.info("clicking import btn "); + waitForElementToBeClickable(importBtn).click(); + waitForElementToBeGone(importBtn); + return new KeyStoreEditDialog(driver); + + } + public KeyStoreEditDialog clickCancelBtn(){ + log.info("clicking import keystore"); + waitForElementToBeClickable(cancelBtn).click(); + waitForElementToBeGone(cancelBtn); + return new KeyStoreEditDialog(driver); + } + + public KeyStoreEditDialog clickCloseBtn(){ + log.info("clicking close btn"); + waitForElementToBeClickable(closeBtn).click(); + waitForElementToBeGone(closeBtn); + return new KeyStoreEditDialog(driver); + } + public void chooseKeystoreFile() { + chooseKeystore.sendKeys(System.getProperty("user.dir")+"\\target\\classes\\keystore\\keystore_dummy1.jks"); + } + public void fillPassword(String password) + { + waitForElementToBeVisible(passwordInput).sendKeys(password); + } + + public String getKeyStoreFileName() { + return keyStoreFileInput.getAttribute("value"); + } +} + diff --git a/smp-ui-tests/src/main/java/pages/keystore/KeyStoreRow.java b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreRow.java new file mode 100644 index 0000000000000000000000000000000000000000..e828608dbd5150123658406caf3b1bdb3ae7567a --- /dev/null +++ b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreRow.java @@ -0,0 +1,45 @@ +package pages.keystore; + +import pages.domain.DomainRow; + +public class KeyStoreRow { + + private String alias; + + public void setAlias(String alias) { + this.alias = alias; + } + + public String getAlias() { + return alias; + } + + private String certificateId; + + public String getCertificateId() { + return certificateId; + } + + public void setCertificateId(String certificateId) { + this.certificateId = certificateId; + } + + @Override + public String toString() { + return "KeyStoreRow{" + + "alias='" + alias + '\'' + + ", certificateId='" + certificateId + '\'' + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + KeyStoreRow row = (KeyStoreRow) o; + + if (alias != null ? !alias.equals(row.alias) : row.alias != null) return false; + return certificateId != null ? certificateId.equals(row.certificateId) : row.certificateId == null; + } +} diff --git a/smp-ui-tests/src/main/java/pages/service_groups/ServiceGroupRow.java b/smp-ui-tests/src/main/java/pages/service_groups/ServiceGroupRow.java index 8975681de37848830d15ad494266b5d7eddad6b9..e6cf8249716ddd85ab386e9568d2bcc87cb05d8a 100644 --- a/smp-ui-tests/src/main/java/pages/service_groups/ServiceGroupRow.java +++ b/smp-ui-tests/src/main/java/pages/service_groups/ServiceGroupRow.java @@ -22,7 +22,8 @@ public class ServiceGroupRow extends PageComponent { @FindBy(tagName = "datatable-body-cell") protected List<WebElement> cells; - + @FindBy(css = "div.datatable-row-detail.ng-star-inserted > div.ng-star-inserted") + private WebElement emptyMetadataContent; @FindBy(css = ".ng-star-inserted.datatable-icon-right") private WebElement expandMetadata; @@ -71,5 +72,10 @@ public class ServiceGroupRow extends PageComponent { return false; } + public String emptyMetadataContentText() + { + return emptyMetadataContent.getText(); + } + } diff --git a/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java b/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java index 889c6b9ae149ca412734195a74154172133a4da2..ce4c9fbf96e6448a3f5b4d72c377dfcdf900acb4 100644 --- a/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java +++ b/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java @@ -1,5 +1,9 @@ package utils.enums; +import utils.TestDataProvider; + +import java.util.Map; + public class SMPMessages { public static final String MSG_1 = "The username/password combination you provided are not valid. Please try again or contact your administrator."; @@ -75,9 +79,6 @@ public class SMPMessages { public static final String PASS_NO_MATCH_MESSAGE = "Passwords do not match"; public static final String PASS_NO_EMPTY_MESSAGE = "You should type a password"; - - - - - + public static final String KEYSTORE_IMPORTED_MSG = "Keystore %s imported!"; + public static final String KEYSTORE_DELETION_MSG = "Certificate %s deleted!"; } diff --git a/smp-ui-tests/src/main/java/utils/rest/SMPRestClient.java b/smp-ui-tests/src/main/java/utils/rest/SMPRestClient.java index c348b76b46f47e56a463cfe8150d77deafa44037..dc08fd06a5cec309ef95c035f198b688eb455676 100644 --- a/smp-ui-tests/src/main/java/utils/rest/SMPRestClient.java +++ b/smp-ui-tests/src/main/java/utils/rest/SMPRestClient.java @@ -5,6 +5,9 @@ import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.StaxDriver; +import org.apache.log4j.LogMF; +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -25,6 +28,7 @@ import java.util.Map; public class SMPRestClient { + protected static Logger log = Logger.getLogger(SMPRestClient.class); private static Client client = Client.create(); private static WebResource resource = client.resource(PROPERTIES.UI_BASE_URL); @@ -180,7 +184,8 @@ public class SMPRestClient { HashMap<String, String> map = getCookies(cookies); String xsrf = map.get("XSRF-TOKEN"); String jsessionID = map.get("JSESSIONID"); - + log.info("Creating domain template whose value is :"+template); + log.info("Creating the doamainpoststring" +domainPostStr); try { ClientResponse getResponse = resource.path(SMPPaths.REST_POST_DOMAIN) .accept(MediaType.APPLICATION_JSON_TYPE) @@ -189,10 +194,12 @@ public class SMPRestClient { .cookie(new Cookie("XSRF-TOKEN", xsrf)) .header("X-XSRF-TOKEN", xsrf) .put(ClientResponse.class, domainPostStr); + log.info("Create domain return status code is:"+getResponse.getStatus()); return getResponse.getStatus() == 200; } catch (Exception e) { e.printStackTrace(); } + return false; } diff --git a/smp-ui-tests/src/main/resources/keystore/keystore_dummy1.jks b/smp-ui-tests/src/main/resources/keystore/keystore_dummy1.jks new file mode 100644 index 0000000000000000000000000000000000000000..1db3d26fb051cb0eba8d4e46b42f77fc3a5c9ca6 Binary files /dev/null and b/smp-ui-tests/src/main/resources/keystore/keystore_dummy1.jks differ diff --git a/smp-ui-tests/src/test/java/ui/BaseTest.java b/smp-ui-tests/src/test/java/ui/BaseTest.java index d3a95aa73105ee88b64acdca6f43bc1d22ed683c..9b4492a9a114fd10123241664e90d71727c81076 100644 --- a/smp-ui-tests/src/test/java/ui/BaseTest.java +++ b/smp-ui-tests/src/test/java/ui/BaseTest.java @@ -31,8 +31,6 @@ public class BaseTest { static ArrayList<String> createdUsers = new ArrayList<>(); static ArrayList<String> createdServiceGroups = new ArrayList<>(); - protected Logger log = Logger.getLogger(this.getClass()); - @BeforeSuite(alwaysRun = true) /*Starts the browser and navigates to the homepage. This happens once before the test suite and the browser window is reused for all tests in suite*/ @@ -88,8 +86,8 @@ public class BaseTest { @BeforeMethod(alwaysRun = true) protected void logSeparator(Method method) throws Exception { - log.info("--------------------------- Running test number: " + methodCount); - log.info("--------------------------- Running test method: " + method.getDeclaringClass().getSimpleName() + "." + method.getName()); + logger.info("--------------------------- Running test number: " + methodCount); + logger.info("--------------------------- Running test method: " + method.getDeclaringClass().getSimpleName() + "." + method.getName()); methodCount++; } @@ -97,6 +95,7 @@ public class BaseTest { private void createDomains() { for (int i = 0; i < 5; i++) { String generated = Generator.randomAlphaNumeric(10); + logger.info("creating domain whose value is :"+generated); boolean created = SMPRestClient.createDomain(generated); if (created) { createdDomains.add(generated); @@ -160,7 +159,7 @@ public class BaseTest { protected void genericLogoutProcedure() { - log.info("executing the generic logout procedure"); + logger.info("executing the generic logout procedure"); SMPPage page = new SMPPage(driver); page.refreshPage(); diff --git a/smp-ui-tests/src/test/java/ui/DomainPgTest.java b/smp-ui-tests/src/test/java/ui/DomainPgTest.java index ec90e010a82b8affdca4629fbf119bd4dca727f7..f7024fa139e843e1e6ba74e74b0e87ddd3019c2f 100644 --- a/smp-ui-tests/src/test/java/ui/DomainPgTest.java +++ b/smp-ui-tests/src/test/java/ui/DomainPgTest.java @@ -1,5 +1,6 @@ package ui; +import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -11,10 +12,13 @@ import pages.domain.DomainGrid; import pages.domain.DomainPage; import pages.domain.DomainPopup; import pages.domain.DomainRow; +import pages.keystore.KeyStoreEditDialog; +import pages.keystore.KeyStoreImportDialog; import utils.Generator; import utils.enums.SMPMessages; import utils.rest.SMPRestClient; +import java.awt.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -302,7 +306,6 @@ public class DomainPgTest extends BaseTest { public void onlyDomainCodeSavingMsgVerify() { SoftAssert soft = new SoftAssert(); DomainPage page = new DomainPage(driver); -// String errorMsg = "The domain should have a defined signature CertAlias."; soft.assertTrue(page.isLoaded(), "Check that the page is loaded"); int index = page.grid().scrollToSmlDomain(""); if (index >= 0) { @@ -330,11 +333,107 @@ public class DomainPgTest extends BaseTest { page.grid().scrollRow(index); } int rowNumber = index + 1; - page.grid().mouseHoverOnDomainCode(rowNumber); -// WebElement text = driver.findElement(By.xpath("//*[text()='The domain should have a defined signature CertAlias.']")); -// soft.assertEquals(text.getText(),errorMsg, "the message 'The domain should have a defined signature CertAlias.' is not displayed"); soft.assertAll(); } + @Test(description = "DMN-80") + public void onlyDomainCodeAndSMLDomainSavingMsgVerify() { + SoftAssert soft = new SoftAssert(); + DomainPage page = new DomainPage(driver); + soft.assertTrue(page.isLoaded(), "Check that the page is loaded"); + String rndString = Generator.randomAlphaNumeric(10); + DomainPopup popup = page.clickNew(); + soft.assertTrue(popup.isLoaded(), "Domain popup is loaded"); + soft.assertTrue(popup.isDomainCodeInputEnabled(), "When defining new domain - Domain Code input is disabled"); + popup.clearAndFillDomainCodeInput(rndString); + popup.clearAndFillSMLDomainInput(rndString); + soft.assertTrue(popup.isEnableOkButton(), "Ok button is disabled"); + popup.clickOK(); + soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled"); + page.clickSave().confirm(); + soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), + "Success message is as expected"); + int index = page.grid().scrollToSmlDomain(rndString); + if (index >= 0) { + page.grid().scrollRow(index); + } + int rowNumber = index + 1; + page.grid().mouseHoverOnDomainCode(rowNumber); + soft.assertAll(); + } + + @Test(description = "DMN-90") + public void createKeyStore() { + SoftAssert soft = new SoftAssert(); + DomainPage page = new DomainPage(driver); + soft.assertTrue(page.isLoaded(), "Check that the page is loaded"); + String pass="test123"; + KeyStoreEditDialog keyStoreEdit = page.clickEditKeyStore(); + int keyStoreRowBeforeAddition = keyStoreEdit.grid().getRowsNo(); + KeyStoreImportDialog keyStoreImport = keyStoreEdit.clickImportKeystore(); + keyStoreImport.chooseKeystoreFile(); + Assert.assertEquals(keyStoreImport.getKeyStoreFileName(),"keystore_dummy1.jks","the keystore file name is not correct"); + keyStoreImport.fillPassword(pass); + keyStoreImport.clickImportBtn(); + keyStoreEdit.clickCloseInKeystore(); + soft.assertFalse(page.alertArea.getAlertMessage().isError()); + keyStoreEdit = page.clickEditKeyStore(); + int keyStoreRowAfterAddition = keyStoreEdit.grid().getRowsNo(); + soft.assertEquals(keyStoreRowAfterAddition,keyStoreRowBeforeAddition+1, "KeyStore is not added to the grid"); + if(keyStoreRowAfterAddition > 1){ + keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition-1).confirm(); + int keyStoreRowAfterDeletion = keyStoreEdit.grid().getRowsNo(); + soft.assertEquals(keyStoreRowAfterDeletion,keyStoreRowAfterAddition-1, "KeyStore is not delete from the grid"); + keyStoreEdit.clickCloseInKeystore(); + soft.assertFalse(page.alertArea.getAlertMessage().isError()); + } + soft.assertAll(); + } + + @Test(description = "DMN-110") + public void allowDuplicateKeyStore() { + SoftAssert soft = new SoftAssert(); + DomainPage page = new DomainPage(driver); + soft.assertTrue(page.isLoaded(), "Check that the page is loaded"); + String pass="test123"; + KeyStoreEditDialog keyStoreEdit = page.clickEditKeyStore(); + int keyStoreRowBeforeAddition = keyStoreEdit.grid().getRowsNo(); + KeyStoreImportDialog keyStoreImport = keyStoreEdit.clickImportKeystore(); + keyStoreImport.chooseKeystoreFile(); + Assert.assertEquals(keyStoreImport.getKeyStoreFileName(),"keystore_dummy1.jks","the keystore file name is not correct"); + keyStoreImport.fillPassword(pass); + keyStoreImport.clickImportBtn(); + keyStoreEdit.clickCloseInKeystore(); + soft.assertFalse(page.alertArea.getAlertMessage().isError()); + keyStoreEdit = page.clickEditKeyStore(); + int keyStoreRowAfterAddition = keyStoreEdit.grid().getRowsNo(); + soft.assertEquals(keyStoreRowAfterAddition,keyStoreRowBeforeAddition+1, "KeyStore is not added to the grid"); + keyStoreRowBeforeAddition = keyStoreRowAfterAddition; + keyStoreImport = keyStoreEdit.clickImportKeystore(); + keyStoreImport.chooseKeystoreFile(); + Assert.assertEquals(keyStoreImport.getKeyStoreFileName(),"keystore_dummy1.jks","the keystore file name is not correct"); + keyStoreImport.fillPassword(pass); + keyStoreImport.clickImportBtn(); + keyStoreEdit.clickCloseInKeystore(); + soft.assertFalse(page.alertArea.getAlertMessage().isError()); + keyStoreEdit = page.clickEditKeyStore(); + keyStoreRowAfterAddition = keyStoreEdit.grid().getRowsNo(); + soft.assertEquals(keyStoreRowAfterAddition,keyStoreRowBeforeAddition+1, "KeyStore is not added to the grid"); + if(keyStoreRowAfterAddition > 1){ + keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition-1).confirm(); + int keyStoreRowAfterDeletion = keyStoreEdit.grid().getRowsNo(); + soft.assertEquals(keyStoreRowAfterDeletion,keyStoreRowAfterAddition-1, "KeyStore is not delete from the grid"); + keyStoreRowAfterAddition = keyStoreRowAfterDeletion; + } + if(keyStoreRowAfterAddition > 1){ + keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition-1).confirm(); + int keyStoreRowAfterDeletion = keyStoreEdit.grid().getRowsNo(); + soft.assertEquals(keyStoreRowAfterDeletion,keyStoreRowAfterAddition-1, "KeyStore is not delete from the grid"); + keyStoreEdit.clickCloseInKeystore(); + soft.assertFalse(page.alertArea.getAlertMessage().isError()); + } + soft.assertAll(); + } + } diff --git a/smp-ui-tests/src/test/java/ui/LoginPgTest.java b/smp-ui-tests/src/test/java/ui/LoginPgTest.java index b1fe3d7d542bdabd555aba380ba971f812853794..9bcf4004da84b36444f5377d9df786e9143376db 100644 --- a/smp-ui-tests/src/test/java/ui/LoginPgTest.java +++ b/smp-ui-tests/src/test/java/ui/LoginPgTest.java @@ -21,19 +21,19 @@ public class LoginPgTest extends BaseTest { @AfterMethod public void logoutAndReset() { - log.info("deleting cookies"); + logger.info("deleting cookies"); driver.manage().deleteAllCookies(); try { - log.info("clearing localstorage"); + logger.info("clearing localstorage"); ((JavascriptExecutor) driver).executeScript("localStorage.clear();"); } catch (Exception e) { - log.info("clearing localcstorage failed"); + logger.info("clearing localcstorage failed"); } SMPPage page = new SMPPage(driver); - log.info("refreshing page to close all popups"); + logger.info("refreshing page to close all popups"); page.refreshPage(); try { @@ -112,13 +112,13 @@ public class LoginPgTest extends BaseTest { String username = Generator.randomAlphaNumeric(10); SMPRestClient.createUser(username, "SYSTEM_ADMIN"); - log.info("created user " + username); + logger.info("created user " + username); SMPPage page = new SMPPage(driver); logger.info("Going to login page"); page.pageHeader.goToLogin(); - log.info("trying to login with " + username); + logger.info("trying to login with " + username); LoginPage loginPage = new LoginPage(driver); SearchPage searchPage = loginPage.login(username, "QW!@qw12"); diff --git a/smp-ui-tests/src/test/java/ui/SearchPgTest.java b/smp-ui-tests/src/test/java/ui/SearchPgTest.java index bd433d56c3190e77ffbe33ed6be043a21e673b96..71fe2caf90e11ea9568f367a015c4377860ba62d 100644 --- a/smp-ui-tests/src/test/java/ui/SearchPgTest.java +++ b/smp-ui-tests/src/test/java/ui/SearchPgTest.java @@ -23,15 +23,15 @@ import java.util.Set; public class SearchPgTest extends BaseTest { @AfterMethod - public void resetFilters(){ - SMPPage page = new SMPPage(driver); + public void resetFilters() { + SMPPage page = new SMPPage(driver); page.refreshPage(); page.waitForXMillis(500); } @Test(description = "SRCH-0") - public void searchPgInitialState(){ + public void searchPgInitialState() { SoftAssert soft = new SoftAssert(); SearchPage page = new SearchPage(driver); @@ -46,7 +46,7 @@ public class SearchPgTest extends BaseTest { } @Test(description = "SRCH-10") - public void domainSelectContent(){ + public void domainSelectContent() { SoftAssert soft = new SoftAssert(); SearchPage page = new SearchPage(driver); soft.assertTrue(page.isLoaded()); @@ -57,7 +57,7 @@ public class SearchPgTest extends BaseTest { for (String restDomain : restDomains) { boolean found = false; for (String uiDomain : uiDomains) { - if(uiDomain.equalsIgnoreCase(restDomain)){ + if (uiDomain.equalsIgnoreCase(restDomain)) { found = true; } } @@ -69,7 +69,7 @@ public class SearchPgTest extends BaseTest { } @Test(description = "SRCH-20") - public void searchGridInitialState(){ + public void searchGridInitialState() { SoftAssert soft = new SoftAssert(); SearchPage page = new SearchPage(driver); @@ -85,7 +85,7 @@ public class SearchPgTest extends BaseTest { } @Test(description = "SRCH-30") - public void searchFilterResults(){ + public void searchFilterResults() { SoftAssert soft = new SoftAssert(); SearchPage page = new SearchPage(driver); @@ -111,8 +111,8 @@ public class SearchPgTest extends BaseTest { for (ServiceGroupRow row : rows) { - String identifier =row.getParticipantIdentifier(); - String scheme =row.getParticipantScheme(); + String identifier = row.getParticipantIdentifier(); + String scheme = row.getParticipantScheme(); soft.assertTrue(identifier.contains(pIdentifier), String.format("Identifier %s, found %s", pIdentifier, identifier)); soft.assertTrue(scheme.contains(pScheme), String.format("Scheme %s, found %s", pScheme, scheme)); @@ -122,7 +122,7 @@ public class SearchPgTest extends BaseTest { } @Test(description = "SRCH-40") - public void openURLLink(){ + public void openURLLink() { SoftAssert soft = new SoftAssert(); SearchPage page = new SearchPage(driver); @@ -137,7 +137,7 @@ public class SearchPgTest extends BaseTest { String tmpURLPart = null; try { tmpURLPart = URLDecoder.decode(listedURL, "UTF-8").split("smp/")[1].trim(); - soft.assertEquals(tmpURLPart, pScheme+"::"+pIdentifier, "URL contains the proper scheme and identifier"); + soft.assertEquals(tmpURLPart, pScheme + "::" + pIdentifier, "URL contains the proper scheme and identifier"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } @@ -148,13 +148,13 @@ public class SearchPgTest extends BaseTest { "Number of listed MetadataReferences in XML matches UI"); - soft.assertAll(); } - @Test(description = "SRCH-50") @Ignore - public void expandServiceGroupCheckMetadata(){ + @Test(description = "SRCH-50") + @Ignore + public void expandServiceGroupCheckMetadata() { SoftAssert soft = new SoftAssert(); SearchPage page = new SearchPage(driver); @@ -179,15 +179,15 @@ public class SearchPgTest extends BaseTest { String docId = metadataRow.getDocumentIdentifier(); String url = metadataRow.getURL(); - soft.assertTrue(url.contains(String.format("%s::%s/services/%s::%s", pScheme, pIdentifier, docScheme, docId)), "Checking URL format for metadata "+ docId); + soft.assertTrue(url.contains(String.format("%s::%s/services/%s::%s", pScheme, pIdentifier, docScheme, docId)), "Checking URL format for metadata " + docId); String metadata = SMPRestClient.getMetadataString(url); - soft.assertTrue(metadata.contains(pScheme), "Checking XML contains proper participant scheme for metadata "+ docId); - soft.assertTrue(metadata.contains(pIdentifier), "Checking XML contains proper participant ID for metadata "+ docId); - soft.assertTrue(metadata.toLowerCase().contains(docId.toLowerCase()), "Checking XML contains proper document ID for metadata "+ docId); - soft.assertTrue(metadata.contains(docScheme), "Checking XML contains proper document scheme for metadata "+ docId); + soft.assertTrue(metadata.contains(pScheme), "Checking XML contains proper participant scheme for metadata " + docId); + soft.assertTrue(metadata.contains(pIdentifier), "Checking XML contains proper participant ID for metadata " + docId); + soft.assertTrue(metadata.toLowerCase().contains(docId.toLowerCase()), "Checking XML contains proper document ID for metadata " + docId); + soft.assertTrue(metadata.contains(docScheme), "Checking XML contains proper document scheme for metadata " + docId); } @@ -196,7 +196,7 @@ public class SearchPgTest extends BaseTest { } @Test(description = "SRCH-60") - public void collapseMetadata(){ + public void collapseMetadata() { SoftAssert soft = new SoftAssert(); SearchPage page = new SearchPage(driver); @@ -205,12 +205,12 @@ public class SearchPgTest extends BaseTest { ServiceGroupRow row0 = null; List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows(); for (int i = 0; i < rows.size(); i++) { - if(rows.get(i).getMetadataSize() >0 ){ + if (rows.get(i).getMetadataSize() > 0) { row0 = rows.get(i); } } - if(null == row0){ + if (null == row0) { row0 = rows.get(0); SMPRestClient.createMetadata(row0.getParticipantIdentifier()); page.refreshPage(); @@ -219,7 +219,6 @@ public class SearchPgTest extends BaseTest { } - soft.assertTrue(row0.verifyMetadataExpandButton(), "Initially the row has expanding symbol on it"); row0.expandMetadata(); @@ -233,7 +232,7 @@ public class SearchPgTest extends BaseTest { } @Test(description = "SRCH-70") - public void verifyOpenMetadataURL(){ + public void verifyOpenMetadataURL() { SoftAssert soft = new SoftAssert(); SearchPage page = new SearchPage(driver); @@ -242,12 +241,12 @@ public class SearchPgTest extends BaseTest { ServiceGroupRow row0 = null; List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows(); for (int i = 0; i < rows.size(); i++) { - if(rows.get(i).getMetadataSize() >0 ){ + if (rows.get(i).getMetadataSize() > 0) { row0 = rows.get(i); } } - if(null == row0){ + if (null == row0) { row0 = rows.get(0); SMPRestClient.createMetadata(row0.getParticipantIdentifier()); page.refreshPage(); @@ -278,7 +277,7 @@ public class SearchPgTest extends BaseTest { e.printStackTrace(); } - soft.assertTrue(url.contains(String.format("%s::%s/services/%s::%s", pScheme, pIdentifier, docScheme, docId)), "Checking URL format for metadata "+ docId); + soft.assertTrue(url.contains(String.format("%s::%s/services/%s::%s", pScheme, pIdentifier, docScheme, docId)), "Checking URL format for metadata " + docId); String mainWindow = driver.getWindowHandle(); @@ -299,7 +298,7 @@ public class SearchPgTest extends BaseTest { } @Test(description = "SRCH-80") - public void filterByDifferentDomains(){ + public void filterByDifferentDomains() { SoftAssert soft = new SoftAssert(); String participantID = Generator.randomAlphaNumeric(5); @@ -318,7 +317,7 @@ public class SearchPgTest extends BaseTest { searchPage.filters.filter(participantID, participantScheme, SMPRestClient.getDomainSubDomainCombo(createdDomains.get(0))); List<ServiceGroupRow> results = searchPage.getServiceGroupGrid().getRows(); - soft.assertEquals(results.size() , 1, "Results size is 1 (first search)"); + soft.assertEquals(results.size(), 1, "Results size is 1 (first search)"); soft.assertEquals(results.get(0).getParticipantIdentifier().toLowerCase(), participantID.toLowerCase(), "First and only result is the one we entered and is found when filtering by first domain"); @@ -356,4 +355,39 @@ public class SearchPgTest extends BaseTest { soft.assertAll(); } + @Test(description = "SRCH-100") + public void metadataTableContent() { + SoftAssert soft = new SoftAssert(); + + SearchPage page = new SearchPage(driver); + soft.assertTrue(page.isLoaded()); + ServiceGroupRow row0 = null; + List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows(); + row0 = rows.get(0); + MetadataGrid metadataGrid = row0.expandMetadata(); + List<MetadataRow> metadataRows = metadataGrid.getMetadataRows(); + if (row0.getMetadataSize() == 0) { + //row0.emptyMetadataContentText() + soft.assertEquals(row0.emptyMetadataContentText(), "No service metadata"); + } else { + if (row0.getMetadataSize() > 0) { + soft.assertTrue(row0.getMetadataSize() == metadataRows.size(), "metadata size is not equal to no of metadata present inside the corressponding row"); + } + + } + soft.assertAll(); + } + + @Test(description = "SRCH-101") + public void verifyCollapsingSidebarPageAfterLogin() + { + SoftAssert soft = new SoftAssert(); + SearchPage page = new SearchPage(driver); + soft.assertTrue(page.isLoaded()); + page.sidebar.collapsingSideBar(); + soft.assertFalse(page.sidebar.isSidebarSearchTextEnable(),"Search button is visible so sidebar page is not collpased"); + page.sidebar.expandingSideBar(); + soft.assertTrue(page.sidebar.isSidebarSearchTextEnable(),"Search button is not visible so sidebar page is not expanding"); + soft.assertAll(); + } } diff --git a/smp-ui-tests/src/test/java/ui/UsersPgTest.java b/smp-ui-tests/src/test/java/ui/UsersPgTest.java index 782d8feac9fb62c76808543df87d247de5817c34..f1a2d248308d64cf4944db3d96df37f5d1922aac 100644 --- a/smp-ui-tests/src/test/java/ui/UsersPgTest.java +++ b/smp-ui-tests/src/test/java/ui/UsersPgTest.java @@ -167,7 +167,7 @@ public class UsersPgTest extends BaseTest { SMPRestClient.createUser(username, "SYSTEM_ADMIN"); SoftAssert soft = new SoftAssert(); - log.info("created user " + username); + logger.info("created user " + username); UsersPage page = new UsersPage(driver); page.refreshPage(); @@ -269,7 +269,7 @@ public class UsersPgTest extends BaseTest { SMPRestClient.createUser(username, "SMP_ADMIN"); SoftAssert soft = new SoftAssert(); - log.info("Created username " + username); + logger.info("Created username " + username); UsersPage page = new UsersPage(driver); @@ -313,7 +313,7 @@ public class UsersPgTest extends BaseTest { String username = Generator.randomAlphaNumeric(10); SMPRestClient.createUser(username, "SERVICE_GROUP_ADMIN"); - log.info("Created username" + username); + logger.info("Created username" + username); SoftAssert soft = new SoftAssert(); UsersPage page = new UsersPage(driver); @@ -373,8 +373,8 @@ public class UsersPgTest extends BaseTest { new ArrayList<>(Arrays.asList(createdDomains.get(0))) ); - log.info("Created username " + username); - log.info("Created service group " + pi); + logger.info("Created username " + username); + logger.info("Created service group " + pi); SoftAssert soft = new SoftAssert(); @@ -411,7 +411,7 @@ public class UsersPgTest extends BaseTest { new ArrayList<>(Arrays.asList(createdDomains.get(0))) ); - log.info("Created username "+ username); + logger.info("Created username "+ username); SoftAssert soft = new SoftAssert();