Preserve cookies when preprocessing a request to modify its URIs

Closes gh-523
This commit is contained in:
Andy Wilkinson
2018-07-16 10:48:50 +01:00
parent e14bda0893
commit 920ced0755
4 changed files with 35 additions and 9 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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<RequestCookie> 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.<OperationRequestPart>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(),

View File

@@ -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<RequestCookie> 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.<OperationRequestPart>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(),