Merge branch '1.2.x'
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2014-2018 the original author or authors.
|
||||
* Copyright 2014-2019 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.
|
||||
@@ -34,8 +34,7 @@ public final class WebTestClientOperationPreprocessorsConfigurer extends
|
||||
OperationPreprocessorsConfigurer<WebTestClientRestDocumentationConfigurer, WebTestClientOperationPreprocessorsConfigurer>
|
||||
implements ExchangeFilterFunction {
|
||||
|
||||
WebTestClientOperationPreprocessorsConfigurer(
|
||||
WebTestClientRestDocumentationConfigurer parent) {
|
||||
WebTestClientOperationPreprocessorsConfigurer(WebTestClientRestDocumentationConfigurer parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2014-2018 the original author or authors.
|
||||
* Copyright 2014-2019 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.
|
||||
@@ -59,8 +59,8 @@ import org.springframework.util.MultiValueMap;
|
||||
*/
|
||||
class WebTestClientRequestConverter implements RequestConverter<ExchangeResult> {
|
||||
|
||||
private static final ResolvableType FORM_DATA_TYPE = ResolvableType
|
||||
.forClassWithGenerics(MultiValueMap.class, String.class, String.class);
|
||||
private static final ResolvableType FORM_DATA_TYPE = ResolvableType.forClassWithGenerics(MultiValueMap.class,
|
||||
String.class, String.class);
|
||||
|
||||
private final QueryStringParser queryStringParser = new QueryStringParser();
|
||||
|
||||
@@ -69,9 +69,8 @@ class WebTestClientRequestConverter implements RequestConverter<ExchangeResult>
|
||||
@Override
|
||||
public OperationRequest convert(ExchangeResult result) {
|
||||
HttpHeaders headers = extractRequestHeaders(result);
|
||||
return new OperationRequestFactory().create(result.getUrl(), result.getMethod(),
|
||||
result.getRequestBodyContent(), headers, extractParameters(result),
|
||||
extractRequestParts(result), extractCookies(headers));
|
||||
return new OperationRequestFactory().create(result.getUrl(), result.getMethod(), result.getRequestBodyContent(),
|
||||
headers, extractParameters(result), extractRequestParts(result), extractCookies(headers));
|
||||
}
|
||||
|
||||
private HttpHeaders extractRequestHeaders(ExchangeResult result) {
|
||||
@@ -84,36 +83,30 @@ class WebTestClientRequestConverter implements RequestConverter<ExchangeResult>
|
||||
private Parameters extractParameters(ExchangeResult result) {
|
||||
Parameters parameters = new Parameters();
|
||||
parameters.addAll(this.queryStringParser.parse(result.getUrl()));
|
||||
if (MediaType.APPLICATION_FORM_URLENCODED
|
||||
.isCompatibleWith(result.getRequestHeaders().getContentType())) {
|
||||
if (MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(result.getRequestHeaders().getContentType())) {
|
||||
parameters.addAll(this.formDataReader
|
||||
.readMono(FORM_DATA_TYPE,
|
||||
new ExchangeResultReactiveHttpInputMessage(result), null)
|
||||
.block());
|
||||
.readMono(FORM_DATA_TYPE, new ExchangeResultReactiveHttpInputMessage(result), null).block());
|
||||
}
|
||||
return parameters;
|
||||
}
|
||||
|
||||
private List<OperationRequestPart> extractRequestParts(ExchangeResult result) {
|
||||
if (!ClassUtils.isPresent(
|
||||
"org.synchronoss.cloud.nio.multipart.NioMultipartParserListener",
|
||||
if (!ClassUtils.isPresent("org.synchronoss.cloud.nio.multipart.NioMultipartParserListener",
|
||||
getClass().getClassLoader())) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return new MultipartHttpMessageReader(new SynchronossPartHttpMessageReader())
|
||||
.readMono(ResolvableType.forClass(Part.class),
|
||||
new ExchangeResultReactiveHttpInputMessage(result),
|
||||
.readMono(ResolvableType.forClass(Part.class), new ExchangeResultReactiveHttpInputMessage(result),
|
||||
Collections.emptyMap())
|
||||
.onErrorReturn(new LinkedMultiValueMap<>()).block().values().stream()
|
||||
.flatMap((parts) -> parts.stream().map(this::createOperationRequestPart))
|
||||
.collect(Collectors.toList());
|
||||
.flatMap((parts) -> parts.stream().map(this::createOperationRequestPart)).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private OperationRequestPart createOperationRequestPart(Part part) {
|
||||
ByteArrayOutputStream content = readPartBodyContent(part);
|
||||
return new OperationRequestPartFactory().create(part.name(),
|
||||
(part instanceof FilePart) ? ((FilePart) part).filename() : null,
|
||||
content.toByteArray(), part.headers());
|
||||
(part instanceof FilePart) ? ((FilePart) part).filename() : null, content.toByteArray(),
|
||||
part.headers());
|
||||
}
|
||||
|
||||
private ByteArrayOutputStream readPartBodyContent(Part part) {
|
||||
@@ -128,8 +121,7 @@ class WebTestClientRequestConverter implements RequestConverter<ExchangeResult>
|
||||
return Collections.emptyList();
|
||||
}
|
||||
headers.remove(HttpHeaders.COOKIE);
|
||||
return cookieHeaders.stream().map(this::createRequestCookie)
|
||||
.collect(Collectors.toList());
|
||||
return cookieHeaders.stream().map(this::createRequestCookie).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private RequestCookie createRequestCookie(String header) {
|
||||
@@ -137,8 +129,7 @@ class WebTestClientRequestConverter implements RequestConverter<ExchangeResult>
|
||||
return new RequestCookie(components[0], components[1]);
|
||||
}
|
||||
|
||||
private final class ExchangeResultReactiveHttpInputMessage
|
||||
implements ReactiveHttpInputMessage {
|
||||
private final class ExchangeResultReactiveHttpInputMessage implements ReactiveHttpInputMessage {
|
||||
|
||||
private final ExchangeResult result;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2014-2018 the original author or authors.
|
||||
* Copyright 2014-2019 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.
|
||||
@@ -36,19 +36,17 @@ class WebTestClientResponseConverter implements ResponseConverter<ExchangeResult
|
||||
|
||||
@Override
|
||||
public OperationResponse convert(ExchangeResult result) {
|
||||
return new OperationResponseFactory().create(result.getStatus(),
|
||||
extractHeaders(result), result.getResponseBodyContent());
|
||||
return new OperationResponseFactory().create(result.getStatus(), extractHeaders(result),
|
||||
result.getResponseBodyContent());
|
||||
}
|
||||
|
||||
private HttpHeaders extractHeaders(ExchangeResult result) {
|
||||
HttpHeaders headers = result.getResponseHeaders();
|
||||
if (result.getResponseCookies().isEmpty()
|
||||
|| headers.containsKey(HttpHeaders.SET_COOKIE)) {
|
||||
if (result.getResponseCookies().isEmpty() || headers.containsKey(HttpHeaders.SET_COOKIE)) {
|
||||
return headers;
|
||||
}
|
||||
result.getResponseCookies().values().stream().flatMap(Collection::stream)
|
||||
.forEach((cookie) -> headers.add(HttpHeaders.SET_COOKIE,
|
||||
generateSetCookieHeader(cookie)));
|
||||
.forEach((cookie) -> headers.add(HttpHeaders.SET_COOKIE, generateSetCookieHeader(cookie)));
|
||||
return headers;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2014-2018 the original author or authors.
|
||||
* Copyright 2014-2019 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.
|
||||
@@ -73,11 +73,9 @@ public abstract class WebTestClientRestDocumentation {
|
||||
* @see BodySpec#consumeWith(Consumer)
|
||||
* @see BodyContentSpec#consumeWith(Consumer)
|
||||
*/
|
||||
public static <T extends ExchangeResult> Consumer<T> document(String identifier,
|
||||
Snippet... snippets) {
|
||||
return (result) -> new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER,
|
||||
RESPONSE_CONVERTER, snippets).handle(result, result,
|
||||
retrieveConfiguration(result));
|
||||
public static <T extends ExchangeResult> Consumer<T> document(String identifier, Snippet... snippets) {
|
||||
return (result) -> new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER, RESPONSE_CONVERTER, snippets)
|
||||
.handle(result, result, retrieveConfiguration(result));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -93,9 +91,8 @@ public abstract class WebTestClientRestDocumentation {
|
||||
*/
|
||||
public static <T extends ExchangeResult> Consumer<T> document(String identifier,
|
||||
OperationRequestPreprocessor requestPreprocessor, Snippet... snippets) {
|
||||
return (result) -> new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER,
|
||||
RESPONSE_CONVERTER, requestPreprocessor, snippets).handle(result, result,
|
||||
retrieveConfiguration(result));
|
||||
return (result) -> new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER, RESPONSE_CONVERTER,
|
||||
requestPreprocessor, snippets).handle(result, result, retrieveConfiguration(result));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -111,9 +108,8 @@ public abstract class WebTestClientRestDocumentation {
|
||||
*/
|
||||
public static <T extends ExchangeResult> Consumer<T> document(String identifier,
|
||||
OperationResponsePreprocessor responsePreprocessor, Snippet... snippets) {
|
||||
return (result) -> new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER,
|
||||
RESPONSE_CONVERTER, responsePreprocessor, snippets).handle(result, result,
|
||||
retrieveConfiguration(result));
|
||||
return (result) -> new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER, RESPONSE_CONVERTER,
|
||||
responsePreprocessor, snippets).handle(result, result, retrieveConfiguration(result));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -130,19 +126,17 @@ public abstract class WebTestClientRestDocumentation {
|
||||
* {@link ExchangeResult}.
|
||||
*/
|
||||
public static <T extends ExchangeResult> Consumer<T> document(String identifier,
|
||||
OperationRequestPreprocessor requestPreprocessor,
|
||||
OperationResponsePreprocessor responsePreprocessor, Snippet... snippets) {
|
||||
return (result) -> new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER,
|
||||
RESPONSE_CONVERTER, requestPreprocessor, responsePreprocessor, snippets)
|
||||
.handle(result, result, retrieveConfiguration(result));
|
||||
OperationRequestPreprocessor requestPreprocessor, OperationResponsePreprocessor responsePreprocessor,
|
||||
Snippet... snippets) {
|
||||
return (result) -> new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER, RESPONSE_CONVERTER,
|
||||
requestPreprocessor, responsePreprocessor, snippets).handle(result, result,
|
||||
retrieveConfiguration(result));
|
||||
}
|
||||
|
||||
private static Map<String, Object> retrieveConfiguration(ExchangeResult result) {
|
||||
Map<String, Object> configuration = new HashMap<>(
|
||||
WebTestClientRestDocumentationConfigurer
|
||||
.retrieveConfiguration(result.getRequestHeaders()));
|
||||
configuration.put(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE,
|
||||
result.getUriTemplate());
|
||||
WebTestClientRestDocumentationConfigurer.retrieveConfiguration(result.getRequestHeaders()));
|
||||
configuration.put(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, result.getUriTemplate());
|
||||
return configuration;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2014-2017 the original author or authors.
|
||||
* Copyright 2014-2019 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.
|
||||
@@ -45,8 +45,7 @@ public class WebTestClientRestDocumentationConfigurer extends
|
||||
RestDocumentationConfigurer<WebTestClientSnippetConfigurer, WebTestClientOperationPreprocessorsConfigurer, WebTestClientRestDocumentationConfigurer>
|
||||
implements ExchangeFilterFunction {
|
||||
|
||||
private final WebTestClientSnippetConfigurer snippetConfigurer = new WebTestClientSnippetConfigurer(
|
||||
this);
|
||||
private final WebTestClientSnippetConfigurer snippetConfigurer = new WebTestClientSnippetConfigurer(this);
|
||||
|
||||
private static final Map<String, Map<String, Object>> configurations = new ConcurrentHashMap<>();
|
||||
|
||||
@@ -55,8 +54,7 @@ public class WebTestClientRestDocumentationConfigurer extends
|
||||
|
||||
private final RestDocumentationContextProvider contextProvider;
|
||||
|
||||
WebTestClientRestDocumentationConfigurer(
|
||||
RestDocumentationContextProvider contextProvider) {
|
||||
WebTestClientRestDocumentationConfigurer(RestDocumentationContextProvider contextProvider) {
|
||||
this.contextProvider = contextProvider;
|
||||
}
|
||||
|
||||
@@ -96,9 +94,8 @@ public class WebTestClientRestDocumentationConfigurer extends
|
||||
return request;
|
||||
}
|
||||
try {
|
||||
requestUri = new URI("http", requestUri.getUserInfo(), "localhost", 8080,
|
||||
requestUri.getPath(), requestUri.getQuery(),
|
||||
requestUri.getFragment());
|
||||
requestUri = new URI("http", requestUri.getUserInfo(), "localhost", 8080, requestUri.getPath(),
|
||||
requestUri.getQuery(), requestUri.getFragment());
|
||||
return ClientRequest.from(request).url(requestUri).build();
|
||||
}
|
||||
catch (URISyntaxException ex) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2014-2017 the original author or authors.
|
||||
* Copyright 2014-2019 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.
|
||||
@@ -31,8 +31,8 @@ import org.springframework.web.reactive.function.client.ExchangeFunction;
|
||||
* @author Andy Wilkinson
|
||||
* @since 2.0.0
|
||||
*/
|
||||
public class WebTestClientSnippetConfigurer extends
|
||||
SnippetConfigurer<WebTestClientRestDocumentationConfigurer, WebTestClientSnippetConfigurer>
|
||||
public class WebTestClientSnippetConfigurer
|
||||
extends SnippetConfigurer<WebTestClientRestDocumentationConfigurer, WebTestClientSnippetConfigurer>
|
||||
implements ExchangeFilterFunction {
|
||||
|
||||
WebTestClientSnippetConfigurer(WebTestClientRestDocumentationConfigurer parent) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2014-2018 the original author or authors.
|
||||
* Copyright 2014-2019 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.
|
||||
@@ -52,10 +52,9 @@ public class WebTestClientRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void httpRequest() {
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
.configureClient().baseUrl("http://localhost").build().get().uri("/foo")
|
||||
.exchange().expectBody().returnResult();
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
.configureClient().baseUrl("http://localhost").build().get().uri("/foo").exchange().expectBody()
|
||||
.returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.GET);
|
||||
@@ -63,10 +62,9 @@ public class WebTestClientRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void httpRequestWithCustomPort() {
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
.configureClient().baseUrl("http://localhost:8080").build().get()
|
||||
.uri("/foo").exchange().expectBody().returnResult();
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
.configureClient().baseUrl("http://localhost:8080").build().get().uri("/foo").exchange().expectBody()
|
||||
.returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost:8080/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.GET);
|
||||
@@ -74,25 +72,21 @@ public class WebTestClientRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void requestWithHeaders() {
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(GET("/"), (req) -> null))
|
||||
.configureClient().baseUrl("http://localhost").build().get().uri("/foo")
|
||||
.header("a", "alpha", "apple").header("b", "bravo").exchange()
|
||||
.expectBody().returnResult();
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(GET("/"), (req) -> null))
|
||||
.configureClient().baseUrl("http://localhost").build().get().uri("/foo").header("a", "alpha", "apple")
|
||||
.header("b", "bravo").exchange().expectBody().returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.GET);
|
||||
assertThat(request.getHeaders()).containsEntry("a",
|
||||
Arrays.asList("alpha", "apple"));
|
||||
assertThat(request.getHeaders()).containsEntry("a", Arrays.asList("alpha", "apple"));
|
||||
assertThat(request.getHeaders()).containsEntry("b", Arrays.asList("bravo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void httpsRequest() {
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
.configureClient().baseUrl("https://localhost").build().get().uri("/foo")
|
||||
.exchange().expectBody().returnResult();
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
.configureClient().baseUrl("https://localhost").build().get().uri("/foo").exchange().expectBody()
|
||||
.returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("https://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.GET);
|
||||
@@ -100,10 +94,9 @@ public class WebTestClientRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void httpsRequestWithCustomPort() {
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
.configureClient().baseUrl("https://localhost:8443").build().get()
|
||||
.uri("/foo").exchange().expectBody().returnResult();
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
.configureClient().baseUrl("https://localhost:8443").build().get().uri("/foo").exchange().expectBody()
|
||||
.returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("https://localhost:8443/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.GET);
|
||||
@@ -111,13 +104,11 @@ public class WebTestClientRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void getRequestWithQueryStringPopulatesParameters() throws Exception {
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
.configureClient().baseUrl("http://localhost").build().get()
|
||||
.uri("/foo?a=alpha&b=bravo").exchange().expectBody().returnResult();
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
.configureClient().baseUrl("http://localhost").build().get().uri("/foo?a=alpha&b=bravo").exchange()
|
||||
.expectBody().returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri())
|
||||
.isEqualTo(URI.create("http://localhost/foo?a=alpha&b=bravo"));
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo?a=alpha&b=bravo"));
|
||||
assertThat(request.getParameters()).hasSize(2);
|
||||
assertThat(request.getParameters()).containsEntry("a", Arrays.asList("alpha"));
|
||||
assertThat(request.getParameters()).containsEntry("b", Arrays.asList("bravo"));
|
||||
@@ -129,38 +120,32 @@ public class WebTestClientRequestConverterTests {
|
||||
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
|
||||
parameters.addAll("a", Arrays.asList("alpha", "apple"));
|
||||
parameters.addAll("b", Arrays.asList("br&vo"));
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> {
|
||||
req.body(BodyExtractors.toFormData()).block();
|
||||
return null;
|
||||
})).configureClient().baseUrl("http://localhost").build().post()
|
||||
.uri("/foo").body(BodyInserters.fromFormData(parameters)).exchange()
|
||||
.expectBody().returnResult();
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> {
|
||||
req.body(BodyExtractors.toFormData()).block();
|
||||
return null;
|
||||
})).configureClient().baseUrl("http://localhost").build().post().uri("/foo")
|
||||
.body(BodyInserters.fromFormData(parameters)).exchange().expectBody().returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
||||
assertThat(request.getParameters()).hasSize(2);
|
||||
assertThat(request.getParameters()).containsEntry("a",
|
||||
Arrays.asList("alpha", "apple"));
|
||||
assertThat(request.getParameters()).containsEntry("a", Arrays.asList("alpha", "apple"));
|
||||
assertThat(request.getParameters()).containsEntry("b", Arrays.asList("br&vo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void postRequestWithQueryStringParameters() throws Exception {
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> {
|
||||
req.body(BodyExtractors.toFormData()).block();
|
||||
return null;
|
||||
})).configureClient().baseUrl("http://localhost").build().post()
|
||||
.uri(URI.create("http://localhost/foo?a=alpha&a=apple&b=br%26vo"))
|
||||
.exchange().expectBody().returnResult();
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> {
|
||||
req.body(BodyExtractors.toFormData()).block();
|
||||
return null;
|
||||
})).configureClient().baseUrl("http://localhost").build().post()
|
||||
.uri(URI.create("http://localhost/foo?a=alpha&a=apple&b=br%26vo")).exchange().expectBody()
|
||||
.returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri())
|
||||
.isEqualTo(URI.create("http://localhost/foo?a=alpha&a=apple&b=br%26vo"));
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo?a=alpha&a=apple&b=br%26vo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
||||
assertThat(request.getParameters()).hasSize(2);
|
||||
assertThat(request.getParameters()).containsEntry("a",
|
||||
Arrays.asList("alpha", "apple"));
|
||||
assertThat(request.getParameters()).containsEntry("a", Arrays.asList("alpha", "apple"));
|
||||
assertThat(request.getParameters()).containsEntry("b", Arrays.asList("br&vo"));
|
||||
}
|
||||
|
||||
@@ -168,31 +153,26 @@ public class WebTestClientRequestConverterTests {
|
||||
public void postRequestWithQueryStringAndFormDataParameters() throws Exception {
|
||||
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
|
||||
parameters.addAll("a", Arrays.asList("apple"));
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> {
|
||||
req.body(BodyExtractors.toFormData()).block();
|
||||
return null;
|
||||
})).configureClient().baseUrl("http://localhost").build().post()
|
||||
.uri(URI.create("http://localhost/foo?a=alpha&b=br%26vo"))
|
||||
.body(BodyInserters.fromFormData(parameters)).exchange().expectBody()
|
||||
.returnResult();
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> {
|
||||
req.body(BodyExtractors.toFormData()).block();
|
||||
return null;
|
||||
})).configureClient().baseUrl("http://localhost").build().post()
|
||||
.uri(URI.create("http://localhost/foo?a=alpha&b=br%26vo")).body(BodyInserters.fromFormData(parameters))
|
||||
.exchange().expectBody().returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri())
|
||||
.isEqualTo(URI.create("http://localhost/foo?a=alpha&b=br%26vo"));
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo?a=alpha&b=br%26vo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
||||
assertThat(request.getParameters()).hasSize(2);
|
||||
assertThat(request.getParameters()).containsEntry("a",
|
||||
Arrays.asList("alpha", "apple"));
|
||||
assertThat(request.getParameters()).containsEntry("a", Arrays.asList("alpha", "apple"));
|
||||
assertThat(request.getParameters()).containsEntry("b", Arrays.asList("br&vo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void postRequestWithNoContentType() throws Exception {
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(POST("/foo"),
|
||||
(req) -> ServerResponse.ok().build()))
|
||||
.configureClient().baseUrl("http://localhost").build().post().uri("/foo")
|
||||
.exchange().expectBody().returnResult();
|
||||
.bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> ServerResponse.ok().build()))
|
||||
.configureClient().baseUrl("http://localhost").build().post().uri("/foo").exchange().expectBody()
|
||||
.returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
||||
@@ -202,13 +182,11 @@ public class WebTestClientRequestConverterTests {
|
||||
public void multipartUpload() throws Exception {
|
||||
MultiValueMap<String, Object> multipartData = new LinkedMultiValueMap<>();
|
||||
multipartData.add("file", new byte[] { 1, 2, 3, 4 });
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> {
|
||||
req.body(BodyExtractors.toMultipartData()).block();
|
||||
return null;
|
||||
})).configureClient().baseUrl("http://localhost").build().post()
|
||||
.uri("/foo").body(BodyInserters.fromMultipartData(multipartData))
|
||||
.exchange().expectBody().returnResult();
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> {
|
||||
req.body(BodyExtractors.toMultipartData()).block();
|
||||
return null;
|
||||
})).configureClient().baseUrl("http://localhost").build().post().uri("/foo")
|
||||
.body(BodyInserters.fromMultipartData(multipartData)).exchange().expectBody().returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
||||
@@ -233,13 +211,11 @@ public class WebTestClientRequestConverterTests {
|
||||
}
|
||||
|
||||
});
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> {
|
||||
req.body(BodyExtractors.toMultipartData()).block();
|
||||
return null;
|
||||
})).configureClient().baseUrl("http://localhost").build().post()
|
||||
.uri("/foo").body(BodyInserters.fromMultipartData(multipartData))
|
||||
.exchange().expectBody().returnResult();
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> {
|
||||
req.body(BodyExtractors.toMultipartData()).block();
|
||||
return null;
|
||||
})).configureClient().baseUrl("http://localhost").build().post().uri("/foo")
|
||||
.body(BodyInserters.fromMultipartData(multipartData)).exchange().expectBody().returnResult();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
||||
@@ -258,21 +234,18 @@ public class WebTestClientRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void requestWithCookies() throws Exception {
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null))
|
||||
.configureClient().baseUrl("http://localhost").build().get().uri("/foo")
|
||||
.cookie("cookieName1", "cookieVal1").cookie("cookieName2", "cookieVal2")
|
||||
.exchange().expectBody().returnResult();
|
||||
.cookie("cookieName1", "cookieVal1").cookie("cookieName2", "cookieVal2").exchange().expectBody()
|
||||
.returnResult();
|
||||
assertThat(result.getRequestHeaders().get(HttpHeaders.COOKIE)).isNotNull();
|
||||
OperationRequest request = this.converter.convert(result);
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.GET);
|
||||
assertThat(request.getCookies()).hasSize(2);
|
||||
assertThat(request.getHeaders().get(HttpHeaders.COOKIE)).isNull();
|
||||
assertThat(request.getCookies()).extracting("name").containsExactly("cookieName1",
|
||||
"cookieName2");
|
||||
assertThat(request.getCookies()).extracting("value").containsExactly("cookieVal1",
|
||||
"cookieVal2");
|
||||
assertThat(request.getCookies()).extracting("name").containsExactly("cookieName1", "cookieName2");
|
||||
assertThat(request.getCookies()).extracting("value").containsExactly("cookieVal1", "cookieVal2");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2014-2018 the original author or authors.
|
||||
* Copyright 2014-2019 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.
|
||||
@@ -45,10 +45,10 @@ public class WebTestClientResponseConverterTests {
|
||||
@Test
|
||||
public void basicResponse() {
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(GET("/foo"),
|
||||
(req) -> ServerResponse.ok().syncBody("Hello, World!")))
|
||||
.configureClient().baseUrl("http://localhost").build().get().uri("/foo")
|
||||
.exchange().expectBody().returnResult();
|
||||
.bindToRouterFunction(
|
||||
RouterFunctions.route(GET("/foo"), (req) -> ServerResponse.ok().syncBody("Hello, World!")))
|
||||
.configureClient().baseUrl("http://localhost").build().get().uri("/foo").exchange().expectBody()
|
||||
.returnResult();
|
||||
OperationResponse response = this.converter.convert(result);
|
||||
assertThat(response.getStatus()).isEqualTo(HttpStatus.OK);
|
||||
assertThat(response.getContentAsString()).isEqualTo("Hello, World!");
|
||||
@@ -62,11 +62,10 @@ public class WebTestClientResponseConverterTests {
|
||||
ExchangeResult result = WebTestClient
|
||||
.bindToRouterFunction(RouterFunctions.route(GET("/foo"),
|
||||
(req) -> ServerResponse.ok()
|
||||
.cookie(ResponseCookie.from("name", "value")
|
||||
.domain("localhost").httpOnly(true).build())
|
||||
.cookie(ResponseCookie.from("name", "value").domain("localhost").httpOnly(true).build())
|
||||
.build()))
|
||||
.configureClient().baseUrl("http://localhost").build().get().uri("/foo")
|
||||
.exchange().expectBody().returnResult();
|
||||
.configureClient().baseUrl("http://localhost").build().get().uri("/foo").exchange().expectBody()
|
||||
.returnResult();
|
||||
OperationResponse response = this.converter.convert(result);
|
||||
assertThat(response.getHeaders()).hasSize(1);
|
||||
assertThat(response.getHeaders()).containsEntry(HttpHeaders.SET_COOKIE,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2014-2018 the original author or authors.
|
||||
* Copyright 2014-2019 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.
|
||||
@@ -50,36 +50,29 @@ public class WebTestClientRestDocumentationConfigurerTests {
|
||||
ClientRequest request = ClientRequest.create(HttpMethod.GET, URI.create("/test"))
|
||||
.header(WebTestClient.WEBTESTCLIENT_REQUEST_ID, "1").build();
|
||||
this.configurer.filter(request, mock(ExchangeFunction.class));
|
||||
assertThat(WebTestClientRestDocumentationConfigurer
|
||||
.retrieveConfiguration(request.headers())).isNotNull();
|
||||
assertThat(WebTestClientRestDocumentationConfigurer
|
||||
.retrieveConfiguration(request.headers())).isNull();
|
||||
assertThat(WebTestClientRestDocumentationConfigurer.retrieveConfiguration(request.headers())).isNotNull();
|
||||
assertThat(WebTestClientRestDocumentationConfigurer.retrieveConfiguration(request.headers())).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestUriHasDefaultsAppliedWhenItHasNoHost() {
|
||||
ClientRequest request = ClientRequest
|
||||
.create(HttpMethod.GET, URI.create("/test?foo=bar#baz"))
|
||||
ClientRequest request = ClientRequest.create(HttpMethod.GET, URI.create("/test?foo=bar#baz"))
|
||||
.header(WebTestClient.WEBTESTCLIENT_REQUEST_ID, "1").build();
|
||||
ExchangeFunction exchangeFunction = mock(ExchangeFunction.class);
|
||||
this.configurer.filter(request, exchangeFunction);
|
||||
ArgumentCaptor<ClientRequest> requestCaptor = ArgumentCaptor
|
||||
.forClass(ClientRequest.class);
|
||||
ArgumentCaptor<ClientRequest> requestCaptor = ArgumentCaptor.forClass(ClientRequest.class);
|
||||
verify(exchangeFunction).exchange(requestCaptor.capture());
|
||||
assertThat(requestCaptor.getValue().url())
|
||||
.isEqualTo(URI.create("http://localhost:8080/test?foo=bar#baz"));
|
||||
assertThat(requestCaptor.getValue().url()).isEqualTo(URI.create("http://localhost:8080/test?foo=bar#baz"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestUriIsNotChangedWhenItHasAHost() {
|
||||
ClientRequest request = ClientRequest
|
||||
.create(HttpMethod.GET,
|
||||
URI.create("https://api.example.com:4567/test?foo=bar#baz"))
|
||||
.create(HttpMethod.GET, URI.create("https://api.example.com:4567/test?foo=bar#baz"))
|
||||
.header(WebTestClient.WEBTESTCLIENT_REQUEST_ID, "1").build();
|
||||
ExchangeFunction exchangeFunction = mock(ExchangeFunction.class);
|
||||
this.configurer.filter(request, exchangeFunction);
|
||||
ArgumentCaptor<ClientRequest> requestCaptor = ArgumentCaptor
|
||||
.forClass(ClientRequest.class);
|
||||
ArgumentCaptor<ClientRequest> requestCaptor = ArgumentCaptor.forClass(ClientRequest.class);
|
||||
verify(exchangeFunction).exchange(requestCaptor.capture());
|
||||
assertThat(requestCaptor.getValue().url())
|
||||
.isEqualTo(URI.create("https://api.example.com:4567/test?foo=bar#baz"));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2014-2018 the original author or authors.
|
||||
* Copyright 2014-2019 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.
|
||||
@@ -84,23 +84,18 @@ public class WebTestClientRestDocumentationIntegrationTests {
|
||||
public void setUp() {
|
||||
RouterFunction<ServerResponse> route = RouterFunctions
|
||||
.route(RequestPredicates.GET("/"),
|
||||
(request) -> ServerResponse.status(HttpStatus.OK)
|
||||
.body(fromObject(new Person("Jane", "Doe"))))
|
||||
(request) -> ServerResponse.status(HttpStatus.OK).body(fromObject(new Person("Jane", "Doe"))))
|
||||
.andRoute(RequestPredicates.GET("/{foo}/{bar}"),
|
||||
(request) -> ServerResponse.status(HttpStatus.OK)
|
||||
.body(fromObject(new Person("Jane", "Doe"))))
|
||||
(request) -> ServerResponse.status(HttpStatus.OK).body(fromObject(new Person("Jane", "Doe"))))
|
||||
.andRoute(RequestPredicates.POST("/upload"),
|
||||
(request) -> request.body(BodyExtractors.toMultipartData())
|
||||
.map((parts) -> ServerResponse.status(HttpStatus.OK)
|
||||
.build().block()))
|
||||
.map((parts) -> ServerResponse.status(HttpStatus.OK).build().block()))
|
||||
.andRoute(RequestPredicates.GET("/set-cookie"),
|
||||
(request) -> ServerResponse.ok()
|
||||
.cookie(ResponseCookie.from("name", "value")
|
||||
.domain("localhost").httpOnly(true).build())
|
||||
.cookie(ResponseCookie.from("name", "value").domain("localhost").httpOnly(true).build())
|
||||
.build());
|
||||
this.webTestClient = WebTestClient.bindToRouterFunction(route).configureClient()
|
||||
.baseUrl("https://api.example.com")
|
||||
.filter(documentationConfiguration(this.restDocumentation)).build();
|
||||
.baseUrl("https://api.example.com").filter(documentationConfiguration(this.restDocumentation)).build();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -109,40 +104,30 @@ public class WebTestClientRestDocumentationIntegrationTests {
|
||||
FileSystemUtils.deleteRecursively(outputDir);
|
||||
this.webTestClient.get().uri("/").exchange().expectStatus().isOk().expectBody()
|
||||
.consumeWith(document("default-snippets"));
|
||||
assertExpectedSnippetFilesExist(outputDir, "http-request.adoc",
|
||||
"http-response.adoc", "curl-request.adoc", "httpie-request.adoc",
|
||||
"request-body.adoc", "response-body.adoc");
|
||||
assertExpectedSnippetFilesExist(outputDir, "http-request.adoc", "http-response.adoc", "curl-request.adoc",
|
||||
"httpie-request.adoc", "request-body.adoc", "response-body.adoc");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pathParametersSnippet() {
|
||||
this.webTestClient.get().uri("/{foo}/{bar}", "1", "2").exchange().expectStatus()
|
||||
.isOk().expectBody()
|
||||
.consumeWith(document("path-parameters", pathParameters(
|
||||
parameterWithName("foo").description("Foo description"),
|
||||
parameterWithName("bar").description("Bar description"))));
|
||||
assertThat(
|
||||
new File("build/generated-snippets/path-parameters/path-parameters.adoc"))
|
||||
.has(content(
|
||||
tableWithTitleAndHeader(TemplateFormats.asciidoctor(),
|
||||
"+/{foo}/{bar}+", "Parameter", "Description")
|
||||
.row("`foo`", "Foo description")
|
||||
.row("`bar`", "Bar description")));
|
||||
this.webTestClient.get().uri("/{foo}/{bar}", "1", "2").exchange().expectStatus().isOk().expectBody()
|
||||
.consumeWith(document("path-parameters",
|
||||
pathParameters(parameterWithName("foo").description("Foo description"),
|
||||
parameterWithName("bar").description("Bar description"))));
|
||||
assertThat(new File("build/generated-snippets/path-parameters/path-parameters.adoc")).has(content(
|
||||
tableWithTitleAndHeader(TemplateFormats.asciidoctor(), "+/{foo}/{bar}+", "Parameter", "Description")
|
||||
.row("`foo`", "Foo description").row("`bar`", "Bar description")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestParametersSnippet() {
|
||||
this.webTestClient.get().uri("/?a=alpha&b=bravo").exchange().expectStatus().isOk()
|
||||
.expectBody()
|
||||
.consumeWith(document("request-parameters", requestParameters(
|
||||
parameterWithName("a").description("Alpha description"),
|
||||
parameterWithName("b").description("Bravo description"))));
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/request-parameters/request-parameters.adoc"))
|
||||
.has(content(tableWithHeader(TemplateFormats.asciidoctor(),
|
||||
"Parameter", "Description")
|
||||
.row("`a`", "Alpha description")
|
||||
.row("`b`", "Bravo description")));
|
||||
this.webTestClient.get().uri("/?a=alpha&b=bravo").exchange().expectStatus().isOk().expectBody()
|
||||
.consumeWith(document("request-parameters",
|
||||
requestParameters(parameterWithName("a").description("Alpha description"),
|
||||
parameterWithName("b").description("Bravo description"))));
|
||||
assertThat(new File("build/generated-snippets/request-parameters/request-parameters.adoc"))
|
||||
.has(content(tableWithHeader(TemplateFormats.asciidoctor(), "Parameter", "Description")
|
||||
.row("`a`", "Alpha description").row("`b`", "Bravo description")));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -151,58 +136,46 @@ public class WebTestClientRestDocumentationIntegrationTests {
|
||||
multipartData.add("a", "alpha");
|
||||
multipartData.add("b", "bravo");
|
||||
Consumer<EntityExchangeResult<byte[]>> documentation = document("multipart",
|
||||
requestParts(partWithName("a").description("Part a"),
|
||||
partWithName("b").description("Part b")));
|
||||
this.webTestClient.post().uri("/upload")
|
||||
.body(BodyInserters.fromMultipartData(multipartData)).exchange()
|
||||
requestParts(partWithName("a").description("Part a"), partWithName("b").description("Part b")));
|
||||
this.webTestClient.post().uri("/upload").body(BodyInserters.fromMultipartData(multipartData)).exchange()
|
||||
.expectStatus().isOk().expectBody().consumeWith(documentation);
|
||||
assertThat(new File("build/generated-snippets/multipart/request-parts.adoc"))
|
||||
.has(content(tableWithHeader(TemplateFormats.asciidoctor(), "Part",
|
||||
"Description").row("`a`", "Part a").row("`b`", "Part b")));
|
||||
.has(content(tableWithHeader(TemplateFormats.asciidoctor(), "Part", "Description").row("`a`", "Part a")
|
||||
.row("`b`", "Part b")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void responseWithSetCookie() throws Exception {
|
||||
this.webTestClient.get().uri("/set-cookie").exchange().expectStatus().isOk()
|
||||
.expectBody().consumeWith(document("set-cookie"));
|
||||
this.webTestClient.get().uri("/set-cookie").exchange().expectStatus().isOk().expectBody()
|
||||
.consumeWith(document("set-cookie"));
|
||||
assertThat(new File("build/generated-snippets/set-cookie/http-response.adoc"))
|
||||
.has(content(httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK)
|
||||
.header(HttpHeaders.SET_COOKIE,
|
||||
"name=value; Domain=localhost; HttpOnly")));
|
||||
.has(content(httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK).header(HttpHeaders.SET_COOKIE,
|
||||
"name=value; Domain=localhost; HttpOnly")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void curlSnippetWithCookies() throws Exception {
|
||||
this.webTestClient.get().uri("/").cookie("cookieName", "cookieVal")
|
||||
.accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk()
|
||||
.expectBody().consumeWith(document("curl-snippet-with-cookies"));
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/curl-snippet-with-cookies/curl-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format(
|
||||
"$ curl 'https://api.example.com/' -i -X GET \\%n"
|
||||
+ " -H 'Accept: application/json' \\%n"
|
||||
+ " --cookie 'cookieName=cookieVal'"))));
|
||||
this.webTestClient.get().uri("/").cookie("cookieName", "cookieVal").accept(MediaType.APPLICATION_JSON)
|
||||
.exchange().expectStatus().isOk().expectBody().consumeWith(document("curl-snippet-with-cookies"));
|
||||
assertThat(new File("build/generated-snippets/curl-snippet-with-cookies/curl-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format("$ curl 'https://api.example.com/' -i -X GET \\%n"
|
||||
+ " -H 'Accept: application/json' \\%n" + " --cookie 'cookieName=cookieVal'"))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void httpieSnippetWithCookies() throws Exception {
|
||||
this.webTestClient.get().uri("/").cookie("cookieName", "cookieVal")
|
||||
.accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk()
|
||||
.expectBody().consumeWith(document("httpie-snippet-with-cookies"));
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/httpie-snippet-with-cookies/httpie-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format(
|
||||
"$ http GET 'https://api.example.com/' \\%n"
|
||||
+ " 'Accept:application/json' \\%n"
|
||||
+ " 'Cookie:cookieName=cookieVal'"))));
|
||||
this.webTestClient.get().uri("/").cookie("cookieName", "cookieVal").accept(MediaType.APPLICATION_JSON)
|
||||
.exchange().expectStatus().isOk().expectBody().consumeWith(document("httpie-snippet-with-cookies"));
|
||||
assertThat(new File("build/generated-snippets/httpie-snippet-with-cookies/httpie-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format("$ http GET 'https://api.example.com/' \\%n"
|
||||
+ " 'Accept:application/json' \\%n" + " 'Cookie:cookieName=cookieVal'"))));
|
||||
}
|
||||
|
||||
private void assertExpectedSnippetFilesExist(File directory, String... snippets) {
|
||||
Set<File> actual = new HashSet<>(Arrays.asList(directory.listFiles()));
|
||||
Set<File> expected = Stream.of(snippets)
|
||||
.map((snippet) -> new File(directory, snippet))
|
||||
Set<File> expected = Stream.of(snippets).map((snippet) -> new File(directory, snippet))
|
||||
.collect(Collectors.toSet());
|
||||
assertThat(actual).isEqualTo(expected);
|
||||
}
|
||||
@@ -213,9 +186,8 @@ public class WebTestClientRestDocumentationIntegrationTests {
|
||||
@Override
|
||||
public boolean matches(File value) {
|
||||
try {
|
||||
return delegate
|
||||
.matches(FileCopyUtils.copyToString(new InputStreamReader(
|
||||
new FileInputStream(value), StandardCharsets.UTF_8)));
|
||||
return delegate.matches(FileCopyUtils
|
||||
.copyToString(new InputStreamReader(new FileInputStream(value), StandardCharsets.UTF_8)));
|
||||
}
|
||||
catch (IOException ex) {
|
||||
fail("Failed to read '" + value + "'", ex);
|
||||
@@ -238,15 +210,14 @@ public class WebTestClientRestDocumentationIntegrationTests {
|
||||
return SnippetConditions.tableWithHeader(format, headers);
|
||||
}
|
||||
|
||||
private TableCondition<?> tableWithTitleAndHeader(TemplateFormat format, String title,
|
||||
String... headers) {
|
||||
private TableCondition<?> tableWithTitleAndHeader(TemplateFormat format, String title, String... headers) {
|
||||
return SnippetConditions.tableWithTitleAndHeader(format, title, headers);
|
||||
}
|
||||
|
||||
/**
|
||||
* A person.
|
||||
*/
|
||||
static class Person {
|
||||
public static class Person {
|
||||
|
||||
private final String firstName;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user