From 4cd73ad05c740ee89decc05bfc9e461b9bcdb42f Mon Sep 17 00:00:00 2001 From: Mihai BOZ <Mihai.BOZ@ext.ec.europa.eu> Date: Wed, 27 Sep 2023 15:32:16 +0300 Subject: [PATCH] refactor baserestclient methods, created method for addmembers on domain. --- .../src/main/java/rest/BaseRestClient.java | 74 +++++++------------ .../src/main/java/rest/DomainClient.java | 23 +++--- .../src/main/java/rest/UserClient.java | 7 +- .../src/main/java/utils/TestRunData.java | 26 ++++++- .../java/domiSMPTests/ui/DomainsPgTests.java | 6 +- .../domiSMPTests/ui/EditDomainsPgTests.java | 2 +- 6 files changed, 71 insertions(+), 67 deletions(-) diff --git a/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java b/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java index a7545ad6c..88cb7f46c 100644 --- a/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java +++ b/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java @@ -33,34 +33,18 @@ public class BaseRestClient { this.password = password; } - public BaseRestClient() { this.username = data.getAdminUser().get("username"); this.password = data.getAdminUser().get("password"); } // ---------------------------------------Default request methods ------------------------------------------------- - protected ClientResponse requestPUT(WebResource resource, String params, String type) { - - if (!isLoggedIn()) { - try { - refreshCookies(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - WebResource.Builder builder = decorateBuilder(resource); - - return builder.type(type).put(ClientResponse.class, params); - } - protected ClientResponse requestPUT(WebResource resource, JSONObject body, String type) { if (!isLoggedIn()) { log.info("User is not loggedin"); try { - refreshCookies(); + createSession(); } catch (Exception e) { throw new RuntimeException(e); } @@ -88,7 +72,7 @@ public class BaseRestClient { protected WebResource.Builder decorateBuilder(WebResource resource) { WebResource.Builder builder = resource.getRequestBuilder(); - + cookies = TestRunData.getCookies(); if (null != cookies) { log.debug(""); for (NewCookie cookie : cookies) { @@ -96,66 +80,60 @@ public class BaseRestClient { log.debug("cookie " + cookie + " is added to the builder"); } } - if (null != token) { - builder = builder.header("X-XSRF-TOKEN", token); + if (null != TestRunData.getXSRFToken()) { + builder = builder.header("X-XSRF-TOKEN", TestRunData.getXSRFToken()); } return builder; } - public List<NewCookie> login() throws SMPRestException { + public void createSession() throws Exception { log.debug("Rest client using to login: " + this.username); HashMap<String, String> params = new HashMap<>(); params.put("username", this.username); params.put("password", this.password); ClientResponse response = resource.path(RestServicePaths.LOGIN).type(MediaType.APPLICATION_JSON).post(ClientResponse.class, new JSONObject(params).toString()); - JSONObject responseBody = new JSONObject(response.getEntity(String.class)); - // extract userId to be used in the Paths of the requests - - data.setUserId((String) responseBody.get("userId")); - log.debug("Last Userid is " + data.getUserId()); if (response.getStatus() == 200) { - return response.getCookies(); + // extract userId to be used in the Paths of the requests + data.setUserId((String) responseBody.get("userId")); + log.debug(String.format("UserID: %s is stored!", TestRunData.getUserId())); + + data.setCookies(response.getCookies()); + log.debug("Cookies are stored!"); + + if (null != TestRunData.getCookies()) { + token = extractToken(); + } else { + throw new Exception("Could not login, COOKIES are not found!"); + } + } else { + throw new SMPRestException("Login failed", response); + } - throw new SMPRestException("Login failed", response); } private String extractToken() { String mytoken = null; - for (NewCookie cookie : cookies) { + for (NewCookie cookie : TestRunData.getCookies()) { if (StringUtils.equalsIgnoreCase(cookie.getName(), "XSRF-TOKEN")) { mytoken = cookie.getValue(); + } } + data.setXSRFToken(mytoken); + log.debug("XSRF-Token " + mytoken + " has been stored!"); return mytoken; } - public void refreshCookies() throws Exception { - if (isLoggedIn()) { - return; - } - cookies = login(); - if (null != cookies) { - token = extractToken(); - } else { - throw new Exception("Could not login, tests will not be able to generate necessary data!"); - } - - if (null == token) { - throw new Exception("Could not obtain XSRF token, tests will not be able to generate necessary data!"); - } - } - public boolean isLoggedIn() { + WebResource.Builder builder = decorateBuilder(resource.path(RestServicePaths.CONNECTED)); int response = builder.get(ClientResponse.class).getStatus(); log.debug("Connected endpoint returns: " + response); - log.debug("UserID is: " + data.getUserId()); - return (!(response == 401) && !data.getUserId().isEmpty()); + return (!(response == 401)); } - } diff --git a/domiSMP-ui-tests/src/main/java/rest/DomainClient.java b/domiSMP-ui-tests/src/main/java/rest/DomainClient.java index c93e2f16d..6cebc5f37 100644 --- a/domiSMP-ui-tests/src/main/java/rest/DomainClient.java +++ b/domiSMP-ui-tests/src/main/java/rest/DomainClient.java @@ -3,6 +3,7 @@ package rest; import com.sun.jersey.api.client.ClientResponse; import org.json.JSONObject; import rest.models.DomainModel; +import utils.TestRunData; public class DomainClient extends BaseRestClient { @@ -19,13 +20,13 @@ public class DomainClient extends BaseRestClient { if (!isLoggedIn()) { try { - refreshCookies(); + createSession(); } catch (Exception e) { throw new RuntimeException(e); } } - String createDomainPath = RestServicePaths.getCreateDomainPath(data.userId); + String createDomainPath = RestServicePaths.getCreateDomainPath(TestRunData.getUserId()); ClientResponse response = jsonPUT(resource.path(createDomainPath), domainJson); JSONObject responseBody = new JSONObject(response.getEntity(String.class)); @@ -42,24 +43,22 @@ public class DomainClient extends BaseRestClient { } - public JSONObject AddMembersToDomain(String domainId, String username, String roleType) { + public JSONObject addMembersToDomain(String domainId, String username, String roleType) { - JSONObject json = new JSONObject(); - json.put("memberOf", "DOMAIN"); - json.put("username", username); - json.put("roleType", roleType); + JSONObject membersJson = new JSONObject(); + membersJson.put("memberOf", "DOMAIN"); + membersJson.put("username", username); + membersJson.put("roleType", roleType); - JSONObject membersJson = new JSONObject(json); - if (!isLoggedIn()) { try { - refreshCookies(); + createSession(); } catch (Exception e) { throw new RuntimeException(e); } } - String addMemberPath = RestServicePaths.getDomainAddMemberPath(data.userId, domainId); + String addMemberPath = RestServicePaths.getDomainAddMemberPath(TestRunData.getUserId(), domainId); ClientResponse response = jsonPUT(resource.path(addMemberPath), membersJson); if (response.getStatus() != 200) { @@ -69,7 +68,7 @@ public class DomainClient extends BaseRestClient { throw new RuntimeException(e); } } - log.debug("Domain: " + "" + " has been created successfully!"); + log.debug("Member: " + username + " has been added!"); return membersJson; } diff --git a/domiSMP-ui-tests/src/main/java/rest/UserClient.java b/domiSMP-ui-tests/src/main/java/rest/UserClient.java index 1470289b5..3d833e9dc 100644 --- a/domiSMP-ui-tests/src/main/java/rest/UserClient.java +++ b/domiSMP-ui-tests/src/main/java/rest/UserClient.java @@ -3,6 +3,7 @@ package rest; import com.sun.jersey.api.client.ClientResponse; import org.json.JSONObject; import rest.models.UserModel; +import utils.TestRunData; public class UserClient extends BaseRestClient { @@ -21,13 +22,13 @@ public class UserClient extends BaseRestClient { if (!isLoggedIn()) { try { - refreshCookies(); + createSession(); } catch (Exception e) { throw new RuntimeException(e); } } - String usersPath = RestServicePaths.getUsersPath(data.userId); + String usersPath = RestServicePaths.getUsersPath(TestRunData.getUserId()); ClientResponse response = jsonPUT(resource.path(usersPath), usrObj); JSONObject responseBody = new JSONObject(response.getEntity(String.class)); @@ -53,7 +54,7 @@ public class UserClient extends BaseRestClient { public JSONObject changePassword(String forUserId, String newPassword) { - String changePasswordPath = RestServicePaths.getChangePasswordPath(data.userId, forUserId); + String changePasswordPath = RestServicePaths.getChangePasswordPath(TestRunData.getUserId(), forUserId); JSONObject passwordChangeBody = new JSONObject(); passwordChangeBody.put("currentPassword", password); passwordChangeBody.put("newPassword", newPassword); diff --git a/domiSMP-ui-tests/src/main/java/utils/TestRunData.java b/domiSMP-ui-tests/src/main/java/utils/TestRunData.java index 8e814606f..ae5371c27 100644 --- a/domiSMP-ui-tests/src/main/java/utils/TestRunData.java +++ b/domiSMP-ui-tests/src/main/java/utils/TestRunData.java @@ -4,11 +4,13 @@ import ddsl.enums.ApplicationRoles; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.ws.rs.core.NewCookie; import java.io.File; import java.io.FileInputStream; import java.text.SimpleDateFormat; import java.time.Duration; import java.util.HashMap; +import java.util.List; import java.util.Properties; @@ -20,7 +22,10 @@ public class TestRunData { public static SimpleDateFormat REST_JMS_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); static Properties prop = new Properties(); protected final Logger log = LoggerFactory.getLogger(this.getClass()); - public String userId; + public static String XSRFToken; + public static List<NewCookie> cookies; + private static String userId; + public TestRunData() { if (prop.isEmpty()) { @@ -28,10 +33,18 @@ public class TestRunData { } } - public String getUserId() { + public static String getUserId() { return userId; } + public static List<NewCookie> getCookies() { + return cookies; + } + + public void setCookies(List<NewCookie> cookies) { + TestRunData.cookies = cookies; + } + public void setUserId(String userId) { this.userId = userId; } @@ -128,4 +141,13 @@ public class TestRunData { return System.getProperty("user.dir") + File.separator + "downloadFiles"; } + public static String getXSRFToken() { + return XSRFToken; + } + + public void setXSRFToken(String xsrfToken) { + this.XSRFToken = xsrfToken; + } + + } diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java index 4deefc15c..7e0ed2bf7 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java @@ -3,6 +3,7 @@ package domiSMPTests.ui; import ddsl.DomiSMPPage; import ddsl.enums.Pages; import domiSMPTests.SeleniumTest; +import org.json.JSONObject; import org.openqa.selenium.WebElement; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -149,7 +150,10 @@ public class DomainsPgTests extends SeleniumTest { @Test(description = "DOM-03 System admin is able to Invite/Remove users from domains") public void SystemAdminIsAbleToInviteRemoveUsersFromDomains22() throws Exception { - rest.domains().createDomain(DomainModel.generatePublicDomainModelWithoutSML()); + JSONObject domain = rest.domains().createDomain(DomainModel.generatePublicDomainModelWithoutSML()); + String domainId = domain.get("domainId").toString(); + rest.domains().addMembersToDomain(domainId, "system", "ADMIN"); + } } \ No newline at end of file diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java index a559f4fb7..9cdb5c9e0 100644 --- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java +++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java @@ -29,7 +29,7 @@ public class EditDomainsPgTests extends SeleniumTest { JSONObject domainJson = rest.domains().createDomain(domainModel); String domainId = domainJson.get("domainId").toString(); - rest.domains().AddMembersToDomain(domainId, adminUser.getUsername(), "ADMIN"); + rest.domains().addMembersToDomain(domainId, adminUser.getUsername(), "ADMIN"); homePage = new DomiSMPPage(driver); -- GitLab