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