diff --git a/vividus-plugin-rest-api/src/main/java/org/vividus/http/HttpRequestExecutor.java b/vividus-plugin-rest-api/src/main/java/org/vividus/http/HttpRequestExecutor.java index dbff7670f0..8939bfcf48 100644 --- a/vividus-plugin-rest-api/src/main/java/org/vividus/http/HttpRequestExecutor.java +++ b/vividus-plugin-rest-api/src/main/java/org/vividus/http/HttpRequestExecutor.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2023 the original author or authors. + * Copyright 2019-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -71,7 +71,6 @@ public void executeHttpRequest(HttpMethod httpMethod, String endpoint, Optional< ClassicHttpRequest request = requestBuilder.build(); HttpClientContext context = new HttpClientContext(); - httpTestContext.getCookieStore().ifPresent(context::setCookieStore); httpTestContext.getRequestConfig().ifPresent(context::setRequestConfig); HttpResponse response = httpClient.execute(request, context); diff --git a/vividus-plugin-rest-api/src/main/java/org/vividus/http/HttpTestContext.java b/vividus-plugin-rest-api/src/main/java/org/vividus/http/HttpTestContext.java index 42cadf4087..3f56e79d8d 100644 --- a/vividus-plugin-rest-api/src/main/java/org/vividus/http/HttpTestContext.java +++ b/vividus-plugin-rest-api/src/main/java/org/vividus/http/HttpTestContext.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2023 the original author or authors. + * Copyright 2019-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,6 @@ import java.util.Optional; import org.apache.hc.client5.http.config.RequestConfig; -import org.apache.hc.client5.http.cookie.CookieStore; import org.apache.hc.core5.http.Header; import org.apache.hc.core5.http.HttpEntity; import org.vividus.http.client.HttpResponse; @@ -54,11 +53,6 @@ public void addRequestHeaders(List
requestHeaders) getData().requestHeaders.addAll(requestHeaders); } - public void putCookieStore(CookieStore cookieStore) - { - getData().cookieStore = cookieStore; - } - public void putConnectionDetails(ConnectionDetails connectionDetails) { getData().connectionDetails = connectionDetails; @@ -108,11 +102,6 @@ public String getJsonContext() return getData().jsonElement.orElse(getResponse() == null ? null : getResponse().getResponseBodyAsString()); } - public Optional getCookieStore() - { - return Optional.ofNullable(getData().cookieStore); - } - public Optional getRequestConfig() { return Optional.ofNullable(getData().requestConfig); @@ -133,7 +122,6 @@ private static final class HttpTestContextData { private HttpEntity requestEntity; private List
requestHeaders = new ArrayList<>(); - private CookieStore cookieStore; private ConnectionDetails connectionDetails; private HttpResponse response; diff --git a/vividus-plugin-rest-api/src/test/java/org/vividus/http/HttpRequestExecutorTests.java b/vividus-plugin-rest-api/src/test/java/org/vividus/http/HttpRequestExecutorTests.java index a52f397c1f..eb8c691872 100644 --- a/vividus-plugin-rest-api/src/test/java/org/vividus/http/HttpRequestExecutorTests.java +++ b/vividus-plugin-rest-api/src/test/java/org/vividus/http/HttpRequestExecutorTests.java @@ -23,7 +23,6 @@ import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.isA; import static org.mockito.Mockito.inOrder; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -38,7 +37,6 @@ import com.github.valfirst.slf4jtest.TestLoggerFactory; import com.github.valfirst.slf4jtest.TestLoggerFactoryExtension; -import org.apache.hc.client5.http.cookie.CookieStore; import org.apache.hc.client5.http.protocol.HttpClientContext; import org.apache.hc.core5.http.ClassicHttpRequest; import org.apache.hc.core5.http.ConnectionClosedException; @@ -72,7 +70,6 @@ class HttpRequestExecutorTests @Test void testExecuteHttpRequestFirstTime() throws IOException { - when(httpTestContext.getCookieStore()).thenReturn(Optional.empty()); when(httpTestContext.getRequestConfig()).thenReturn(Optional.empty()); HttpResponse httpResponse = mockHttpResponse(); httpRequestExecutor.executeHttpRequest(HttpMethod.GET, URL, Optional.empty()); @@ -97,23 +94,6 @@ void testExecuteHttpRequestWithContent() throws IOException verify(httpTestContext).releaseRequestData(); } - @Test - void testExecuteShouldUseCookieStoreFromContext() throws IOException - { - CookieStore cookieStore = mock(); - when(httpTestContext.getCookieStore()).thenReturn(Optional.of(cookieStore)); - HttpResponse httpResponse = mockHttpResponse(); - httpRequestExecutor.executeHttpRequest(HttpMethod.GET, URL, Optional.empty()); - - verify(httpClient).execute(argThat(ClassicHttpRequest.class::isInstance), - argThat(e -> e != null && e.getCookieStore() == cookieStore)); - InOrder orderedHttpTestContext = inOrder(httpTestContext); - verifyHttpTestContext(orderedHttpTestContext, httpResponse); - orderedHttpTestContext.verify(httpTestContext).releaseRequestData(); - orderedHttpTestContext.verifyNoMoreInteractions(); - assertThat(logger.getLoggingEvents(), equalTo(List.of(createResponseTimeLogEvent(httpResponse)))); - } - @Test void testExecuteHttpRequestWithIllegalUrl() throws IOException { diff --git a/vividus-plugin-rest-api/src/test/java/org/vividus/http/HttpTestContextTests.java b/vividus-plugin-rest-api/src/test/java/org/vividus/http/HttpTestContextTests.java index 71b60f784a..a71860cb63 100644 --- a/vividus-plugin-rest-api/src/test/java/org/vividus/http/HttpTestContextTests.java +++ b/vividus-plugin-rest-api/src/test/java/org/vividus/http/HttpTestContextTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2023 the original author or authors. + * Copyright 2019-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,6 @@ import java.util.Optional; import org.apache.hc.client5.http.config.RequestConfig; -import org.apache.hc.client5.http.cookie.CookieStore; import org.apache.hc.core5.http.ContentType; import org.apache.hc.core5.http.Header; import org.apache.hc.core5.http.HttpEntity; @@ -58,14 +57,6 @@ void testPutAndGetRequest() assertEquals(Optional.of(requestEntity), httpTestContext.getRequestEntity()); } - @Test - void testPutAndGetCookieStore() - { - CookieStore cookieStore = mock(); - httpTestContext.putCookieStore(cookieStore); - assertEquals(Optional.of(cookieStore), httpTestContext.getCookieStore()); - } - @Test void testPutAndGetRequestConfig() { diff --git a/vividus-plugin-web-app-to-rest-api/src/main/java/org/vividus/steps/integration/HttpRequestSteps.java b/vividus-plugin-web-app-to-rest-api/src/main/java/org/vividus/steps/integration/HttpRequestSteps.java index 326aabf562..0add65c9da 100644 --- a/vividus-plugin-web-app-to-rest-api/src/main/java/org/vividus/steps/integration/HttpRequestSteps.java +++ b/vividus-plugin-web-app-to-rest-api/src/main/java/org/vividus/steps/integration/HttpRequestSteps.java @@ -23,7 +23,6 @@ import org.jbehave.core.annotations.When; import org.openqa.selenium.Cookie; import org.vividus.http.CookieStoreProvider; -import org.vividus.http.HttpTestContext; import org.vividus.reporter.event.AttachmentPublisher; import org.vividus.ui.web.action.CookieManager; import org.vividus.ui.web.action.NavigateActions; @@ -33,17 +32,14 @@ public class HttpRequestSteps private static final String ATTACHMENT_TEMPLATE_PATH = "org/vividus/steps/integration/browser-cookies.ftl"; private static final String TEMPLATE_COOKIES_KEY = "cookies"; private final CookieManager cookieManager; - private final HttpTestContext httpTestContext; private final AttachmentPublisher attachmentPublisher; private final CookieStoreProvider cookieStoreProvider; private final NavigateActions navigateActions; - public HttpRequestSteps(CookieManager cookieManager, HttpTestContext httpTestContext, - AttachmentPublisher attachmentPublisher, CookieStoreProvider cookieStoreProvider, - NavigateActions navigateActions) + public HttpRequestSteps(CookieManager cookieManager, AttachmentPublisher attachmentPublisher, + CookieStoreProvider cookieStoreProvider, NavigateActions navigateActions) { this.cookieManager = cookieManager; - this.httpTestContext = httpTestContext; this.attachmentPublisher = attachmentPublisher; this.cookieStoreProvider = cookieStoreProvider; this.navigateActions = navigateActions; @@ -58,9 +54,11 @@ public HttpRequestSteps(CookieManager cookieManager, HttpTestContext htt public void executeRequestUsingBrowserCookies() { CookieStore cookieStore = cookieManager.getCookiesAsHttpCookieStore(); + List cookies = cookieStore.getCookies(); attachmentPublisher.publishAttachment(ATTACHMENT_TEMPLATE_PATH, - Map.of(TEMPLATE_COOKIES_KEY, cookieStore.getCookies()), "Browser cookies"); - httpTestContext.putCookieStore(cookieStore); + Map.of(TEMPLATE_COOKIES_KEY, cookies), "Browser cookies"); + CookieStore httpCookieStore = cookieStoreProvider.getCookieStore(); + cookies.forEach(httpCookieStore::addCookie); } /** diff --git a/vividus-plugin-web-app-to-rest-api/src/test/java/org/vividus/steps/integration/HttpRequestStepsTests.java b/vividus-plugin-web-app-to-rest-api/src/test/java/org/vividus/steps/integration/HttpRequestStepsTests.java index 29831f7113..4c6765cf9f 100644 --- a/vividus-plugin-web-app-to-rest-api/src/test/java/org/vividus/steps/integration/HttpRequestStepsTests.java +++ b/vividus-plugin-web-app-to-rest-api/src/test/java/org/vividus/steps/integration/HttpRequestStepsTests.java @@ -35,7 +35,6 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.vividus.http.CookieStoreProvider; -import org.vividus.http.HttpTestContext; import org.vividus.reporter.event.AttachmentPublisher; import org.vividus.ui.web.action.CookieManager; import org.vividus.ui.web.action.NavigateActions; @@ -46,7 +45,6 @@ class HttpRequestStepsTests private static final String ATTACHMENT_TEMPLATE_PATH = "org/vividus/steps/integration/browser-cookies.ftl"; private static final String TEMPLATE_COOKIES_KEY = "cookies"; - @Mock private HttpTestContext httpTestContext; @Mock private CookieManager cookieManager; @Mock private AttachmentPublisher attachmentPublisher; @Mock private CookieStoreProvider cookieStoreProvider; @@ -57,12 +55,15 @@ class HttpRequestStepsTests void shouldSetCookiesFromBrowserAndDelegateRequestToApiSteps() { CookieStore cookieStore = mock(CookieStore.class); + CookieStore httpCookieStore = mock(CookieStore.class); when(cookieManager.getCookiesAsHttpCookieStore()).thenReturn(cookieStore); + when(cookieStoreProvider.getCookieStore()).thenReturn(httpCookieStore); BasicClientCookie cookie1 = new BasicClientCookie("key", "value"); BasicClientCookie cookie2 = new BasicClientCookie("key1", "value1"); when(cookieStore.getCookies()).thenReturn(List.of(cookie1, cookie2)); httpRequestSteps.executeRequestUsingBrowserCookies(); - verify(httpTestContext).putCookieStore(cookieStore); + verify(httpCookieStore).addCookie(cookie1); + verify(httpCookieStore).addCookie(cookie2); var cookiesCaptor = ArgumentCaptor.forClass(Map.class); verify(attachmentPublisher).publishAttachment(eq(ATTACHMENT_TEMPLATE_PATH), cookiesCaptor.capture(), eq("Browser cookies")); diff --git a/vividus-tests/src/main/resources/story/integration/WebAndRestCookieSteps.story b/vividus-tests/src/main/resources/story/integration/WebAndRestCookieSteps.story index e43b89d407..31a4c574d0 100644 --- a/vividus-tests/src/main/resources/story/integration/WebAndRestCookieSteps.story +++ b/vividus-tests/src/main/resources/story/integration/WebAndRestCookieSteps.story @@ -7,10 +7,22 @@ When I execute HTTP GET request for resource with URL `https://httpbingo.org/coo Then cookie with name that is equal to `c1` is not set When I set HTTP context cookies to browser Then cookie with name that is equal to `c1` is set +When I set all cookies for current domain: +|cookieName |cookieValue |path | +|customCookie |customValue |/cookies | Then text `v1` exists +Then text `customValue` exists +When I set browser cookies to HTTP context +When I remove all cookies from current domain +Then cookie with name that is equal to `c1` is not set +Then cookie with name that is equal to `customCookie` is not set +Then text `v1` does not exist +Then text `customValue` does not exist When I execute HTTP GET request for resource with URL `https://httpbingo.org/cookies/set?c2=v2` When I set HTTP context cookies to browser without applying changes Then cookie with name that is equal to `c1` is set Then cookie with name that is equal to `c2` is set -Then text `v1` exists +Then cookie with name that is equal to `customCookie` is set +Then text `v1` does not exist Then text `v2` does not exist +Then text `customValue` does not exist