Merge branch '1.2.x'
This commit is contained in:
@@ -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.
|
||||
@@ -42,8 +42,8 @@ public final class MockMvcOperationPreprocessorsConfigurer extends
|
||||
}
|
||||
|
||||
@Override
|
||||
public RequestPostProcessor beforeMockMvcCreated(
|
||||
ConfigurableMockMvcBuilder<?> builder, WebApplicationContext context) {
|
||||
public RequestPostProcessor beforeMockMvcCreated(ConfigurableMockMvcBuilder<?> builder,
|
||||
WebApplicationContext context) {
|
||||
return and().beforeMockMvcCreated(builder, context);
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -70,32 +70,27 @@ class MockMvcRequestConverter implements RequestConverter<MockHttpServletRequest
|
||||
List<OperationRequestPart> parts = extractParts(mockRequest);
|
||||
Collection<RequestCookie> cookies = extractCookies(mockRequest, headers);
|
||||
String queryString = mockRequest.getQueryString();
|
||||
if (!StringUtils.hasText(queryString)
|
||||
&& "GET".equals(mockRequest.getMethod())) {
|
||||
if (!StringUtils.hasText(queryString) && "GET".equals(mockRequest.getMethod())) {
|
||||
queryString = parameters.toQueryString();
|
||||
}
|
||||
return new OperationRequestFactory().create(
|
||||
URI.create(
|
||||
getRequestUri(mockRequest) + (StringUtils.hasText(queryString)
|
||||
? "?" + queryString : "")),
|
||||
HttpMethod.valueOf(mockRequest.getMethod()),
|
||||
mockRequest.getContentAsByteArray(), headers, parameters, parts,
|
||||
cookies);
|
||||
getRequestUri(mockRequest) + (StringUtils.hasText(queryString) ? "?" + queryString : "")),
|
||||
HttpMethod.valueOf(mockRequest.getMethod()), mockRequest.getContentAsByteArray(), headers,
|
||||
parameters, parts, cookies);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new ConversionException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private Collection<RequestCookie> extractCookies(MockHttpServletRequest mockRequest,
|
||||
HttpHeaders headers) {
|
||||
private Collection<RequestCookie> extractCookies(MockHttpServletRequest mockRequest, HttpHeaders headers) {
|
||||
if (mockRequest.getCookies() == null || mockRequest.getCookies().length == 0) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<RequestCookie> cookies = new ArrayList<>();
|
||||
for (javax.servlet.http.Cookie servletCookie : mockRequest.getCookies()) {
|
||||
cookies.add(
|
||||
new RequestCookie(servletCookie.getName(), servletCookie.getValue()));
|
||||
cookies.add(new RequestCookie(servletCookie.getName(), servletCookie.getValue()));
|
||||
}
|
||||
headers.remove(HttpHeaders.COOKIE);
|
||||
return cookies;
|
||||
@@ -106,14 +101,13 @@ class MockMvcRequestConverter implements RequestConverter<MockHttpServletRequest
|
||||
List<OperationRequestPart> parts = new ArrayList<>();
|
||||
parts.addAll(extractServletRequestParts(servletRequest));
|
||||
if (servletRequest instanceof MockMultipartHttpServletRequest) {
|
||||
parts.addAll(extractMultipartRequestParts(
|
||||
(MockMultipartHttpServletRequest) servletRequest));
|
||||
parts.addAll(extractMultipartRequestParts((MockMultipartHttpServletRequest) servletRequest));
|
||||
}
|
||||
return parts;
|
||||
}
|
||||
|
||||
private List<OperationRequestPart> extractServletRequestParts(
|
||||
MockHttpServletRequest servletRequest) throws IOException, ServletException {
|
||||
private List<OperationRequestPart> extractServletRequestParts(MockHttpServletRequest servletRequest)
|
||||
throws IOException, ServletException {
|
||||
List<OperationRequestPart> parts = new ArrayList<>();
|
||||
for (Part part : servletRequest.getParts()) {
|
||||
parts.add(createOperationRequestPart(part));
|
||||
@@ -121,24 +115,21 @@ class MockMvcRequestConverter implements RequestConverter<MockHttpServletRequest
|
||||
return parts;
|
||||
}
|
||||
|
||||
private OperationRequestPart createOperationRequestPart(Part part)
|
||||
throws IOException {
|
||||
private OperationRequestPart createOperationRequestPart(Part part) throws IOException {
|
||||
HttpHeaders partHeaders = extractHeaders(part);
|
||||
List<String> contentTypeHeader = partHeaders.get(HttpHeaders.CONTENT_TYPE);
|
||||
if (part.getContentType() != null && contentTypeHeader == null) {
|
||||
partHeaders.setContentType(MediaType.parseMediaType(part.getContentType()));
|
||||
}
|
||||
return new OperationRequestPartFactory().create(part.getName(),
|
||||
StringUtils.hasText(part.getSubmittedFileName())
|
||||
? part.getSubmittedFileName() : null,
|
||||
StringUtils.hasText(part.getSubmittedFileName()) ? part.getSubmittedFileName() : null,
|
||||
FileCopyUtils.copyToByteArray(part.getInputStream()), partHeaders);
|
||||
}
|
||||
|
||||
private List<OperationRequestPart> extractMultipartRequestParts(
|
||||
MockMultipartHttpServletRequest multipartRequest) throws IOException {
|
||||
private List<OperationRequestPart> extractMultipartRequestParts(MockMultipartHttpServletRequest multipartRequest)
|
||||
throws IOException {
|
||||
List<OperationRequestPart> parts = new ArrayList<>();
|
||||
for (Entry<String, List<MultipartFile>> entry : multipartRequest.getMultiFileMap()
|
||||
.entrySet()) {
|
||||
for (Entry<String, List<MultipartFile>> entry : multipartRequest.getMultiFileMap().entrySet()) {
|
||||
for (MultipartFile file : entry.getValue()) {
|
||||
parts.add(createOperationRequestPart(file));
|
||||
}
|
||||
@@ -146,16 +137,14 @@ class MockMvcRequestConverter implements RequestConverter<MockHttpServletRequest
|
||||
return parts;
|
||||
}
|
||||
|
||||
private OperationRequestPart createOperationRequestPart(MultipartFile file)
|
||||
throws IOException {
|
||||
private OperationRequestPart createOperationRequestPart(MultipartFile file) throws IOException {
|
||||
HttpHeaders partHeaders = new HttpHeaders();
|
||||
if (StringUtils.hasText(file.getContentType())) {
|
||||
partHeaders.setContentType(MediaType.parseMediaType(file.getContentType()));
|
||||
}
|
||||
return new OperationRequestPartFactory().create(file.getName(),
|
||||
StringUtils.hasText(file.getOriginalFilename())
|
||||
? file.getOriginalFilename() : null,
|
||||
file.getBytes(), partHeaders);
|
||||
StringUtils.hasText(file.getOriginalFilename()) ? file.getOriginalFilename() : null, file.getBytes(),
|
||||
partHeaders);
|
||||
}
|
||||
|
||||
private HttpHeaders extractHeaders(Part part) {
|
||||
@@ -180,10 +169,8 @@ class MockMvcRequestConverter implements RequestConverter<MockHttpServletRequest
|
||||
|
||||
private HttpHeaders extractHeaders(MockHttpServletRequest servletRequest) {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
for (String headerName : IterableEnumeration
|
||||
.of(servletRequest.getHeaderNames())) {
|
||||
for (String value : IterableEnumeration
|
||||
.of(servletRequest.getHeaders(headerName))) {
|
||||
for (String headerName : IterableEnumeration.of(servletRequest.getHeaderNames())) {
|
||||
for (String value : IterableEnumeration.of(servletRequest.getHeaders(headerName))) {
|
||||
headers.add(headerName, value);
|
||||
}
|
||||
}
|
||||
@@ -191,10 +178,8 @@ class MockMvcRequestConverter implements RequestConverter<MockHttpServletRequest
|
||||
}
|
||||
|
||||
private boolean isNonStandardPort(MockHttpServletRequest request) {
|
||||
return (SCHEME_HTTP.equals(request.getScheme())
|
||||
&& request.getServerPort() != STANDARD_PORT_HTTP)
|
||||
|| (SCHEME_HTTPS.equals(request.getScheme())
|
||||
&& request.getServerPort() != STANDARD_PORT_HTTPS);
|
||||
return (SCHEME_HTTP.equals(request.getScheme()) && request.getServerPort() != STANDARD_PORT_HTTP)
|
||||
|| (SCHEME_HTTPS.equals(request.getScheme()) && request.getServerPort() != STANDARD_PORT_HTTPS);
|
||||
}
|
||||
|
||||
private String getRequestUri(MockHttpServletRequest request) {
|
||||
|
||||
@@ -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.
|
||||
@@ -36,8 +36,7 @@ class MockMvcResponseConverter implements ResponseConverter<MockHttpServletRespo
|
||||
|
||||
@Override
|
||||
public OperationResponse convert(MockHttpServletResponse mockResponse) {
|
||||
return new OperationResponseFactory().create(
|
||||
HttpStatus.valueOf(mockResponse.getStatus()),
|
||||
return new OperationResponseFactory().create(HttpStatus.valueOf(mockResponse.getStatus()),
|
||||
extractHeaders(mockResponse), mockResponse.getContentAsByteArray());
|
||||
}
|
||||
|
||||
@@ -49,8 +48,7 @@ class MockMvcResponseConverter implements ResponseConverter<MockHttpServletRespo
|
||||
}
|
||||
}
|
||||
|
||||
if (response.getCookies() != null
|
||||
&& !headers.containsKey(HttpHeaders.SET_COOKIE)) {
|
||||
if (response.getCookies() != null && !headers.containsKey(HttpHeaders.SET_COOKIE)) {
|
||||
for (Cookie cookie : response.getCookies()) {
|
||||
headers.add(HttpHeaders.SET_COOKIE, generateSetCookieHeader(cookie));
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
@@ -62,10 +62,9 @@ public abstract class MockMvcRestDocumentation {
|
||||
* @see MockMvc#perform(org.springframework.test.web.servlet.RequestBuilder)
|
||||
* @see ResultActions#andDo(org.springframework.test.web.servlet.ResultHandler)
|
||||
*/
|
||||
public static RestDocumentationResultHandler document(String identifier,
|
||||
Snippet... snippets) {
|
||||
return new RestDocumentationResultHandler(new RestDocumentationGenerator<>(
|
||||
identifier, REQUEST_CONVERTER, RESPONSE_CONVERTER, snippets));
|
||||
public static RestDocumentationResultHandler document(String identifier, Snippet... snippets) {
|
||||
return new RestDocumentationResultHandler(
|
||||
new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER, RESPONSE_CONVERTER, snippets));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -81,9 +80,8 @@ public abstract class MockMvcRestDocumentation {
|
||||
*/
|
||||
public static RestDocumentationResultHandler document(String identifier,
|
||||
OperationRequestPreprocessor requestPreprocessor, Snippet... snippets) {
|
||||
return new RestDocumentationResultHandler(
|
||||
new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER,
|
||||
RESPONSE_CONVERTER, requestPreprocessor, snippets));
|
||||
return new RestDocumentationResultHandler(new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER,
|
||||
RESPONSE_CONVERTER, requestPreprocessor, snippets));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,9 +97,8 @@ public abstract class MockMvcRestDocumentation {
|
||||
*/
|
||||
public static RestDocumentationResultHandler document(String identifier,
|
||||
OperationResponsePreprocessor responsePreprocessor, Snippet... snippets) {
|
||||
return new RestDocumentationResultHandler(
|
||||
new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER,
|
||||
RESPONSE_CONVERTER, responsePreprocessor, snippets));
|
||||
return new RestDocumentationResultHandler(new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER,
|
||||
RESPONSE_CONVERTER, responsePreprocessor, snippets));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -118,11 +115,10 @@ public abstract class MockMvcRestDocumentation {
|
||||
* @see ResultActions#andDo(org.springframework.test.web.servlet.ResultHandler)
|
||||
*/
|
||||
public static RestDocumentationResultHandler document(String identifier,
|
||||
OperationRequestPreprocessor requestPreprocessor,
|
||||
OperationResponsePreprocessor responsePreprocessor, Snippet... snippets) {
|
||||
return new RestDocumentationResultHandler(new RestDocumentationGenerator<>(
|
||||
identifier, REQUEST_CONVERTER, RESPONSE_CONVERTER, requestPreprocessor,
|
||||
responsePreprocessor, snippets));
|
||||
OperationRequestPreprocessor requestPreprocessor, OperationResponsePreprocessor responsePreprocessor,
|
||||
Snippet... snippets) {
|
||||
return new RestDocumentationResultHandler(new RestDocumentationGenerator<>(identifier, REQUEST_CONVERTER,
|
||||
RESPONSE_CONVERTER, requestPreprocessor, responsePreprocessor, snippets));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
@@ -40,8 +40,7 @@ public final class MockMvcRestDocumentationConfigurer extends
|
||||
RestDocumentationConfigurer<MockMvcSnippetConfigurer, MockMvcOperationPreprocessorsConfigurer, MockMvcRestDocumentationConfigurer>
|
||||
implements MockMvcConfigurer {
|
||||
|
||||
private final MockMvcSnippetConfigurer snippetConfigurer = new MockMvcSnippetConfigurer(
|
||||
this);
|
||||
private final MockMvcSnippetConfigurer snippetConfigurer = new MockMvcSnippetConfigurer(this);
|
||||
|
||||
private final UriConfigurer uriConfigurer = new UriConfigurer(this);
|
||||
|
||||
@@ -64,8 +63,8 @@ public final class MockMvcRestDocumentationConfigurer extends
|
||||
}
|
||||
|
||||
@Override
|
||||
public RequestPostProcessor beforeMockMvcCreated(
|
||||
ConfigurableMockMvcBuilder<?> builder, WebApplicationContext context) {
|
||||
public RequestPostProcessor beforeMockMvcCreated(ConfigurableMockMvcBuilder<?> builder,
|
||||
WebApplicationContext context) {
|
||||
return new ConfigurerApplyingRequestPostProcessor(this.contextManager);
|
||||
}
|
||||
|
||||
@@ -84,13 +83,11 @@ public final class MockMvcRestDocumentationConfigurer extends
|
||||
return this.operationPreprocessorsConfigurer;
|
||||
}
|
||||
|
||||
private final class ConfigurerApplyingRequestPostProcessor
|
||||
implements RequestPostProcessor {
|
||||
private final class ConfigurerApplyingRequestPostProcessor implements RequestPostProcessor {
|
||||
|
||||
private final RestDocumentationContextProvider contextManager;
|
||||
|
||||
private ConfigurerApplyingRequestPostProcessor(
|
||||
RestDocumentationContextProvider contextManager) {
|
||||
private ConfigurerApplyingRequestPostProcessor(RestDocumentationContextProvider contextManager) {
|
||||
this.contextManager = contextManager;
|
||||
}
|
||||
|
||||
@@ -100,15 +97,11 @@ public final class MockMvcRestDocumentationConfigurer extends
|
||||
Map<String, Object> configuration = new HashMap<>();
|
||||
configuration.put(MockHttpServletRequest.class.getName(), request);
|
||||
configuration.put(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE,
|
||||
request.getAttribute(
|
||||
RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE));
|
||||
request.getAttribute(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE));
|
||||
configuration.put(RestDocumentationContext.class.getName(), context);
|
||||
request.setAttribute(
|
||||
RestDocumentationResultHandler.ATTRIBUTE_NAME_CONFIGURATION,
|
||||
configuration);
|
||||
request.setAttribute(RestDocumentationResultHandler.ATTRIBUTE_NAME_CONFIGURATION, configuration);
|
||||
MockMvcRestDocumentationConfigurer.this.apply(configuration, context);
|
||||
MockMvcRestDocumentationConfigurer.this.uriConfigurer.apply(configuration,
|
||||
context);
|
||||
MockMvcRestDocumentationConfigurer.this.uriConfigurer.apply(configuration, context);
|
||||
return request;
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -29,8 +29,7 @@ import org.springframework.web.context.WebApplicationContext;
|
||||
* @since 1.1.0
|
||||
*/
|
||||
public final class MockMvcSnippetConfigurer extends
|
||||
SnippetConfigurer<MockMvcRestDocumentationConfigurer, MockMvcSnippetConfigurer>
|
||||
implements MockMvcConfigurer {
|
||||
SnippetConfigurer<MockMvcRestDocumentationConfigurer, MockMvcSnippetConfigurer> implements MockMvcConfigurer {
|
||||
|
||||
MockMvcSnippetConfigurer(MockMvcRestDocumentationConfigurer parent) {
|
||||
super(parent);
|
||||
@@ -42,8 +41,8 @@ public final class MockMvcSnippetConfigurer extends
|
||||
}
|
||||
|
||||
@Override
|
||||
public RequestPostProcessor beforeMockMvcCreated(
|
||||
ConfigurableMockMvcBuilder<?> builder, WebApplicationContext context) {
|
||||
public RequestPostProcessor beforeMockMvcCreated(ConfigurableMockMvcBuilder<?> builder,
|
||||
WebApplicationContext context) {
|
||||
return and().beforeMockMvcCreated(builder, context);
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -50,10 +50,9 @@ public abstract class RestDocumentationRequestBuilders {
|
||||
* @param urlVariables zero or more URL variables
|
||||
* @return the builder for the GET request
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder get(String urlTemplate,
|
||||
Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.get(urlTemplate, urlVariables).requestAttr(
|
||||
RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
public static MockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.get(urlTemplate, urlVariables)
|
||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -72,10 +71,9 @@ public abstract class RestDocumentationRequestBuilders {
|
||||
* @param urlVariables zero or more URL variables
|
||||
* @return the builder for the POST request
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder post(String urlTemplate,
|
||||
Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.post(urlTemplate, urlVariables).requestAttr(
|
||||
RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
public static MockHttpServletRequestBuilder post(String urlTemplate, Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.post(urlTemplate, urlVariables)
|
||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -94,10 +92,9 @@ public abstract class RestDocumentationRequestBuilders {
|
||||
* @param urlVariables zero or more URL variables
|
||||
* @return the builder for the PUT request
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder put(String urlTemplate,
|
||||
Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.put(urlTemplate, urlVariables).requestAttr(
|
||||
RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
public static MockHttpServletRequestBuilder put(String urlTemplate, Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.put(urlTemplate, urlVariables)
|
||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,10 +113,9 @@ public abstract class RestDocumentationRequestBuilders {
|
||||
* @param urlVariables zero or more URL variables
|
||||
* @return the builder for the PATCH request
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder patch(String urlTemplate,
|
||||
Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.patch(urlTemplate, urlVariables).requestAttr(
|
||||
RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
public static MockHttpServletRequestBuilder patch(String urlTemplate, Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.patch(urlTemplate, urlVariables)
|
||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -138,10 +134,9 @@ public abstract class RestDocumentationRequestBuilders {
|
||||
* @param urlVariables zero or more URL variables
|
||||
* @return the builder for the DELETE request
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder delete(String urlTemplate,
|
||||
Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.delete(urlTemplate, urlVariables).requestAttr(
|
||||
RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
public static MockHttpServletRequestBuilder delete(String urlTemplate, Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.delete(urlTemplate, urlVariables)
|
||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -160,10 +155,9 @@ public abstract class RestDocumentationRequestBuilders {
|
||||
* @param urlVariables zero or more URL variables
|
||||
* @return the builder for the OPTIONS request
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder options(String urlTemplate,
|
||||
Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.options(urlTemplate, urlVariables).requestAttr(
|
||||
RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
public static MockHttpServletRequestBuilder options(String urlTemplate, Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.options(urlTemplate, urlVariables)
|
||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -182,10 +176,9 @@ public abstract class RestDocumentationRequestBuilders {
|
||||
* @param urlVariables zero or more URL variables
|
||||
* @return the builder for the HEAD request
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder head(String urlTemplate,
|
||||
Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.head(urlTemplate, urlVariables).requestAttr(
|
||||
RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
public static MockHttpServletRequestBuilder head(String urlTemplate, Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.head(urlTemplate, urlVariables)
|
||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -205,11 +198,10 @@ public abstract class RestDocumentationRequestBuilders {
|
||||
* @param urlVariables zero or more URL variables
|
||||
* @return the builder for the request
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder request(HttpMethod httpMethod,
|
||||
String urlTemplate, Object... urlVariables) {
|
||||
public static MockHttpServletRequestBuilder request(HttpMethod httpMethod, String urlTemplate,
|
||||
Object... urlVariables) {
|
||||
return MockMvcRequestBuilders.request(httpMethod, urlTemplate, urlVariables)
|
||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE,
|
||||
urlTemplate);
|
||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -230,12 +222,9 @@ public abstract class RestDocumentationRequestBuilders {
|
||||
* @param urlVariables zero or more URL variables
|
||||
* @return the builder for the file upload request
|
||||
*/
|
||||
public static MockMultipartHttpServletRequestBuilder fileUpload(String urlTemplate,
|
||||
Object... urlVariables) {
|
||||
return (MockMultipartHttpServletRequestBuilder) MockMvcRequestBuilders
|
||||
.multipart(urlTemplate, urlVariables)
|
||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE,
|
||||
urlTemplate);
|
||||
public static MockMultipartHttpServletRequestBuilder fileUpload(String urlTemplate, Object... urlVariables) {
|
||||
return (MockMultipartHttpServletRequestBuilder) MockMvcRequestBuilders.multipart(urlTemplate, urlVariables)
|
||||
.requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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.
|
||||
@@ -77,12 +77,9 @@ public class RestDocumentationResultHandler implements ResultHandler {
|
||||
public void handle(MvcResult result) throws Exception {
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, Object> configuration = new HashMap<>(
|
||||
(Map<String, Object>) result.getRequest()
|
||||
.getAttribute(ATTRIBUTE_NAME_CONFIGURATION));
|
||||
configuration.remove(
|
||||
RestDocumentationGenerator.ATTRIBUTE_NAME_DEFAULT_SNIPPETS);
|
||||
getDelegate().handle(result.getRequest(), result.getResponse(),
|
||||
configuration);
|
||||
(Map<String, Object>) result.getRequest().getAttribute(ATTRIBUTE_NAME_CONFIGURATION));
|
||||
configuration.remove(RestDocumentationGenerator.ATTRIBUTE_NAME_DEFAULT_SNIPPETS);
|
||||
getDelegate().handle(result.getRequest(), result.getResponse(), configuration);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -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.
|
||||
@@ -31,8 +31,7 @@ import org.springframework.web.context.WebApplicationContext;
|
||||
*
|
||||
* @author Andy Wilkinson
|
||||
*/
|
||||
public class UriConfigurer
|
||||
extends AbstractNestedConfigurer<MockMvcRestDocumentationConfigurer>
|
||||
public class UriConfigurer extends AbstractNestedConfigurer<MockMvcRestDocumentationConfigurer>
|
||||
implements MockMvcConfigurer {
|
||||
|
||||
/**
|
||||
@@ -100,8 +99,7 @@ public class UriConfigurer
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(Map<String, Object> configuration,
|
||||
RestDocumentationContext context) {
|
||||
public void apply(Map<String, Object> configuration, RestDocumentationContext context) {
|
||||
MockHttpServletRequest request = (MockHttpServletRequest) configuration
|
||||
.get(MockHttpServletRequest.class.getName());
|
||||
request.setScheme(this.scheme);
|
||||
@@ -115,8 +113,8 @@ public class UriConfigurer
|
||||
}
|
||||
|
||||
@Override
|
||||
public RequestPostProcessor beforeMockMvcCreated(
|
||||
ConfigurableMockMvcBuilder<?> builder, WebApplicationContext context) {
|
||||
public RequestPostProcessor beforeMockMvcCreated(ConfigurableMockMvcBuilder<?> builder,
|
||||
WebApplicationContext context) {
|
||||
return and().beforeMockMvcCreated(builder, context);
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -51,16 +51,14 @@ public class MockMvcRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void httpRequest() throws Exception {
|
||||
OperationRequest request = createOperationRequest(
|
||||
MockMvcRequestBuilders.get("/foo"));
|
||||
OperationRequest request = createOperationRequest(MockMvcRequestBuilders.get("/foo"));
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.GET);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void httpRequestWithCustomPort() throws Exception {
|
||||
MockHttpServletRequest mockRequest = MockMvcRequestBuilders.get("/foo")
|
||||
.buildRequest(new MockServletContext());
|
||||
MockHttpServletRequest mockRequest = MockMvcRequestBuilders.get("/foo").buildRequest(new MockServletContext());
|
||||
mockRequest.setServerPort(8080);
|
||||
OperationRequest request = this.factory.convert(mockRequest);
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost:8080/foo"));
|
||||
@@ -69,28 +67,25 @@ public class MockMvcRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void requestWithContextPath() throws Exception {
|
||||
OperationRequest request = createOperationRequest(
|
||||
MockMvcRequestBuilders.get("/foo/bar").contextPath("/foo"));
|
||||
OperationRequest request = createOperationRequest(MockMvcRequestBuilders.get("/foo/bar").contextPath("/foo"));
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo/bar"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.GET);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestWithHeaders() throws Exception {
|
||||
OperationRequest request = createOperationRequest(MockMvcRequestBuilders
|
||||
.get("/foo").header("a", "alpha", "apple").header("b", "bravo"));
|
||||
OperationRequest request = createOperationRequest(
|
||||
MockMvcRequestBuilders.get("/foo").header("a", "alpha", "apple").header("b", "bravo"));
|
||||
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 requestWithCookies() throws Exception {
|
||||
OperationRequest request = createOperationRequest(
|
||||
MockMvcRequestBuilders.get("/foo").cookie(
|
||||
new javax.servlet.http.Cookie("cookieName1", "cookieVal1"),
|
||||
MockMvcRequestBuilders.get("/foo").cookie(new javax.servlet.http.Cookie("cookieName1", "cookieVal1"),
|
||||
new javax.servlet.http.Cookie("cookieName2", "cookieVal2")));
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.GET);
|
||||
@@ -109,8 +104,7 @@ public class MockMvcRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void httpsRequest() throws Exception {
|
||||
MockHttpServletRequest mockRequest = MockMvcRequestBuilders.get("/foo")
|
||||
.buildRequest(new MockServletContext());
|
||||
MockHttpServletRequest mockRequest = MockMvcRequestBuilders.get("/foo").buildRequest(new MockServletContext());
|
||||
mockRequest.setScheme("https");
|
||||
mockRequest.setServerPort(443);
|
||||
OperationRequest request = this.factory.convert(mockRequest);
|
||||
@@ -120,8 +114,7 @@ public class MockMvcRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void httpsRequestWithCustomPort() throws Exception {
|
||||
MockHttpServletRequest mockRequest = MockMvcRequestBuilders.get("/foo")
|
||||
.buildRequest(new MockServletContext());
|
||||
MockHttpServletRequest mockRequest = MockMvcRequestBuilders.get("/foo").buildRequest(new MockServletContext());
|
||||
mockRequest.setScheme("https");
|
||||
mockRequest.setServerPort(8443);
|
||||
OperationRequest request = this.factory.convert(mockRequest);
|
||||
@@ -131,23 +124,19 @@ public class MockMvcRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void getRequestWithParametersProducesUriWithQueryString() throws Exception {
|
||||
OperationRequest request = createOperationRequest(MockMvcRequestBuilders
|
||||
.get("/foo").param("a", "alpha", "apple").param("b", "br&vo"));
|
||||
assertThat(request.getUri())
|
||||
.isEqualTo(URI.create("http://localhost/foo?a=alpha&a=apple&b=br%26vo"));
|
||||
OperationRequest request = createOperationRequest(
|
||||
MockMvcRequestBuilders.get("/foo").param("a", "alpha", "apple").param("b", "br&vo"));
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo?a=alpha&a=apple&b=br%26vo"));
|
||||
assertThat(request.getParameters().size()).isEqualTo(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"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.GET);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getRequestWithQueryStringPopulatesParameters() throws Exception {
|
||||
OperationRequest request = createOperationRequest(
|
||||
MockMvcRequestBuilders.get("/foo?a=alpha&b=bravo"));
|
||||
assertThat(request.getUri())
|
||||
.isEqualTo(URI.create("http://localhost/foo?a=alpha&b=bravo"));
|
||||
OperationRequest request = createOperationRequest(MockMvcRequestBuilders.get("/foo?a=alpha&b=bravo"));
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo?a=alpha&b=bravo"));
|
||||
assertThat(request.getParameters().size()).isEqualTo(2);
|
||||
assertThat(request.getParameters()).containsEntry("a", Arrays.asList("alpha"));
|
||||
assertThat(request.getParameters()).containsEntry("b", Arrays.asList("bravo"));
|
||||
@@ -156,21 +145,19 @@ public class MockMvcRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void postRequestWithParameters() throws Exception {
|
||||
OperationRequest request = createOperationRequest(MockMvcRequestBuilders
|
||||
.post("/foo").param("a", "alpha", "apple").param("b", "br&vo"));
|
||||
OperationRequest request = createOperationRequest(
|
||||
MockMvcRequestBuilders.post("/foo").param("a", "alpha", "apple").param("b", "br&vo"));
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
||||
assertThat(request.getParameters().size()).isEqualTo(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 mockMultipartFileUpload() throws Exception {
|
||||
OperationRequest request = createOperationRequest(
|
||||
MockMvcRequestBuilders.multipart("/foo")
|
||||
.file(new MockMultipartFile("file", new byte[] { 1, 2, 3, 4 })));
|
||||
OperationRequest request = createOperationRequest(MockMvcRequestBuilders.multipart("/foo")
|
||||
.file(new MockMultipartFile("file", new byte[] { 1, 2, 3, 4 })));
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
||||
assertThat(request.getParts().size()).isEqualTo(1);
|
||||
@@ -184,9 +171,8 @@ public class MockMvcRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void mockMultipartFileUploadWithContentType() throws Exception {
|
||||
OperationRequest request = createOperationRequest(
|
||||
MockMvcRequestBuilders.multipart("/foo").file(new MockMultipartFile(
|
||||
"file", "original", "image/png", new byte[] { 1, 2, 3, 4 })));
|
||||
OperationRequest request = createOperationRequest(MockMvcRequestBuilders.multipart("/foo")
|
||||
.file(new MockMultipartFile("file", "original", "image/png", new byte[] { 1, 2, 3, 4 })));
|
||||
assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo"));
|
||||
assertThat(request.getMethod()).isEqualTo(HttpMethod.POST);
|
||||
assertThat(request.getParts().size()).isEqualTo(1);
|
||||
@@ -199,14 +185,12 @@ public class MockMvcRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void requestWithPart() throws Exception {
|
||||
MockHttpServletRequest mockRequest = MockMvcRequestBuilders.get("/foo")
|
||||
.buildRequest(new MockServletContext());
|
||||
MockHttpServletRequest mockRequest = MockMvcRequestBuilders.get("/foo").buildRequest(new MockServletContext());
|
||||
Part mockPart = mock(Part.class);
|
||||
given(mockPart.getHeaderNames()).willReturn(Arrays.asList("a", "b"));
|
||||
given(mockPart.getHeaders("a")).willReturn(Arrays.asList("alpha"));
|
||||
given(mockPart.getHeaders("b")).willReturn(Arrays.asList("bravo", "banana"));
|
||||
given(mockPart.getInputStream())
|
||||
.willReturn(new ByteArrayInputStream(new byte[] { 1, 2, 3, 4 }));
|
||||
given(mockPart.getInputStream()).willReturn(new ByteArrayInputStream(new byte[] { 1, 2, 3, 4 }));
|
||||
given(mockPart.getName()).willReturn("part-name");
|
||||
given(mockPart.getSubmittedFileName()).willReturn("submitted.txt");
|
||||
mockRequest.addPart(mockPart);
|
||||
@@ -223,14 +207,12 @@ public class MockMvcRequestConverterTests {
|
||||
|
||||
@Test
|
||||
public void requestWithPartWithContentType() throws Exception {
|
||||
MockHttpServletRequest mockRequest = MockMvcRequestBuilders.get("/foo")
|
||||
.buildRequest(new MockServletContext());
|
||||
MockHttpServletRequest mockRequest = MockMvcRequestBuilders.get("/foo").buildRequest(new MockServletContext());
|
||||
Part mockPart = mock(Part.class);
|
||||
given(mockPart.getHeaderNames()).willReturn(Arrays.asList("a", "b"));
|
||||
given(mockPart.getHeaders("a")).willReturn(Arrays.asList("alpha"));
|
||||
given(mockPart.getHeaders("b")).willReturn(Arrays.asList("bravo", "banana"));
|
||||
given(mockPart.getInputStream())
|
||||
.willReturn(new ByteArrayInputStream(new byte[] { 1, 2, 3, 4 }));
|
||||
given(mockPart.getInputStream()).willReturn(new ByteArrayInputStream(new byte[] { 1, 2, 3, 4 }));
|
||||
given(mockPart.getName()).willReturn("part-name");
|
||||
given(mockPart.getSubmittedFileName()).willReturn("submitted.png");
|
||||
given(mockPart.getContentType()).willReturn("image/png");
|
||||
@@ -246,8 +228,7 @@ public class MockMvcRequestConverterTests {
|
||||
assertThat(part.getContent()).isEqualTo(new byte[] { 1, 2, 3, 4 });
|
||||
}
|
||||
|
||||
private OperationRequest createOperationRequest(MockHttpServletRequestBuilder builder)
|
||||
throws Exception {
|
||||
private OperationRequest createOperationRequest(MockHttpServletRequestBuilder builder) throws Exception {
|
||||
return this.factory.convert(builder.buildRequest(new MockServletContext()));
|
||||
}
|
||||
|
||||
|
||||
@@ -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,44 +45,40 @@ public class MockMvcRestDocumentationConfigurerTests {
|
||||
|
||||
@Test
|
||||
public void defaultConfiguration() {
|
||||
RequestPostProcessor postProcessor = new MockMvcRestDocumentationConfigurer(
|
||||
this.restDocumentation).beforeMockMvcCreated(null, null);
|
||||
RequestPostProcessor postProcessor = new MockMvcRestDocumentationConfigurer(this.restDocumentation)
|
||||
.beforeMockMvcCreated(null, null);
|
||||
postProcessor.postProcessRequest(this.request);
|
||||
assertUriConfiguration("http", "localhost", 8080);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customScheme() {
|
||||
RequestPostProcessor postProcessor = new MockMvcRestDocumentationConfigurer(
|
||||
this.restDocumentation).uris().withScheme("https")
|
||||
.beforeMockMvcCreated(null, null);
|
||||
RequestPostProcessor postProcessor = new MockMvcRestDocumentationConfigurer(this.restDocumentation).uris()
|
||||
.withScheme("https").beforeMockMvcCreated(null, null);
|
||||
postProcessor.postProcessRequest(this.request);
|
||||
assertUriConfiguration("https", "localhost", 8080);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customHost() {
|
||||
RequestPostProcessor postProcessor = new MockMvcRestDocumentationConfigurer(
|
||||
this.restDocumentation).uris().withHost("api.example.com")
|
||||
.beforeMockMvcCreated(null, null);
|
||||
RequestPostProcessor postProcessor = new MockMvcRestDocumentationConfigurer(this.restDocumentation).uris()
|
||||
.withHost("api.example.com").beforeMockMvcCreated(null, null);
|
||||
postProcessor.postProcessRequest(this.request);
|
||||
assertUriConfiguration("http", "api.example.com", 8080);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customPort() {
|
||||
RequestPostProcessor postProcessor = new MockMvcRestDocumentationConfigurer(
|
||||
this.restDocumentation).uris().withPort(8081).beforeMockMvcCreated(null,
|
||||
null);
|
||||
RequestPostProcessor postProcessor = new MockMvcRestDocumentationConfigurer(this.restDocumentation).uris()
|
||||
.withPort(8081).beforeMockMvcCreated(null, null);
|
||||
postProcessor.postProcessRequest(this.request);
|
||||
assertUriConfiguration("http", "localhost", 8081);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void noContentLengthHeaderWhenRequestHasNotContent() {
|
||||
RequestPostProcessor postProcessor = new MockMvcRestDocumentationConfigurer(
|
||||
this.restDocumentation).uris().withPort(8081).beforeMockMvcCreated(null,
|
||||
null);
|
||||
RequestPostProcessor postProcessor = new MockMvcRestDocumentationConfigurer(this.restDocumentation).uris()
|
||||
.withPort(8081).beforeMockMvcCreated(null, null);
|
||||
postProcessor.postProcessRequest(this.request);
|
||||
assertThat(this.request.getHeader("Content-Length")).isNull();
|
||||
}
|
||||
@@ -91,8 +87,7 @@ public class MockMvcRestDocumentationConfigurerTests {
|
||||
assertThat(scheme).isEqualTo(this.request.getScheme());
|
||||
assertThat(host).isEqualTo(this.request.getServerName());
|
||||
assertThat(port).isEqualTo(this.request.getServerPort());
|
||||
RequestContextHolder
|
||||
.setRequestAttributes(new ServletRequestAttributes(this.request));
|
||||
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(this.request));
|
||||
try {
|
||||
URI uri = BasicLinkBuilder.linkToCurrentMapping().toUri();
|
||||
assertThat(scheme).isEqualTo(uri.getScheme());
|
||||
|
||||
@@ -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.
|
||||
@@ -128,26 +128,23 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
@Test
|
||||
public void basicSnippetGeneration() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(new MockMvcRestDocumentationConfigurer(this.restDocumentation)
|
||||
.snippets().withEncoding("UTF-8"))
|
||||
.apply(new MockMvcRestDocumentationConfigurer(this.restDocumentation).snippets().withEncoding("UTF-8"))
|
||||
.build();
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(document("basic"));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/basic"),
|
||||
"http-request.adoc", "http-response.adoc", "curl-request.adoc");
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("basic"));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/basic"), "http-request.adoc",
|
||||
"http-response.adoc", "curl-request.adoc");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void markdownSnippetGeneration() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(new MockMvcRestDocumentationConfigurer(this.restDocumentation)
|
||||
.snippets().withEncoding("UTF-8")
|
||||
.apply(new MockMvcRestDocumentationConfigurer(this.restDocumentation).snippets().withEncoding("UTF-8")
|
||||
.withTemplateFormat(TemplateFormats.markdown()))
|
||||
.build();
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(document("basic-markdown"));
|
||||
assertExpectedSnippetFilesExist(
|
||||
new File("build/generated-snippets/basic-markdown"), "http-request.md",
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("basic-markdown"));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/basic-markdown"), "http-request.md",
|
||||
"http-response.md", "curl-request.md");
|
||||
}
|
||||
|
||||
@@ -155,186 +152,147 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
public void curlSnippetWithContent() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(post("/").accept(MediaType.APPLICATION_JSON).content("content"))
|
||||
.andExpect(status().isOk()).andDo(document("curl-snippet-with-content"));
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/curl-snippet-with-content/curl-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format(
|
||||
"$ curl 'http://localhost:8080/' -i -X POST \\%n"
|
||||
+ " -H 'Accept: application/json' \\%n"
|
||||
+ " -d 'content'"))));
|
||||
mockMvc.perform(post("/").accept(MediaType.APPLICATION_JSON).content("content")).andExpect(status().isOk())
|
||||
.andDo(document("curl-snippet-with-content"));
|
||||
assertThat(new File("build/generated-snippets/curl-snippet-with-content/curl-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format("$ curl 'http://localhost:8080/' -i -X POST \\%n"
|
||||
+ " -H 'Accept: application/json' \\%n" + " -d 'content'"))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void curlSnippetWithCookies() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)
|
||||
.cookie(new Cookie("cookieName", "cookieVal"))).andExpect(status().isOk())
|
||||
.andDo(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 'http://localhost:8080/' -i -X GET \\%n"
|
||||
+ " -H 'Accept: application/json' \\%n"
|
||||
+ " --cookie 'cookieName=cookieVal'"))));
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON).cookie(new Cookie("cookieName", "cookieVal")))
|
||||
.andExpect(status().isOk()).andDo(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 'http://localhost:8080/' -i -X GET \\%n"
|
||||
+ " -H 'Accept: application/json' \\%n" + " --cookie 'cookieName=cookieVal'"))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void curlSnippetWithQueryStringOnPost() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(post("/?foo=bar").param("foo", "bar").param("a", "alpha")
|
||||
.accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("curl-snippet-with-query-string"));
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/curl-snippet-with-query-string/curl-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format("$ curl "
|
||||
+ "'http://localhost:8080/?foo=bar' -i -X POST \\%n"
|
||||
+ " -H 'Accept: application/json' \\%n"
|
||||
+ " -d 'a=alpha'"))));
|
||||
mockMvc.perform(post("/?foo=bar").param("foo", "bar").param("a", "alpha").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(document("curl-snippet-with-query-string"));
|
||||
assertThat(new File("build/generated-snippets/curl-snippet-with-query-string/curl-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format("$ curl " + "'http://localhost:8080/?foo=bar' -i -X POST \\%n"
|
||||
+ " -H 'Accept: application/json' \\%n" + " -d 'a=alpha'"))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void curlSnippetWithContentAndParametersOnPost() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(post("/").param("a", "alpha").accept(MediaType.APPLICATION_JSON)
|
||||
.content("some content")).andExpect(status().isOk())
|
||||
.andDo(document("curl-snippet-with-content-and-parameters"));
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/curl-snippet-with-content-and-parameters/curl-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format(
|
||||
"$ curl 'http://localhost:8080/?a=alpha' -i -X POST \\%n"
|
||||
+ " -H 'Accept: application/json' \\%n"
|
||||
+ " -d 'some content'"))));
|
||||
mockMvc.perform(post("/").param("a", "alpha").accept(MediaType.APPLICATION_JSON).content("some content"))
|
||||
.andExpect(status().isOk()).andDo(document("curl-snippet-with-content-and-parameters"));
|
||||
assertThat(new File("build/generated-snippets/curl-snippet-with-content-and-parameters/curl-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format("$ curl 'http://localhost:8080/?a=alpha' -i -X POST \\%n"
|
||||
+ " -H 'Accept: application/json' \\%n" + " -d 'some content'"))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void httpieSnippetWithContent() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(post("/").accept(MediaType.APPLICATION_JSON).content("content"))
|
||||
.andExpect(status().isOk())
|
||||
mockMvc.perform(post("/").accept(MediaType.APPLICATION_JSON).content("content")).andExpect(status().isOk())
|
||||
.andDo(document("httpie-snippet-with-content"));
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/httpie-snippet-with-content/httpie-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format("$ echo 'content' | "
|
||||
+ "http POST 'http://localhost:8080/' \\%n"
|
||||
+ " 'Accept:application/json'"))));
|
||||
assertThat(new File("build/generated-snippets/httpie-snippet-with-content/httpie-request.adoc")).has(
|
||||
content(codeBlock(TemplateFormats.asciidoctor(), "bash").withContent(String.format("$ echo 'content' | "
|
||||
+ "http POST 'http://localhost:8080/' \\%n" + " 'Accept:application/json'"))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void httpieSnippetWithCookies() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)
|
||||
.cookie(new Cookie("cookieName", "cookieVal"))).andExpect(status().isOk())
|
||||
.andDo(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 'http://localhost:8080/' \\%n"
|
||||
+ " 'Accept:application/json' \\%n"
|
||||
+ " 'Cookie:cookieName=cookieVal'"))));
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON).cookie(new Cookie("cookieName", "cookieVal")))
|
||||
.andExpect(status().isOk()).andDo(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 'http://localhost:8080/' \\%n"
|
||||
+ " 'Accept:application/json' \\%n" + " 'Cookie:cookieName=cookieVal'"))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void httpieSnippetWithQueryStringOnPost() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(post("/?foo=bar").param("foo", "bar").param("a", "alpha")
|
||||
.accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("httpie-snippet-with-query-string"));
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/httpie-snippet-with-query-string/httpie-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format("$ http "
|
||||
+ "--form POST 'http://localhost:8080/?foo=bar' \\%n"
|
||||
+ " 'Accept:application/json' \\%n 'a=alpha'"))));
|
||||
mockMvc.perform(post("/?foo=bar").param("foo", "bar").param("a", "alpha").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(document("httpie-snippet-with-query-string"));
|
||||
assertThat(new File("build/generated-snippets/httpie-snippet-with-query-string/httpie-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format("$ http " + "--form POST 'http://localhost:8080/?foo=bar' \\%n"
|
||||
+ " 'Accept:application/json' \\%n 'a=alpha'"))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void httpieSnippetWithContentAndParametersOnPost() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(post("/").param("a", "alpha").content("some content")
|
||||
.accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("httpie-snippet-post-with-content-and-parameters"));
|
||||
mockMvc.perform(post("/").param("a", "alpha").content("some content").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(document("httpie-snippet-post-with-content-and-parameters"));
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/httpie-snippet-post-with-content-and-parameters/httpie-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String
|
||||
.format("$ echo " + "'some content' | http POST "
|
||||
+ "'http://localhost:8080/?a=alpha' \\%n"
|
||||
+ " 'Accept:application/json'"))));
|
||||
.withContent(String.format("$ echo " + "'some content' | http POST "
|
||||
+ "'http://localhost:8080/?a=alpha' \\%n" + " 'Accept:application/json'"))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void linksSnippet() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(document("links",
|
||||
links(linkWithRel("rel").description("The description"))));
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("links", links(linkWithRel("rel").description("The description"))));
|
||||
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"),
|
||||
"http-request.adoc", "http-response.adoc", "curl-request.adoc",
|
||||
"links.adoc");
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"), "http-request.adoc",
|
||||
"http-response.adoc", "curl-request.adoc", "links.adoc");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pathParametersSnippet() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(get("{foo}", "/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(document("links", pathParameters(
|
||||
parameterWithName("foo").description("The description"))));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"),
|
||||
"http-request.adoc", "http-response.adoc", "curl-request.adoc",
|
||||
"path-parameters.adoc");
|
||||
mockMvc.perform(get("{foo}", "/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("links", pathParameters(parameterWithName("foo").description("The description"))));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"), "http-request.adoc",
|
||||
"http-response.adoc", "curl-request.adoc", "path-parameters.adoc");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestParametersSnippet() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(get("/").param("foo", "bar").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(document("links", requestParameters(
|
||||
parameterWithName("foo").description("The description"))));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"),
|
||||
"http-request.adoc", "http-response.adoc", "curl-request.adoc",
|
||||
"request-parameters.adoc");
|
||||
mockMvc.perform(get("/").param("foo", "bar").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("links", requestParameters(parameterWithName("foo").description("The description"))));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"), "http-request.adoc",
|
||||
"http-response.adoc", "curl-request.adoc", "request-parameters.adoc");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestFieldsSnippet() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(get("/").param("foo", "bar").content("{\"a\":\"alpha\"}")
|
||||
.accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("links", requestFields(
|
||||
fieldWithPath("a").description("The description"))));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"),
|
||||
"http-request.adoc", "http-response.adoc", "curl-request.adoc",
|
||||
"request-fields.adoc");
|
||||
mockMvc.perform(get("/").param("foo", "bar").content("{\"a\":\"alpha\"}").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk())
|
||||
.andDo(document("links", requestFields(fieldWithPath("a").description("The description"))));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"), "http-request.adoc",
|
||||
"http-response.adoc", "curl-request.adoc", "request-fields.adoc");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestPartsSnippet() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(multipart("/upload").file("foo", "bar".getBytes()))
|
||||
.andExpect(status().isOk()).andDo(document("request-parts", requestParts(
|
||||
partWithName("foo").description("The description"))));
|
||||
assertExpectedSnippetFilesExist(
|
||||
new File("build/generated-snippets/request-parts"), "http-request.adoc",
|
||||
mockMvc.perform(multipart("/upload").file("foo", "bar".getBytes())).andExpect(status().isOk())
|
||||
.andDo(document("request-parts", requestParts(partWithName("foo").description("The description"))));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/request-parts"), "http-request.adoc",
|
||||
"http-response.adoc", "curl-request.adoc", "request-parts.adoc");
|
||||
}
|
||||
|
||||
@@ -342,62 +300,48 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
public void responseFieldsSnippet() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(get("/").param("foo", "bar").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk())
|
||||
.andDo(document("links",
|
||||
responseFields(fieldWithPath("a").description("The description"),
|
||||
subsectionWithPath("links")
|
||||
.description("Links to other resources"))));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"),
|
||||
"http-request.adoc", "http-response.adoc", "curl-request.adoc",
|
||||
"response-fields.adoc");
|
||||
mockMvc.perform(get("/").param("foo", "bar").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("links", responseFields(fieldWithPath("a").description("The description"),
|
||||
subsectionWithPath("links").description("Links to other resources"))));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"), "http-request.adoc",
|
||||
"http-response.adoc", "curl-request.adoc", "response-fields.adoc");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void responseWithSetCookie() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(get("/set-cookie")).andExpect(status().isOk())
|
||||
.andDo(document("set-cookie",
|
||||
responseHeaders(headerWithName(HttpHeaders.SET_COOKIE)
|
||||
.description("set-cookie"))));
|
||||
mockMvc.perform(get("/set-cookie")).andExpect(status().isOk()).andDo(document("set-cookie",
|
||||
responseHeaders(headerWithName(HttpHeaders.SET_COOKIE).description("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 parameterizedOutputDirectory() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(document("{method-name}"));
|
||||
assertExpectedSnippetFilesExist(
|
||||
new File("build/generated-snippets/parameterized-output-directory"),
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("{method-name}"));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/parameterized-output-directory"),
|
||||
"http-request.adoc", "http-response.adoc", "curl-request.adoc");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void multiStep() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation))
|
||||
.alwaysDo(document("{method-name}-{step}")).build();
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk());
|
||||
assertExpectedSnippetFilesExist(
|
||||
new File("build/generated-snippets/multi-step-1/"), "http-request.adoc",
|
||||
.apply(documentationConfiguration(this.restDocumentation)).alwaysDo(document("{method-name}-{step}"))
|
||||
.build();
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk());
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/multi-step-1/"), "http-request.adoc",
|
||||
"http-response.adoc", "curl-request.adoc");
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk());
|
||||
assertExpectedSnippetFilesExist(
|
||||
new File("build/generated-snippets/multi-step-2/"), "http-request.adoc",
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk());
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/multi-step-2/"), "http-request.adoc",
|
||||
"http-response.adoc", "curl-request.adoc");
|
||||
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk());
|
||||
assertExpectedSnippetFilesExist(
|
||||
new File("build/generated-snippets/multi-step-3/"), "http-request.adoc",
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk());
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/multi-step-3/"), "http-request.adoc",
|
||||
"http-response.adoc", "curl-request.adoc");
|
||||
}
|
||||
|
||||
@@ -405,16 +349,11 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
public void alwaysDoWithAdditionalSnippets() throws Exception {
|
||||
RestDocumentationResultHandler documentation = document("{method-name}-{step}");
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation))
|
||||
.alwaysDo(documentation).build();
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(documentation.document(
|
||||
responseHeaders(headerWithName("a").description("one"))));
|
||||
assertExpectedSnippetFilesExist(
|
||||
new File(
|
||||
"build/generated-snippets/always-do-with-additional-snippets-1/"),
|
||||
"http-request.adoc", "http-response.adoc", "curl-request.adoc",
|
||||
"response-headers.adoc");
|
||||
.apply(documentationConfiguration(this.restDocumentation)).alwaysDo(documentation).build();
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(documentation.document(responseHeaders(headerWithName("a").description("one"))));
|
||||
assertExpectedSnippetFilesExist(new File("build/generated-snippets/always-do-with-additional-snippets-1/"),
|
||||
"http-request.adoc", "http-response.adoc", "curl-request.adoc", "response-headers.adoc");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -423,76 +362,56 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
Pattern pattern = Pattern.compile("(\"alpha\")");
|
||||
MvcResult result = mockMvc
|
||||
.perform(get("/").header("a", "alpha").header("b", "bravo")
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.perform(get("/").header("a", "alpha").header("b", "bravo").contentType(MediaType.APPLICATION_JSON)
|
||||
.accept(MediaType.APPLICATION_JSON).content("{\"a\":\"alpha\"}"))
|
||||
.andExpect(status().isOk()).andDo(document("original-request"))
|
||||
.andDo(document("preprocessed-request",
|
||||
preprocessRequest(prettyPrint(),
|
||||
removeHeaders("a", HttpHeaders.HOST,
|
||||
HttpHeaders.CONTENT_LENGTH),
|
||||
removeHeaders("a", HttpHeaders.HOST, HttpHeaders.CONTENT_LENGTH),
|
||||
replacePattern(pattern, "\"<<beta>>\""))))
|
||||
.andReturn();
|
||||
HttpRequestCondition originalRequest = httpRequest(TemplateFormats.asciidoctor(),
|
||||
RequestMethod.GET, "/");
|
||||
for (String headerName : IterableEnumeration
|
||||
.of(result.getRequest().getHeaderNames())) {
|
||||
HttpRequestCondition originalRequest = httpRequest(TemplateFormats.asciidoctor(), RequestMethod.GET, "/");
|
||||
for (String headerName : IterableEnumeration.of(result.getRequest().getHeaderNames())) {
|
||||
originalRequest.header(headerName, result.getRequest().getHeader(headerName));
|
||||
}
|
||||
assertThat(
|
||||
new File("build/generated-snippets/original-request/http-request.adoc"))
|
||||
.has(content(originalRequest.header("Host", "localhost:8080")
|
||||
.header("Content-Length", "13")
|
||||
.content("{\"a\":\"alpha\"}")));
|
||||
HttpRequestCondition preprocessedRequest = httpRequest(
|
||||
TemplateFormats.asciidoctor(), RequestMethod.GET, "/");
|
||||
List<String> removedHeaders = Arrays.asList("a", HttpHeaders.HOST,
|
||||
HttpHeaders.CONTENT_LENGTH);
|
||||
for (String headerName : IterableEnumeration
|
||||
.of(result.getRequest().getHeaderNames())) {
|
||||
assertThat(new File("build/generated-snippets/original-request/http-request.adoc")).has(content(originalRequest
|
||||
.header("Host", "localhost:8080").header("Content-Length", "13").content("{\"a\":\"alpha\"}")));
|
||||
HttpRequestCondition preprocessedRequest = httpRequest(TemplateFormats.asciidoctor(), RequestMethod.GET, "/");
|
||||
List<String> removedHeaders = Arrays.asList("a", HttpHeaders.HOST, HttpHeaders.CONTENT_LENGTH);
|
||||
for (String headerName : IterableEnumeration.of(result.getRequest().getHeaderNames())) {
|
||||
if (!removedHeaders.contains(headerName)) {
|
||||
preprocessedRequest.header(headerName,
|
||||
result.getRequest().getHeader(headerName));
|
||||
preprocessedRequest.header(headerName, result.getRequest().getHeader(headerName));
|
||||
}
|
||||
}
|
||||
String prettyPrinted = String.format("{%n \"a\" : \"<<beta>>\"%n}");
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/preprocessed-request/http-request.adoc"))
|
||||
.has(content(preprocessedRequest.content(prettyPrinted)));
|
||||
assertThat(new File("build/generated-snippets/preprocessed-request/http-request.adoc"))
|
||||
.has(content(preprocessedRequest.content(prettyPrinted)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void defaultPreprocessedRequest() throws Exception {
|
||||
Pattern pattern = Pattern.compile("(\"alpha\")");
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)
|
||||
.operationPreprocessors().withRequestDefaults(prettyPrint(),
|
||||
removeHeaders("a", HttpHeaders.HOST,
|
||||
HttpHeaders.CONTENT_LENGTH),
|
||||
replacePattern(pattern, "\"<<beta>>\"")))
|
||||
.apply(documentationConfiguration(this.restDocumentation).operationPreprocessors().withRequestDefaults(
|
||||
prettyPrint(), removeHeaders("a", HttpHeaders.HOST, HttpHeaders.CONTENT_LENGTH),
|
||||
replacePattern(pattern, "\"<<beta>>\"")))
|
||||
.build();
|
||||
|
||||
MvcResult result = mockMvc
|
||||
.perform(get("/").header("a", "alpha").header("b", "bravo")
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.perform(get("/").header("a", "alpha").header("b", "bravo").contentType(MediaType.APPLICATION_JSON)
|
||||
.accept(MediaType.APPLICATION_JSON).content("{\"a\":\"alpha\"}"))
|
||||
.andDo(document("default-preprocessed-request")).andReturn();
|
||||
|
||||
HttpRequestCondition preprocessedRequest = httpRequest(
|
||||
TemplateFormats.asciidoctor(), RequestMethod.GET, "/");
|
||||
List<String> removedHeaders = Arrays.asList("a", HttpHeaders.HOST,
|
||||
HttpHeaders.CONTENT_LENGTH);
|
||||
for (String headerName : IterableEnumeration
|
||||
.of(result.getRequest().getHeaderNames())) {
|
||||
HttpRequestCondition preprocessedRequest = httpRequest(TemplateFormats.asciidoctor(), RequestMethod.GET, "/");
|
||||
List<String> removedHeaders = Arrays.asList("a", HttpHeaders.HOST, HttpHeaders.CONTENT_LENGTH);
|
||||
for (String headerName : IterableEnumeration.of(result.getRequest().getHeaderNames())) {
|
||||
if (!removedHeaders.contains(headerName)) {
|
||||
preprocessedRequest.header(headerName,
|
||||
result.getRequest().getHeader(headerName));
|
||||
preprocessedRequest.header(headerName, result.getRequest().getHeader(headerName));
|
||||
}
|
||||
}
|
||||
String prettyPrinted = String.format("{%n \"a\" : \"<<beta>>\"%n}");
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/default-preprocessed-request/http-request.adoc"))
|
||||
.has(content(preprocessedRequest.content(prettyPrinted)));
|
||||
assertThat(new File("build/generated-snippets/default-preprocessed-request/http-request.adoc"))
|
||||
.has(content(preprocessedRequest.content(prettyPrinted)));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -502,80 +421,61 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
|
||||
Pattern pattern = Pattern.compile("(\"alpha\")");
|
||||
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(document("original-response"))
|
||||
.andDo(document("preprocessed-response",
|
||||
preprocessResponse(prettyPrint(), maskLinks(), removeHeaders("a"),
|
||||
replacePattern(pattern, "\"<<beta>>\""))));
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("original-response"))
|
||||
.andDo(document("preprocessed-response", preprocessResponse(prettyPrint(), maskLinks(),
|
||||
removeHeaders("a"), replacePattern(pattern, "\"<<beta>>\""))));
|
||||
|
||||
String original = "{\"a\":\"alpha\",\"links\":[{\"rel\":\"rel\","
|
||||
+ "\"href\":\"href\"}]}";
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/original-response/http-response.adoc")).has(
|
||||
content(httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK)
|
||||
.header("a", "alpha")
|
||||
.header("Content-Type", "application/json;charset=UTF-8")
|
||||
.header(HttpHeaders.CONTENT_LENGTH,
|
||||
original.getBytes().length)
|
||||
.content(original)));
|
||||
String original = "{\"a\":\"alpha\",\"links\":[{\"rel\":\"rel\"," + "\"href\":\"href\"}]}";
|
||||
assertThat(new File("build/generated-snippets/original-response/http-response.adoc"))
|
||||
.has(content(httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK).header("a", "alpha")
|
||||
.header("Content-Type", "application/json;charset=UTF-8")
|
||||
.header(HttpHeaders.CONTENT_LENGTH, original.getBytes().length).content(original)));
|
||||
String prettyPrinted = String.format("{%n \"a\" : \"<<beta>>\",%n \"links\" : "
|
||||
+ "[ {%n \"rel\" : \"rel\",%n \"href\" : \"...\"%n } ]%n}");
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/preprocessed-response/http-response.adoc")).has(
|
||||
content(httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK)
|
||||
.header("Content-Type", "application/json;charset=UTF-8")
|
||||
.header(HttpHeaders.CONTENT_LENGTH,
|
||||
prettyPrinted.getBytes().length)
|
||||
.content(prettyPrinted)));
|
||||
assertThat(new File("build/generated-snippets/preprocessed-response/http-response.adoc"))
|
||||
.has(content(httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK)
|
||||
.header("Content-Type", "application/json;charset=UTF-8")
|
||||
.header(HttpHeaders.CONTENT_LENGTH, prettyPrinted.getBytes().length).content(prettyPrinted)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void defaultPreprocessedResponse() throws Exception {
|
||||
Pattern pattern = Pattern.compile("(\"alpha\")");
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)
|
||||
.operationPreprocessors().withResponseDefaults(prettyPrint(),
|
||||
maskLinks(), removeHeaders("a"),
|
||||
replacePattern(pattern, "\"<<beta>>\"")))
|
||||
.apply(documentationConfiguration(this.restDocumentation).operationPreprocessors().withResponseDefaults(
|
||||
prettyPrint(), maskLinks(), removeHeaders("a"), replacePattern(pattern, "\"<<beta>>\"")))
|
||||
.build();
|
||||
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk())
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("default-preprocessed-response"));
|
||||
|
||||
String prettyPrinted = String.format("{%n \"a\" : \"<<beta>>\",%n \"links\" : "
|
||||
+ "[ {%n \"rel\" : \"rel\",%n \"href\" : \"...\"%n } ]%n}");
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/default-preprocessed-response/http-response.adoc"))
|
||||
.has(content(
|
||||
httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK)
|
||||
.header("Content-Type",
|
||||
"application/json;charset=UTF-8")
|
||||
.header(HttpHeaders.CONTENT_LENGTH,
|
||||
prettyPrinted.getBytes().length)
|
||||
.content(prettyPrinted)));
|
||||
assertThat(new File("build/generated-snippets/default-preprocessed-response/http-response.adoc"))
|
||||
.has(content(httpResponse(TemplateFormats.asciidoctor(), HttpStatus.OK)
|
||||
.header("Content-Type", "application/json;charset=UTF-8")
|
||||
.header(HttpHeaders.CONTENT_LENGTH, prettyPrinted.getBytes().length).content(prettyPrinted)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customSnippetTemplate() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
ClassLoader classLoader = new URLClassLoader(new URL[] {
|
||||
new File("src/test/resources/custom-snippet-templates").toURI().toURL() },
|
||||
ClassLoader classLoader = new URLClassLoader(
|
||||
new URL[] { new File("src/test/resources/custom-snippet-templates").toURI().toURL() },
|
||||
getClass().getClassLoader());
|
||||
ClassLoader previous = Thread.currentThread().getContextClassLoader();
|
||||
Thread.currentThread().setContextClassLoader(classLoader);
|
||||
try {
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk())
|
||||
mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
|
||||
.andDo(document("custom-snippet-template"));
|
||||
}
|
||||
finally {
|
||||
Thread.currentThread().setContextClassLoader(previous);
|
||||
}
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/custom-snippet-template/curl-request.adoc"))
|
||||
.hasContent("Custom curl request");
|
||||
assertThat(new File("build/generated-snippets/custom-snippet-template/curl-request.adoc"))
|
||||
.hasContent("Custom curl request");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -583,24 +483,20 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
|
||||
mockMvc.perform(
|
||||
get("/custom/").contextPath("/custom").accept(MediaType.APPLICATION_JSON))
|
||||
mockMvc.perform(get("/custom/").contextPath("/custom").accept(MediaType.APPLICATION_JSON))
|
||||
.andExpect(status().isOk()).andDo(document("custom-context-path"));
|
||||
assertThat(new File(
|
||||
"build/generated-snippets/custom-context-path/curl-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format(
|
||||
"$ curl 'http://localhost:8080/custom/' -i -X GET \\%n"
|
||||
+ " -H 'Accept: application/json'"))));
|
||||
assertThat(new File("build/generated-snippets/custom-context-path/curl-request.adoc"))
|
||||
.has(content(codeBlock(TemplateFormats.asciidoctor(), "bash")
|
||||
.withContent(String.format("$ curl 'http://localhost:8080/custom/' -i -X GET \\%n"
|
||||
+ " -H 'Accept: application/json'"))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void multiPart() throws Exception {
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
|
||||
.apply(documentationConfiguration(this.restDocumentation)).build();
|
||||
mockMvc.perform(multipart("/upload").file("test", "content".getBytes()))
|
||||
.andExpect(status().isOk()).andDo(document("upload",
|
||||
requestParts(partWithName("test").description("Foo"))));
|
||||
mockMvc.perform(multipart("/upload").file("test", "content".getBytes())).andExpect(status().isOk())
|
||||
.andDo(document("upload", requestParts(partWithName("test").description("Foo"))));
|
||||
}
|
||||
|
||||
private void assertExpectedSnippetFilesExist(File directory, String... snippets) {
|
||||
@@ -615,9 +511,8 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
@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);
|
||||
@@ -632,8 +527,7 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
return SnippetConditions.codeBlock(format, language);
|
||||
}
|
||||
|
||||
private HttpRequestCondition httpRequest(TemplateFormat format,
|
||||
RequestMethod requestMethod, String uri) {
|
||||
private HttpRequestCondition httpRequest(TemplateFormat format, RequestMethod requestMethod, String uri) {
|
||||
return SnippetConditions.httpRequest(format, requestMethod, uri);
|
||||
}
|
||||
|
||||
@@ -649,7 +543,7 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
static class TestConfiguration {
|
||||
|
||||
@Bean
|
||||
public TestController testController() {
|
||||
TestController testController() {
|
||||
return new TestController();
|
||||
}
|
||||
|
||||
@@ -659,7 +553,7 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
private static class TestController {
|
||||
|
||||
@RequestMapping(value = "/", produces = "application/json;charset=UTF-8")
|
||||
public ResponseEntity<Map<String, Object>> foo() {
|
||||
ResponseEntity<Map<String, Object>> foo() {
|
||||
Map<String, Object> response = new HashMap<>();
|
||||
response.put("a", "alpha");
|
||||
Map<String, String> link = new HashMap<>();
|
||||
@@ -672,17 +566,17 @@ public class MockMvcRestDocumentationIntegrationTests {
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/company/5", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public String bar() {
|
||||
String bar() {
|
||||
return "{\"companyName\": \"FooBar\",\"employee\": [{\"name\": \"Lorem\",\"age\": \"42\"},{\"name\": \"Ipsum\",\"age\": \"24\"}]}";
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||
public void upload() {
|
||||
void upload() {
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping("/set-cookie")
|
||||
public void setCookie(HttpServletResponse response) {
|
||||
void setCookie(HttpServletResponse response) {
|
||||
Cookie cookie = new Cookie("name", "value");
|
||||
cookie.setDomain("localhost");
|
||||
cookie.setHttpOnly(true);
|
||||
|
||||
@@ -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.
|
||||
@@ -139,12 +139,10 @@ public class RestDocumentationRequestBuildersTests {
|
||||
assertUri(fileUpload(URI.create("/uri")), HttpMethod.POST);
|
||||
}
|
||||
|
||||
private void assertTemplate(MockHttpServletRequestBuilder builder,
|
||||
HttpMethod httpMethod) {
|
||||
private void assertTemplate(MockHttpServletRequestBuilder builder, HttpMethod httpMethod) {
|
||||
MockHttpServletRequest request = builder.buildRequest(this.servletContext);
|
||||
assertThat((String) request
|
||||
.getAttribute(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE))
|
||||
.isEqualTo("{template}");
|
||||
assertThat((String) request.getAttribute(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE))
|
||||
.isEqualTo("{template}");
|
||||
assertThat(request.getRequestURI()).isEqualTo("t");
|
||||
assertThat(request.getMethod()).isEqualTo(httpMethod.name());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user