From 6d92dceabfaf49a1c16d2255e72f93c8b892ee79 Mon Sep 17 00:00:00 2001
From: monhaso <sonali.mohanty@ext.ec.europa.eu>
Date: Mon, 31 Jan 2022 21:39:05 +0100
Subject: [PATCH] 1) handling of cookies from login method to other Rest Api
 Method - Fix of 401 Unauthorized 2) Handling nullpointer exception while
 quitting of driver in BaseTest class 3) Code Fix for SRCH-60 and SRCH-70 due
 feature changes in ServiceGroupRow

---
 smp-ui-tests/pom.xml                          |   2 +-
 .../pages/service_groups/ServiceGroupRow.java |  22 +-
 .../main/java/utils/rest/SMPRestClient.java   | 294 +++++++++++++++---
 smp-ui-tests/src/test/java/ui/BaseTest.java   |   4 +-
 .../src/test/java/ui/SearchPgTest.java        |   6 +-
 5 files changed, 264 insertions(+), 64 deletions(-)

diff --git a/smp-ui-tests/pom.xml b/smp-ui-tests/pom.xml
index 321e1925f..cb633d0f4 100644
--- a/smp-ui-tests/pom.xml
+++ b/smp-ui-tests/pom.xml
@@ -11,7 +11,7 @@
 	<properties>
 		<maven.compiler.source>1.8</maven.compiler.source>
 		<maven.compiler.target>1.8</maven.compiler.target>
-		<url>http://localhost:8080/smp-4.1.1</url>
+		<url>http://localhost:8080/smp</url>
 		<gecko.driver.path>drivers/geckodriver.exe</gecko.driver.path>
 		<chrome.driver.path>drivers/chromedriver.exe</chrome.driver.path>
 	</properties>
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 3802f3d04..d3458aa59 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
@@ -23,21 +23,20 @@ public class ServiceGroupRow extends PageComponent {
 	@FindBy(tagName = "datatable-body-cell")
 	protected List<WebElement> cells;
 
-	@FindBy(className = "table-button-expand")
-	private WebElement expandMetadata;
+	/*@FindBy(className = "table-button-expand")
+	private WebElement expandMetadata;*/
 
+	@FindBy(css = ".ng-star-inserted.datatable-icon-right")
+	private WebElement expandMetadata;
 
 	public MetadataGrid expandMetadata() {
-		if(expandMetadata.getText().contains("+")){
 			expandMetadata.click();
 //		todo: find something better to wait for
-			waitForXMillis(1000);}
+			waitForXMillis(1000);
 		return new MetadataGrid(driver);
 	}
 	public void collapseMetadata(){
-		if(expandMetadata.getText().contains("-")){
-			expandMetadata.click();
-		}
+			driver.findElement(By.cssSelector(".ng-star-inserted.datatable-icon-down")).click();
 	}
 
 	public Integer getMetadataSize() {
@@ -56,8 +55,13 @@ public class ServiceGroupRow extends PageComponent {
 		return cells.get(5).findElement(By.tagName("a")).getAttribute("href").trim();
 	}
 
-	public String getExpandButtonText() {
-		return expandMetadata.getText().trim();
+	public boolean verifyMetadataExpandButton() {
+		return expandMetadata.isEnabled();
+	}
+
+	public boolean verifyMetadataCollapseButton() {
+		WebElement collapseButton = driver.findElement(By.cssSelector(".ng-star-inserted.datatable-icon-down"));
+		return collapseButton.isDisplayed() && collapseButton.isEnabled();
 	}
 
 	public boolean isMetadataExpanded() {
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 d447565e0..fb2b55547 100644
--- a/smp-ui-tests/src/main/java/utils/rest/SMPRestClient.java
+++ b/smp-ui-tests/src/main/java/utils/rest/SMPRestClient.java
@@ -15,6 +15,8 @@ import utils.TestDataProvider;
 
 import javax.ws.rs.core.Cookie;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.NewCookie;
+import java.net.HttpCookie;
 import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.List;
@@ -75,53 +77,95 @@ public class SMPRestClient {
 		return domainCode;
 	}
 
-	public static Cookie login(String role){
+/*	public static Cookie login(String role){
 		String authTemplate = "{\"username\": \"%s\", \"password\": \"%s\"}";
 		TestDataProvider tdp = new TestDataProvider();
 		Map<String, String> user = tdp.getUserWithRole(role);
 		String auth = String.format(authTemplate, user.get("username"), user.get("password"));
 
 		Cookie session = resource.path(SMPPaths.LOGIN_PATH).accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON_TYPE)
-				.post(ClientResponse.class, auth).getCookies().get(0);
+				.post(ClientResponse.class, auth).getCookies().get(1);
 		return session;
-	}
+	}*/
 
-	public static List<String> getSysAdmins(){
-		Cookie jssesionID = login("SYS_ADMIN");
+	public static List<NewCookie> login(String role){
+		String authTemplate = "{\"username\": \"%s\", \"password\": \"%s\"}";
+		TestDataProvider tdp = new TestDataProvider();
+		Map<String, String> user = tdp.getUserWithRole(role);
+		String auth = String.format(authTemplate, user.get("username"), user.get("password"));
 
-		try {
-			String responseRaw = resource.path(SMPPaths.USER_LIST)
-					.queryParam("page", "-1")
-					.queryParam("pageSize", "-1")
-					.accept(MediaType.APPLICATION_JSON_TYPE)
-					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
-					.get(String.class);
-			JSONArray users = new JSONObject(responseRaw).getJSONArray("serviceEntities");
+		List<NewCookie> session = resource.path(SMPPaths.LOGIN_PATH).accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON_TYPE)
+				.post(ClientResponse.class, auth).getCookies();//.getCookies();
+		return session;
+	}
 
-			List<String> sysadmins = new ArrayList<>();
+	public static List<String> getSysAdmins() {
+		List<NewCookie> cookies = login("SYS_ADMIN");
+		String xsrf = "";
+		String jsessionID = "";
 
-			for (int i = 0; i < users.length(); i++) {
-				JSONObject usr = users.getJSONObject(i);
-				if(usr.getString("role").equalsIgnoreCase("SYSTEM_ADMIN")){
-					sysadmins.add(usr.getString("username"));
+		try {
+			for (NewCookie cookie : cookies) {
+				if ("XSRF-TOKEN".equals(cookie.getName())) {
+					xsrf = cookie.getValue();
+					break;
 				}
 			}
-			return sysadmins;
-		} catch (Exception e) {
-			e.printStackTrace();
+			for (NewCookie cookie : cookies) {
+				if ("JSESSIONID".equals(cookie.getName())) {
+					jsessionID = cookie.getValue();
+					break;
+				}
+			}
+				String responseRaw = resource.path(SMPPaths.USER_LIST)
+						.queryParam("page", "-1")
+						.queryParam("pageSize", "-1")
+						.accept(MediaType.APPLICATION_JSON_TYPE)
+						.type(MediaType.APPLICATION_JSON_TYPE)
+						.cookie(new Cookie("JSESSIONID", jsessionID))
+						.cookie(new Cookie("XSRF-TOKEN", xsrf))
+						.header("X-XSRF-TOKEN", xsrf)
+						.get(String.class);
+				JSONArray users = new JSONObject(responseRaw).getJSONArray("serviceEntities");
+
+				List<String> sysadmins = new ArrayList<>();
+
+				for (int i = 0; i < users.length(); i++) {
+					JSONObject usr = users.getJSONObject(i);
+					if (usr.getString("role").equalsIgnoreCase("SYSTEM_ADMIN")) {
+						sysadmins.add(usr.getString("username"));
+					}
+				}
+				return sysadmins;
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+			return null;
 		}
-		return null;
-	}
-
 	public static List<String> getKeyStoreEntries(){
-		Cookie jssesionID = login("SYS_ADMIN");
+		List<NewCookie> cookies = login("SYS_ADMIN");
+		String xsrf = "";
+		String jsessionID = "";
 
 		try {
+			for (NewCookie cookie : cookies) {
+				if ("XSRF-TOKEN".equals(cookie.getName())) {
+					xsrf = cookie.getValue();
+					break;
+				}
+			}
+			for (NewCookie cookie : cookies) {
+				if ("JSESSIONID".equals(cookie.getName())) {
+					jsessionID = cookie.getValue();
+					break;
+				}
+			}
 			String responseRaw = resource.path(SMPPaths.KEYSTORE)
 					.accept(MediaType.APPLICATION_JSON_TYPE)
 					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
+					.cookie(new Cookie("JSESSIONID", jsessionID))
+					.cookie(new Cookie("XSRF-TOKEN", xsrf))
+					.header("X-XSRF-TOKEN", xsrf)
 					.get(String.class);
 			JSONArray entries = new JSONObject(responseRaw).getJSONArray("serviceEntities");
 
@@ -141,16 +185,31 @@ public class SMPRestClient {
 
 
 	public static boolean createDomain(String domainCode){
-		Cookie jssesionID = login("SYS_ADMIN");
+		List<NewCookie> cookies = login("SYS_ADMIN");
+		String xsrf = "";
+		String jsessionID = "";
 		String template = "[{\"domainCode\":\"%s\",\"smlSubdomain\":\"%s\",\"smlSmpId\":\"%s\",\"smlClientKeyAlias\":\"%s\",\"signatureKeyAlias\":\"%s\",\"status\":2,\"smlClientCertHeader\":\"%s\"}]";
 		String domainPostStr = String.format(template, domainCode, domainCode, domainCode, domainCode, domainCode, domainCode);
 
 		try {
-
+			for (NewCookie cookie : cookies) {
+				if("XSRF-TOKEN".equals(cookie.getName())){
+					xsrf = cookie.getValue();
+					break;
+				}
+			}
+			for (NewCookie cookie : cookies) {
+				if("JSESSIONID".equals(cookie.getName())){
+					jsessionID = cookie.getValue();
+				break;
+				}
+			}
 			ClientResponse getResponse = resource.path(SMPPaths.REST_POST_DOMAIN)
 					.accept(MediaType.APPLICATION_JSON_TYPE)
 					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
+					.cookie(new Cookie("JSESSIONID",jsessionID))
+					.cookie(new Cookie("XSRF-TOKEN",xsrf))
+					.header("X-XSRF-TOKEN",xsrf)
 					.put(ClientResponse.class, domainPostStr);
 
 			return getResponse.getStatus() == 200;
@@ -161,15 +220,31 @@ public class SMPRestClient {
 	}
 
 	public static boolean createUser(String username, String role){
-		Cookie jssesionID = login("SYS_ADMIN");
+		List<NewCookie> cookies = login("SYS_ADMIN");
+		String xsrf = "";
+		String jsessionID = "";
 		String template = "[{\"active\":true,\"username\":\"%s\",\"emailAddress\":\"\",\"password\":\"QW!@qw12\",\"confirmation\":\"\",\"role\":\"%s\",\"status\":2,\"statusPassword\":2,\"certificate\":{\"subject\":\"\",\"validFrom\":null,\"validTo\":null,\"issuer\":\"\",\"serialNumber\":\"\",\"certificateId\":\"\",\"fingerprints\":\"\"}}]";
 		String postStr = String.format(template, username, role);
 
 		try {
+			for (NewCookie cookie : cookies) {
+				if ("XSRF-TOKEN".equals(cookie.getName())) {
+					xsrf = cookie.getValue();
+					break;
+				}
+			}
+			for (NewCookie cookie : cookies) {
+				if ("JSESSIONID".equals(cookie.getName())) {
+					jsessionID = cookie.getValue();
+					break;
+				}
+			}
 			ClientResponse getResponse = resource.path(SMPPaths.USER_LIST)
 					.accept(MediaType.APPLICATION_JSON_TYPE)
 					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
+					.cookie(new Cookie("JSESSIONID",jsessionID))
+					.cookie(new Cookie("XSRF-TOKEN",xsrf))
+					.header("X-XSRF-TOKEN",xsrf)
 					.put(ClientResponse.class, postStr);
 
 			return getResponse.getStatus() == 200;
@@ -181,6 +256,8 @@ public class SMPRestClient {
 
 	public static boolean createServiceGroup(String pi, String ps, List<String> usernames, List<String> domainCodes){
 		String template = "[{\"id\":null,\"participantIdentifier\":\"%s\",\"participantScheme\":\"%s\",\"serviceMetadata\":[],\"users\":%s,\"serviceGroupDomains\":%s,\"extension\":\"\",\"status\":2}]";
+		String xsrf = "";
+		String jsessionID = "";
 		try {
 
 			JSONArray users = new JSONArray();
@@ -193,13 +270,30 @@ public class SMPRestClient {
 				domains.put(transformDomainForSGPost(getDomainForName(codes)));
 			}
 
+
+
 			String postStr = String.format(template, pi, ps, users.toString(), domains.toString());
 
-			Cookie jssesionID = login("SMP_ADMIN");
+			List<NewCookie> cookies = login("SMP_ADMIN");
+
+			for (NewCookie cookie : cookies) {
+				if ("XSRF-TOKEN".equals(cookie.getName())) {
+					xsrf = cookie.getValue();
+					break;
+				}
+			}
+			for (NewCookie cookie : cookies) {
+				if ("JSESSIONID".equals(cookie.getName())) {
+					jsessionID = cookie.getValue();
+					break;
+				}
+			}
 			ClientResponse getResponse = resource.path(SMPPaths.SERVICE_GROUP)
 					.accept(MediaType.APPLICATION_JSON_TYPE)
 					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
+					.cookie(new Cookie("JSESSIONID",jsessionID))
+					.cookie(new Cookie("XSRF-TOKEN",xsrf))
+					.header("X-XSRF-TOKEN",xsrf)
 					.put(ClientResponse.class, postStr);
 
 			return getResponse.getStatus() == 200;
@@ -212,9 +306,9 @@ public class SMPRestClient {
 	public static boolean createMetadata(String pi){
 		String template = "{\"documentIdentifier\":\"%s\",\"documentIdentifierScheme\":\"%s\",\"smlSubdomain\":\"%s\",\"domainCode\":\"%s\",\"domainId\":%s,\"status\":2,\"xmlContentStatus\":2}";
 		String xmlTemplate = "<ServiceMetadata xmlns=\"http://docs.oasis-open.org/bdxr/ns/SMP/2016/05\"> <ServiceInformation> <ParticipantIdentifier scheme=\"%s\">%s</ParticipantIdentifier> <DocumentIdentifier scheme=\"%s\">%s</DocumentIdentifier> <ProcessList> <Process> <ProcessIdentifier scheme=\"[enterProcessType]\">[enterProcessName]</ProcessIdentifier> <ServiceEndpointList> <Endpoint transportProfile=\"bdxr-transport-ebms3-as4-v1p0\"> <EndpointURI>https://mypage.eu</EndpointURI> <Certificate>UGFzdGUgYmFzZTY0IGVuY29kZWQgY2VydGlmaWNhdGUgb2YgQVA=</Certificate> <ServiceDescription>Service description for partners</ServiceDescription> <TechnicalContactUrl>www.best-page.eu</TechnicalContactUrl> </Endpoint> </ServiceEndpointList> </Process> </ProcessList> </ServiceInformation> </ServiceMetadata>";
-
+		String xsrf = "";
+		String jsessionID = "";
 		try {
-
 			JSONObject sg = getSGforPI(pi);
 			JSONObject domain = sg.getJSONArray("serviceGroupDomains").getJSONObject(0);
 			String domainCode = domain.getString("domainCode");
@@ -231,11 +325,26 @@ public class SMPRestClient {
 			sg.put("status", 1);
 
 
-			Cookie jssesionID = login("SMP_ADMIN");
+			List<NewCookie> cookies = login("SMP_ADMIN");
+
+			for (NewCookie cookie : cookies) {
+				if ("XSRF-TOKEN".equals(cookie.getName())) {
+					xsrf = cookie.getValue();
+					break;
+				}
+			}
+			for (NewCookie cookie : cookies) {
+				if ("JSESSIONID".equals(cookie.getName())) {
+					jsessionID = cookie.getValue();
+					break;
+				}
+			}
 			ClientResponse getResponse = resource.path(SMPPaths.SERVICE_GROUP)
 					.accept(MediaType.APPLICATION_JSON_TYPE)
 					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
+					.cookie(new Cookie("JSESSIONID",jsessionID))
+					.cookie(new Cookie("XSRF-TOKEN",xsrf))
+					.header("X-XSRF-TOKEN",xsrf)
 					.put(ClientResponse.class, new JSONArray().put(sg).toString());
 
 			return getResponse.getStatus() == 200;
@@ -247,6 +356,7 @@ public class SMPRestClient {
 
 	public static String getMetadataString(String url){
 		try {
+
 			System.out.println("url = " + url);
 //			------------------------------
 			return client.resource(url).accept(MediaType.APPLICATION_XML).get(String.class);
@@ -257,15 +367,31 @@ public class SMPRestClient {
 	}
 
 	private static JSONObject getUserForName(String username){
-		Cookie jssesionID = login("SYS_ADMIN");
+		List<NewCookie> cookies = login("SYS_ADMIN");
+		String xsrf = "";
+		String jsessionID = "";
 
 		try {
+			for (NewCookie cookie : cookies) {
+				if ("XSRF-TOKEN".equals(cookie.getName())) {
+					xsrf = cookie.getValue();
+					break;
+				}
+			}
+			for (NewCookie cookie : cookies) {
+				if ("JSESSIONID".equals(cookie.getName())) {
+					jsessionID = cookie.getValue();
+					break;
+				}
+			}
 			String responseRaw = resource.path(SMPPaths.USER_LIST)
 					.queryParam("page", "-1")
 					.queryParam("pageSize", "-1")
 					.accept(MediaType.APPLICATION_JSON_TYPE)
 					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
+					.cookie(new Cookie("JSESSIONID",jsessionID))
+					.cookie(new Cookie("XSRF-TOKEN",xsrf))
+					.header("X-XSRF-TOKEN",xsrf)
 					.get(String.class);
 			JSONArray users = new JSONObject(responseRaw).getJSONArray("serviceEntities");
 
@@ -282,14 +408,30 @@ public class SMPRestClient {
 	}
 
 	private static JSONObject getDomainForName(String domainName){
-		Cookie jssesionID = login("SYS_ADMIN");
+		List<NewCookie> cookies = login("SYS_ADMIN");
+		String xsrf = "";
+		String jsessionID = "";
 		try {
+			for (NewCookie cookie : cookies) {
+				if ("XSRF-TOKEN".equals(cookie.getName())) {
+					xsrf = cookie.getValue();
+					break;
+				}
+			}
+			for (NewCookie cookie : cookies) {
+				if ("JSESSIONID".equals(cookie.getName())) {
+					jsessionID = cookie.getValue();
+					break;
+				}
+			}
 			String responseRaw = resource.path(SMPPaths.REST_DOMAIN_LIST)
 					.queryParam("page", "-1")
 					.queryParam("pageSize", "-1")
 					.accept(MediaType.APPLICATION_JSON_TYPE)
 					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
+					.cookie(new Cookie("JSESSIONID",jsessionID))
+					.cookie(new Cookie("XSRF-TOKEN",xsrf))
+					.header("X-XSRF-TOKEN",xsrf)
 					.get(String.class);
 			JSONArray domains = new JSONObject(responseRaw).getJSONArray("serviceEntities");
 			for (int i = 0; i < domains.length(); i++) {
@@ -304,15 +446,31 @@ public class SMPRestClient {
 	}
 
 	private static JSONObject getSGforPI(String pi){
-		Cookie jssesionID = login("SMP_ADMIN");
+		List<NewCookie> cookies = login("SMP_ADMIN");
+		String xsrf = "";
+		String jsessionID = "";
 		try {
+			for (NewCookie cookie : cookies) {
+				if ("XSRF-TOKEN".equals(cookie.getName())) {
+					xsrf = cookie.getValue();
+					break;
+				}
+			}
+			for (NewCookie cookie : cookies) {
+				if ("JSESSIONID".equals(cookie.getName())) {
+					jsessionID = cookie.getValue();
+					break;
+				}
+			}
 			String responseRaw = resource.path(SMPPaths.SERVICE_GROUP)
 					.queryParam("page", "-1")
 					.queryParam("pageSize", "-1")
 					.queryParam("participantIdentifier", pi)
 					.accept(MediaType.APPLICATION_JSON_TYPE)
 					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
+					.cookie(new Cookie("JSESSIONID",jsessionID))
+					.cookie(new Cookie("XSRF-TOKEN",xsrf))
+					.header("X-XSRF-TOKEN",xsrf)
 					.get(String.class);
 			JSONArray sgs = new JSONObject(responseRaw).getJSONArray("serviceEntities");
 			for (int i = 0; i < sgs.length(); i++) {
@@ -327,13 +485,17 @@ public class SMPRestClient {
 	}
 
 	public static boolean deleteDomain(String domainCode){
-		Cookie jssesionID = login("SYS_ADMIN");
+		List<NewCookie> cookies = login("SYS_ADMIN");
+		String xsrf = "";
+		String jsessionID = "";
 		try {
 			String domainPostStr = "[" + getDomainForName(domainCode).put("status", 3).toString() + "]";
 			ClientResponse getResponse = resource.path(SMPPaths.REST_POST_DOMAIN)
 					.accept(MediaType.APPLICATION_JSON_TYPE)
 					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
+					.cookie(new Cookie("JSESSIONID",jsessionID))
+					.cookie(new Cookie("XSRF-TOKEN",xsrf))
+					.header("X-XSRF-TOKEN",xsrf)
 					.put(ClientResponse.class, domainPostStr);
 
 			return getResponse.getStatus() == 200;
@@ -344,13 +506,29 @@ public class SMPRestClient {
 	}
 
 	public static boolean deleteUser(String username){
-		Cookie jssesionID = login("SYS_ADMIN");
+		List<NewCookie> cookies = login("SYS_ADMIN");
+		String xsrf = "";
+		String jsessionID = "";
 		try {
+			for (NewCookie cookie : cookies) {
+				if ("XSRF-TOKEN".equals(cookie.getName())) {
+					xsrf = cookie.getValue();
+					break;
+				}
+			}
+			for (NewCookie cookie : cookies) {
+				if ("JSESSIONID".equals(cookie.getName())) {
+					jsessionID = cookie.getValue();
+					break;
+				}
+			}
 			String putStr = "[" + getUserForName(username).put("status", 3).toString() + "]";
 			ClientResponse getResponse = resource.path(SMPPaths.USER_LIST)
 					.accept(MediaType.APPLICATION_JSON_TYPE)
 					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
+					.cookie(new Cookie("JSESSIONID",jsessionID))
+					.cookie(new Cookie("XSRF-TOKEN",xsrf))
+					.header("X-XSRF-TOKEN",xsrf)
 					.put(ClientResponse.class, putStr);
 
 			return getResponse.getStatus() == 200;
@@ -361,13 +539,29 @@ public class SMPRestClient {
 	}
 
 	public static boolean deleteSG(String pi){
-		Cookie jssesionID = login("SMP_ADMIN");
+		List<NewCookie> cookies = login("SMP_ADMIN");
+		String xsrf = "";
+		String jsessionID = "";
 		try {
+			for (NewCookie cookie : cookies) {
+				if ("XSRF-TOKEN".equals(cookie.getName())) {
+					xsrf = cookie.getValue();
+					break;
+				}
+			}
+			for (NewCookie cookie : cookies) {
+				if ("JSESSIONID".equals(cookie.getName())) {
+					jsessionID = cookie.getValue();
+					break;
+				}
+			}
 			String putStr = "[" + getSGforPI(pi).put("status", 3).toString() + "]";
 			ClientResponse getResponse = resource.path(SMPPaths.SERVICE_GROUP)
 					.accept(MediaType.APPLICATION_JSON_TYPE)
 					.type(MediaType.APPLICATION_JSON_TYPE)
-					.cookie(jssesionID)
+					.cookie(new Cookie("JSESSIONID",jsessionID))
+					.cookie(new Cookie("XSRF-TOKEN",xsrf))
+					.header("X-XSRF-TOKEN",xsrf)
 					.put(ClientResponse.class, putStr);
 
 			return getResponse.getStatus() == 200;
diff --git a/smp-ui-tests/src/test/java/ui/BaseTest.java b/smp-ui-tests/src/test/java/ui/BaseTest.java
index b5592c84e..d3a95aa73 100644
--- a/smp-ui-tests/src/test/java/ui/BaseTest.java
+++ b/smp-ui-tests/src/test/java/ui/BaseTest.java
@@ -57,7 +57,9 @@ public class BaseTest {
 
 		logger.info("Quitting!!!! Buh bye!!!");
 		try {
-			driver.quit();
+			if(null!=driver){
+				driver.quit();
+			}
 		} catch (Exception e) {
 			logger.warn("Closing the driver failed !!!!");
 			e.printStackTrace();
diff --git a/smp-ui-tests/src/test/java/ui/SearchPgTest.java b/smp-ui-tests/src/test/java/ui/SearchPgTest.java
index 1fb961bf8..bd433d56c 100644
--- a/smp-ui-tests/src/test/java/ui/SearchPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/SearchPgTest.java
@@ -220,13 +220,13 @@ public class SearchPgTest extends BaseTest {
 
 
 
-		soft.assertTrue(row0.getExpandButtonText().contains("+"), "Initially the row has + on it");
+		soft.assertTrue(row0.verifyMetadataExpandButton(), "Initially the row has expanding symbol on it");
 		row0.expandMetadata();
 
-		soft.assertTrue(row0.getExpandButtonText().contains("-"), "Row has - on it after first click");
+		soft.assertTrue(row0.verifyMetadataCollapseButton(), "Row has collapsing symbol on it after first click");
 
 		row0.collapseMetadata();
-		soft.assertTrue(row0.getExpandButtonText().contains("+"), "Row has + on it after collapse");
+		soft.assertTrue(row0.verifyMetadataExpandButton(), "Row has expanding symbol on it after collapse");
 		soft.assertFalse(row0.isMetadataExpanded(), "Metadata table is not present no more");
 
 		soft.assertAll();
-- 
GitLab