From 920ced0755c023be5c6808d64dfbf1fa44ec5630 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 16 Jul 2018 10:48:50 +0100 Subject: [PATCH] Preserve cookies when preprocessing a request to modify its URIs Closes gh-523 --- .../UriModifyingOperationPreprocessor.java | 8 ++++---- .../UriModifyingOperationPreprocessor.java | 8 ++++---- .../UriModifyingOperationPreprocessorTests.java | 15 ++++++++++++++- .../UriModifyingOperationPreprocessorTests.java | 13 +++++++++++++ 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/operation/preprocess/UriModifyingOperationPreprocessor.java b/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/operation/preprocess/UriModifyingOperationPreprocessor.java index 8291d9b5..a9c74527 100644 --- a/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/operation/preprocess/UriModifyingOperationPreprocessor.java +++ b/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/operation/preprocess/UriModifyingOperationPreprocessor.java @@ -144,10 +144,10 @@ public final class UriModifyingOperationPreprocessor implements OperationPreproc HttpHeaders modifiedHeaders = modify(request.getHeaders()); modifiedHeaders.set(HttpHeaders.HOST, modifiedUri.getHost() + (modifiedUri.getPort() == -1 ? "" : ":" + modifiedUri.getPort())); - return this.contentModifyingDelegate.preprocess( - new OperationRequestFactory().create(uriBuilder.build(true).toUri(), - request.getMethod(), request.getContent(), modifiedHeaders, - request.getParameters(), modify(request.getParts()))); + return this.contentModifyingDelegate.preprocess(new OperationRequestFactory() + .create(uriBuilder.build(true).toUri(), request.getMethod(), + request.getContent(), modifiedHeaders, request.getParameters(), + modify(request.getParts()), request.getCookies())); } @Override diff --git a/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured3/operation/preprocess/UriModifyingOperationPreprocessor.java b/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured3/operation/preprocess/UriModifyingOperationPreprocessor.java index 6d3d510d..7a418c21 100644 --- a/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured3/operation/preprocess/UriModifyingOperationPreprocessor.java +++ b/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured3/operation/preprocess/UriModifyingOperationPreprocessor.java @@ -141,10 +141,10 @@ public final class UriModifyingOperationPreprocessor implements OperationPreproc HttpHeaders modifiedHeaders = modify(request.getHeaders()); modifiedHeaders.set(HttpHeaders.HOST, modifiedUri.getHost() + (modifiedUri.getPort() == -1 ? "" : ":" + modifiedUri.getPort())); - return this.contentModifyingDelegate.preprocess( - new OperationRequestFactory().create(uriBuilder.build(true).toUri(), - request.getMethod(), request.getContent(), modifiedHeaders, - request.getParameters(), modify(request.getParts()))); + return this.contentModifyingDelegate.preprocess(new OperationRequestFactory() + .create(uriBuilder.build(true).toUri(), request.getMethod(), + request.getContent(), modifiedHeaders, request.getParameters(), + modify(request.getParts()), request.getCookies())); } @Override diff --git a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/operation/preprocess/UriModifyingOperationPreprocessorTests.java b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/operation/preprocess/UriModifyingOperationPreprocessorTests.java index 3773b305..cd2a8b1a 100644 --- a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/operation/preprocess/UriModifyingOperationPreprocessorTests.java +++ b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/operation/preprocess/UriModifyingOperationPreprocessorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2017 the original author or authors. + * Copyright 2014-2018 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. @@ -19,6 +19,7 @@ package org.springframework.restdocs.restassured.operation.preprocess; import java.net.URI; import java.util.Arrays; import java.util.Collections; +import java.util.List; import org.junit.Test; @@ -32,6 +33,7 @@ import org.springframework.restdocs.operation.OperationRequestPartFactory; import org.springframework.restdocs.operation.OperationResponse; import org.springframework.restdocs.operation.OperationResponseFactory; import org.springframework.restdocs.operation.Parameters; +import org.springframework.restdocs.operation.RequestCookie; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; @@ -324,6 +326,17 @@ public class UriModifyingOperationPreprocessorTests { } + @Test + public void resultingRequestHasCookiesFromOriginalRequst() { + List cookies = Arrays.asList(new RequestCookie("a", "alpha")); + OperationRequest request = this.requestFactory.create( + URI.create("http://localhost:12345"), HttpMethod.GET, new byte[0], + new HttpHeaders(), new Parameters(), + Collections.emptyList(), cookies); + OperationRequest processed = this.preprocessor.preprocess(request); + assertThat(processed.getCookies().size(), is(equalTo(1))); + } + private OperationRequest createRequestWithUri(String uri) { return this.requestFactory.create(URI.create(uri), HttpMethod.GET, new byte[0], new HttpHeaders(), new Parameters(), diff --git a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured3/operation/preprocess/UriModifyingOperationPreprocessorTests.java b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured3/operation/preprocess/UriModifyingOperationPreprocessorTests.java index 7f262e9f..1991c2fe 100644 --- a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured3/operation/preprocess/UriModifyingOperationPreprocessorTests.java +++ b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured3/operation/preprocess/UriModifyingOperationPreprocessorTests.java @@ -19,6 +19,7 @@ package org.springframework.restdocs.restassured3.operation.preprocess; import java.net.URI; import java.util.Arrays; import java.util.Collections; +import java.util.List; import org.junit.Test; @@ -32,6 +33,7 @@ import org.springframework.restdocs.operation.OperationRequestPartFactory; import org.springframework.restdocs.operation.OperationResponse; import org.springframework.restdocs.operation.OperationResponseFactory; import org.springframework.restdocs.operation.Parameters; +import org.springframework.restdocs.operation.RequestCookie; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; @@ -323,6 +325,17 @@ public class UriModifyingOperationPreprocessorTests { } + @Test + public void resultingRequestHasCookiesFromOriginalRequst() { + List cookies = Arrays.asList(new RequestCookie("a", "alpha")); + OperationRequest request = this.requestFactory.create( + URI.create("http://localhost:12345"), HttpMethod.GET, new byte[0], + new HttpHeaders(), new Parameters(), + Collections.emptyList(), cookies); + OperationRequest processed = this.preprocessor.preprocess(request); + assertThat(processed.getCookies().size(), is(equalTo(1))); + } + private OperationRequest createRequestWithUri(String uri) { return this.requestFactory.create(URI.create(uri), HttpMethod.GET, new byte[0], new HttpHeaders(), new Parameters(),