From 74f9e272fd5af48c30256d4bf6f3e4fc5abe2eb8 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Fri, 12 Feb 2016 20:57:53 +0000 Subject: [PATCH] Apply Eclipse Mars' code formatting --- config/checkstyle/checkstyle.xml | 2 +- config/eclipse/org.eclipse.jdt.core.prefs | 4 +- config/eclipse/org.eclipse.jdt.ui.prefs | 4 +- .../restdocs/config/package-info.java | 1 - .../constraints/ConstraintDescriptions.java | 7 +- ...ceBundleConstraintDescriptionResolver.java | 12 +- .../ValidatorConstraintResolver.java | 7 +- .../restdocs/constraints/package-info.java | 1 - .../restdocs/curl/CurlRequestSnippet.java | 14 +- .../restdocs/curl/QueryStringParser.java | 8 +- .../restdocs/curl/package-info.java | 1 - .../restdocs/http/HttpRequestSnippet.java | 13 +- .../restdocs/http/package-info.java | 1 - .../hypermedia/AbstractJsonLinkExtractor.java | 8 +- .../hypermedia/HypermediaDocumentation.java | 2 +- .../restdocs/hypermedia/Link.java | 4 +- .../restdocs/hypermedia/LinksSnippet.java | 10 +- .../restdocs/hypermedia/package-info.java | 1 - .../operation/AbstractOperationMessage.java | 4 +- .../operation/OperationRequestFactory.java | 11 +- .../operation/OperationResponseFactory.java | 14 +- .../operation/StandardOperationRequest.java | 4 +- .../StandardOperationRequestPart.java | 4 +- .../operation/StandardOperationResponse.java | 4 +- .../restdocs/operation/package-info.java | 5 +- ...ContentModifyingOperationPreprocessor.java | 4 +- .../LinkMaskingContentModifier.java | 4 +- .../operation/preprocess/Preprocessors.java | 10 +- .../PrettyPrintingContentModifier.java | 21 +- .../operation/preprocess/package-info.java | 1 - .../restdocs/package-info.java | 1 - .../payload/AbstractFieldsSnippet.java | 7 +- .../restdocs/payload/JsonContentHandler.java | 8 +- .../restdocs/payload/JsonFieldPath.java | 4 +- .../restdocs/payload/JsonFieldProcessor.java | 20 +- .../restdocs/payload/XmlContentHandler.java | 13 +- .../restdocs/payload/package-info.java | 1 - .../request/AbstractParametersSnippet.java | 9 +- .../request/PathParametersSnippet.java | 4 +- .../restdocs/request/package-info.java | 1 - .../restdocs/snippet/IgnorableDescriptor.java | 4 +- ...cumentationContextPlaceholderResolver.java | 5 +- .../snippet/StandardWriterResolver.java | 6 +- .../restdocs/snippet/TemplatedSnippet.java | 8 +- .../restdocs/snippet/package-info.java | 1 - .../StandardTemplateResourceResolver.java | 7 +- .../mustache/MustacheTemplateEngine.java | 4 +- .../templates/mustache/package-info.java | 1 - .../restdocs/templates/package-info.java | 1 - .../ConstraintDescriptionsTests.java | 3 +- ...dleConstraintDescriptionResolverTests.java | 59 ++-- .../ValidatorConstraintResolverTests.java | 6 +- .../curl/CurlRequestSnippetTests.java | 279 +++++++-------- .../restdocs/curl/QueryStringParserTests.java | 21 +- .../headers/RequestHeadersSnippetTests.java | 139 ++++---- .../headers/ResponseHeadersSnippetTests.java | 138 ++++---- .../http/HttpRequestSnippetTests.java | 196 ++++++----- .../http/HttpResponseSnippetTests.java | 64 ++-- .../ContentTypeLinkExtractorTests.java | 5 +- .../LinkExtractorsPayloadTests.java | 4 +- .../hypermedia/LinksSnippetTests.java | 126 ++++--- ...ntModifyingOperationPreprocessorTests.java | 1 + ...tingOperationRequestPreprocessorTests.java | 11 +- ...ingOperationResponsePreprocessorTests.java | 15 +- ...derRemovingOperationPreprocessorTests.java | 1 + .../LinkMaskingContentModifierTests.java | 20 +- .../PatternReplacingContentModifierTests.java | 6 +- .../PrettyPrintingContentModifierTests.java | 21 +- .../payload/JsonFieldProcessorTests.java | 34 +- .../payload/JsonFieldTypeResolverTests.java | 22 +- .../payload/RequestFieldsSnippetTests.java | 257 +++++++------- .../payload/ResponseFieldsSnippetTests.java | 332 ++++++++++-------- .../request/PathParametersSnippetTests.java | 130 ++++--- .../RequestParametersSnippetTests.java | 119 ++++--- ...tationContextPlaceholderResolverTests.java | 14 +- .../snippet/StandardWriterResolverTests.java | 25 +- .../snippet/TemplatedSnippetTests.java | 7 +- ...StandardTemplateResourceResolverTests.java | 9 +- .../restdocs/test/ExpectedSnippet.java | 5 +- .../restdocs/test/OperationBuilder.java | 9 +- .../restdocs/test/SnippetMatchers.java | 34 +- .../MockMvcOperationRequestFactory.java | 30 +- .../RestDocumentationMockMvcConfigurer.java | 15 +- .../RestDocumentationRequestBuilders.java | 32 +- .../RestDocumentationResultHandler.java | 20 +- .../restdocs/mockmvc/SnippetConfigurer.java | 9 +- .../restdocs/mockmvc/UriConfigurer.java | 4 +- .../restdocs/mockmvc/package-info.java | 1 - .../MockMvcOperationRequestFactoryTests.java | 38 +- ...kMvcRestDocumentationIntegrationTests.java | 170 ++++----- .../RestDocumentationConfigurerTests.java | 17 +- ...RestDocumentationRequestBuildersTests.java | 1 + 92 files changed, 1446 insertions(+), 1294 deletions(-) diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index b7908d74..d9cdead7 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -81,7 +81,7 @@ - + diff --git a/config/eclipse/org.eclipse.jdt.core.prefs b/config/eclipse/org.eclipse.jdt.core.prefs index 462feac8..62ded11b 100644 --- a/config/eclipse/org.eclipse.jdt.core.prefs +++ b/config/eclipse/org.eclipse.jdt.core.prefs @@ -10,7 +10,6 @@ org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.7 @@ -384,8 +383,9 @@ org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=tab org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_on_off_tags=true org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.javaFormatter=org.springframework.ide.eclipse.jdt.formatter.javaformatter diff --git a/config/eclipse/org.eclipse.jdt.ui.prefs b/config/eclipse/org.eclipse.jdt.ui.prefs index 681d02ad..429b3023 100644 --- a/config/eclipse/org.eclipse.jdt.ui.prefs +++ b/config/eclipse/org.eclipse.jdt.ui.prefs @@ -62,9 +62,9 @@ editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_Spring REST Docs Java Conventions formatter_settings_version=12 org.eclipse.jdt.ui.exception.name=e -org.eclipse.jdt.ui.gettersetter.use.is=false +org.eclipse.jdt.ui.gettersetter.use.is=true org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=java;javax;org;com;;\#; +org.eclipse.jdt.ui.importorder=java;javax;;org.springframework;\#; org.eclipse.jdt.ui.javadoc=true org.eclipse.jdt.ui.keywordthis=false org.eclipse.jdt.ui.ondemandthreshold=9999 diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/config/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/config/package-info.java index f338eae8..1b4a13e0 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/config/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/config/package-info.java @@ -18,4 +18,3 @@ * Classes for configuring Spring REST Docs. */ package org.springframework.restdocs.config; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ConstraintDescriptions.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ConstraintDescriptions.java index 7fc11026..c5585798 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ConstraintDescriptions.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ConstraintDescriptions.java @@ -56,7 +56,8 @@ public class ConstraintDescriptions { * @param constraintResolver the constraint resolver */ public ConstraintDescriptions(Class clazz, ConstraintResolver constraintResolver) { - this(clazz, constraintResolver, new ResourceBundleConstraintDescriptionResolver()); + this(clazz, constraintResolver, + new ResourceBundleConstraintDescriptionResolver()); } /** @@ -95,8 +96,8 @@ public class ConstraintDescriptions { * @return the list of constraint descriptions */ public List descriptionsForProperty(String property) { - List constraints = this.constraintResolver.resolveForProperty( - property, this.clazz); + List constraints = this.constraintResolver + .resolveForProperty(property, this.clazz); List descriptions = new ArrayList<>(); for (Constraint constraint : constraints) { descriptions.add(this.descriptionResolver.resolveDescription(constraint)); diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolver.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolver.java index 660ed4b5..759950a6 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolver.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolver.java @@ -64,8 +64,8 @@ import org.springframework.util.PropertyPlaceholderHelper.PlaceholderResolver; * * @author Andy Wilkinson */ -public class ResourceBundleConstraintDescriptionResolver implements - ConstraintDescriptionResolver { +public class ResourceBundleConstraintDescriptionResolver + implements ConstraintDescriptionResolver { private final PropertyPlaceholderHelper propertyPlaceholderHelper = new PropertyPlaceholderHelper( "${", "}"); @@ -99,8 +99,8 @@ public class ResourceBundleConstraintDescriptionResolver implements try { return ResourceBundle.getBundle( ResourceBundleConstraintDescriptionResolver.class.getPackage() - .getName() + "." + name, Locale.getDefault(), Thread - .currentThread().getContextClassLoader()); + .getName() + "." + name, + Locale.getDefault(), Thread.currentThread().getContextClassLoader()); } catch (MissingResourceException ex) { return null; @@ -126,8 +126,8 @@ public class ResourceBundleConstraintDescriptionResolver implements return this.defaultDescriptions.getString(key); } - private static final class ConstraintPlaceholderResolver implements - PlaceholderResolver { + private static final class ConstraintPlaceholderResolver + implements PlaceholderResolver { private final Constraint constraint; diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ValidatorConstraintResolver.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ValidatorConstraintResolver.java index 664691c6..531157b2 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ValidatorConstraintResolver.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/ValidatorConstraintResolver.java @@ -70,10 +70,9 @@ public class ValidatorConstraintResolver implements ConstraintResolver { if (propertyDescriptor != null) { for (ConstraintDescriptor constraintDescriptor : propertyDescriptor .getConstraintDescriptors()) { - constraints - .add(new Constraint(constraintDescriptor.getAnnotation() - .annotationType().getName(), constraintDescriptor - .getAttributes())); + constraints.add(new Constraint( + constraintDescriptor.getAnnotation().annotationType().getName(), + constraintDescriptor.getAttributes())); } } return constraints; diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/package-info.java index 9fc48616..fb1e842e 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/constraints/package-info.java @@ -18,4 +18,3 @@ * Documenting a RESTful API's constraints. */ package org.springframework.restdocs.constraints; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/CurlRequestSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/CurlRequestSnippet.java index 3e903f37..4f4ea07b 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/CurlRequestSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/CurlRequestSnippet.java @@ -48,6 +48,7 @@ import org.springframework.util.StringUtils; public class CurlRequestSnippet extends TemplatedSnippet { private static final Set HEADER_FILTERS; + static { Set headerFilters = new HashSet<>(); headerFilters.add(new NamedHeaderFilter(HttpHeaders.HOST)); @@ -102,7 +103,8 @@ public class CurlRequestSnippet extends TemplatedSnippet { writer.print("-i"); } - private void writeUserOptionIfNecessary(OperationRequest request, PrintWriter writer) { + private void writeUserOptionIfNecessary(OperationRequest request, + PrintWriter writer) { List headerValue = request.getHeaders().get(HttpHeaders.AUTHORIZATION); if (BasicAuthHeaderFilter.isBasicAuthHeader(headerValue)) { String credentials = BasicAuthHeaderFilter.decodeBasicAuthHeader(headerValue); @@ -110,7 +112,8 @@ public class CurlRequestSnippet extends TemplatedSnippet { } } - private void writeHttpMethodIfNecessary(OperationRequest request, PrintWriter writer) { + private void writeHttpMethodIfNecessary(OperationRequest request, + PrintWriter writer) { if (!HttpMethod.GET.equals(request.getMethod())) { writer.print(String.format(" -X %s", request.getMethod())); } @@ -145,8 +148,8 @@ public class CurlRequestSnippet extends TemplatedSnippet { writer.printf("@%s", part.getSubmittedFileName()); } if (part.getHeaders().getContentType() != null) { - writer.append(";type=").append( - part.getHeaders().getContentType().toString()); + writer.append(";type=") + .append(part.getHeaders().getContentType().toString()); } writer.append("'"); @@ -170,7 +173,8 @@ public class CurlRequestSnippet extends TemplatedSnippet { } } - private void writeContentUsingParameters(OperationRequest request, PrintWriter writer) { + private void writeContentUsingParameters(OperationRequest request, + PrintWriter writer) { Parameters uniqueParameters = getUniqueParameters(request); String queryString = uniqueParameters.toQueryString(); if (StringUtils.hasText(queryString)) { diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/QueryStringParser.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/QueryStringParser.java index d09d6e44..0982adf9 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/QueryStringParser.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/QueryStringParser.java @@ -64,8 +64,8 @@ public class QueryStringParser { parameters.add(decode(name), decode(value)); } else { - throw new IllegalArgumentException("The parameter '" + parameter - + "' is malformed"); + throw new IllegalArgumentException( + "The parameter '" + parameter + "' is malformed"); } } @@ -74,8 +74,8 @@ public class QueryStringParser { return URLDecoder.decode(encoded, "UTF-8"); } catch (UnsupportedEncodingException ex) { - throw new IllegalStateException("Unable to URL encode " + encoded - + " using UTF-8", ex); + throw new IllegalStateException( + "Unable to URL encode " + encoded + " using UTF-8", ex); } } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/package-info.java index 85ee026a..7c07b91e 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/curl/package-info.java @@ -18,4 +18,3 @@ * Documenting the curl command required to make a request to a RESTful API. */ package org.springframework.restdocs.curl; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpRequestSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpRequestSnippet.java index 26d209fa..38d1e35f 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpRequestSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpRequestSnippet.java @@ -66,12 +66,9 @@ public class HttpRequestSnippet extends TemplatedSnippet { protected Map createModel(Operation operation) { Map model = new HashMap<>(); model.put("method", operation.getRequest().getMethod()); - model.put( - "path", - operation.getRequest().getUri().getRawPath() - + (StringUtils.hasText(operation.getRequest().getUri() - .getRawQuery()) ? "?" - + operation.getRequest().getUri().getRawQuery() : "")); + model.put("path", operation.getRequest().getUri().getRawPath() + + (StringUtils.hasText(operation.getRequest().getUri().getRawQuery()) + ? "?" + operation.getRequest().getUri().getRawQuery() : "")); model.put("headers", getHeaders(operation.getRequest())); model.put("requestBody", getRequestBody(operation.getRequest())); return model; @@ -149,8 +146,8 @@ public class HttpRequestSnippet extends TemplatedSnippet { } private void writePart(OperationRequestPart part, PrintWriter writer) { - writePart(part.getName(), part.getContentAsString(), part.getHeaders() - .getContentType(), writer); + writePart(part.getName(), part.getContentAsString(), + part.getHeaders().getContentType(), writer); } private void writePart(String name, String value, MediaType contentType, diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/package-info.java index 5d320601..da609abb 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/package-info.java @@ -19,4 +19,3 @@ * returned. */ package org.springframework.restdocs.http; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/AbstractJsonLinkExtractor.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/AbstractJsonLinkExtractor.java index cc9f115a..a345cd2d 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/AbstractJsonLinkExtractor.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/AbstractJsonLinkExtractor.java @@ -20,10 +20,10 @@ import java.io.IOException; import java.util.List; import java.util.Map; -import org.springframework.restdocs.operation.OperationResponse; - import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.restdocs.operation.OperationResponse; + /** * Abstract base class for a {@link LinkExtractor} that extracts links from JSON. * @@ -37,8 +37,8 @@ abstract class AbstractJsonLinkExtractor implements LinkExtractor { @SuppressWarnings("unchecked") public Map> extractLinks(OperationResponse response) throws IOException { - Map jsonContent = this.objectMapper.readValue( - response.getContent(), Map.class); + Map jsonContent = this.objectMapper + .readValue(response.getContent(), Map.class); return extractLinks(jsonContent); } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/HypermediaDocumentation.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/HypermediaDocumentation.java index a4fbf42d..d5ddaf0b 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/HypermediaDocumentation.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/HypermediaDocumentation.java @@ -170,7 +170,7 @@ public abstract class HypermediaDocumentation { * "href": "http://example.com/foo" * } * ] - * } + * } * * * @return The extractor for Atom-style links diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/Link.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/Link.java index eed9dfb4..112886f0 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/Link.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/Link.java @@ -88,8 +88,8 @@ public class Link { @Override public String toString() { - return new ToStringCreator(this).append("rel", this.rel) - .append("href", this.href).toString(); + return new ToStringCreator(this).append("rel", this.rel).append("href", this.href) + .toString(); } } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/LinksSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/LinksSnippet.java index b7f868c8..771e2e7a 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/LinksSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/LinksSnippet.java @@ -56,7 +56,8 @@ public class LinksSnippet extends TemplatedSnippet { * @param linkExtractor the link extractor * @param descriptors the link descriptors */ - protected LinksSnippet(LinkExtractor linkExtractor, List descriptors) { + protected LinksSnippet(LinkExtractor linkExtractor, + List descriptors) { this(linkExtractor, descriptors, null); } @@ -76,9 +77,10 @@ public class LinksSnippet extends TemplatedSnippet { for (LinkDescriptor descriptor : descriptors) { Assert.notNull(descriptor.getRel(), "Link descriptors must have a rel"); if (!descriptor.isIgnored()) { - Assert.notNull(descriptor.getDescription(), "The descriptor for link '" - + descriptor.getRel() + "' must either have a description or be" - + " marked as " + "ignored"); + Assert.notNull(descriptor.getDescription(), + "The descriptor for link '" + descriptor.getRel() + + "' must either have a description or be" + " marked as " + + "ignored"); } this.descriptorsByRel.put(descriptor.getRel(), descriptor); } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/package-info.java index c8d3dab7..0d3ad26d 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/hypermedia/package-info.java @@ -18,4 +18,3 @@ * Documenting a RESTful API that uses hypermedia. */ package org.springframework.restdocs.hypermedia; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/AbstractOperationMessage.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/AbstractOperationMessage.java index c5ede617..41e8fec3 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/AbstractOperationMessage.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/AbstractOperationMessage.java @@ -49,8 +49,8 @@ abstract class AbstractOperationMessage { public String getContentAsString() { if (this.content.length > 0) { Charset charset = extractCharsetFromContentTypeHeader(); - return charset != null ? new String(this.content, charset) : new String( - this.content); + return charset != null ? new String(this.content, charset) + : new String(this.content); } return ""; } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/OperationRequestFactory.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/OperationRequestFactory.java index 693be1dd..c105fd75 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/OperationRequestFactory.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/OperationRequestFactory.java @@ -45,8 +45,8 @@ public class OperationRequestFactory { public OperationRequest create(URI uri, HttpMethod method, byte[] content, HttpHeaders headers, Parameters parameters, Collection parts) { - return new StandardOperationRequest(uri, method, content, augmentHeaders(headers, - uri, content), parameters, parts); + return new StandardOperationRequest(uri, method, content, + augmentHeaders(headers, uri, content), parameters, parts); } /** @@ -74,7 +74,8 @@ public class OperationRequestFactory { * * @return The new request with the new content */ - public OperationRequest createFrom(OperationRequest original, HttpHeaders newHeaders) { + public OperationRequest createFrom(OperationRequest original, + HttpHeaders newHeaders) { return new StandardOperationRequest(original.getUri(), original.getMethod(), original.getContent(), newHeaders, original.getParameters(), original.getParts()); @@ -89,8 +90,8 @@ public class OperationRequestFactory { private HttpHeaders getUpdatedHeaders(HttpHeaders originalHeaders, byte[] updatedContent) { - return new HttpHeadersHelper(originalHeaders).updateContentLengthHeaderIfPresent( - updatedContent).getHeaders(); + return new HttpHeadersHelper(originalHeaders) + .updateContentLengthHeaderIfPresent(updatedContent).getHeaders(); } } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/OperationResponseFactory.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/OperationResponseFactory.java index c3417c9f..1cfd1434 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/OperationResponseFactory.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/OperationResponseFactory.java @@ -36,7 +36,8 @@ public class OperationResponseFactory { * @param content the content of the request * @return the {@code OperationResponse} */ - public OperationResponse create(HttpStatus status, HttpHeaders headers, byte[] content) { + public OperationResponse create(HttpStatus status, HttpHeaders headers, + byte[] content) { return new StandardOperationResponse(status, augmentHeaders(headers, content), content); } @@ -53,8 +54,8 @@ public class OperationResponseFactory { * @return The new response with the new content */ public OperationResponse createFrom(OperationResponse original, byte[] newContent) { - return new StandardOperationResponse(original.getStatus(), getUpdatedHeaders( - original.getHeaders(), newContent), newContent); + return new StandardOperationResponse(original.getStatus(), + getUpdatedHeaders(original.getHeaders(), newContent), newContent); } /** @@ -66,7 +67,8 @@ public class OperationResponseFactory { * * @return The new response with the new headers */ - public OperationResponse createFrom(OperationResponse original, HttpHeaders newHeaders) { + public OperationResponse createFrom(OperationResponse original, + HttpHeaders newHeaders) { return new StandardOperationResponse(original.getStatus(), newHeaders, original.getContent()); } @@ -78,8 +80,8 @@ public class OperationResponseFactory { private HttpHeaders getUpdatedHeaders(HttpHeaders originalHeaders, byte[] updatedContent) { - return new HttpHeadersHelper(originalHeaders).updateContentLengthHeaderIfPresent( - updatedContent).getHeaders(); + return new HttpHeadersHelper(originalHeaders) + .updateContentLengthHeaderIfPresent(updatedContent).getHeaders(); } } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationRequest.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationRequest.java index 305d7b2a..a09bd645 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationRequest.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationRequest.java @@ -28,8 +28,8 @@ import org.springframework.http.HttpMethod; * * @author Andy Wilkinson */ -class StandardOperationRequest extends AbstractOperationMessage implements - OperationRequest { +class StandardOperationRequest extends AbstractOperationMessage + implements OperationRequest { private HttpMethod method; diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationRequestPart.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationRequestPart.java index 8ea231a4..e9fee9d7 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationRequestPart.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationRequestPart.java @@ -23,8 +23,8 @@ import org.springframework.http.HttpHeaders; * * @author Andy Wilkinson */ -class StandardOperationRequestPart extends AbstractOperationMessage implements - OperationRequestPart { +class StandardOperationRequestPart extends AbstractOperationMessage + implements OperationRequestPart { private final String name; diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationResponse.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationResponse.java index 32dfa57f..0131a4b5 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationResponse.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/StandardOperationResponse.java @@ -24,8 +24,8 @@ import org.springframework.http.HttpStatus; * * @author Andy Wilkinson */ -class StandardOperationResponse extends AbstractOperationMessage implements - OperationResponse { +class StandardOperationResponse extends AbstractOperationMessage + implements OperationResponse { private final HttpStatus status; diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/package-info.java index d7786bca..e9ba93d9 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/package-info.java @@ -15,8 +15,7 @@ */ /** - * Operation API that describes a request that was sent and the response that was - * received when calling a RESTful API. + * Operation API that describes a request that was sent and the response that was received + * when calling a RESTful API. */ package org.springframework.restdocs.operation; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/ContentModifyingOperationPreprocessor.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/ContentModifyingOperationPreprocessor.java index 60c704aa..d18948e3 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/ContentModifyingOperationPreprocessor.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/ContentModifyingOperationPreprocessor.java @@ -54,8 +54,8 @@ public class ContentModifyingOperationPreprocessor implements OperationPreproces @Override public OperationResponse preprocess(OperationResponse response) { - byte[] modifiedContent = this.contentModifier.modifyContent( - response.getContent(), response.getHeaders().getContentType()); + byte[] modifiedContent = this.contentModifier.modifyContent(response.getContent(), + response.getHeaders().getContentType()); return this.responseFactory.createFrom(response, modifiedContent); } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/LinkMaskingContentModifier.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/LinkMaskingContentModifier.java index 9af9c03f..928f700f 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/LinkMaskingContentModifier.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/LinkMaskingContentModifier.java @@ -29,8 +29,8 @@ class LinkMaskingContentModifier implements ContentModifier { private static final String DEFAULT_MASK = "..."; - private static final Pattern LINK_HREF = Pattern.compile( - "\"href\"\\s*:\\s*\"(.*?)\"", Pattern.DOTALL); + private static final Pattern LINK_HREF = Pattern.compile("\"href\"\\s*:\\s*\"(.*?)\"", + Pattern.DOTALL); private final ContentModifier contentModifier; diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/Preprocessors.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/Preprocessors.java index b4aa590d..35b5c1fd 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/Preprocessors.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/Preprocessors.java @@ -90,7 +90,8 @@ public final class Preprocessors { * @return the preprocessor */ public static OperationPreprocessor maskLinks() { - return new ContentModifyingOperationPreprocessor(new LinkMaskingContentModifier()); + return new ContentModifyingOperationPreprocessor( + new LinkMaskingContentModifier()); } /** @@ -101,8 +102,8 @@ public final class Preprocessors { * @return the preprocessor */ public static OperationPreprocessor maskLinks(String mask) { - return new ContentModifyingOperationPreprocessor(new LinkMaskingContentModifier( - mask)); + return new ContentModifyingOperationPreprocessor( + new LinkMaskingContentModifier(mask)); } /** @@ -114,7 +115,8 @@ public final class Preprocessors { * @param replacement the replacement * @return the preprocessor */ - public static OperationPreprocessor replacePattern(Pattern pattern, String replacement) { + public static OperationPreprocessor replacePattern(Pattern pattern, + String replacement) { return new ContentModifyingOperationPreprocessor( new PatternReplacingContentModifier(pattern, replacement)); } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/PrettyPrintingContentModifier.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/PrettyPrintingContentModifier.java index 9665fd09..b722038e 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/PrettyPrintingContentModifier.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/PrettyPrintingContentModifier.java @@ -34,15 +34,15 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.sax.SAXSource; import javax.xml.transform.stream.StreamResult; -import org.springframework.http.MediaType; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; import org.xml.sax.ErrorHandler; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.XMLReader; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; +import org.springframework.http.MediaType; /** * A {@link ContentModifier} that modifies the content by pretty printing it. @@ -52,8 +52,8 @@ import com.fasterxml.jackson.databind.SerializationFeature; public class PrettyPrintingContentModifier implements ContentModifier { private static final List PRETTY_PRINTERS = Collections - .unmodifiableList(Arrays.asList(new JsonPrettyPrinter(), - new XmlPrettyPrinter())); + .unmodifiableList( + Arrays.asList(new JsonPrettyPrinter(), new XmlPrettyPrinter())); @Override public byte[] modifyContent(byte[] originalContent, MediaType contentType) { @@ -98,8 +98,8 @@ public class PrettyPrintingContentModifier implements ContentModifier { SAXParser parser = parserFactory.newSAXParser(); XMLReader xmlReader = parser.getXMLReader(); xmlReader.setErrorHandler(new SilentErrorHandler()); - return new SAXSource(xmlReader, new InputSource(new ByteArrayInputStream( - original))); + return new SAXSource(xmlReader, + new InputSource(new ByteArrayInputStream(original))); } private static final class SilentErrorListener implements ErrorListener { @@ -111,7 +111,8 @@ public class PrettyPrintingContentModifier implements ContentModifier { } @Override - public void error(TransformerException exception) throws TransformerException { + public void error(TransformerException exception) + throws TransformerException { // Suppress } @@ -146,8 +147,8 @@ public class PrettyPrintingContentModifier implements ContentModifier { @Override public String prettyPrint(byte[] original) throws IOException { - ObjectMapper objectMapper = new ObjectMapper().configure( - SerializationFeature.INDENT_OUTPUT, true); + ObjectMapper objectMapper = new ObjectMapper() + .configure(SerializationFeature.INDENT_OUTPUT, true); return objectMapper.writeValueAsString(objectMapper.readTree(original)); } } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/package-info.java index 55913531..a00ceb0e 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/operation/preprocess/package-info.java @@ -18,4 +18,3 @@ * Support for preprocessing an operation prior to it being documented. */ package org.springframework.restdocs.operation.preprocess; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/package-info.java index 2d3767b2..73fee669 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/package-info.java @@ -18,4 +18,3 @@ * Core Spring REST Docs classes. */ package org.springframework.restdocs; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/AbstractFieldsSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/AbstractFieldsSnippet.java index 3257be17..dcff13bd 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/AbstractFieldsSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/AbstractFieldsSnippet.java @@ -57,9 +57,10 @@ public abstract class AbstractFieldsSnippet extends TemplatedSnippet { for (FieldDescriptor descriptor : descriptors) { Assert.notNull(descriptor.getPath(), "Field descriptors must have a path"); if (!descriptor.isIgnored()) { - Assert.notNull(descriptor.getDescription(), "The descriptor for field '" - + descriptor.getPath() + "' must either have a description or" - + " be marked as " + "ignored"); + Assert.notNull(descriptor.getDescription(), + "The descriptor for field '" + descriptor.getPath() + + "' must either have a description or" + " be marked as " + + "ignored"); } } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonContentHandler.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonContentHandler.java index b08f1427..779b75fb 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonContentHandler.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonContentHandler.java @@ -44,13 +44,13 @@ class JsonContentHandler implements ContentHandler { } @Override - public List findMissingFields(List fieldDescriptors) { + public List findMissingFields( + List fieldDescriptors) { List missingFields = new ArrayList<>(); Object payload = readContent(); for (FieldDescriptor fieldDescriptor : fieldDescriptors) { - if (!fieldDescriptor.isOptional() - && !this.fieldProcessor.hasField( - JsonFieldPath.compile(fieldDescriptor.getPath()), payload)) { + if (!fieldDescriptor.isOptional() && !this.fieldProcessor.hasField( + JsonFieldPath.compile(fieldDescriptor.getPath()), payload)) { missingFields.add(fieldDescriptor); } } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonFieldPath.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonFieldPath.java index 3eefe20c..10478a83 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonFieldPath.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonFieldPath.java @@ -87,8 +87,8 @@ final class JsonFieldPath { List segments = new ArrayList<>(); while (matcher.find()) { if (previous != matcher.start()) { - segments.addAll(extractDotSeparatedSegments(path.substring(previous, - matcher.start()))); + segments.addAll(extractDotSeparatedSegments( + path.substring(previous, matcher.start()))); } if (matcher.group(1) != null) { segments.add(matcher.group(1)); diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonFieldProcessor.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonFieldProcessor.java index 5e4ed29d..fb63a214 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonFieldProcessor.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/JsonFieldProcessor.java @@ -89,26 +89,30 @@ final class JsonFieldProcessor { } } - private void handleListPayload(ProcessingContext context, MatchCallback matchCallback) { + private void handleListPayload(ProcessingContext context, + MatchCallback matchCallback) { List list = context.getPayload(); final Iterator items = list.iterator(); if (context.isLeaf()) { while (items.hasNext()) { Object item = items.next(); - matchCallback.foundMatch(new ListMatch(items, list, item, context - .getParentMatch())); + matchCallback.foundMatch( + new ListMatch(items, list, item, context.getParentMatch())); } } else { while (items.hasNext()) { Object item = items.next(); - traverse(context.descend(item, new ListMatch(items, list, item, - context.parent)), matchCallback); + traverse( + context.descend(item, + new ListMatch(items, list, item, context.parent)), + matchCallback); } } } - private void handleMapPayload(ProcessingContext context, MatchCallback matchCallback) { + private void handleMapPayload(ProcessingContext context, + MatchCallback matchCallback) { Map map = context.getPayload(); Object item = map.get(context.getSegment()); MapMatch mapMatch = new MapMatch(item, map, context.getSegment(), @@ -238,8 +242,8 @@ final class JsonFieldProcessor { } private ProcessingContext descend(Object payload, Match match) { - return new ProcessingContext(payload, this.path, this.segments.subList(1, - this.segments.size()), match); + return new ProcessingContext(payload, this.path, + this.segments.subList(1, this.segments.size()), match); } } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/XmlContentHandler.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/XmlContentHandler.java index 79801373..67e2763d 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/XmlContentHandler.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/XmlContentHandler.java @@ -63,7 +63,8 @@ class XmlContentHandler implements ContentHandler { } @Override - public List findMissingFields(List fieldDescriptors) { + public List findMissingFields( + List fieldDescriptors) { List missingFields = new ArrayList<>(); Document payload = readPayload(); for (FieldDescriptor fieldDescriptor : fieldDescriptors) { @@ -78,7 +79,8 @@ class XmlContentHandler implements ContentHandler { return missingFields; } - private NodeList findMatchingNodes(FieldDescriptor fieldDescriptor, Document payload) { + private NodeList findMatchingNodes(FieldDescriptor fieldDescriptor, + Document payload) { try { return (NodeList) createXPath(fieldDescriptor.getPath()).evaluate(payload, XPathConstants.NODESET); @@ -90,15 +92,16 @@ class XmlContentHandler implements ContentHandler { private Document readPayload() { try { - return this.documentBuilder.parse(new InputSource(new ByteArrayInputStream( - this.rawContent))); + return this.documentBuilder + .parse(new InputSource(new ByteArrayInputStream(this.rawContent))); } catch (Exception ex) { throw new PayloadHandlingException(ex); } } - private XPathExpression createXPath(String fieldPath) throws XPathExpressionException { + private XPathExpression createXPath(String fieldPath) + throws XPathExpressionException { return XPathFactory.newInstance().newXPath().compile(fieldPath); } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/package-info.java index f306a019..2c3281d6 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/package-info.java @@ -18,4 +18,3 @@ * Documenting the payload of a RESTful API's requests and responses. */ package org.springframework.restdocs.payload; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/AbstractParametersSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/AbstractParametersSnippet.java index 7eb6e11c..0be93022 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/AbstractParametersSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/AbstractParametersSnippet.java @@ -54,7 +54,8 @@ public abstract class AbstractParametersSnippet extends TemplatedSnippet { List descriptors, Map attributes) { super(snippetName, attributes); for (ParameterDescriptor descriptor : descriptors) { - Assert.notNull(descriptor.getName(), "Parameter descriptors must have a name"); + Assert.notNull(descriptor.getName(), + "Parameter descriptors must have a name"); if (!descriptor.isIgnored()) { Assert.notNull(descriptor.getDescription(), "The descriptor for parameter '" + descriptor.getName() @@ -71,7 +72,8 @@ public abstract class AbstractParametersSnippet extends TemplatedSnippet { Map model = new HashMap<>(); List> parameters = new ArrayList<>(); - for (Entry entry : this.descriptorsByName.entrySet()) { + for (Entry entry : this.descriptorsByName + .entrySet()) { ParameterDescriptor descriptor = entry.getValue(); if (!descriptor.isIgnored()) { parameters.add(createModelForDescriptor(descriptor)); @@ -131,7 +133,8 @@ public abstract class AbstractParametersSnippet extends TemplatedSnippet { * @param descriptor the descriptor * @return the model */ - protected Map createModelForDescriptor(ParameterDescriptor descriptor) { + protected Map createModelForDescriptor( + ParameterDescriptor descriptor) { Map model = new HashMap<>(); model.put("name", descriptor.getName()); model.put("description", descriptor.getDescription()); diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/PathParametersSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/PathParametersSnippet.java index 5df99f6f..4186faa0 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/PathParametersSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/PathParametersSnippet.java @@ -90,8 +90,8 @@ public class PathParametersSnippet extends AbstractParametersSnippet { } private String extractUrlTemplate(Operation operation) { - String urlTemplate = (String) operation.getAttributes().get( - "org.springframework.restdocs.urlTemplate"); + String urlTemplate = (String) operation.getAttributes() + .get("org.springframework.restdocs.urlTemplate"); Assert.notNull(urlTemplate, "urlTemplate not found. Did you use RestDocumentationRequestBuilders to " + "build the request?"); diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/package-info.java index 744aa7f0..c2828b7b 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/package-info.java @@ -18,4 +18,3 @@ * Documenting query and path parameters of requests sent to a RESTful API. */ package org.springframework.restdocs.request; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/IgnorableDescriptor.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/IgnorableDescriptor.java index 8174c381..477431ee 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/IgnorableDescriptor.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/IgnorableDescriptor.java @@ -22,8 +22,8 @@ package org.springframework.restdocs.snippet; * @param the type of the descriptor * @author Andy Wilkinson */ -public abstract class IgnorableDescriptor> extends - AbstractDescriptor { +public abstract class IgnorableDescriptor> + extends AbstractDescriptor { private boolean ignored = false; diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolver.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolver.java index 6c3e00be..81898c25 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolver.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolver.java @@ -137,8 +137,9 @@ public class RestDocumentationContextPlaceholderResolver implements PlaceholderR Matcher matcher = CAMEL_CASE_PATTERN.matcher(string); StringBuffer result = new StringBuffer(); while (matcher.find()) { - String replacement = (matcher.start() > 0) ? separator - + matcher.group(1).toLowerCase() : matcher.group(1).toLowerCase(); + String replacement = (matcher.start() > 0) + ? separator + matcher.group(1).toLowerCase() + : matcher.group(1).toLowerCase(); matcher.appendReplacement(result, replacement); } matcher.appendTail(result); diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/StandardWriterResolver.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/StandardWriterResolver.java index 1ef51ea4..883e1c11 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/StandardWriterResolver.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/StandardWriterResolver.java @@ -59,7 +59,8 @@ public final class StandardWriterResolver implements WriterResolver { if (outputFile != null) { createDirectoriesIfNecessary(outputFile); - return new OutputStreamWriter(new FileOutputStream(outputFile), this.encoding); + return new OutputStreamWriter(new FileOutputStream(outputFile), + this.encoding); } else { return new OutputStreamWriter(System.out, this.encoding); @@ -92,7 +93,8 @@ public final class StandardWriterResolver implements WriterResolver { private void createDirectoriesIfNecessary(File outputFile) { File parent = outputFile.getParentFile(); if (!parent.isDirectory() && !parent.mkdirs()) { - throw new IllegalStateException("Failed to create directory '" + parent + "'"); + throw new IllegalStateException( + "Failed to create directory '" + parent + "'"); } } } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/TemplatedSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/TemplatedSnippet.java index 015d1fe8..dedfa98a 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/TemplatedSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/TemplatedSnippet.java @@ -57,10 +57,10 @@ public abstract class TemplatedSnippet implements Snippet { public void document(Operation operation) throws IOException { RestDocumentationContext context = (RestDocumentationContext) operation .getAttributes().get(RestDocumentationContext.class.getName()); - WriterResolver writerResolver = (WriterResolver) operation.getAttributes().get( - WriterResolver.class.getName()); - try (Writer writer = writerResolver.resolve(operation.getName(), - this.snippetName, context)) { + WriterResolver writerResolver = (WriterResolver) operation.getAttributes() + .get(WriterResolver.class.getName()); + try (Writer writer = writerResolver.resolve(operation.getName(), this.snippetName, + context)) { Map model = createModel(operation); model.putAll(this.attributes); TemplateEngine templateEngine = (TemplateEngine) operation.getAttributes() diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/package-info.java index 9c16a3e2..90a6642b 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/snippet/package-info.java @@ -18,4 +18,3 @@ * Snippet generation. */ package org.springframework.restdocs.snippet; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/StandardTemplateResourceResolver.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/StandardTemplateResourceResolver.java index 4e3d38e3..847f6ee8 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/StandardTemplateResourceResolver.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/StandardTemplateResourceResolver.java @@ -38,10 +38,11 @@ public class StandardTemplateResourceResolver implements TemplateResourceResolve "org/springframework/restdocs/templates/" + name + ".snippet"); if (!classPathResource.exists()) { classPathResource = new ClassPathResource( - "org/springframework/restdocs/templates/default-" + name + ".snippet"); + "org/springframework/restdocs/templates/default-" + name + + ".snippet"); if (!classPathResource.exists()) { - throw new IllegalStateException("Template named '" + name - + "' could not be resolved"); + throw new IllegalStateException( + "Template named '" + name + "' could not be resolved"); } } return classPathResource; diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/MustacheTemplateEngine.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/MustacheTemplateEngine.java index df142045..3a5acc72 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/MustacheTemplateEngine.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/MustacheTemplateEngine.java @@ -54,8 +54,8 @@ public class MustacheTemplateEngine implements TemplateEngine { public Template compileTemplate(String name) throws IOException { Resource templateResource = this.templateResourceResolver .resolveTemplateResource(name); - return new MustacheTemplate(this.compiler.compile(new InputStreamReader( - templateResource.getInputStream()))); + return new MustacheTemplate(this.compiler + .compile(new InputStreamReader(templateResource.getInputStream()))); } } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/package-info.java index 244b8d9e..9f7231ce 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/mustache/package-info.java @@ -18,4 +18,3 @@ * JMustache-based implementation of the template API. */ package org.springframework.restdocs.templates.mustache; - diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/package-info.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/package-info.java index cac448dd..a0a11105 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/package-info.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/templates/package-info.java @@ -18,4 +18,3 @@ * Template API used to render documentation snippets. */ package org.springframework.restdocs.templates; - diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ConstraintDescriptionsTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ConstraintDescriptionsTests.java index 6968fccf..a3dbd9ab 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ConstraintDescriptionsTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ConstraintDescriptionsTests.java @@ -129,8 +129,7 @@ public class ConstraintDescriptionsTests { @Test public void sizeList() { - assertThat( - this.constraintDescriptions.descriptionsForProperty("sizeList"), + assertThat(this.constraintDescriptions.descriptionsForProperty("sizeList"), contains("Size must be between 1 and 4 inclusive", "Size must be between 8 and 10 inclusive")); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolverTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolverTests.java index 8f2fa07d..06334f51 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolverTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ResourceBundleConstraintDescriptionResolverTests.java @@ -70,8 +70,8 @@ public class ResourceBundleConstraintDescriptionResolverTests { public void defaultMessageDecimalMax() { Map configuration = new HashMap<>(); configuration.put("value", "9.875"); - String description = this.resolver.resolveDescription(new Constraint( - DecimalMax.class.getName(), configuration)); + String description = this.resolver.resolveDescription( + new Constraint(DecimalMax.class.getName(), configuration)); assertThat(description, is(equalTo("Must be at most 9.875"))); } @@ -79,8 +79,8 @@ public class ResourceBundleConstraintDescriptionResolverTests { public void defaultMessageDecimalMin() { Map configuration = new HashMap<>(); configuration.put("value", "1.5"); - String description = this.resolver.resolveDescription(new Constraint( - DecimalMin.class.getName(), configuration)); + String description = this.resolver.resolveDescription( + new Constraint(DecimalMin.class.getName(), configuration)); assertThat(description, is(equalTo("Must be at least 1.5"))); } @@ -89,16 +89,16 @@ public class ResourceBundleConstraintDescriptionResolverTests { Map configuration = new HashMap<>(); configuration.put("integer", "2"); configuration.put("fraction", "5"); - String description = this.resolver.resolveDescription(new Constraint(Digits.class - .getName(), configuration)); - assertThat(description, is(equalTo("Must have at most 2 integral digits and 5 " - + "fractional digits"))); + String description = this.resolver.resolveDescription( + new Constraint(Digits.class.getName(), configuration)); + assertThat(description, is(equalTo( + "Must have at most 2 integral digits and 5 " + "fractional digits"))); } @Test public void defaultMessageFuture() { - String description = this.resolver.resolveDescription(new Constraint(Future.class - .getName(), Collections.emptyMap())); + String description = this.resolver.resolveDescription(new Constraint( + Future.class.getName(), Collections.emptyMap())); assertThat(description, is(equalTo("Must be in the future"))); } @@ -106,8 +106,8 @@ public class ResourceBundleConstraintDescriptionResolverTests { public void defaultMessageMax() { Map configuration = new HashMap<>(); configuration.put("value", 10); - String description = this.resolver.resolveDescription(new Constraint(Max.class - .getName(), configuration)); + String description = this.resolver + .resolveDescription(new Constraint(Max.class.getName(), configuration)); assertThat(description, is(equalTo("Must be at most 10"))); } @@ -115,8 +115,8 @@ public class ResourceBundleConstraintDescriptionResolverTests { public void defaultMessageMin() { Map configuration = new HashMap<>(); configuration.put("value", 10); - String description = this.resolver.resolveDescription(new Constraint(Min.class - .getName(), configuration)); + String description = this.resolver + .resolveDescription(new Constraint(Min.class.getName(), configuration)); assertThat(description, is(equalTo("Must be at least 10"))); } @@ -129,15 +129,15 @@ public class ResourceBundleConstraintDescriptionResolverTests { @Test public void defaultMessageNull() { - String description = this.resolver.resolveDescription(new Constraint(Null.class - .getName(), Collections.emptyMap())); + String description = this.resolver.resolveDescription(new Constraint( + Null.class.getName(), Collections.emptyMap())); assertThat(description, is(equalTo("Must be null"))); } @Test public void defaultMessagePast() { - String description = this.resolver.resolveDescription(new Constraint(Past.class - .getName(), Collections.emptyMap())); + String description = this.resolver.resolveDescription(new Constraint( + Past.class.getName(), Collections.emptyMap())); assertThat(description, is(equalTo("Must be in the past"))); } @@ -145,8 +145,8 @@ public class ResourceBundleConstraintDescriptionResolverTests { public void defaultMessagePattern() { Map configuration = new HashMap<>(); configuration.put("regexp", "[A-Z][a-z]+"); - String description = this.resolver.resolveDescription(new Constraint( - Pattern.class.getName(), configuration)); + String description = this.resolver.resolveDescription( + new Constraint(Pattern.class.getName(), configuration)); assertThat(description, is(equalTo("Must match the regular expression '[A-Z][a-z]+'"))); } @@ -156,8 +156,8 @@ public class ResourceBundleConstraintDescriptionResolverTests { Map configuration = new HashMap<>(); configuration.put("min", 2); configuration.put("max", 10); - String description = this.resolver.resolveDescription(new Constraint(Size.class - .getName(), configuration)); + String description = this.resolver + .resolveDescription(new Constraint(Size.class.getName(), configuration)); assertThat(description, is(equalTo("Size must be between 2 and 10 inclusive"))); } @@ -167,9 +167,10 @@ public class ResourceBundleConstraintDescriptionResolverTests { @Override public URL getResource(String name) { - if (name.startsWith("org/springframework/restdocs/constraints/ConstraintDescriptions")) { - return super - .getResource("org/springframework/restdocs/constraints/TestConstraintDescriptions.properties"); + if (name.startsWith( + "org/springframework/restdocs/constraints/ConstraintDescriptions")) { + return super.getResource( + "org/springframework/restdocs/constraints/TestConstraintDescriptions.properties"); } return super.getResource(name); } @@ -194,14 +195,14 @@ public class ResourceBundleConstraintDescriptionResolverTests { @Override protected Object[][] getContents() { - return new String[][] { { NotNull.class.getName() + ".description", - "Not null" } }; + return new String[][] { + { NotNull.class.getName() + ".description", "Not null" } }; } }; String description = new ResourceBundleConstraintDescriptionResolver(bundle) - .resolveDescription(new Constraint(NotNull.class.getName(), Collections - .emptyMap())); + .resolveDescription(new Constraint(NotNull.class.getName(), + Collections.emptyMap())); assertThat(description, is(equalTo("Not null"))); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ValidatorConstraintResolverTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ValidatorConstraintResolverTests.java index 89bce77b..4ff83c65 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ValidatorConstraintResolverTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/constraints/ValidatorConstraintResolverTests.java @@ -66,10 +66,8 @@ public class ValidatorConstraintResolverTests { List constraints = this.resolver.resolveForProperty("multiple", ConstrainedFields.class); assertThat(constraints, hasSize(2)); - assertThat( - constraints, - containsInAnyOrder(constraint(NotNull.class), constraint(Size.class) - .config("min", 8).config("max", 16))); + assertThat(constraints, containsInAnyOrder(constraint(NotNull.class), + constraint(Size.class).config("min", 8).config("max", 16))); } @Test diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/curl/CurlRequestSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/curl/CurlRequestSnippetTests.java index 21c1973d..c614cb83 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/curl/CurlRequestSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/curl/CurlRequestSnippetTests.java @@ -21,6 +21,7 @@ import java.io.IOException; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; + import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -59,101 +60,98 @@ public class CurlRequestSnippetTests { public void getRequest() throws IOException { this.snippet.expectCurlRequest("get-request").withContents( codeBlock("bash").content("$ curl 'http://localhost/foo' -i")); - new CurlRequestSnippet().document(new OperationBuilder("get-request", - this.snippet.getOutputDirectory()).request("http://localhost/foo") - .build()); + new CurlRequestSnippet().document( + new OperationBuilder("get-request", this.snippet.getOutputDirectory()) + .request("http://localhost/foo").build()); } @Test public void nonGetRequest() throws IOException { this.snippet.expectCurlRequest("non-get-request").withContents( codeBlock("bash").content("$ curl 'http://localhost/foo' -i -X POST")); - new CurlRequestSnippet().document(new OperationBuilder("non-get-request", - this.snippet.getOutputDirectory()).request("http://localhost/foo") - .method("POST").build()); + new CurlRequestSnippet().document( + new OperationBuilder("non-get-request", this.snippet.getOutputDirectory()) + .request("http://localhost/foo").method("POST").build()); } @Test public void requestWithContent() throws IOException { - this.snippet.expectCurlRequest("request-with-content").withContents( - codeBlock("bash") + this.snippet.expectCurlRequest("request-with-content") + .withContents(codeBlock("bash") .content("$ curl 'http://localhost/foo' -i -d 'content'")); new CurlRequestSnippet().document(new OperationBuilder("request-with-content", this.snippet.getOutputDirectory()).request("http://localhost/foo") - .content("content").build()); + .content("content").build()); } @Test public void getRequestWithQueryString() throws IOException { this.snippet.expectCurlRequest("request-with-query-string") - .withContents( - codeBlock("bash").content( - "$ curl 'http://localhost/foo?param=value' -i")); - new CurlRequestSnippet().document(new OperationBuilder( - "request-with-query-string", this.snippet.getOutputDirectory()).request( - "http://localhost/foo?param=value").build()); + .withContents(codeBlock("bash") + .content("$ curl 'http://localhost/foo?param=value' -i")); + new CurlRequestSnippet() + .document(new OperationBuilder("request-with-query-string", + this.snippet.getOutputDirectory()) + .request("http://localhost/foo?param=value").build()); } @Test public void postRequestWithQueryString() throws IOException { - this.snippet.expectCurlRequest("post-request-with-query-string").withContents( - codeBlock("bash").content( - "$ curl 'http://localhost/foo?param=value' -i -X POST")); - new CurlRequestSnippet().document(new OperationBuilder( - "post-request-with-query-string", this.snippet.getOutputDirectory()) - .request("http://localhost/foo?param=value").method("POST").build()); + this.snippet.expectCurlRequest("post-request-with-query-string") + .withContents(codeBlock("bash") + .content("$ curl 'http://localhost/foo?param=value' -i -X POST")); + new CurlRequestSnippet() + .document(new OperationBuilder("post-request-with-query-string", + this.snippet.getOutputDirectory()) + .request("http://localhost/foo?param=value") + .method("POST").build()); } @Test public void postRequestWithOneParameter() throws IOException { - this.snippet.expectCurlRequest("post-request-with-one-parameter").withContents( - codeBlock("bash").content( - "$ curl 'http://localhost/foo' -i -X POST -d 'k1=v1'")); + this.snippet.expectCurlRequest("post-request-with-one-parameter") + .withContents(codeBlock("bash") + .content("$ curl 'http://localhost/foo' -i -X POST -d 'k1=v1'")); new CurlRequestSnippet() .document(new OperationBuilder("post-request-with-one-parameter", - this.snippet.getOutputDirectory()) - .request("http://localhost/foo").method("POST").param("k1", "v1") - .build()); + this.snippet.getOutputDirectory()).request("http://localhost/foo") + .method("POST").param("k1", "v1").build()); } @Test public void postRequestWithMultipleParameters() throws IOException { this.snippet.expectCurlRequest("post-request-with-multiple-parameters") - .withContents( - codeBlock("bash").content( - "$ curl 'http://localhost/foo' -i -X POST" - + " -d 'k1=v1&k1=v1-bis&k2=v2'")); - new CurlRequestSnippet().document(new OperationBuilder( - "post-request-with-multiple-parameters", this.snippet - .getOutputDirectory()).request("http://localhost/foo") - .method("POST").param("k1", "v1", "v1-bis").param("k2", "v2").build()); + .withContents(codeBlock("bash") + .content("$ curl 'http://localhost/foo' -i -X POST" + + " -d 'k1=v1&k1=v1-bis&k2=v2'")); + new CurlRequestSnippet() + .document(new OperationBuilder("post-request-with-multiple-parameters", + this.snippet.getOutputDirectory()).request("http://localhost/foo") + .method("POST").param("k1", "v1", "v1-bis") + .param("k2", "v2").build()); } @Test public void postRequestWithUrlEncodedParameter() throws IOException { - this.snippet - .expectCurlRequest("post-request-with-url-encoded-parameter") - .withContents( - codeBlock("bash").content( - "$ curl 'http://localhost/foo' -i -X POST -d 'k1=a%26b'")); - new CurlRequestSnippet().document(new OperationBuilder( - "post-request-with-url-encoded-parameter", this.snippet - .getOutputDirectory()).request("http://localhost/foo") - .method("POST").param("k1", "a&b").build()); + this.snippet.expectCurlRequest("post-request-with-url-encoded-parameter") + .withContents(codeBlock("bash").content( + "$ curl 'http://localhost/foo' -i -X POST -d 'k1=a%26b'")); + new CurlRequestSnippet() + .document(new OperationBuilder("post-request-with-url-encoded-parameter", + this.snippet.getOutputDirectory()).request("http://localhost/foo") + .method("POST").param("k1", "a&b").build()); } @Test public void postRequestWithQueryStringAndParameter() throws IOException { - this.snippet - .expectCurlRequest("post-request-with-query-string-and-parameter") - .withContents( - codeBlock("bash") - .content( - "$ curl 'http://localhost/foo?a=alpha' -i -X POST -d 'b=bravo'")); - new CurlRequestSnippet().document(new OperationBuilder( - "post-request-with-query-string-and-parameter", this.snippet - .getOutputDirectory()).request("http://localhost/foo?a=alpha") - .method("POST").param("b", "bravo").build()); + this.snippet.expectCurlRequest("post-request-with-query-string-and-parameter") + .withContents(codeBlock("bash").content( + "$ curl 'http://localhost/foo?a=alpha' -i -X POST -d 'b=bravo'")); + new CurlRequestSnippet().document( + new OperationBuilder("post-request-with-query-string-and-parameter", + this.snippet.getOutputDirectory()) + .request("http://localhost/foo?a=alpha").method("POST") + .param("b", "bravo").build()); } @Test @@ -161,62 +159,60 @@ public class CurlRequestSnippetTests { this.snippet .expectCurlRequest( "post-request-with-overlapping-query-string-and-parameters") - .withContents( - codeBlock("bash") - .content( - "$ curl 'http://localhost/foo?a=alpha' -i -X POST -d 'b=bravo'")); + .withContents(codeBlock("bash").content( + "$ curl 'http://localhost/foo?a=alpha' -i -X POST -d 'b=bravo'")); new CurlRequestSnippet().document(new OperationBuilder( - "post-request-with-overlapping-query-string-and-parameters", this.snippet - .getOutputDirectory()).request("http://localhost/foo?a=alpha") - .method("POST").param("a", "alpha").param("b", "bravo").build()); + "post-request-with-overlapping-query-string-and-parameters", + this.snippet.getOutputDirectory()).request("http://localhost/foo?a=alpha") + .method("POST").param("a", "alpha").param("b", "bravo").build()); } @Test public void putRequestWithOneParameter() throws IOException { - this.snippet.expectCurlRequest("put-request-with-one-parameter").withContents( - codeBlock("bash").content( - "$ curl 'http://localhost/foo' -i -X PUT -d 'k1=v1'")); - new CurlRequestSnippet().document(new OperationBuilder( - "put-request-with-one-parameter", this.snippet.getOutputDirectory()) - .request("http://localhost/foo").method("PUT").param("k1", "v1").build()); + this.snippet.expectCurlRequest("put-request-with-one-parameter") + .withContents(codeBlock("bash") + .content("$ curl 'http://localhost/foo' -i -X PUT -d 'k1=v1'")); + new CurlRequestSnippet() + .document(new OperationBuilder("put-request-with-one-parameter", + this.snippet.getOutputDirectory()).request("http://localhost/foo") + .method("PUT").param("k1", "v1").build()); } @Test public void putRequestWithMultipleParameters() throws IOException { this.snippet.expectCurlRequest("put-request-with-multiple-parameters") - .withContents( - codeBlock("bash").content( - "$ curl 'http://localhost/foo' -i -X PUT" - + " -d 'k1=v1&k1=v1-bis&k2=v2'")); + .withContents(codeBlock("bash") + .content("$ curl 'http://localhost/foo' -i -X PUT" + + " -d 'k1=v1&k1=v1-bis&k2=v2'")); new CurlRequestSnippet() .document(new OperationBuilder("put-request-with-multiple-parameters", - this.snippet.getOutputDirectory()) - .request("http://localhost/foo").method("PUT").param("k1", "v1") - .param("k1", "v1-bis").param("k2", "v2").build()); + this.snippet.getOutputDirectory()).request("http://localhost/foo") + .method("PUT").param("k1", "v1").param("k1", "v1-bis") + .param("k2", "v2").build()); } @Test public void putRequestWithUrlEncodedParameter() throws IOException { this.snippet.expectCurlRequest("put-request-with-url-encoded-parameter") - .withContents( - codeBlock("bash").content( - "$ curl 'http://localhost/foo' -i -X PUT -d 'k1=a%26b'")); - new CurlRequestSnippet().document(new OperationBuilder( - "put-request-with-url-encoded-parameter", this.snippet - .getOutputDirectory()).request("http://localhost/foo") - .method("PUT").param("k1", "a&b").build()); + .withContents(codeBlock("bash").content( + "$ curl 'http://localhost/foo' -i -X PUT -d 'k1=a%26b'")); + new CurlRequestSnippet() + .document(new OperationBuilder("put-request-with-url-encoded-parameter", + this.snippet.getOutputDirectory()).request("http://localhost/foo") + .method("PUT").param("k1", "a&b").build()); } @Test public void requestWithHeaders() throws IOException { - this.snippet.expectCurlRequest("request-with-headers").withContents( - codeBlock("bash").content( - "$ curl 'http://localhost/foo' -i" - + " -H 'Content-Type: application/json' -H 'a: alpha'")); + this.snippet.expectCurlRequest("request-with-headers") + .withContents(codeBlock("bash").content("$ curl 'http://localhost/foo' -i" + + " -H 'Content-Type: application/json' -H 'a: alpha'")); new CurlRequestSnippet().document(new OperationBuilder("request-with-headers", - this.snippet.getOutputDirectory()).request("http://localhost/foo") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .header("a", "alpha").build()); + this.snippet.getOutputDirectory()) + .request("http://localhost/foo") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_JSON_VALUE) + .header("a", "alpha").build()); } @Test @@ -226,11 +222,14 @@ public class CurlRequestSnippetTests { + "'metadata={\"description\": \"foo\"}'"; this.snippet.expectCurlRequest("multipart-post-no-original-filename") .withContents(codeBlock("bash").content(expectedContent)); - new CurlRequestSnippet().document(new OperationBuilder( - "multipart-post-no-original-filename", this.snippet.getOutputDirectory()) - .request("http://localhost/upload").method("POST") - .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE) - .part("metadata", "{\"description\": \"foo\"}".getBytes()).build()); + new CurlRequestSnippet() + .document(new OperationBuilder("multipart-post-no-original-filename", + this.snippet.getOutputDirectory()) + .request("http://localhost/upload").method("POST") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.MULTIPART_FORM_DATA_VALUE) + .part("metadata", "{\"description\": \"foo\"}".getBytes()) + .build()); } @Test @@ -238,15 +237,17 @@ public class CurlRequestSnippetTests { String expectedContent = "$ curl 'http://localhost/upload' -i -X POST -H " + "'Content-Type: multipart/form-data' -F " + "'image=@documents/images/example.png;type=image/png'"; - this.snippet.expectCurlRequest("multipart-post-with-content-type").withContents( - codeBlock("bash").content(expectedContent)); - new CurlRequestSnippet().document(new OperationBuilder( - "multipart-post-with-content-type", this.snippet.getOutputDirectory()) - .request("http://localhost/upload").method("POST") - .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE) - .part("image", new byte[0]) - .header(HttpHeaders.CONTENT_TYPE, MediaType.IMAGE_PNG_VALUE) - .submittedFileName("documents/images/example.png").build()); + this.snippet.expectCurlRequest("multipart-post-with-content-type") + .withContents(codeBlock("bash").content(expectedContent)); + new CurlRequestSnippet() + .document(new OperationBuilder("multipart-post-with-content-type", + this.snippet.getOutputDirectory()) + .request("http://localhost/upload").method("POST") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.MULTIPART_FORM_DATA_VALUE) + .part("image", new byte[0]) + .header(HttpHeaders.CONTENT_TYPE, MediaType.IMAGE_PNG_VALUE) + .submittedFileName("documents/images/example.png").build()); } @Test @@ -254,14 +255,15 @@ public class CurlRequestSnippetTests { String expectedContent = "$ curl 'http://localhost/upload' -i -X POST -H " + "'Content-Type: multipart/form-data' -F " + "'image=@documents/images/example.png'"; - this.snippet.expectCurlRequest("multipart-post").withContents( - codeBlock("bash").content(expectedContent)); - new CurlRequestSnippet().document(new OperationBuilder("multipart-post", - this.snippet.getOutputDirectory()).request("http://localhost/upload") - .method("POST") - .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE) - .part("image", new byte[0]) - .submittedFileName("documents/images/example.png").build()); + this.snippet.expectCurlRequest("multipart-post") + .withContents(codeBlock("bash").content(expectedContent)); + new CurlRequestSnippet().document( + new OperationBuilder("multipart-post", this.snippet.getOutputDirectory()) + .request("http://localhost/upload").method("POST") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.MULTIPART_FORM_DATA_VALUE) + .part("image", new byte[0]) + .submittedFileName("documents/images/example.png").build()); } @Test @@ -270,45 +272,46 @@ public class CurlRequestSnippetTests { + "'Content-Type: multipart/form-data' -F " + "'image=@documents/images/example.png' -F 'a=apple' -F 'a=avocado' " + "-F 'b=banana'"; - this.snippet.expectCurlRequest("multipart-post-with-parameters").withContents( - codeBlock("bash").content(expectedContent)); - new CurlRequestSnippet().document(new OperationBuilder( - "multipart-post-with-parameters", this.snippet.getOutputDirectory()) - .request("http://localhost/upload").method("POST") - .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE) - .part("image", new byte[0]) - .submittedFileName("documents/images/example.png").and() - .param("a", "apple", "avocado").param("b", "banana").build()); + this.snippet.expectCurlRequest("multipart-post-with-parameters") + .withContents(codeBlock("bash").content(expectedContent)); + new CurlRequestSnippet() + .document(new OperationBuilder("multipart-post-with-parameters", + this.snippet.getOutputDirectory()) + .request("http://localhost/upload").method("POST") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.MULTIPART_FORM_DATA_VALUE) + .part("image", new byte[0]) + .submittedFileName("documents/images/example.png").and() + .param("a", "apple", "avocado").param("b", "banana").build()); } @Test public void customAttributes() throws IOException { - this.snippet.expectCurlRequest("custom-attributes").withContents( - containsString("curl request title")); + this.snippet.expectCurlRequest("custom-attributes") + .withContents(containsString("curl request title")); TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); given(resolver.resolveTemplateResource("curl-request")) - .willReturn( - new FileSystemResource( - "src/test/resources/custom-snippet-templates/curl-request-with-title.snippet")); + .willReturn(new FileSystemResource( + "src/test/resources/custom-snippet-templates/curl-request-with-title.snippet")); new CurlRequestSnippet(attributes(key("title").value("curl request title"))) - .document(new OperationBuilder("custom-attributes", this.snippet - .getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)) - .request("http://localhost/foo").build()); + .document(new OperationBuilder("custom-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .request("http://localhost/foo").build()); } @Test public void basicAuthCredentialsAreSuppliedUsingUserOption() throws IOException { - this.snippet.expectCurlRequest("basic-auth").withContents( - codeBlock("bash").content( - "$ curl 'http://localhost/foo' -i -u 'user:secret'")); - new CurlRequestSnippet().document(new OperationBuilder("basic-auth", this.snippet - .getOutputDirectory()) - .request("http://localhost/foo") - .header(HttpHeaders.AUTHORIZATION, - "Basic " + Base64Utils.encodeToString("user:secret".getBytes())) - .build()); + this.snippet.expectCurlRequest("basic-auth").withContents(codeBlock("bash") + .content("$ curl 'http://localhost/foo' -i -u 'user:secret'")); + new CurlRequestSnippet().document( + new OperationBuilder("basic-auth", this.snippet.getOutputDirectory()) + .request("http://localhost/foo") + .header(HttpHeaders.AUTHORIZATION, + "Basic " + Base64Utils + .encodeToString("user:secret".getBytes())) + .build()); } } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/curl/QueryStringParserTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/curl/QueryStringParserTests.java index bfdc7010..634fede1 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/curl/QueryStringParserTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/curl/QueryStringParserTests.java @@ -22,6 +22,7 @@ import java.util.Arrays; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; + import org.springframework.restdocs.operation.Parameters; import static org.hamcrest.CoreMatchers.equalTo; @@ -43,23 +44,23 @@ public class QueryStringParserTests { @Test public void noParameters() { - Parameters parameters = this.queryStringParser.parse(URI - .create("http://localhost")); + Parameters parameters = this.queryStringParser + .parse(URI.create("http://localhost")); assertThat(parameters.size(), is(equalTo(0))); } @Test public void singleParameter() { - Parameters parameters = this.queryStringParser.parse(URI - .create("http://localhost?a=alpha")); + Parameters parameters = this.queryStringParser + .parse(URI.create("http://localhost?a=alpha")); assertThat(parameters.size(), is(equalTo(1))); assertThat(parameters, hasEntry("a", Arrays.asList("alpha"))); } @Test public void multipleParameters() { - Parameters parameters = this.queryStringParser.parse(URI - .create("http://localhost?a=alpha&b=bravo&c=charlie")); + Parameters parameters = this.queryStringParser + .parse(URI.create("http://localhost?a=alpha&b=bravo&c=charlie")); assertThat(parameters.size(), is(equalTo(3))); assertThat(parameters, hasEntry("a", Arrays.asList("alpha"))); assertThat(parameters, hasEntry("b", Arrays.asList("bravo"))); @@ -68,16 +69,16 @@ public class QueryStringParserTests { @Test public void multipleParametersWithSameKey() { - Parameters parameters = this.queryStringParser.parse(URI - .create("http://localhost?a=apple&a=avocado")); + Parameters parameters = this.queryStringParser + .parse(URI.create("http://localhost?a=apple&a=avocado")); assertThat(parameters.size(), is(equalTo(1))); assertThat(parameters, hasEntry("a", Arrays.asList("apple", "avocado"))); } @Test public void encoded() { - Parameters parameters = this.queryStringParser.parse(URI - .create("http://localhost?a=al%26%3Dpha")); + Parameters parameters = this.queryStringParser + .parse(URI.create("http://localhost?a=al%26%3Dpha")); assertThat(parameters.size(), is(equalTo(1))); assertThat(parameters, hasEntry("a", Arrays.asList("al&=pha"))); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/headers/RequestHeadersSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/headers/RequestHeadersSnippetTests.java index b5b2d1e4..27937169 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/headers/RequestHeadersSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/headers/RequestHeadersSnippetTests.java @@ -22,6 +22,7 @@ import java.util.Arrays; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; + import org.springframework.core.io.FileSystemResource; import org.springframework.restdocs.snippet.SnippetException; import org.springframework.restdocs.templates.TemplateEngine; @@ -56,44 +57,51 @@ public class RequestHeadersSnippetTests { @Test public void requestWithHeaders() throws IOException { - this.snippet.expectRequestHeaders("request-with-headers").withContents( - tableWithHeader("Name", "Description").row("X-Test", "one") + this.snippet.expectRequestHeaders("request-with-headers") + .withContents(tableWithHeader("Name", "Description").row("X-Test", "one") .row("Accept", "two").row("Accept-Encoding", "three") .row("Accept-Language", "four").row("Cache-Control", "five") .row("Connection", "six")); - new RequestHeadersSnippet(Arrays.asList( - headerWithName("X-Test").description("one"), headerWithName("Accept") - .description("two"), headerWithName("Accept-Encoding") - .description("three"), headerWithName("Accept-Language") - .description("four"), headerWithName("Cache-Control") - .description("five"), - headerWithName("Connection").description("six"))) - .document(new OperationBuilder("request-with-headers", this.snippet - .getOutputDirectory()).request("http://localhost") - .header("X-Test", "test").header("Accept", "*/*") - .header("Accept-Encoding", "gzip, deflate") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Cache-Control", "max-age=0") - .header("Connection", "keep-alive").build()); + new RequestHeadersSnippet( + Arrays.asList(headerWithName("X-Test").description("one"), + headerWithName("Accept").description("two"), + headerWithName("Accept-Encoding").description("three"), + headerWithName("Accept-Language").description("four"), + headerWithName("Cache-Control").description("five"), + headerWithName("Connection").description("six"))) + .document(new OperationBuilder("request-with-headers", + this.snippet.getOutputDirectory()) + .request("http://localhost") + .header("X-Test", "test") + .header("Accept", "*/*") + .header("Accept-Encoding", + "gzip, deflate") + .header("Accept-Language", "en-US,en;q=0.5") + .header("Cache-Control", "max-age=0") + .header("Connection", "keep-alive").build()); } @Test public void caseInsensitiveRequestHeaders() throws IOException { - this.snippet - .expectRequestHeaders("case-insensitive-request-headers") - .withContents(tableWithHeader("Name", "Description").row("X-Test", "one")); - new RequestHeadersSnippet(Arrays.asList(headerWithName("X-Test").description( - "one"))).document(new OperationBuilder( - "case-insensitive-request-headers", this.snippet.getOutputDirectory()) - .request("/").header("X-test", "test").build()); + this.snippet.expectRequestHeaders("case-insensitive-request-headers") + .withContents( + tableWithHeader("Name", "Description").row("X-Test", "one")); + new RequestHeadersSnippet( + Arrays.asList(headerWithName("X-Test").description("one"))) + .document(new OperationBuilder("case-insensitive-request-headers", + this.snippet.getOutputDirectory()).request("/") + .header("X-test", "test").build()); } @Test public void undocumentedRequestHeader() throws IOException { - new RequestHeadersSnippet(Arrays.asList(headerWithName("X-Test").description( - "one"))).document(new OperationBuilder("undocumented-request-header", - this.snippet.getOutputDirectory()).request("http://localhost") - .header("X-Test", "test").header("Accept", "*/*").build()); + new RequestHeadersSnippet( + Arrays.asList(headerWithName("X-Test").description("one"))) + .document(new OperationBuilder("undocumented-request-header", + this.snippet.getOutputDirectory()) + .request("http://localhost") + .header("X-Test", "test").header("Accept", "*/*") + .build()); } @Test @@ -102,9 +110,11 @@ public class RequestHeadersSnippetTests { this.thrown .expectMessage(equalTo("Headers with the following names were not found" + " in the request: [Accept]")); - new RequestHeadersSnippet(Arrays.asList(headerWithName("Accept").description( - "one"))).document(new OperationBuilder("missing-request-headers", - this.snippet.getOutputDirectory()).request("http://localhost").build()); + new RequestHeadersSnippet( + Arrays.asList(headerWithName("Accept").description("one"))) + .document(new OperationBuilder("missing-request-headers", + this.snippet.getOutputDirectory()) + .request("http://localhost").build()); } @Test @@ -113,11 +123,13 @@ public class RequestHeadersSnippetTests { this.thrown .expectMessage(endsWith("Headers with the following names were not found" + " in the request: [Accept]")); - new RequestHeadersSnippet(Arrays.asList(headerWithName("Accept").description( - "one"))).document(new OperationBuilder( - "undocumented-request-header-and-missing-request-header", this.snippet - .getOutputDirectory()).request("http://localhost") - .header("X-Test", "test").build()); + new RequestHeadersSnippet( + Arrays.asList(headerWithName("Accept").description("one"))) + .document(new OperationBuilder( + "undocumented-request-header-and-missing-request-header", + this.snippet.getOutputDirectory()) + .request("http://localhost") + .header("X-Test", "test").build()); } @Test @@ -129,21 +141,26 @@ public class RequestHeadersSnippetTests { .row("Accept-Encoding", "two", "bravo") .row("Accept", "three", "charlie")); TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("request-headers")).willReturn( - snippetResource("request-headers-with-extra-column")); + given(resolver.resolveTemplateResource("request-headers")) + .willReturn(snippetResource("request-headers-with-extra-column")); new RequestHeadersSnippet(Arrays.asList( - headerWithName("X-Test").description("one").attributes( - key("foo").value("alpha")), - headerWithName("Accept-Encoding").description("two").attributes( - key("foo").value("bravo")), - headerWithName("Accept").description("three").attributes( - key("foo").value("charlie")))).document(new OperationBuilder( - "request-headers-with-custom-attributes", this.snippet - .getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).request("http://localhost") - .header("X-Test", "test").header("Accept-Encoding", "gzip, deflate") - .header("Accept", "*/*").build()); + headerWithName("X-Test").description("one") + .attributes(key("foo").value("alpha")), + headerWithName("Accept-Encoding").description("two") + .attributes(key("foo").value("bravo")), + headerWithName("Accept").description("three") + .attributes(key("foo").value("charlie")))) + .document(new OperationBuilder( + "request-headers-with-custom-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine( + resolver)) + .request("http://localhost") + .header("X-Test", "test") + .header("Accept-Encoding", + "gzip, deflate") + .header("Accept", "*/*").build()); } @Test @@ -151,20 +168,22 @@ public class RequestHeadersSnippetTests { this.snippet.expectRequestHeaders("request-headers-with-custom-attributes") .withContents(startsWith(".Custom title")); TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("request-headers")).willReturn( - snippetResource("request-headers-with-title")); - new RequestHeadersSnippet(Arrays.asList(headerWithName("X-Test").description( - "one")), attributes(key("title").value("Custom title"))) - .document(new OperationBuilder("request-headers-with-custom-attributes", - this.snippet.getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)) - .request("http://localhost").header("X-Test", "test").build()); + given(resolver.resolveTemplateResource("request-headers")) + .willReturn(snippetResource("request-headers-with-title")); + new RequestHeadersSnippet( + Arrays.asList(headerWithName("X-Test").description("one")), + attributes(key("title").value("Custom title"))).document( + new OperationBuilder("request-headers-with-custom-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .request("http://localhost") + .header("X-Test", "test").build()); } private FileSystemResource snippetResource(String name) { - return new FileSystemResource("src/test/resources/custom-snippet-templates/" - + name + ".snippet"); + return new FileSystemResource( + "src/test/resources/custom-snippet-templates/" + name + ".snippet"); } } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/headers/ResponseHeadersSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/headers/ResponseHeadersSnippetTests.java index 24487094..8f5dd609 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/headers/ResponseHeadersSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/headers/ResponseHeadersSnippetTests.java @@ -22,6 +22,7 @@ import java.util.Arrays; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; + import org.springframework.core.io.FileSystemResource; import org.springframework.restdocs.snippet.SnippetException; import org.springframework.restdocs.templates.TemplateEngine; @@ -56,58 +57,65 @@ public class ResponseHeadersSnippetTests { @Test public void responseWithHeaders() throws IOException { - this.snippet.expectResponseHeaders("response-headers").withContents( - tableWithHeader("Name", "Description").row("X-Test", "one") + this.snippet.expectResponseHeaders("response-headers") + .withContents(tableWithHeader("Name", "Description").row("X-Test", "one") .row("Content-Type", "two").row("Etag", "three") .row("Cache-Control", "five").row("Vary", "six")); - new ResponseHeadersSnippet(Arrays.asList( - headerWithName("X-Test").description("one"), - headerWithName("Content-Type").description("two"), headerWithName("Etag") - .description("three"), headerWithName("Cache-Control") - .description("five"), headerWithName("Vary").description("six"))) - .document(new OperationBuilder("response-headers", this.snippet - .getOutputDirectory()).response().header("X-Test", "test") - .header("Content-Type", "application/json") - .header("Etag", "lskjadldj3ii32l2ij23") - .header("Cache-Control", "max-age=0") - .header("Vary", "User-Agent").build()); + new ResponseHeadersSnippet( + Arrays.asList(headerWithName("X-Test").description("one"), + headerWithName("Content-Type").description("two"), + headerWithName("Etag").description("three"), + headerWithName("Cache-Control").description("five"), + headerWithName("Vary").description("six"))) + .document(new OperationBuilder("response-headers", + this.snippet.getOutputDirectory()).response() + .header("X-Test", "test") + .header("Content-Type", + "application/json") + .header("Etag", "lskjadldj3ii32l2ij23") + .header("Cache-Control", "max-age=0") + .header("Vary", "User-Agent").build()); } @Test public void caseInsensitiveResponseHeaders() throws IOException { - this.snippet - .expectResponseHeaders("case-insensitive-response-headers") - .withContents(tableWithHeader("Name", "Description").row("X-Test", "one")); - new ResponseHeadersSnippet(Arrays.asList(headerWithName("X-Test").description( - "one"))).document(new OperationBuilder( - "case-insensitive-response-headers", this.snippet.getOutputDirectory()) - .response().header("X-test", "test").build()); + this.snippet.expectResponseHeaders("case-insensitive-response-headers") + .withContents( + tableWithHeader("Name", "Description").row("X-Test", "one")); + new ResponseHeadersSnippet( + Arrays.asList(headerWithName("X-Test").description("one"))).document( + new OperationBuilder("case-insensitive-response-headers", + this.snippet.getOutputDirectory()).response() + .header("X-test", "test").build()); } @Test public void responseHeadersWithCustomDescriptorAttributes() throws IOException { this.snippet.expectResponseHeaders("response-headers-with-custom-attributes") - .withContents( - tableWithHeader("Name", "Description", "Foo") - .row("X-Test", "one", "alpha") - .row("Content-Type", "two", "bravo") - .row("Etag", "three", "charlie")); + .withContents(tableWithHeader("Name", "Description", "Foo") + .row("X-Test", "one", "alpha").row("Content-Type", "two", "bravo") + .row("Etag", "three", "charlie")); TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("response-headers")).willReturn( - snippetResource("response-headers-with-extra-column")); + given(resolver.resolveTemplateResource("response-headers")) + .willReturn(snippetResource("response-headers-with-extra-column")); new ResponseHeadersSnippet(Arrays.asList( - headerWithName("X-Test").description("one").attributes( - key("foo").value("alpha")), - headerWithName("Content-Type").description("two").attributes( - key("foo").value("bravo")), - headerWithName("Etag").description("three").attributes( - key("foo").value("charlie")))).document(new OperationBuilder( - "response-headers-with-custom-attributes", this.snippet - .getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).response() - .header("X-Test", "test").header("Content-Type", "application/json") - .header("Etag", "lskjadldj3ii32l2ij23").build()); + headerWithName("X-Test").description("one") + .attributes(key("foo").value("alpha")), + headerWithName("Content-Type").description("two") + .attributes(key("foo").value("bravo")), + headerWithName("Etag").description("three") + .attributes(key("foo").value("charlie")))) + .document(new OperationBuilder( + "response-headers-with-custom-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine( + resolver)) + .response().header("X-Test", "test") + .header("Content-Type", + "application/json") + .header("Etag", "lskjadldj3ii32l2ij23") + .build()); } @Test @@ -115,23 +123,26 @@ public class ResponseHeadersSnippetTests { this.snippet.expectResponseHeaders("response-headers-with-custom-attributes") .withContents(startsWith(".Custom title")); TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("response-headers")).willReturn( - snippetResource("response-headers-with-title")); - new ResponseHeadersSnippet(Arrays.asList(headerWithName("X-Test").description( - "one")), attributes(key("title").value("Custom title"))) - .document(new OperationBuilder("response-headers-with-custom-attributes", - this.snippet.getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).response() - .header("X-Test", "test").build()); + given(resolver.resolveTemplateResource("response-headers")) + .willReturn(snippetResource("response-headers-with-title")); + new ResponseHeadersSnippet( + Arrays.asList(headerWithName("X-Test").description("one")), + attributes(key("title").value("Custom title"))).document( + new OperationBuilder("response-headers-with-custom-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .response().header("X-Test", "test").build()); } @Test public void undocumentedResponseHeader() throws IOException { - new ResponseHeadersSnippet(Arrays.asList(headerWithName("X-Test").description( - "one"))).document(new OperationBuilder("undocumented-response-header", - this.snippet.getOutputDirectory()).response().header("X-Test", "test") - .header("Content-Type", "*/*").build()); + new ResponseHeadersSnippet( + Arrays.asList(headerWithName("X-Test").description("one"))) + .document(new OperationBuilder("undocumented-response-header", + this.snippet.getOutputDirectory()).response() + .header("X-Test", "test") + .header("Content-Type", "*/*").build()); } @Test @@ -140,10 +151,10 @@ public class ResponseHeadersSnippetTests { this.thrown .expectMessage(equalTo("Headers with the following names were not found" + " in the response: [Content-Type]")); - new ResponseHeadersSnippet(Arrays.asList(headerWithName("Content-Type") - .description("one"))).document(new OperationBuilder( - "missing-response-headers", this.snippet.getOutputDirectory()).response() - .build()); + new ResponseHeadersSnippet( + Arrays.asList(headerWithName("Content-Type").description("one"))) + .document(new OperationBuilder("missing-response-headers", + this.snippet.getOutputDirectory()).response().build()); } @Test @@ -152,16 +163,17 @@ public class ResponseHeadersSnippetTests { this.thrown .expectMessage(endsWith("Headers with the following names were not found" + " in the response: [Content-Type]")); - new ResponseHeadersSnippet(Arrays.asList(headerWithName("Content-Type") - .description("one"))).document(new OperationBuilder( - "undocumented-response-header-and-missing-response-header", this.snippet - .getOutputDirectory()).response().header("X-Test", "test") - .build()); + new ResponseHeadersSnippet( + Arrays.asList(headerWithName("Content-Type").description("one"))) + .document(new OperationBuilder( + "undocumented-response-header-and-missing-response-header", + this.snippet.getOutputDirectory()).response() + .header("X-Test", "test").build()); } private FileSystemResource snippetResource(String name) { - return new FileSystemResource("src/test/resources/custom-snippet-templates/" - + name + ".snippet"); + return new FileSystemResource( + "src/test/resources/custom-snippet-templates/" + name + ".snippet"); } } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpRequestSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpRequestSnippetTests.java index f948fb10..a2975674 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpRequestSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpRequestSnippetTests.java @@ -20,6 +20,7 @@ import java.io.IOException; import org.junit.Rule; import org.junit.Test; + import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -53,181 +54,200 @@ public class HttpRequestSnippetTests { @Test public void getRequest() throws IOException { - this.snippet.expectHttpRequest("get-request").withContents( - httpRequest(RequestMethod.GET, "/foo").header("Alpha", "a").header( - HttpHeaders.HOST, "localhost")); + this.snippet.expectHttpRequest("get-request") + .withContents(httpRequest(RequestMethod.GET, "/foo").header("Alpha", "a") + .header(HttpHeaders.HOST, "localhost")); - new HttpRequestSnippet().document(new OperationBuilder("get-request", - this.snippet.getOutputDirectory()).request("http://localhost/foo") - .header("Alpha", "a").build()); + new HttpRequestSnippet().document( + new OperationBuilder("get-request", this.snippet.getOutputDirectory()) + .request("http://localhost/foo").header("Alpha", "a").build()); } @Test public void getRequestWithQueryString() throws IOException { - this.snippet.expectHttpRequest("get-request-with-query-string").withContents( - httpRequest(RequestMethod.GET, "/foo?bar=baz").header(HttpHeaders.HOST, - "localhost")); + this.snippet.expectHttpRequest("get-request-with-query-string") + .withContents(httpRequest(RequestMethod.GET, "/foo?bar=baz") + .header(HttpHeaders.HOST, "localhost")); - new HttpRequestSnippet().document(new OperationBuilder( - "get-request-with-query-string", this.snippet.getOutputDirectory()) - .request("http://localhost/foo?bar=baz").build()); + new HttpRequestSnippet() + .document(new OperationBuilder("get-request-with-query-string", + this.snippet.getOutputDirectory()) + .request("http://localhost/foo?bar=baz").build()); } @Test public void postRequestWithContent() throws IOException { String content = "Hello, world"; - this.snippet.expectHttpRequest("post-request-with-content").withContents( - httpRequest(RequestMethod.POST, "/foo") + this.snippet.expectHttpRequest("post-request-with-content") + .withContents(httpRequest(RequestMethod.POST, "/foo") .header(HttpHeaders.HOST, "localhost").content(content) .header(HttpHeaders.CONTENT_LENGTH, content.getBytes().length)); - new HttpRequestSnippet().document(new OperationBuilder( - "post-request-with-content", this.snippet.getOutputDirectory()) - .request("http://localhost/foo").method("POST").content(content).build()); + new HttpRequestSnippet() + .document(new OperationBuilder("post-request-with-content", + this.snippet.getOutputDirectory()).request("http://localhost/foo") + .method("POST").content(content).build()); } @Test public void postRequestWithCharset() throws IOException { String japaneseContent = "\u30b3\u30f3\u30c6\u30f3\u30c4"; byte[] contentBytes = japaneseContent.getBytes("UTF-8"); - this.snippet.expectHttpRequest("post-request-with-charset").withContents( - httpRequest(RequestMethod.POST, "/foo") + this.snippet.expectHttpRequest("post-request-with-charset") + .withContents(httpRequest(RequestMethod.POST, "/foo") .header("Content-Type", "text/plain;charset=UTF-8") .header(HttpHeaders.HOST, "localhost") .header(HttpHeaders.CONTENT_LENGTH, contentBytes.length) .content(japaneseContent)); - new HttpRequestSnippet().document(new OperationBuilder( - "post-request-with-charset", this.snippet.getOutputDirectory()) - .request("http://localhost/foo").method("POST") - .header("Content-Type", "text/plain;charset=UTF-8").content(contentBytes) - .build()); + new HttpRequestSnippet() + .document(new OperationBuilder("post-request-with-charset", + this.snippet.getOutputDirectory()).request("http://localhost/foo") + .method("POST") + .header("Content-Type", "text/plain;charset=UTF-8") + .content(contentBytes).build()); } @Test public void postRequestWithParameter() throws IOException { - this.snippet.expectHttpRequest("post-request-with-parameter").withContents( - httpRequest(RequestMethod.POST, "/foo") + this.snippet.expectHttpRequest("post-request-with-parameter") + .withContents(httpRequest(RequestMethod.POST, "/foo") .header(HttpHeaders.HOST, "localhost") .header("Content-Type", "application/x-www-form-urlencoded") .content("b%26r=baz&a=alpha")); - new HttpRequestSnippet().document(new OperationBuilder( - "post-request-with-parameter", this.snippet.getOutputDirectory()) - .request("http://localhost/foo").method("POST").param("b&r", "baz") - .param("a", "alpha").build()); + new HttpRequestSnippet() + .document(new OperationBuilder("post-request-with-parameter", + this.snippet.getOutputDirectory()).request("http://localhost/foo") + .method("POST").param("b&r", "baz").param("a", "alpha") + .build()); } @Test public void putRequestWithContent() throws IOException { String content = "Hello, world"; - this.snippet.expectHttpRequest("put-request-with-content").withContents( - httpRequest(RequestMethod.PUT, "/foo") + this.snippet.expectHttpRequest("put-request-with-content") + .withContents(httpRequest(RequestMethod.PUT, "/foo") .header(HttpHeaders.HOST, "localhost").content(content) .header(HttpHeaders.CONTENT_LENGTH, content.getBytes().length)); - new HttpRequestSnippet().document(new OperationBuilder( - "put-request-with-content", this.snippet.getOutputDirectory()) - .request("http://localhost/foo").method("PUT").content(content).build()); + new HttpRequestSnippet().document(new OperationBuilder("put-request-with-content", + this.snippet.getOutputDirectory()).request("http://localhost/foo") + .method("PUT").content(content).build()); } @Test public void putRequestWithParameter() throws IOException { - this.snippet.expectHttpRequest("put-request-with-parameter").withContents( - httpRequest(RequestMethod.PUT, "/foo") + this.snippet.expectHttpRequest("put-request-with-parameter") + .withContents(httpRequest(RequestMethod.PUT, "/foo") .header(HttpHeaders.HOST, "localhost") .header("Content-Type", "application/x-www-form-urlencoded") .content("b%26r=baz&a=alpha")); - new HttpRequestSnippet().document(new OperationBuilder( - "put-request-with-parameter", this.snippet.getOutputDirectory()) - .request("http://localhost/foo").method("PUT").param("b&r", "baz") - .param("a", "alpha").build()); + new HttpRequestSnippet() + .document(new OperationBuilder("put-request-with-parameter", + this.snippet.getOutputDirectory()).request("http://localhost/foo") + .method("PUT").param("b&r", "baz").param("a", "alpha") + .build()); } @Test public void multipartPost() throws IOException { - String expectedContent = createPart(String.format("Content-Disposition: " - + "form-data; " + "name=image%n%n<< data >>")); - this.snippet.expectHttpRequest("multipart-post").withContents( - httpRequest(RequestMethod.POST, "/upload") + String expectedContent = createPart(String.format( + "Content-Disposition: " + "form-data; " + "name=image%n%n<< data >>")); + this.snippet + .expectHttpRequest( + "multipart-post") + .withContents(httpRequest(RequestMethod.POST, "/upload") .header("Content-Type", "multipart/form-data; boundary=" + BOUNDARY) .header(HttpHeaders.HOST, "localhost").content(expectedContent)); - new HttpRequestSnippet().document(new OperationBuilder("multipart-post", - this.snippet.getOutputDirectory()).request("http://localhost/upload") - .method("POST") - .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE) - .part("image", "<< data >>".getBytes()).build()); + new HttpRequestSnippet().document( + new OperationBuilder("multipart-post", this.snippet.getOutputDirectory()) + .request("http://localhost/upload").method("POST") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.MULTIPART_FORM_DATA_VALUE) + .part("image", "<< data >>".getBytes()).build()); } @Test public void multipartPostWithParameters() throws IOException { - String param1Part = createPart(String.format("Content-Disposition: form-data; " - + "name=a%n%napple"), false); - String param2Part = createPart(String.format("Content-Disposition: form-data; " - + "name=a%n%navocado"), false); - String param3Part = createPart(String.format("Content-Disposition: form-data; " - + "name=b%n%nbanana"), false); - String filePart = createPart(String.format("Content-Disposition: form-data; " - + "name=image%n%n<< data >>")); + String param1Part = createPart( + String.format("Content-Disposition: form-data; " + "name=a%n%napple"), + false); + String param2Part = createPart( + String.format("Content-Disposition: form-data; " + "name=a%n%navocado"), + false); + String param3Part = createPart( + String.format("Content-Disposition: form-data; " + "name=b%n%nbanana"), + false); + String filePart = createPart(String + .format("Content-Disposition: form-data; " + "name=image%n%n<< data >>")); String expectedContent = param1Part + param2Part + param3Part + filePart; - this.snippet.expectHttpRequest("multipart-post-with-parameters").withContents( - httpRequest(RequestMethod.POST, "/upload") + this.snippet + .expectHttpRequest( + "multipart-post-with-parameters") + .withContents(httpRequest(RequestMethod.POST, "/upload") .header("Content-Type", "multipart/form-data; boundary=" + BOUNDARY) .header(HttpHeaders.HOST, "localhost").content(expectedContent)); - new HttpRequestSnippet().document(new OperationBuilder( - "multipart-post-with-parameters", this.snippet.getOutputDirectory()) - .request("http://localhost/upload").method("POST") - .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE) - .param("a", "apple", "avocado").param("b", "banana") - .part("image", "<< data >>".getBytes()).build()); + new HttpRequestSnippet() + .document(new OperationBuilder("multipart-post-with-parameters", + this.snippet.getOutputDirectory()) + .request("http://localhost/upload").method("POST") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.MULTIPART_FORM_DATA_VALUE) + .param("a", "apple", "avocado").param("b", "banana") + .part("image", "<< data >>".getBytes()).build()); } @Test public void multipartPostWithContentType() throws IOException { - String expectedContent = createPart(String - .format("Content-Disposition: form-data; name=image%nContent-Type: " + String expectedContent = createPart( + String.format("Content-Disposition: form-data; name=image%nContent-Type: " + "image/png%n%n<< data >>")); - this.snippet.expectHttpRequest("multipart-post-with-content-type").withContents( - httpRequest(RequestMethod.POST, "/upload") + this.snippet + .expectHttpRequest( + "multipart-post-with-content-type") + .withContents(httpRequest(RequestMethod.POST, "/upload") .header("Content-Type", "multipart/form-data; boundary=" + BOUNDARY) .header(HttpHeaders.HOST, "localhost").content(expectedContent)); - new HttpRequestSnippet().document(new OperationBuilder( - "multipart-post-with-content-type", this.snippet.getOutputDirectory()) - .request("http://localhost/upload").method("POST") - .header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE) - .part("image", "<< data >>".getBytes()) - .header(HttpHeaders.CONTENT_TYPE, MediaType.IMAGE_PNG_VALUE).build()); + new HttpRequestSnippet() + .document(new OperationBuilder("multipart-post-with-content-type", + this.snippet.getOutputDirectory()) + .request("http://localhost/upload").method("POST") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.MULTIPART_FORM_DATA_VALUE) + .part("image", "<< data >>".getBytes()) + .header(HttpHeaders.CONTENT_TYPE, MediaType.IMAGE_PNG_VALUE) + .build()); } @Test public void getRequestWithCustomHost() throws IOException { - this.snippet.expectHttpRequest("get-request-custom-host").withContents( - httpRequest(RequestMethod.GET, "/foo").header(HttpHeaders.HOST, - "api.example.com")); + this.snippet.expectHttpRequest("get-request-custom-host") + .withContents(httpRequest(RequestMethod.GET, "/foo") + .header(HttpHeaders.HOST, "api.example.com")); new HttpRequestSnippet().document(new OperationBuilder("get-request-custom-host", this.snippet.getOutputDirectory()).request("http://localhost/foo") - .header(HttpHeaders.HOST, "api.example.com").build()); + .header(HttpHeaders.HOST, "api.example.com").build()); } @Test public void requestWithCustomSnippetAttributes() throws IOException { - this.snippet.expectHttpRequest("request-with-snippet-attributes").withContents( - containsString("Title for the request")); + this.snippet.expectHttpRequest("request-with-snippet-attributes") + .withContents(containsString("Title for the request")); TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); given(resolver.resolveTemplateResource("http-request")) - .willReturn( - new FileSystemResource( - "src/test/resources/custom-snippet-templates/http-request-with-title.snippet")); + .willReturn(new FileSystemResource( + "src/test/resources/custom-snippet-templates/http-request-with-title.snippet")); new HttpRequestSnippet(attributes(key("title").value("Title for the request"))) .document(new OperationBuilder("request-with-snippet-attributes", this.snippet.getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)) - .request("http://localhost/foo").build()); + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .request("http://localhost/foo").build()); } private String createPart(String content) { diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpResponseSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpResponseSnippetTests.java index 4959e777..df19b6bc 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpResponseSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpResponseSnippetTests.java @@ -20,6 +20,7 @@ import java.io.IOException; import org.junit.Rule; import org.junit.Test; + import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; @@ -50,38 +51,41 @@ public class HttpResponseSnippetTests { @Test public void basicResponse() throws IOException { - this.snippet.expectHttpResponse("basic-response").withContents( - httpResponse(HttpStatus.OK)); - new HttpResponseSnippet().document(new OperationBuilder("basic-response", - this.snippet.getOutputDirectory()).build()); + this.snippet.expectHttpResponse("basic-response") + .withContents(httpResponse(HttpStatus.OK)); + new HttpResponseSnippet().document( + new OperationBuilder("basic-response", this.snippet.getOutputDirectory()) + .build()); } @Test public void nonOkResponse() throws IOException { - this.snippet.expectHttpResponse("non-ok-response").withContents( - httpResponse(HttpStatus.BAD_REQUEST)); - new HttpResponseSnippet().document(new OperationBuilder("non-ok-response", - this.snippet.getOutputDirectory()).response() - .status(HttpStatus.BAD_REQUEST.value()).build()); + this.snippet.expectHttpResponse("non-ok-response") + .withContents(httpResponse(HttpStatus.BAD_REQUEST)); + new HttpResponseSnippet().document( + new OperationBuilder("non-ok-response", this.snippet.getOutputDirectory()) + .response().status(HttpStatus.BAD_REQUEST.value()).build()); } @Test public void responseWithHeaders() throws IOException { - this.snippet.expectHttpResponse("response-with-headers").withContents( - httpResponse(HttpStatus.OK).header("Content-Type", "application/json") - .header("a", "alpha")); + this.snippet.expectHttpResponse("response-with-headers") + .withContents(httpResponse(HttpStatus.OK) + .header("Content-Type", "application/json").header("a", "alpha")); new HttpResponseSnippet().document(new OperationBuilder("response-with-headers", - this.snippet.getOutputDirectory()).response() - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .header("a", "alpha").build()); + this.snippet.getOutputDirectory()) + .response() + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_JSON_VALUE) + .header("a", "alpha").build()); } @Test public void responseWithContent() throws IOException { String content = "content"; - this.snippet.expectHttpResponse("response-with-content").withContents( - httpResponse(HttpStatus.OK).content(content).header( - HttpHeaders.CONTENT_LENGTH, content.getBytes().length)); + this.snippet.expectHttpResponse("response-with-content") + .withContents(httpResponse(HttpStatus.OK).content(content) + .header(HttpHeaders.CONTENT_LENGTH, content.getBytes().length)); new HttpResponseSnippet().document(new OperationBuilder("response-with-content", this.snippet.getOutputDirectory()).response().content(content).build()); } @@ -90,31 +94,31 @@ public class HttpResponseSnippetTests { public void responseWithCharset() throws IOException { String japaneseContent = "\u30b3\u30f3\u30c6\u30f3\u30c4"; byte[] contentBytes = japaneseContent.getBytes("UTF-8"); - this.snippet.expectHttpResponse("response-with-charset").withContents( - httpResponse(HttpStatus.OK) + this.snippet.expectHttpResponse("response-with-charset") + .withContents(httpResponse(HttpStatus.OK) .header("Content-Type", "text/plain;charset=UTF-8") .content(japaneseContent) .header(HttpHeaders.CONTENT_LENGTH, contentBytes.length)); new HttpResponseSnippet().document(new OperationBuilder("response-with-charset", this.snippet.getOutputDirectory()).response() - .header("Content-Type", "text/plain;charset=UTF-8").content(contentBytes) - .build()); + .header("Content-Type", "text/plain;charset=UTF-8") + .content(contentBytes).build()); } @Test public void responseWithCustomSnippetAttributes() throws IOException { - this.snippet.expectHttpResponse("response-with-snippet-attributes").withContents( - containsString("Title for the response")); + this.snippet.expectHttpResponse("response-with-snippet-attributes") + .withContents(containsString("Title for the response")); TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); given(resolver.resolveTemplateResource("http-response")) - .willReturn( - new FileSystemResource( - "src/test/resources/custom-snippet-templates/http-response-with-title.snippet")); + .willReturn(new FileSystemResource( + "src/test/resources/custom-snippet-templates/http-response-with-title.snippet")); new HttpResponseSnippet(attributes(key("title").value("Title for the response"))) .document(new OperationBuilder("response-with-snippet-attributes", - this.snippet.getOutputDirectory()).attribute( - TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).build()); + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .build()); } } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/ContentTypeLinkExtractorTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/ContentTypeLinkExtractorTests.java index 4ff3dbb4..9c923e44 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/ContentTypeLinkExtractorTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/ContentTypeLinkExtractorTests.java @@ -23,6 +23,7 @@ import java.util.Map; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; + import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -47,8 +48,8 @@ public class ContentTypeLinkExtractorTests { @Test public void extractionFailsWithNullContentType() throws IOException { this.thrown.expect(IllegalStateException.class); - new ContentTypeLinkExtractor().extractLinks(this.responseFactory.create( - HttpStatus.OK, new HttpHeaders(), null)); + new ContentTypeLinkExtractor().extractLinks( + this.responseFactory.create(HttpStatus.OK, new HttpHeaders(), null)); } @Test diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinkExtractorsPayloadTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinkExtractorsPayloadTests.java index 47a05424..7353bbea 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinkExtractorsPayloadTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinkExtractorsPayloadTests.java @@ -28,6 +28,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; + import org.springframework.http.HttpStatus; import org.springframework.restdocs.operation.OperationResponse; import org.springframework.restdocs.operation.OperationResponseFactory; @@ -100,7 +101,8 @@ public class LinkExtractorsPayloadTests { assertLinks(Collections.emptyList(), links); } - private void assertLinks(List expectedLinks, Map> actualLinks) { + private void assertLinks(List expectedLinks, + Map> actualLinks) { MultiValueMap expectedLinksByRel = new LinkedMultiValueMap<>(); for (Link expectedLink : expectedLinks) { expectedLinksByRel.add(expectedLink.getRel(), expectedLink); diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinksSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinksSnippetTests.java index 07adce26..5f07e6dd 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinksSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/hypermedia/LinksSnippetTests.java @@ -23,6 +23,7 @@ import java.util.Collections; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; + import org.springframework.core.io.FileSystemResource; import org.springframework.restdocs.operation.OperationResponse; import org.springframework.restdocs.snippet.SnippetException; @@ -58,22 +59,25 @@ public class LinksSnippetTests { @Test public void undocumentedLink() throws IOException { this.thrown.expect(SnippetException.class); - this.thrown.expectMessage(equalTo("Links with the following relations were not" - + " documented: [foo]")); + this.thrown.expectMessage(equalTo( + "Links with the following relations were not" + " documented: [foo]")); new LinksSnippet(new StubLinkExtractor().withLinks(new Link("foo", "bar")), - Collections.emptyList()).document(new OperationBuilder( - "undocumented-link", this.snippet.getOutputDirectory()).build()); + Collections.emptyList()) + .document(new OperationBuilder("undocumented-link", + this.snippet.getOutputDirectory()).build()); } @Test public void ignoredLink() throws IOException { this.snippet.expectLinks("ignored-link").withContents( tableWithHeader("Relation", "Description").row("b", "Link b")); - new LinksSnippet(new StubLinkExtractor().withLinks(new Link("a", "alpha"), - new Link("b", "bravo")), Arrays.asList(new LinkDescriptor("a").ignored(), - new LinkDescriptor("b").description("Link b"))) - .document(new OperationBuilder("ignored-link", this.snippet - .getOutputDirectory()).build()); + new LinksSnippet( + new StubLinkExtractor().withLinks(new Link("a", "alpha"), + new Link("b", "bravo")), + Arrays.asList(new LinkDescriptor("a").ignored(), + new LinkDescriptor("b").description("Link b"))) + .document(new OperationBuilder("ignored-link", + this.snippet.getOutputDirectory()).build()); } @Test @@ -81,9 +85,10 @@ public class LinksSnippetTests { this.thrown.expect(SnippetException.class); this.thrown.expectMessage(equalTo("Links with the following relations were not" + " found in the response: [foo]")); - new LinksSnippet(new StubLinkExtractor(), Arrays.asList(new LinkDescriptor("foo") - .description("bar"))).document(new OperationBuilder("missing-link", - this.snippet.getOutputDirectory()).build()); + new LinksSnippet(new StubLinkExtractor(), + Arrays.asList(new LinkDescriptor("foo").description("bar"))) + .document(new OperationBuilder("missing-link", + this.snippet.getOutputDirectory()).build()); } @Test @@ -92,17 +97,18 @@ public class LinksSnippetTests { tableWithHeader("Relation", "Description").row("foo", "bar")); new LinksSnippet(new StubLinkExtractor().withLinks(new Link("foo", "blah")), Arrays.asList(new LinkDescriptor("foo").description("bar").optional())) - .document(new OperationBuilder("documented-optional-link", this.snippet - .getOutputDirectory()).build()); + .document(new OperationBuilder("documented-optional-link", + this.snippet.getOutputDirectory()).build()); } @Test public void missingOptionalLink() throws IOException { this.snippet.expectLinks("missing-optional-link").withContents( tableWithHeader("Relation", "Description").row("foo", "bar")); - new LinksSnippet(new StubLinkExtractor(), Arrays.asList(new LinkDescriptor("foo") - .description("bar").optional())).document(new OperationBuilder( - "missing-optional-link", this.snippet.getOutputDirectory()).build()); + new LinksSnippet(new StubLinkExtractor(), + Arrays.asList(new LinkDescriptor("foo").description("bar").optional())) + .document(new OperationBuilder("missing-optional-link", + this.snippet.getOutputDirectory()).build()); } @Test @@ -112,64 +118,74 @@ public class LinksSnippetTests { + " documented: [a]. Links with the following relations were not" + " found in the response: [foo]")); new LinksSnippet(new StubLinkExtractor().withLinks(new Link("a", "alpha")), - Arrays.asList(new LinkDescriptor("foo").description("bar"))) - .document(new OperationBuilder("undocumented-link-and-missing-link", - this.snippet.getOutputDirectory()).build()); + Arrays.asList(new LinkDescriptor("foo").description("bar"))).document( + new OperationBuilder("undocumented-link-and-missing-link", + this.snippet.getOutputDirectory()).build()); } @Test public void documentedLinks() throws IOException { - this.snippet.expectLinks("documented-links").withContents( - tableWithHeader("Relation", "Description").row("a", "one") + this.snippet.expectLinks("documented-links") + .withContents(tableWithHeader("Relation", "Description").row("a", "one") .row("b", "two")); - new LinksSnippet(new StubLinkExtractor().withLinks(new Link("a", "alpha"), - new Link("b", "bravo")), Arrays.asList( - new LinkDescriptor("a").description("one"), - new LinkDescriptor("b").description("two"))) - .document(new OperationBuilder("documented-links", this.snippet - .getOutputDirectory()).build()); + new LinksSnippet( + new StubLinkExtractor().withLinks(new Link("a", "alpha"), + new Link("b", "bravo")), + Arrays.asList(new LinkDescriptor("a").description("one"), + new LinkDescriptor("b").description("two"))) + .document(new OperationBuilder("documented-links", + this.snippet.getOutputDirectory()).build()); } @Test public void linksWithCustomDescriptorAttributes() throws IOException { TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); given(resolver.resolveTemplateResource("links")) - .willReturn( - new FileSystemResource( - "src/test/resources/custom-snippet-templates/links-with-extra-column.snippet")); - this.snippet.expectLinks("links-with-custom-descriptor-attributes").withContents( - tableWithHeader("Relation", "Description", "Foo") + .willReturn(new FileSystemResource( + "src/test/resources/custom-snippet-templates/links-with-extra-column.snippet")); + this.snippet.expectLinks("links-with-custom-descriptor-attributes") + .withContents(tableWithHeader("Relation", "Description", "Foo") .row("a", "one", "alpha").row("b", "two", "bravo")); - new LinksSnippet(new StubLinkExtractor().withLinks(new Link("a", "alpha"), - new Link("b", "bravo")), Arrays.asList( - new LinkDescriptor("a").description("one").attributes( - key("foo").value("alpha")), - new LinkDescriptor("b").description("two").attributes( - key("foo").value("bravo")))).document(new OperationBuilder( - "links-with-custom-descriptor-attributes", this.snippet - .getOutputDirectory()).attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).build()); + new LinksSnippet( + new StubLinkExtractor().withLinks(new Link("a", "alpha"), + new Link("b", "bravo")), + Arrays.asList( + new LinkDescriptor("a").description("one") + .attributes(key("foo").value("alpha")), + new LinkDescriptor("b").description("two") + .attributes(key("foo").value("bravo")))) + .document(new OperationBuilder( + "links-with-custom-descriptor-attributes", + this.snippet.getOutputDirectory()) + .attribute( + TemplateEngine.class + .getName(), + new MustacheTemplateEngine( + resolver)) + .build()); } @Test public void linksWithCustomAttributes() throws IOException { TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); given(resolver.resolveTemplateResource("links")) - .willReturn( - new FileSystemResource( - "src/test/resources/custom-snippet-templates/links-with-title.snippet")); - this.snippet.expectLinks("links-with-custom-attributes").withContents( - startsWith(".Title for the links")); + .willReturn(new FileSystemResource( + "src/test/resources/custom-snippet-templates/links-with-title.snippet")); + this.snippet.expectLinks("links-with-custom-attributes") + .withContents(startsWith(".Title for the links")); - new LinksSnippet(new StubLinkExtractor().withLinks(new Link("a", "alpha"), - new Link("b", "bravo")), Arrays.asList( - new LinkDescriptor("a").description("one"), - new LinkDescriptor("b").description("two")), attributes(key("title") - .value("Title for the links"))).document(new OperationBuilder( - "links-with-custom-attributes", this.snippet.getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).build()); + new LinksSnippet( + new StubLinkExtractor().withLinks(new Link("a", "alpha"), + new Link("b", "bravo")), + Arrays.asList(new LinkDescriptor("a").description("one"), + new LinkDescriptor("b").description("two")), + attributes(key("title").value("Title for the links"))) + .document(new OperationBuilder("links-with-custom-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .build()); } private static class StubLinkExtractor implements LinkExtractor { diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/ContentModifyingOperationPreprocessorTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/ContentModifyingOperationPreprocessorTests.java index 330381f6..4e45a742 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/ContentModifyingOperationPreprocessorTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/ContentModifyingOperationPreprocessorTests.java @@ -20,6 +20,7 @@ import java.net.URI; import java.util.Collections; import org.junit.Test; + import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/DelegatingOperationRequestPreprocessorTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/DelegatingOperationRequestPreprocessorTests.java index 622dc5a8..62e69a36 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/DelegatingOperationRequestPreprocessorTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/DelegatingOperationRequestPreprocessorTests.java @@ -19,6 +19,7 @@ package org.springframework.restdocs.operation.preprocess; import java.util.Arrays; import org.junit.Test; + import org.springframework.restdocs.operation.OperationRequest; import static org.hamcrest.CoreMatchers.is; @@ -44,14 +45,14 @@ public class DelegatingOperationRequestPreprocessorTests { OperationRequest preprocessedRequest3 = mock(OperationRequest.class); given(preprocessor1.preprocess(originalRequest)).willReturn(preprocessedRequest1); - given(preprocessor2.preprocess(preprocessedRequest1)).willReturn( - preprocessedRequest2); - given(preprocessor3.preprocess(preprocessedRequest2)).willReturn( - preprocessedRequest3); + given(preprocessor2.preprocess(preprocessedRequest1)) + .willReturn(preprocessedRequest2); + given(preprocessor3.preprocess(preprocessedRequest2)) + .willReturn(preprocessedRequest3); OperationRequest result = new DelegatingOperationRequestPreprocessor( Arrays.asList(preprocessor1, preprocessor2, preprocessor3)) - .preprocess(originalRequest); + .preprocess(originalRequest); assertThat(result, is(preprocessedRequest3)); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/DelegatingOperationResponsePreprocessorTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/DelegatingOperationResponsePreprocessorTests.java index 0ddb85a3..422393d6 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/DelegatingOperationResponsePreprocessorTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/DelegatingOperationResponsePreprocessorTests.java @@ -19,6 +19,7 @@ package org.springframework.restdocs.operation.preprocess; import java.util.Arrays; import org.junit.Test; + import org.springframework.restdocs.operation.OperationResponse; import static org.hamcrest.CoreMatchers.is; @@ -43,16 +44,16 @@ public class DelegatingOperationResponsePreprocessorTests { OperationPreprocessor preprocessor3 = mock(OperationPreprocessor.class); OperationResponse preprocessedResponse3 = mock(OperationResponse.class); - given(preprocessor1.preprocess(originalResponse)).willReturn( - preprocessedResponse1); - given(preprocessor2.preprocess(preprocessedResponse1)).willReturn( - preprocessedResponse2); - given(preprocessor3.preprocess(preprocessedResponse2)).willReturn( - preprocessedResponse3); + given(preprocessor1.preprocess(originalResponse)) + .willReturn(preprocessedResponse1); + given(preprocessor2.preprocess(preprocessedResponse1)) + .willReturn(preprocessedResponse2); + given(preprocessor3.preprocess(preprocessedResponse2)) + .willReturn(preprocessedResponse3); OperationResponse result = new DelegatingOperationResponsePreprocessor( Arrays.asList(preprocessor1, preprocessor2, preprocessor3)) - .preprocess(originalResponse); + .preprocess(originalResponse); assertThat(result, is(preprocessedResponse3)); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/HeaderRemovingOperationPreprocessorTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/HeaderRemovingOperationPreprocessorTests.java index 634ef616..bd3b0779 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/HeaderRemovingOperationPreprocessorTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/HeaderRemovingOperationPreprocessorTests.java @@ -21,6 +21,7 @@ import java.util.Arrays; import java.util.Collections; import org.junit.Test; + import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/LinkMaskingContentModifierTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/LinkMaskingContentModifierTests.java index 2dfdf64b..a8d999fc 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/LinkMaskingContentModifierTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/LinkMaskingContentModifierTests.java @@ -22,13 +22,13 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import org.junit.Test; -import org.springframework.restdocs.hypermedia.Link; - import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; +import org.junit.Test; + +import org.springframework.restdocs.hypermedia.Link; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; @@ -59,8 +59,9 @@ public class LinkMaskingContentModifierTests { @Test public void formattedHalLinksAreMasked() throws Exception { - assertThat(this.contentModifier.modifyContent( - formattedHalPayloadWithLinks(this.links), null), + assertThat( + this.contentModifier + .modifyContent(formattedHalPayloadWithLinks(this.links), null), is(equalTo(formattedHalPayloadWithLinks(this.maskedLinks)))); } @@ -72,16 +73,17 @@ public class LinkMaskingContentModifierTests { @Test public void formattedAtomLinksAreMasked() throws Exception { - assertThat(this.contentModifier.modifyContent( - formattedAtomPayloadWithLinks(this.links), null), + assertThat( + this.contentModifier + .modifyContent(formattedAtomPayloadWithLinks(this.links), null), is(equalTo(formattedAtomPayloadWithLinks(this.maskedLinks)))); } @Test public void maskCanBeCustomized() throws Exception { assertThat( - new LinkMaskingContentModifier("custom").modifyContent( - formattedAtomPayloadWithLinks(this.links), null), + new LinkMaskingContentModifier("custom") + .modifyContent(formattedAtomPayloadWithLinks(this.links), null), is(equalTo(formattedAtomPayloadWithLinks(new Link("a", "custom"), new Link("b", "custom"))))); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/PatternReplacingContentModifierTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/PatternReplacingContentModifierTests.java index 9d37ed78..f8ea398d 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/PatternReplacingContentModifierTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/PatternReplacingContentModifierTests.java @@ -20,6 +20,7 @@ import java.nio.charset.Charset; import java.util.regex.Pattern; import org.junit.Test; + import org.springframework.http.MediaType; import static org.hamcrest.CoreMatchers.equalTo; @@ -65,8 +66,9 @@ public class PatternReplacingContentModifierTests { Pattern pattern = Pattern.compile("[0-9]+"); PatternReplacingContentModifier contentModifier = new PatternReplacingContentModifier( pattern, "<>"); - assertThat(contentModifier.modifyContent((japaneseContent + " 123").getBytes(), - new MediaType("text", "plain", Charset.forName("UTF-8"))), + assertThat( + contentModifier.modifyContent((japaneseContent + " 123").getBytes(), + new MediaType("text", "plain", Charset.forName("UTF-8"))), is(equalTo((japaneseContent + " <>").getBytes()))); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/PrettyPrintingContentModifierTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/PrettyPrintingContentModifierTests.java index a06c9400..8e5633a7 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/PrettyPrintingContentModifierTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/operation/preprocess/PrettyPrintingContentModifierTests.java @@ -18,6 +18,7 @@ package org.springframework.restdocs.operation.preprocess; import org.junit.Rule; import org.junit.Test; + import org.springframework.restdocs.test.OutputCapture; import static org.hamcrest.CoreMatchers.equalTo; @@ -37,25 +38,25 @@ public class PrettyPrintingContentModifierTests { @Test public void prettyPrintJson() throws Exception { - assertThat(new PrettyPrintingContentModifier().modifyContent( - "{\"a\":5}".getBytes(), null), equalTo(String.format("{%n \"a\" : 5%n}") - .getBytes())); + assertThat(new PrettyPrintingContentModifier() + .modifyContent("{\"a\":5}".getBytes(), null), + equalTo(String.format("{%n \"a\" : 5%n}").getBytes())); } @Test public void prettyPrintXml() throws Exception { - assertThat(new PrettyPrintingContentModifier().modifyContent( - "".getBytes(), null), - equalTo(String.format( - "%n" + assertThat( + new PrettyPrintingContentModifier().modifyContent( + "".getBytes(), null), + equalTo(String + .format("%n" + "%n %n%n") - .getBytes())); + .getBytes())); } @Test public void empytContentIsHandledGracefully() throws Exception { - assertThat( - new PrettyPrintingContentModifier().modifyContent("".getBytes(), null), + assertThat(new PrettyPrintingContentModifier().modifyContent("".getBytes(), null), equalTo("".getBytes())); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/JsonFieldProcessorTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/JsonFieldProcessorTests.java index 1f941597..01af2097 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/JsonFieldProcessorTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/JsonFieldProcessorTests.java @@ -22,9 +22,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.junit.Test; - import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; @@ -95,8 +94,8 @@ public class JsonFieldProcessorTests { Map entry1 = createEntry("id:1"); Map entry2 = createEntry("id:2"); Map entry3 = createEntry("id:3"); - List>> alpha = Arrays.asList( - Arrays.asList(entry1, entry2), Arrays.asList(entry3)); + List>> alpha = Arrays + .asList(Arrays.asList(entry1, entry2), Arrays.asList(entry3)); payload.put("a", alpha); assertThat(this.fieldProcessor.extract(JsonFieldPath.compile("a[][]"), payload), equalTo((Object) Arrays.asList(entry1, entry2, entry3))); @@ -108,8 +107,8 @@ public class JsonFieldProcessorTests { Map entry1 = createEntry("id:1"); Map entry2 = createEntry("id:2"); Map entry3 = createEntry("id:3"); - List>> alpha = Arrays.asList( - Arrays.asList(entry1, entry2), Arrays.asList(entry3)); + List>> alpha = Arrays + .asList(Arrays.asList(entry1, entry2), Arrays.asList(entry3)); payload.put("a", alpha); assertThat( this.fieldProcessor.extract(JsonFieldPath.compile("a[][].id"), payload), @@ -122,12 +121,13 @@ public class JsonFieldProcessorTests { Map entry1 = createEntry("ids", Arrays.asList(1, 2)); Map entry2 = createEntry("ids", Arrays.asList(3)); Map entry3 = createEntry("ids", Arrays.asList(4)); - List>> alpha = Arrays.asList( - Arrays.asList(entry1, entry2), Arrays.asList(entry3)); + List>> alpha = Arrays + .asList(Arrays.asList(entry1, entry2), Arrays.asList(entry3)); payload.put("a", alpha); - assertThat(this.fieldProcessor.extract(JsonFieldPath.compile("a[][].ids"), - payload), equalTo((Object) Arrays.asList(Arrays.asList(1, 2), - Arrays.asList(3), Arrays.asList(4)))); + assertThat( + this.fieldProcessor.extract(JsonFieldPath.compile("a[][].ids"), payload), + equalTo((Object) Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3), + Arrays.asList(4)))); } @Test(expected = FieldDoesNotExistException.class) @@ -202,8 +202,8 @@ public class JsonFieldProcessorTests { @SuppressWarnings("unchecked") @Test public void removeItemsInArray() throws IOException { - Map payload = new ObjectMapper().readValue( - "{\"a\": [{\"b\":\"bravo\"},{\"b\":\"bravo\"}]}", Map.class); + Map payload = new ObjectMapper() + .readValue("{\"a\": [{\"b\":\"bravo\"},{\"b\":\"bravo\"}]}", Map.class); this.fieldProcessor.remove(JsonFieldPath.compile("a[].b"), payload); assertThat(payload.size(), equalTo(0)); } @@ -211,8 +211,8 @@ public class JsonFieldProcessorTests { @SuppressWarnings("unchecked") @Test public void removeItemsInNestedArray() throws IOException { - Map payload = new ObjectMapper().readValue( - "{\"a\": [[{\"id\":1},{\"id\":2}], [{\"id\":3}]]}", Map.class); + Map payload = new ObjectMapper() + .readValue("{\"a\": [[{\"id\":1},{\"id\":2}], [{\"id\":3}]]}", Map.class); this.fieldProcessor.remove(JsonFieldPath.compile("a[][].id"), payload); assertThat(payload.size(), equalTo(0)); } @@ -223,8 +223,8 @@ public class JsonFieldProcessorTests { Map alpha = new HashMap<>(); payload.put("a.key", alpha); alpha.put("b.key", "bravo"); - assertThat(this.fieldProcessor.extract( - JsonFieldPath.compile("['a.key']['b.key']"), payload), + assertThat(this.fieldProcessor + .extract(JsonFieldPath.compile("['a.key']['b.key']"), payload), equalTo((Object) "bravo")); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/JsonFieldTypeResolverTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/JsonFieldTypeResolverTests.java index 7ef74aa7..502bfd29 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/JsonFieldTypeResolverTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/JsonFieldTypeResolverTests.java @@ -19,12 +19,11 @@ package org.springframework.restdocs.payload; import java.io.IOException; import java.util.Map; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import com.fasterxml.jackson.databind.ObjectMapper; - import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; @@ -73,30 +72,33 @@ public class JsonFieldTypeResolverTests { @Test public void nestedField() throws IOException { - assertThat(this.fieldTypeResolver.resolveFieldType("a.b.c", - createPayload("{\"a\":{\"b\":{\"c\":{}}}}")), + assertThat( + this.fieldTypeResolver.resolveFieldType("a.b.c", + createPayload("{\"a\":{\"b\":{\"c\":{}}}}")), equalTo(JsonFieldType.OBJECT)); } @Test public void multipleFieldsWithSameType() throws IOException { - assertThat(this.fieldTypeResolver.resolveFieldType("a[].id", - createPayload("{\"a\":[{\"id\":1},{\"id\":2}]}")), + assertThat( + this.fieldTypeResolver.resolveFieldType("a[].id", + createPayload("{\"a\":[{\"id\":1},{\"id\":2}]}")), equalTo(JsonFieldType.NUMBER)); } @Test public void multipleFieldsWithDifferentTypes() throws IOException { - assertThat(this.fieldTypeResolver.resolveFieldType("a[].id", - createPayload("{\"a\":[{\"id\":1},{\"id\":true}]}")), + assertThat( + this.fieldTypeResolver.resolveFieldType("a[].id", + createPayload("{\"a\":[{\"id\":1},{\"id\":true}]}")), equalTo(JsonFieldType.VARIES)); } @Test public void nonExistentFieldProducesIllegalArgumentException() throws IOException { this.thrownException.expect(FieldDoesNotExistException.class); - this.thrownException - .expectMessage("The payload does not contain a field with the path 'a.b'"); + this.thrownException.expectMessage( + "The payload does not contain a field with the path 'a.b'"); this.fieldTypeResolver.resolveFieldType("a.b", createPayload("{\"a\":{}}")); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/RequestFieldsSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/RequestFieldsSnippetTests.java index 0fedbdee..40097f3d 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/RequestFieldsSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/RequestFieldsSnippetTests.java @@ -23,6 +23,7 @@ import java.util.Collections; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; + import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -58,69 +59,74 @@ public class RequestFieldsSnippetTests { @Test public void mapRequestWithFields() throws IOException { - this.snippet.expectRequestFields("map-request-with-fields").withContents( - tableWithHeader("Path", "Type", "Description") + this.snippet.expectRequestFields("map-request-with-fields") + .withContents(tableWithHeader("Path", "Type", "Description") .row("a.b", "Number", "one").row("a.c", "String", "two") .row("a", "Object", "three")); new RequestFieldsSnippet(Arrays.asList(fieldWithPath("a.b").description("one"), fieldWithPath("a.c").description("two"), - fieldWithPath("a").description("three"))).document(new OperationBuilder( - "map-request-with-fields", this.snippet.getOutputDirectory()) - .request("http://localhost") - .content("{\"a\": {\"b\": 5, \"c\": \"charlie\"}}").build()); + fieldWithPath("a").description("three"))) + .document(new OperationBuilder("map-request-with-fields", + this.snippet.getOutputDirectory()) + .request("http://localhost") + .content( + "{\"a\": {\"b\": 5, \"c\": \"charlie\"}}") + .build()); } @Test public void arrayRequestWithFields() throws IOException { - this.snippet.expectRequestFields("array-request-with-fields").withContents( - tableWithHeader("Path", "Type", "Description") + this.snippet.expectRequestFields("array-request-with-fields") + .withContents(tableWithHeader("Path", "Type", "Description") .row("[]a.b", "Number", "one").row("[]a.c", "String", "two") .row("[]a", "Object", "three")); new RequestFieldsSnippet(Arrays.asList(fieldWithPath("[]a.b").description("one"), - fieldWithPath("[]a.c").description("two"), fieldWithPath("[]a") - .description("three"))).document(new OperationBuilder( - "array-request-with-fields", this.snippet.getOutputDirectory()) - .request("http://localhost") - .content("[{\"a\": {\"b\": 5}},{\"a\": {\"c\": \"charlie\"}}]").build()); + fieldWithPath("[]a.c").description("two"), + fieldWithPath("[]a").description("three"))) + .document(new OperationBuilder("array-request-with-fields", + this.snippet.getOutputDirectory()) + .request("http://localhost") + .content( + "[{\"a\": {\"b\": 5}},{\"a\": {\"c\": \"charlie\"}}]") + .build()); } @Test public void undocumentedRequestField() throws IOException { this.thrown.expect(SnippetException.class); - this.thrown - .expectMessage(startsWith("The following parts of the payload were not" - + " documented:")); + this.thrown.expectMessage(startsWith( + "The following parts of the payload were not" + " documented:")); new RequestFieldsSnippet(Collections.emptyList()) - .document(new OperationBuilder("undocumented-request-field", this.snippet - .getOutputDirectory()).request("http://localhost") - .content("{\"a\": 5}").build()); + .document(new OperationBuilder("undocumented-request-field", + this.snippet.getOutputDirectory()).request("http://localhost") + .content("{\"a\": 5}").build()); } @Test public void ignoredRequestField() throws IOException { - this.snippet.expectRequestFields("ignored-request-field").withContents( - tableWithHeader("Path", "Type", "Description").row("b", "Number", - "Field b")); + this.snippet.expectRequestFields("ignored-request-field") + .withContents(tableWithHeader("Path", "Type", "Description").row("b", + "Number", "Field b")); new RequestFieldsSnippet(Arrays.asList(fieldWithPath("a").ignored(), fieldWithPath("b").description("Field b"))) - .document(new OperationBuilder("ignored-request-field", this.snippet - .getOutputDirectory()).request("http://localhost") - .content("{\"a\": 5, \"b\": 4}").build()); + .document(new OperationBuilder("ignored-request-field", + this.snippet.getOutputDirectory()) + .request("http://localhost") + .content("{\"a\": 5, \"b\": 4}").build()); } @Test public void missingRequestField() throws IOException { this.thrown.expect(SnippetException.class); - this.thrown - .expectMessage(equalTo("Fields with the following paths were not found" - + " in the payload: [a.b]")); + this.thrown.expectMessage(equalTo("Fields with the following paths were not found" + + " in the payload: [a.b]")); new RequestFieldsSnippet(Arrays.asList(fieldWithPath("a.b").description("one"))) - .document(new OperationBuilder("missing-request-fields", this.snippet - .getOutputDirectory()).request("http://localhost").content("{}") - .build()); + .document(new OperationBuilder("missing-request-fields", + this.snippet.getOutputDirectory()).request("http://localhost") + .content("{}").build()); } @Test @@ -128,17 +134,16 @@ public class RequestFieldsSnippetTests { this.thrown.expect(FieldTypeRequiredException.class); new RequestFieldsSnippet(Arrays.asList(fieldWithPath("a.b").description("one") .optional())).document(new OperationBuilder( - "missing-optional-request-field-with-no-type", this.snippet - .getOutputDirectory()).request("http://localhost").content("{ }") - .build()); + "missing-optional-request-field-with-no-type", + this.snippet.getOutputDirectory()).request("http://localhost") + .content("{ }").build()); } @Test public void undocumentedRequestFieldAndMissingRequestField() throws IOException { this.thrown.expect(SnippetException.class); - this.thrown - .expectMessage(startsWith("The following parts of the payload were not" - + " documented:")); + this.thrown.expectMessage(startsWith( + "The following parts of the payload were not" + " documented:")); this.thrown .expectMessage(endsWith("Fields with the following paths were not found" + " in the payload: [a.b]")); @@ -146,153 +151,163 @@ public class RequestFieldsSnippetTests { .document(new OperationBuilder( "undocumented-request-field-and-missing-request-field", this.snippet.getOutputDirectory()).request("http://localhost") - .content("{ \"a\": { \"c\": 5 }}").build()); + .content("{ \"a\": { \"c\": 5 }}").build()); } @Test public void requestFieldsWithCustomDescriptorAttributes() throws IOException { TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("request-fields")).willReturn( - snippetResource("request-fields-with-extra-column")); - this.snippet.expectRequestFields( - "request-fields-with-custom-descriptor-attributes").withContents( - tableWithHeader("Path", "Type", "Description", "Foo") + given(resolver.resolveTemplateResource("request-fields")) + .willReturn(snippetResource("request-fields-with-extra-column")); + this.snippet + .expectRequestFields("request-fields-with-custom-descriptor-attributes") + .withContents(tableWithHeader("Path", "Type", "Description", "Foo") .row("a.b", "Number", "one", "alpha") .row("a.c", "String", "two", "bravo") .row("a", "Object", "three", "charlie")); new RequestFieldsSnippet(Arrays.asList( - fieldWithPath("a.b").description("one").attributes( - key("foo").value("alpha")), - fieldWithPath("a.c").description("two").attributes( - key("foo").value("bravo")), - fieldWithPath("a").description("three").attributes( - key("foo").value("charlie")))).document(new OperationBuilder( - "request-fields-with-custom-descriptor-attributes", this.snippet - .getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).request("http://localhost") - .content("{\"a\": {\"b\": 5, \"c\": \"charlie\"}}").build()); + fieldWithPath("a.b").description("one") + .attributes(key("foo").value("alpha")), + fieldWithPath("a.c").description("two") + .attributes(key("foo").value("bravo")), + fieldWithPath("a").description("three") + .attributes(key("foo").value("charlie")))) + .document(new OperationBuilder( + "request-fields-with-custom-descriptor-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine( + resolver)) + .request("http://localhost") + .content( + "{\"a\": {\"b\": 5, \"c\": \"charlie\"}}") + .build()); } @Test public void requestFieldsWithCustomAttributes() throws IOException { TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("request-fields")).willReturn( - snippetResource("request-fields-with-title")); + given(resolver.resolveTemplateResource("request-fields")) + .willReturn(snippetResource("request-fields-with-title")); this.snippet.expectRequestFields("request-fields-with-custom-attributes") .withContents(startsWith(".Custom title")); new RequestFieldsSnippet(Arrays.asList(fieldWithPath("a").description("one")), - attributes(key("title").value("Custom title"))) - .document(new OperationBuilder("request-fields-with-custom-attributes", - this.snippet.getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)) - .request("http://localhost").content("{\"a\": \"foo\"}").build()); + attributes(key("title").value("Custom title"))).document( + new OperationBuilder("request-fields-with-custom-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .request("http://localhost") + .content("{\"a\": \"foo\"}").build()); } @Test public void requestFieldsWithListDescription() throws IOException { TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("request-fields")).willReturn( - snippetResource("request-fields-with-list-description")); + given(resolver.resolveTemplateResource("request-fields")) + .willReturn(snippetResource("request-fields-with-list-description")); this.snippet.expectRequestFields("request-fields-with-list-description") - .withContents( - tableWithHeader("Path", "Type", "Description") - // - .row("a", "String", String.format(" - one%n - two")) - .configuration("[cols=\"1,1,1a\"]")); + .withContents(tableWithHeader("Path", "Type", "Description") + // + .row("a", "String", String.format(" - one%n - two")) + .configuration("[cols=\"1,1,1a\"]")); - new RequestFieldsSnippet(Arrays.asList(fieldWithPath("a").description( - Arrays.asList("one", "two")))) - .document(new OperationBuilder("request-fields-with-list-description", - this.snippet.getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)) - .request("http://localhost").content("{\"a\": \"foo\"}").build()); + new RequestFieldsSnippet(Arrays.asList( + fieldWithPath("a").description(Arrays.asList("one", "two")))).document( + new OperationBuilder("request-fields-with-list-description", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .request("http://localhost") + .content("{\"a\": \"foo\"}").build()); } @Test public void xmlRequestFields() throws IOException { - this.snippet.expectRequestFields("xml-request").withContents( - tableWithHeader("Path", "Type", "Description").row("a/b", "b", "one") - .row("a/c", "c", "two").row("a", "a", "three")); + this.snippet.expectRequestFields("xml-request") + .withContents(tableWithHeader("Path", "Type", "Description") + .row("a/b", "b", "one").row("a/c", "c", "two") + .row("a", "a", "three")); - new RequestFieldsSnippet(Arrays.asList(fieldWithPath("a/b").description("one") - .type("b"), fieldWithPath("a/c").description("two").type("c"), - fieldWithPath("a").description("three").type("a"))) - .document(new OperationBuilder("xml-request", this.snippet - .getOutputDirectory()) - .request("http://localhost") - .content("5charlie") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + new RequestFieldsSnippet( + Arrays.asList(fieldWithPath("a/b").description("one").type("b"), + fieldWithPath("a/c").description("two").type("c"), + fieldWithPath("a").description("three") + .type("a"))).document(new OperationBuilder("xml-request", + this.snippet.getOutputDirectory()) + .request("http://localhost") + .content("5charlie") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void undocumentedXmlRequestField() throws IOException { this.thrown.expect(SnippetException.class); - this.thrown - .expectMessage(startsWith("The following parts of the payload were not" - + " documented:")); + this.thrown.expectMessage(startsWith( + "The following parts of the payload were not" + " documented:")); new RequestFieldsSnippet(Collections.emptyList()) .document(new OperationBuilder("undocumented-xml-request-field", - this.snippet.getOutputDirectory()) - .request("http://localhost") - .content("5") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + this.snippet.getOutputDirectory()).request("http://localhost") + .content("5") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void xmlRequestFieldWithNoType() throws IOException { this.thrown.expect(FieldTypeRequiredException.class); new RequestFieldsSnippet(Arrays.asList(fieldWithPath("a").description("one"))) - .document(new OperationBuilder("missing-xml-request", this.snippet - .getOutputDirectory()) - .request("http://localhost") - .content("5") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + .document(new OperationBuilder("missing-xml-request", + this.snippet.getOutputDirectory()).request("http://localhost") + .content("5").header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void missingXmlRequestField() throws IOException { this.thrown.expect(SnippetException.class); - this.thrown - .expectMessage(equalTo("Fields with the following paths were not found" - + " in the payload: [a/b]")); + this.thrown.expectMessage(equalTo("Fields with the following paths were not found" + + " in the payload: [a/b]")); new RequestFieldsSnippet(Arrays.asList(fieldWithPath("a/b").description("one"), - fieldWithPath("a").description("one"))).document(new OperationBuilder( - "missing-xml-request-fields", this.snippet.getOutputDirectory()) - .request("http://localhost").content("") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + fieldWithPath("a").description("one"))) + .document( + new OperationBuilder("missing-xml-request-fields", + this.snippet.getOutputDirectory()) + .request("http://localhost") + .content("") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test - public void undocumentedXmlRequestFieldAndMissingXmlRequestField() throws IOException { + public void undocumentedXmlRequestFieldAndMissingXmlRequestField() + throws IOException { this.thrown.expect(SnippetException.class); - this.thrown - .expectMessage(startsWith("The following parts of the payload were not" - + " documented:")); + this.thrown.expectMessage(startsWith( + "The following parts of the payload were not" + " documented:")); this.thrown .expectMessage(endsWith("Fields with the following paths were not found" + " in the payload: [a/b]")); new RequestFieldsSnippet(Arrays.asList(fieldWithPath("a/b").description("one"))) .document(new OperationBuilder( "undocumented-xml-request-field-and-missing-xml-request-field", - this.snippet.getOutputDirectory()) - .request("http://localhost") - .content("5") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + this.snippet.getOutputDirectory()).request("http://localhost") + .content("5") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } private FileSystemResource snippetResource(String name) { - return new FileSystemResource("src/test/resources/custom-snippet-templates/" - + name + ".snippet"); + return new FileSystemResource( + "src/test/resources/custom-snippet-templates/" + name + ".snippet"); } } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/ResponseFieldsSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/ResponseFieldsSnippetTests.java index ad6653d3..a33a4fec 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/ResponseFieldsSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/ResponseFieldsSnippetTests.java @@ -23,6 +23,7 @@ import java.util.Collections; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; + import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -58,261 +59,282 @@ public class ResponseFieldsSnippetTests { @Test public void mapResponseWithFields() throws IOException { - this.snippet.expectResponseFields("map-response-with-fields").withContents( - tableWithHeader("Path", "Type", "Description").row("id", "Number", "one") - .row("date", "String", "two").row("assets", "Array", "three") - .row("assets[]", "Object", "four") + this.snippet.expectResponseFields("map-response-with-fields") + .withContents(tableWithHeader("Path", "Type", "Description") + .row("id", "Number", "one").row("date", "String", "two") + .row("assets", "Array", "three").row("assets[]", "Object", "four") .row("assets[].id", "Number", "five") .row("assets[].name", "String", "six")); new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("id").description("one"), - fieldWithPath("date").description("two"), fieldWithPath("assets") - .description("three"), + fieldWithPath("date").description("two"), + fieldWithPath("assets").description("three"), fieldWithPath("assets[]").description("four"), fieldWithPath("assets[].id").description("five"), fieldWithPath("assets[].name").description("six"))) - .document(new OperationBuilder("map-response-with-fields", this.snippet - .getOutputDirectory()) - .response() - .content( - "{\"id\": 67,\"date\": \"2015-01-20\",\"assets\":" - + " [{\"id\":356,\"name\": \"sample\"}]}") - .build()); + .document(new OperationBuilder("map-response-with-fields", + this.snippet.getOutputDirectory()) + .response() + .content( + "{\"id\": 67,\"date\": \"2015-01-20\",\"assets\":" + + " [{\"id\":356,\"name\": \"sample\"}]}") + .build()); } @Test public void arrayResponseWithFields() throws IOException { - this.snippet.expectResponseFields("array-response-with-fields").withContents( - tableWithHeader("Path", "Type", "Description") + this.snippet.expectResponseFields("array-response-with-fields") + .withContents(tableWithHeader("Path", "Type", "Description") .row("[]a.b", "Number", "one").row("[]a.c", "String", "two") .row("[]a", "Object", "three")); - new ResponseFieldsSnippet(Arrays.asList( - fieldWithPath("[]a.b").description("one"), fieldWithPath("[]a.c") - .description("two"), fieldWithPath("[]a").description("three"))) - .document(new OperationBuilder("array-response-with-fields", this.snippet - .getOutputDirectory()).response() - .content("[{\"a\": {\"b\": 5}},{\"a\": {\"c\": \"charlie\"}}]") - .build()); + new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("[]a.b").description("one"), + fieldWithPath("[]a.c").description("two"), + fieldWithPath("[]a").description("three"))) + .document(new OperationBuilder("array-response-with-fields", + this.snippet.getOutputDirectory()) + .response() + .content( + "[{\"a\": {\"b\": 5}},{\"a\": {\"c\": \"charlie\"}}]") + .build()); } @Test public void arrayResponse() throws IOException { this.snippet.expectResponseFields("array-response") - .withContents( - tableWithHeader("Path", "Type", "Description").row("[]", - "String", "one")); + .withContents(tableWithHeader("Path", "Type", "Description").row("[]", + "String", "one")); new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("[]").description("one"))) - .document(new OperationBuilder("array-response", this.snippet - .getOutputDirectory()).response() - .content("[\"a\", \"b\", \"c\"]").build()); + .document(new OperationBuilder("array-response", + this.snippet.getOutputDirectory()).response() + .content("[\"a\", \"b\", \"c\"]").build()); } @Test public void ignoredResponseField() throws IOException { - this.snippet.expectResponseFields("ignored-response-field").withContents( - tableWithHeader("Path", "Type", "Description").row("b", "Number", - "Field b")); + this.snippet.expectResponseFields("ignored-response-field") + .withContents(tableWithHeader("Path", "Type", "Description").row("b", + "Number", "Field b")); new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("a").ignored(), fieldWithPath("b").description("Field b"))) - .document(new OperationBuilder("ignored-response-field", this.snippet - .getOutputDirectory()).response().content("{\"a\": 5, \"b\": 4}") - .build()); + .document(new OperationBuilder("ignored-response-field", + this.snippet.getOutputDirectory()).response() + .content("{\"a\": 5, \"b\": 4}").build()); } @Test public void responseFieldsWithCustomDescriptorAttributes() throws IOException { TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("response-fields")).willReturn( - snippetResource("response-fields-with-extra-column")); + given(resolver.resolveTemplateResource("response-fields")) + .willReturn(snippetResource("response-fields-with-extra-column")); this.snippet.expectResponseFields("response-fields-with-custom-attributes") - .withContents( - tableWithHeader("Path", "Type", "Description", "Foo") - .row("a.b", "Number", "one", "alpha") - .row("a.c", "String", "two", "bravo") - .row("a", "Object", "three", "charlie")); + .withContents(tableWithHeader("Path", "Type", "Description", "Foo") + .row("a.b", "Number", "one", "alpha") + .row("a.c", "String", "two", "bravo") + .row("a", "Object", "three", "charlie")); new ResponseFieldsSnippet(Arrays.asList( - fieldWithPath("a.b").description("one").attributes( - key("foo").value("alpha")), - fieldWithPath("a.c").description("two").attributes( - key("foo").value("bravo")), - fieldWithPath("a").description("three").attributes( - key("foo").value("charlie")))).document(new OperationBuilder( - "response-fields-with-custom-attributes", this.snippet - .getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).response() - .content("{\"a\": {\"b\": 5, \"c\": \"charlie\"}}").build()); + fieldWithPath("a.b").description("one") + .attributes(key("foo").value("alpha")), + fieldWithPath("a.c").description("two") + .attributes(key("foo").value("bravo")), + fieldWithPath("a").description("three") + .attributes(key("foo").value("charlie")))) + .document(new OperationBuilder( + "response-fields-with-custom-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine( + resolver)) + .response() + .content( + "{\"a\": {\"b\": 5, \"c\": \"charlie\"}}") + .build()); } @Test public void responseFieldsWithCustomAttributes() throws IOException { TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("response-fields")).willReturn( - snippetResource("response-fields-with-title")); + given(resolver.resolveTemplateResource("response-fields")) + .willReturn(snippetResource("response-fields-with-title")); this.snippet.expectResponseFields("response-fields-with-custom-attributes") .withContents(startsWith(".Custom title")); new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("a").description("one")), - attributes(key("title").value("Custom title"))) - .document(new OperationBuilder("response-fields-with-custom-attributes", - this.snippet.getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).response() - .content("{\"a\": \"foo\"}").build()); + attributes(key("title").value("Custom title"))).document( + new OperationBuilder("response-fields-with-custom-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .response().content("{\"a\": \"foo\"}").build()); } @Test public void xmlResponseFields() throws IOException { - this.snippet.expectResponseFields("xml-response").withContents( - tableWithHeader("Path", "Type", "Description").row("a/b", "b", "one") - .row("a/c", "c", "two").row("a", "a", "three")); - new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("a/b").description("one") - .type("b"), fieldWithPath("a/c").description("two").type("c"), - fieldWithPath("a").description("three").type("a"))) - .document(new OperationBuilder("xml-response", this.snippet - .getOutputDirectory()) - .response() - .content("5charlie") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + this.snippet.expectResponseFields("xml-response") + .withContents(tableWithHeader("Path", "Type", "Description") + .row("a/b", "b", "one").row("a/c", "c", "two") + .row("a", "a", "three")); + new ResponseFieldsSnippet( + Arrays.asList(fieldWithPath("a/b").description("one").type("b"), + fieldWithPath("a/c").description("two").type("c"), + fieldWithPath("a").description("three") + .type("a"))).document(new OperationBuilder("xml-response", + this.snippet.getOutputDirectory()).response() + .content("5charlie") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void undocumentedXmlResponseField() throws IOException { this.thrown.expect(SnippetException.class); - this.thrown - .expectMessage(startsWith("The following parts of the payload were not" - + " documented:")); - new ResponseFieldsSnippet(Collections.emptyList()) - .document(new OperationBuilder("undocumented-xml-response-field", - this.snippet.getOutputDirectory()) - .response() - .content("5") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + this.thrown.expectMessage(startsWith( + "The following parts of the payload were not" + " documented:")); + new ResponseFieldsSnippet( + Collections.emptyList()) + .document( + new OperationBuilder("undocumented-xml-response-field", + this.snippet.getOutputDirectory()).response() + .content("5") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void xmlAttribute() throws IOException { - this.snippet.expectResponseFields("xml-attribute").withContents( - tableWithHeader("Path", "Type", "Description").row("a", "b", "one").row( - "a/@id", "c", "two")); - new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("a").description("one") - .type("b"), fieldWithPath("a/@id").description("two").type("c"))) - .document(new OperationBuilder("xml-attribute", this.snippet - .getOutputDirectory()) - .response() - .content("foo") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + this.snippet.expectResponseFields("xml-attribute") + .withContents(tableWithHeader("Path", "Type", "Description") + .row("a", "b", "one").row("a/@id", "c", "two")); + new ResponseFieldsSnippet( + Arrays.asList(fieldWithPath("a").description("one").type("b"), + fieldWithPath("a/@id").description("two").type("c"))) + .document(new OperationBuilder("xml-attribute", + this.snippet.getOutputDirectory()).response() + .content("foo") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void missingXmlAttribute() throws IOException { this.thrown.expect(SnippetException.class); - this.thrown - .expectMessage(equalTo("Fields with the following paths were not found" - + " in the payload: [a/@id]")); - new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("a").description("one") - .type("b"), fieldWithPath("a/@id").description("two").type("c"))) - .document(new OperationBuilder("missing-xml-attribute", this.snippet - .getOutputDirectory()) - .response() - .content("foo") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + this.thrown.expectMessage(equalTo("Fields with the following paths were not found" + + " in the payload: [a/@id]")); + new ResponseFieldsSnippet( + Arrays.asList(fieldWithPath("a").description("one").type("b"), + fieldWithPath("a/@id").description("two").type("c"))) + .document(new OperationBuilder("missing-xml-attribute", + this.snippet.getOutputDirectory()).response() + .content("foo") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void missingOptionalXmlAttribute() throws IOException { - this.snippet.expectResponseFields("missing-optional-xml-attribute").withContents( - tableWithHeader("Path", "Type", "Description").row("a", "b", "one").row( - "a/@id", "c", "two")); - new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("a").description("one") - .type("b"), fieldWithPath("a/@id").description("two").type("c") - .optional())).document(new OperationBuilder( - "missing-optional-xml-attribute", this.snippet.getOutputDirectory()) - .response().content("foo") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + this.snippet.expectResponseFields("missing-optional-xml-attribute") + .withContents(tableWithHeader("Path", "Type", "Description") + .row("a", "b", "one").row("a/@id", "c", "two")); + new ResponseFieldsSnippet(Arrays.asList( + fieldWithPath("a").description("one").type("b"), + fieldWithPath("a/@id").description("two").type("c").optional())) + .document( + new OperationBuilder("missing-optional-xml-attribute", + this.snippet.getOutputDirectory()).response() + .content("foo") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void undocumentedAttributeDoesNotCauseFailure() throws IOException { this.snippet.expectResponseFields("undocumented-attribute").withContents( tableWithHeader("Path", "Type", "Description").row("a", "a", "one")); - new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("a").description("one") - .type("a"))).document(new OperationBuilder("undocumented-attribute", - this.snippet.getOutputDirectory()).response() - .content("bar") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + new ResponseFieldsSnippet( + Arrays.asList(fieldWithPath("a").description("one").type("a"))) + .document( + new OperationBuilder("undocumented-attribute", + this.snippet.getOutputDirectory()).response() + .content("bar") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void documentedXmlAttributesAreRemoved() throws IOException { this.thrown.expect(SnippetException.class); - this.thrown.expectMessage(equalTo(String - .format("The following parts of the payload were not documented:" + this.thrown.expectMessage(equalTo( + String.format("The following parts of the payload were not documented:" + "%nbar%n"))); - new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("a/@id").description("one") - .type("a"))).document(new OperationBuilder( - "documented-attribute-is-removed", this.snippet.getOutputDirectory()) - .response().content("bar") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + new ResponseFieldsSnippet( + Arrays.asList( + fieldWithPath("a/@id").description("one") + .type("a"))).document(new OperationBuilder( + "documented-attribute-is-removed", + this.snippet.getOutputDirectory()).response() + .content("bar") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void xmlResponseFieldWithNoType() throws IOException { this.thrown.expect(FieldTypeRequiredException.class); new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("a").description("one"))) - .document(new OperationBuilder("xml-response-no-field-type", this.snippet - .getOutputDirectory()) - .response() - .content("5") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + .document(new OperationBuilder("xml-response-no-field-type", + this.snippet.getOutputDirectory()).response().content("5") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void missingXmlResponseField() throws IOException { this.thrown.expect(SnippetException.class); - this.thrown - .expectMessage(equalTo("Fields with the following paths were not found" - + " in the payload: [a/b]")); + this.thrown.expectMessage(equalTo("Fields with the following paths were not found" + + " in the payload: [a/b]")); new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("a/b").description("one"), - fieldWithPath("a").description("one"))).document(new OperationBuilder( - "missing-xml-response-field", this.snippet.getOutputDirectory()) - .response().content("") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + fieldWithPath("a").description("one"))) + .document( + new OperationBuilder("missing-xml-response-field", + this.snippet.getOutputDirectory()).response() + .content("") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } @Test public void undocumentedXmlResponseFieldAndMissingXmlResponseField() throws IOException { this.thrown.expect(SnippetException.class); - this.thrown - .expectMessage(startsWith("The following parts of the payload were not" - + " documented:")); + this.thrown.expectMessage(startsWith( + "The following parts of the payload were not" + " documented:")); this.thrown .expectMessage(endsWith("Fields with the following paths were not found" + " in the payload: [a/b]")); - new ResponseFieldsSnippet(Arrays.asList(fieldWithPath("a/b").description("one"))) - .document(new OperationBuilder( - "undocumented-xml-request-field-and-missing-xml-request-field", - this.snippet.getOutputDirectory()) - .response() - .content("5") - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE) - .build()); + new ResponseFieldsSnippet( + Arrays.asList(fieldWithPath("a/b").description("one"))) + .document( + new OperationBuilder( + "undocumented-xml-request-field-and-missing-xml-request-field", + this.snippet.getOutputDirectory()).response() + .content("5") + .header(HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_XML_VALUE) + .build()); } private FileSystemResource snippetResource(String name) { - return new FileSystemResource("src/test/resources/custom-snippet-templates/" - + name + ".snippet"); + return new FileSystemResource( + "src/test/resources/custom-snippet-templates/" + name + ".snippet"); } } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetTests.java index 4f2ee0b2..885ba390 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetTests.java @@ -23,6 +23,7 @@ import java.util.Collections; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; + import org.springframework.core.io.FileSystemResource; import org.springframework.restdocs.snippet.SnippetException; import org.springframework.restdocs.templates.TemplateEngine; @@ -62,8 +63,10 @@ public class PathParametersSnippetTests { + " not documented: [a]")); new PathParametersSnippet(Collections.emptyList()) .document(new OperationBuilder("undocumented-path-parameter", - this.snippet.getOutputDirectory()).attribute( - "org.springframework.restdocs.urlTemplate", "/{a}/").build()); + this.snippet.getOutputDirectory()) + .attribute("org.springframework.restdocs.urlTemplate", + "/{a}/") + .build()); } @Test @@ -73,9 +76,10 @@ public class PathParametersSnippetTests { + " not found in the request: [a]")); new PathParametersSnippet( Arrays.asList(parameterWithName("a").description("one"))) - .document(new OperationBuilder("missing-path-parameter", this.snippet - .getOutputDirectory()).attribute( - "org.springframework.restdocs.urlTemplate", "/").build()); + .document(new OperationBuilder("missing-path-parameter", + this.snippet.getOutputDirectory()).attribute( + "org.springframework.restdocs.urlTemplate", "/") + .build()); } @Test @@ -85,23 +89,26 @@ public class PathParametersSnippetTests { + " not documented: [b]. Path parameters with the following" + " names were not found in the request: [a]")); new PathParametersSnippet( - Arrays.asList(parameterWithName("a").description("one"))) - .document(new OperationBuilder( - "undocumented-and-missing-path-parameters", this.snippet - .getOutputDirectory()).attribute( - "org.springframework.restdocs.urlTemplate", "/{b}").build()); + Arrays.asList(parameterWithName("a").description("one"))).document( + new OperationBuilder("undocumented-and-missing-path-parameters", + this.snippet.getOutputDirectory()) + .attribute( + "org.springframework.restdocs.urlTemplate", + "/{b}") + .build()); } @Test public void pathParameters() throws IOException { this.snippet.expectPathParameters("path-parameters").withContents( - tableWithTitleAndHeader("/{a}/{b}", "Parameter", "Description").row("a", - "one").row("b", "two")); - new PathParametersSnippet(Arrays.asList( - parameterWithName("a").description("one"), parameterWithName("b") - .description("two"))).document(new OperationBuilder( - "path-parameters", this.snippet.getOutputDirectory()).attribute( - "org.springframework.restdocs.urlTemplate", "/{a}/{b}").build()); + tableWithTitleAndHeader("/{a}/{b}", "Parameter", "Description") + .row("a", "one").row("b", "two")); + new PathParametersSnippet(Arrays.asList(parameterWithName("a").description("one"), + parameterWithName("b").description("two"))).document(new OperationBuilder( + "path-parameters", this.snippet.getOutputDirectory()) + .attribute("org.springframework.restdocs.urlTemplate", + "/{a}/{b}") + .build()); } @Test @@ -110,10 +117,11 @@ public class PathParametersSnippetTests { tableWithTitleAndHeader("/{a}/{b}", "Parameter", "Description").row("b", "two")); new PathParametersSnippet(Arrays.asList(parameterWithName("a").ignored(), - parameterWithName("b").description("two"))) - .document(new OperationBuilder("ignored-path-parameter", this.snippet - .getOutputDirectory()).attribute( - "org.springframework.restdocs.urlTemplate", "/{a}/{b}").build()); + parameterWithName("b").description("two"))).document(new OperationBuilder( + "ignored-path-parameter", this.snippet.getOutputDirectory()) + .attribute("org.springframework.restdocs.urlTemplate", + "/{a}/{b}") + .build()); } @Test @@ -122,59 +130,69 @@ public class PathParametersSnippetTests { .withContents( tableWithTitleAndHeader("/{a}/{b}", "Parameter", "Description") .row("a", "one").row("b", "two")); - new PathParametersSnippet(Arrays.asList( - parameterWithName("a").description("one"), parameterWithName("b") - .description("two"))) - .document(new OperationBuilder("path-parameters-with-query-string", - this.snippet.getOutputDirectory()).attribute( - "org.springframework.restdocs.urlTemplate", "/{a}/{b}?foo=bar") - .build()); + new PathParametersSnippet(Arrays.asList(parameterWithName("a").description("one"), + parameterWithName("b").description("two"))).document( + new OperationBuilder("path-parameters-with-query-string", + this.snippet.getOutputDirectory()) + .attribute( + "org.springframework.restdocs.urlTemplate", + "/{a}/{b}?foo=bar") + .build()); } @Test public void pathParametersWithCustomDescriptorAttributes() throws IOException { TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("path-parameters")).willReturn( - snippetResource("path-parameters-with-extra-column")); - this.snippet.expectPathParameters( - "path-parameters-with-custom-descriptor-attributes").withContents( - tableWithHeader("Parameter", "Description", "Foo").row("a", "one", - "alpha").row("b", "two", "bravo")); + given(resolver.resolveTemplateResource("path-parameters")) + .willReturn(snippetResource("path-parameters-with-extra-column")); + this.snippet + .expectPathParameters("path-parameters-with-custom-descriptor-attributes") + .withContents(tableWithHeader("Parameter", "Description", "Foo") + .row("a", "one", "alpha").row("b", "two", "bravo")); - new PathParametersSnippet(Arrays.asList(parameterWithName("a").description("one") - .attributes(key("foo").value("alpha")), parameterWithName("b") - .description("two").attributes(key("foo").value("bravo")))) - .document(new OperationBuilder( - "path-parameters-with-custom-descriptor-attributes", this.snippet - .getOutputDirectory()) - .attribute("org.springframework.restdocs.urlTemplate", "/{a}/{b}") - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).build()); + new PathParametersSnippet(Arrays.asList( + parameterWithName("a").description("one") + .attributes(key("foo").value("alpha")), + parameterWithName("b").description("two").attributes( + key("foo").value("bravo")))).document(new OperationBuilder( + "path-parameters-with-custom-descriptor-attributes", + this.snippet.getOutputDirectory()).attribute( + "org.springframework.restdocs.urlTemplate", + "/{a}/{b}") + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .build()); } @Test public void pathParametersWithCustomAttributes() throws IOException { TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("path-parameters")).willReturn( - snippetResource("path-parameters-with-title")); + given(resolver.resolveTemplateResource("path-parameters")) + .willReturn(snippetResource("path-parameters-with-title")); this.snippet.expectPathParameters("path-parameters-with-custom-attributes") .withContents(startsWith(".The title")); - new PathParametersSnippet(Arrays.asList(parameterWithName("a").description("one") - .attributes(key("foo").value("alpha")), parameterWithName("b") - .description("two").attributes(key("foo").value("bravo"))), - attributes(key("title").value("The title"))) - .document(new OperationBuilder("path-parameters-with-custom-attributes", - this.snippet.getOutputDirectory()) - .attribute("org.springframework.restdocs.urlTemplate", "/{a}/{b}") - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).build()); + new PathParametersSnippet( + Arrays.asList( + parameterWithName("a").description("one") + .attributes(key("foo").value("alpha")), + parameterWithName("b").description("two") + .attributes(key("foo").value("bravo"))), + attributes(key("title").value("The title"))).document( + new OperationBuilder("path-parameters-with-custom-attributes", + this.snippet.getOutputDirectory()) + .attribute( + "org.springframework.restdocs.urlTemplate", + "/{a}/{b}") + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .build()); } private FileSystemResource snippetResource(String name) { - return new FileSystemResource("src/test/resources/custom-snippet-templates/" - + name + ".snippet"); + return new FileSystemResource( + "src/test/resources/custom-snippet-templates/" + name + ".snippet"); } } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/RequestParametersSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/RequestParametersSnippetTests.java index da61deec..548b287c 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/RequestParametersSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/RequestParametersSnippetTests.java @@ -23,6 +23,7 @@ import java.util.Collections; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; + import org.springframework.core.io.FileSystemResource; import org.springframework.restdocs.snippet.SnippetException; import org.springframework.restdocs.templates.TemplateEngine; @@ -60,9 +61,9 @@ public class RequestParametersSnippetTests { .expectMessage(equalTo("Request parameters with the following names were" + " not documented: [a]")); new RequestParametersSnippet(Collections.emptyList()) - .document(new OperationBuilder("undocumented-parameter", this.snippet - .getOutputDirectory()).request("http://localhost") - .param("a", "alpha").build()); + .document(new OperationBuilder("undocumented-parameter", + this.snippet.getOutputDirectory()).request("http://localhost") + .param("a", "alpha").build()); } @Test @@ -71,9 +72,11 @@ public class RequestParametersSnippetTests { this.thrown .expectMessage(equalTo("Request parameters with the following names were" + " not found in the request: [a]")); - new RequestParametersSnippet(Arrays.asList(parameterWithName("a").description( - "one"))).document(new OperationBuilder("missing-parameter", this.snippet - .getOutputDirectory()).request("http://localhost").build()); + new RequestParametersSnippet( + Arrays.asList(parameterWithName("a").description("one"))) + .document(new OperationBuilder("missing-parameter", + this.snippet.getOutputDirectory()) + .request("http://localhost").build()); } @Test @@ -83,23 +86,27 @@ public class RequestParametersSnippetTests { .expectMessage(equalTo("Request parameters with the following names were" + " not documented: [b]. Request parameters with the following" + " names were not found in the request: [a]")); - new RequestParametersSnippet(Arrays.asList(parameterWithName("a").description( - "one"))).document(new OperationBuilder( - "undocumented-and-missing-parameters", this.snippet.getOutputDirectory()) - .request("http://localhost").param("b", "bravo").build()); + new RequestParametersSnippet( + Arrays.asList(parameterWithName("a").description("one"))).document( + new OperationBuilder("undocumented-and-missing-parameters", + this.snippet.getOutputDirectory()) + .request("http://localhost").param("b", "bravo") + .build()); } @Test public void requestParameters() throws IOException { - this.snippet.expectRequestParameters("request-parameters").withContents( - tableWithHeader("Parameter", "Description").row("a", "one").row("b", - "two")); - new RequestParametersSnippet(Arrays.asList( - parameterWithName("a").description("one"), parameterWithName("b") - .description("two"))).document(new OperationBuilder( - "request-parameters", this.snippet.getOutputDirectory()) - .request("http://localhost").param("a", "bravo").param("b", "bravo") - .build()); + this.snippet.expectRequestParameters("request-parameters") + .withContents(tableWithHeader("Parameter", "Description").row("a", "one") + .row("b", "two")); + new RequestParametersSnippet( + Arrays.asList(parameterWithName("a").description("one"), + parameterWithName("b").description("two"))) + .document(new OperationBuilder("request-parameters", + this.snippet.getOutputDirectory()) + .request("http://localhost") + .param("a", "bravo").param("b", "bravo") + .build()); } @Test @@ -108,57 +115,65 @@ public class RequestParametersSnippetTests { tableWithHeader("Parameter", "Description").row("b", "two")); new RequestParametersSnippet(Arrays.asList(parameterWithName("a").ignored(), parameterWithName("b").description("two"))) - .document(new OperationBuilder("ignored-request-parameter", this.snippet - .getOutputDirectory()).request("http://localhost") - .param("a", "bravo").param("b", "bravo").build()); + .document(new OperationBuilder("ignored-request-parameter", + this.snippet.getOutputDirectory()) + .request("http://localhost").param("a", "bravo") + .param("b", "bravo").build()); } @Test public void requestParametersWithCustomDescriptorAttributes() throws IOException { TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("request-parameters")).willReturn( - snippetResource("request-parameters-with-extra-column")); - this.snippet.expectRequestParameters( - "request-parameters-with-custom-descriptor-attributes").withContents( - tableWithHeader("Parameter", "Description", "Foo").row("a", "one", - "alpha").row("b", "two", "bravo")); + given(resolver.resolveTemplateResource("request-parameters")) + .willReturn(snippetResource("request-parameters-with-extra-column")); + this.snippet + .expectRequestParameters( + "request-parameters-with-custom-descriptor-attributes") + .withContents(tableWithHeader("Parameter", "Description", "Foo") + .row("a", "one", "alpha").row("b", "two", "bravo")); new RequestParametersSnippet(Arrays.asList( - parameterWithName("a").description("one").attributes( - key("foo").value("alpha")), - parameterWithName("b").description("two").attributes( - key("foo").value("bravo")))).document(new OperationBuilder( - "request-parameters-with-custom-descriptor-attributes", this.snippet - .getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).request("http://localhost") - .param("a", "alpha").param("b", "bravo").build()); + parameterWithName("a").description("one") + .attributes(key("foo").value("alpha")), + parameterWithName("b").description("two") + .attributes(key("foo").value("bravo")))) + .document(new OperationBuilder( + "request-parameters-with-custom-descriptor-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine( + resolver)) + .request("http://localhost") + .param("a", "alpha").param("b", "bravo") + .build()); } @Test public void requestParametersWithCustomAttributes() throws IOException { TemplateResourceResolver resolver = mock(TemplateResourceResolver.class); - given(resolver.resolveTemplateResource("request-parameters")).willReturn( - snippetResource("request-parameters-with-title")); + given(resolver.resolveTemplateResource("request-parameters")) + .willReturn(snippetResource("request-parameters-with-title")); this.snippet.expectRequestParameters("request-parameters-with-custom-attributes") .withContents(startsWith(".The title")); - new RequestParametersSnippet(Arrays.asList( - parameterWithName("a").description("one").attributes( - key("foo").value("alpha")), - parameterWithName("b").description("two").attributes( - key("foo").value("bravo"))), attributes(key("title").value( - "The title"))).document(new OperationBuilder( - "request-parameters-with-custom-attributes", this.snippet - .getOutputDirectory()) - .attribute(TemplateEngine.class.getName(), - new MustacheTemplateEngine(resolver)).request("http://localhost") - .param("a", "alpha").param("b", "bravo").build()); + new RequestParametersSnippet( + Arrays.asList( + parameterWithName("a").description("one") + .attributes(key("foo").value("alpha")), + parameterWithName("b").description("two") + .attributes(key("foo").value("bravo"))), + attributes(key("title").value("The title"))).document( + new OperationBuilder("request-parameters-with-custom-attributes", + this.snippet.getOutputDirectory()) + .attribute(TemplateEngine.class.getName(), + new MustacheTemplateEngine(resolver)) + .request("http://localhost").param("a", "alpha") + .param("b", "bravo").build()); } private FileSystemResource snippetResource(String name) { - return new FileSystemResource("src/test/resources/custom-snippet-templates/" - + name + ".snippet"); + return new FileSystemResource( + "src/test/resources/custom-snippet-templates/" + name + ".snippet"); } } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolverTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolverTests.java index b70e936d..def76747 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolverTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolverTests.java @@ -17,6 +17,7 @@ package org.springframework.restdocs.snippet; import org.junit.Test; + import org.springframework.restdocs.RestDocumentationContext; import org.springframework.util.PropertyPlaceholderHelper.PlaceholderResolver; @@ -33,22 +34,19 @@ public class RestDocumentationContextPlaceholderResolverTests { @Test public void kebabCaseMethodName() throws Exception { - assertThat( - createResolver("dashSeparatedMethodName").resolvePlaceholder( - "method-name"), equalTo("dash-separated-method-name")); + assertThat(createResolver("dashSeparatedMethodName").resolvePlaceholder( + "method-name"), equalTo("dash-separated-method-name")); } @Test public void snakeCaseMethodName() throws Exception { - assertThat( - createResolver("underscoreSeparatedMethodName").resolvePlaceholder( - "method_name"), equalTo("underscore_separated_method_name")); + assertThat(createResolver("underscoreSeparatedMethodName").resolvePlaceholder( + "method_name"), equalTo("underscore_separated_method_name")); } @Test public void camelCaseMethodName() throws Exception { - assertThat( - createResolver("camelCaseMethodName").resolvePlaceholder("methodName"), + assertThat(createResolver("camelCaseMethodName").resolvePlaceholder("methodName"), equalTo("camelCaseMethodName")); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/StandardWriterResolverTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/StandardWriterResolverTests.java index 55ae2218..e3152d7b 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/StandardWriterResolverTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/StandardWriterResolverTests.java @@ -19,6 +19,7 @@ package org.springframework.restdocs.snippet; import java.io.File; import org.junit.Test; + import org.springframework.restdocs.RestDocumentationContext; import org.springframework.util.PropertyPlaceholderHelper.PlaceholderResolver; @@ -34,7 +35,8 @@ import static org.mockito.Mockito.mock; */ public class StandardWriterResolverTests { - private final PlaceholderResolver placeholderResolver = mock(PlaceholderResolver.class); + private final PlaceholderResolver placeholderResolver = mock( + PlaceholderResolver.class); private final StandardWriterResolver resolver = new StandardWriterResolver( this.placeholderResolver); @@ -48,26 +50,29 @@ public class StandardWriterResolverTests { @Test public void absoluteInput() { String absolutePath = new File("foo").getAbsolutePath(); - assertThat(this.resolver.resolveFile(absolutePath, "bar.txt", - new RestDocumentationContext(null, null, null)), is(new File( - absolutePath, "bar.txt"))); + assertThat( + this.resolver.resolveFile(absolutePath, "bar.txt", + new RestDocumentationContext(null, null, null)), + is(new File(absolutePath, "bar.txt"))); } @Test public void configuredOutputAndRelativeInput() { File outputDir = new File("foo").getAbsoluteFile(); - assertThat(this.resolver.resolveFile("bar", "baz.txt", - new RestDocumentationContext(null, null, outputDir)), is(new File( - outputDir, "bar/baz.txt"))); + assertThat( + this.resolver.resolveFile("bar", "baz.txt", + new RestDocumentationContext(null, null, outputDir)), + is(new File(outputDir, "bar/baz.txt"))); } @Test public void configuredOutputAndAbsoluteInput() { File outputDir = new File("foo").getAbsoluteFile(); String absolutePath = new File("bar").getAbsolutePath(); - assertThat(this.resolver.resolveFile(absolutePath, "baz.txt", - new RestDocumentationContext(null, null, outputDir)), is(new File( - absolutePath, "baz.txt"))); + assertThat( + this.resolver.resolveFile(absolutePath, "baz.txt", + new RestDocumentationContext(null, null, outputDir)), + is(new File(absolutePath, "baz.txt"))); } } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/TemplatedSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/TemplatedSnippetTests.java index f356d2da..4213da4e 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/TemplatedSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/TemplatedSnippetTests.java @@ -21,6 +21,7 @@ import java.util.HashMap; import java.util.Map; import org.junit.Test; + import org.springframework.restdocs.operation.Operation; import static org.hamcrest.CoreMatchers.equalTo; @@ -55,10 +56,8 @@ public class TemplatedSnippetTests { @Test public void snippetName() { - assertThat( - new TestTemplatedSnippet(Collections.emptyMap()) - .getSnippetName(), - is(equalTo("test"))); + assertThat(new TestTemplatedSnippet(Collections.emptyMap()) + .getSnippetName(), is(equalTo("test"))); } private static class TestTemplatedSnippet extends TemplatedSnippet { diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/templates/StandardTemplateResourceResolverTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/templates/StandardTemplateResourceResolverTests.java index ef807ee2..52e0138b 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/templates/StandardTemplateResourceResolverTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/templates/StandardTemplateResourceResolverTests.java @@ -24,6 +24,7 @@ import java.util.concurrent.Callable; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; + import org.springframework.core.io.Resource; import static org.hamcrest.CoreMatchers.equalTo; @@ -47,8 +48,8 @@ public class StandardTemplateResourceResolverTests { @Test public void customSnippetResolution() throws Exception { this.classLoader.addResource( - "org/springframework/restdocs/templates/test.snippet", getClass() - .getResource("test.snippet")); + "org/springframework/restdocs/templates/test.snippet", + getClass().getResource("test.snippet")); Resource snippet = doWithThreadContextClassLoader(this.classLoader, new Callable() { @@ -66,8 +67,8 @@ public class StandardTemplateResourceResolverTests { @Test public void fallsBackToDefaultSnippet() throws Exception { this.classLoader.addResource( - "org/springframework/restdocs/templates/default-test.snippet", getClass() - .getResource("test.snippet")); + "org/springframework/restdocs/templates/default-test.snippet", + getClass().getResource("test.snippet")); Resource snippet = doWithThreadContextClassLoader(this.classLoader, new Callable() { diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/ExpectedSnippet.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/ExpectedSnippet.java index 63364f6a..111096b5 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/ExpectedSnippet.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/ExpectedSnippet.java @@ -23,6 +23,7 @@ import org.hamcrest.Matcher; import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; + import org.springframework.restdocs.snippet.TemplatedSnippet; import org.springframework.restdocs.test.SnippetMatchers.SnippetMatcher; @@ -48,8 +49,8 @@ public class ExpectedSnippet implements TestRule { @Override public Statement apply(final Statement base, Description description) { - this.outputDirectory = new File("build/" - + description.getTestClass().getSimpleName()); + this.outputDirectory = new File( + "build/" + description.getTestClass().getSimpleName()); return new ExpectedSnippetStatement(base); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/OperationBuilder.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/OperationBuilder.java index e5be8166..5a71d26c 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/OperationBuilder.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/OperationBuilder.java @@ -90,9 +90,9 @@ public class OperationBuilder { this.attributes.put(WriterResolver.class.getName(), new StandardWriterResolver( new RestDocumentationContextPlaceholderResolver(context))); return new StandardOperation(this.name, - (this.requestBuilder == null ? new OperationRequestBuilder( - "http://localhost/").buildRequest() : this.requestBuilder - .buildRequest()), + (this.requestBuilder == null + ? new OperationRequestBuilder("http://localhost/").buildRequest() + : this.requestBuilder.buildRequest()), this.responseBuilder.buildResponse(), this.attributes); } @@ -182,7 +182,8 @@ public class OperationBuilder { this.content = content; } - public OperationRequestPartBuilder submittedFileName(String submittedFileName) { + public OperationRequestPartBuilder submittedFileName( + String submittedFileName) { this.submittedFileName = submittedFileName; return this; } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/SnippetMatchers.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/SnippetMatchers.java index 97818a52..98c1ccd1 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/SnippetMatchers.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/SnippetMatchers.java @@ -29,6 +29,7 @@ import java.util.List; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; import org.hamcrest.Matcher; + import org.springframework.http.HttpStatus; import org.springframework.util.FileCopyUtils; import org.springframework.util.StringUtils; @@ -71,8 +72,8 @@ public final class SnippetMatchers { return new AsciidoctorCodeBlockMatcher(language); } - private static abstract class AbstractSnippetContentMatcher extends - BaseMatcher { + private static abstract class AbstractSnippetContentMatcher + extends BaseMatcher { private List lines = new ArrayList<>(); @@ -149,8 +150,8 @@ public final class SnippetMatchers { * * @param The type of the matcher */ - public static abstract class HttpMatcher> extends - AsciidoctorCodeBlockMatcher> { + public static abstract class HttpMatcher> + extends AsciidoctorCodeBlockMatcher> { private int headerOffset = 3; @@ -175,8 +176,8 @@ public final class SnippetMatchers { /** * A {@link Matcher} for an HTTP response. */ - public static final class HttpResponseMatcher extends - HttpMatcher { + public static final class HttpResponseMatcher + extends HttpMatcher { private HttpResponseMatcher(HttpStatus status) { this.content("HTTP/1.1 " + status.value() + " " + status.getReasonPhrase()); @@ -200,17 +201,16 @@ public final class SnippetMatchers { /** * A {@link Matcher} for an Asciidoctor table. */ - public static final class AsciidoctorTableMatcher extends - AbstractSnippetContentMatcher { + public static final class AsciidoctorTableMatcher + extends AbstractSnippetContentMatcher { private AsciidoctorTableMatcher(String title, String... columns) { if (StringUtils.hasText(title)) { this.addLine("." + title); } this.addLine("|==="); - String header = "|" - + StringUtils - .collectionToDelimitedString(Arrays.asList(columns), "|"); + String header = "|" + StringUtils + .collectionToDelimitedString(Arrays.asList(columns), "|"); this.addLine(header); this.addLine(""); this.addLine("|==="); @@ -258,8 +258,8 @@ public final class SnippetMatchers { } private String read(File snippetFile) throws IOException { - return FileCopyUtils.copyToString(new InputStreamReader(new FileInputStream( - snippetFile), "UTF-8")); + return FileCopyUtils.copyToString( + new InputStreamReader(new FileInputStream(snippetFile), "UTF-8")); } @Override @@ -269,12 +269,12 @@ public final class SnippetMatchers { } else if (this.expectedContents != null) { try { - this.expectedContents - .describeMismatch(read((File) item), description); + this.expectedContents.describeMismatch(read((File) item), + description); } catch (IOException e) { - description.appendText("The contents of " + item - + " cound not be read"); + description + .appendText("The contents of " + item + " cound not be read"); } } } diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcOperationRequestFactory.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcOperationRequestFactory.java index 9449354a..3045131d 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcOperationRequestFactory.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcOperationRequestFactory.java @@ -89,7 +89,8 @@ class MockMvcOperationRequestFactory { List parts = new ArrayList<>(); parts.addAll(extractServletRequestParts(servletRequest)); if (servletRequest instanceof MockMultipartHttpServletRequest) { - parts.addAll(extractMultipartRequestParts((MockMultipartHttpServletRequest) servletRequest)); + parts.addAll(extractMultipartRequestParts( + (MockMultipartHttpServletRequest) servletRequest)); } return parts; } @@ -103,24 +104,24 @@ class MockMvcOperationRequestFactory { return parts; } - private OperationRequestPart createOperationRequestPart(Part part) throws IOException { + private OperationRequestPart createOperationRequestPart(Part part) + throws IOException { HttpHeaders partHeaders = extractHeaders(part); List 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, FileCopyUtils - .copyToByteArray(part.getInputStream()), partHeaders); + return new OperationRequestPartFactory().create(part.getName(), + StringUtils.hasText(part.getSubmittedFileName()) + ? part.getSubmittedFileName() : null, + FileCopyUtils.copyToByteArray(part.getInputStream()), partHeaders); } private List extractMultipartRequestParts( MockMultipartHttpServletRequest multipartRequest) throws IOException { List parts = new ArrayList<>(); - for (Entry> entry : multipartRequest - .getMultiFileMap().entrySet()) { + for (Entry> entry : multipartRequest.getMultiFileMap() + .entrySet()) { for (MultipartFile file : entry.getValue()) { parts.add(createOperationRequestPart(file)); } @@ -134,8 +135,9 @@ class MockMvcOperationRequestFactory { if (StringUtils.hasText(file.getContentType())) { partHeaders.setContentType(MediaType.parseMediaType(file.getContentType())); } - return new OperationRequestPartFactory().create(file.getName(), StringUtils - .hasText(file.getOriginalFilename()) ? file.getOriginalFilename() : null, + return new OperationRequestPartFactory().create(file.getName(), + StringUtils.hasText(file.getOriginalFilename()) + ? file.getOriginalFilename() : null, file.getBytes(), partHeaders); } @@ -170,8 +172,10 @@ class MockMvcOperationRequestFactory { } 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) { diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationMockMvcConfigurer.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationMockMvcConfigurer.java index 20f06771..6bca090a 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationMockMvcConfigurer.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationMockMvcConfigurer.java @@ -108,7 +108,8 @@ public class RestDocumentationMockMvcConfigurer extends MockMvcConfigurerAdapter * @param templateEngine the template engine to use * @return {@code this} */ - public RestDocumentationMockMvcConfigurer templateEngine(TemplateEngine templateEngine) { + public RestDocumentationMockMvcConfigurer templateEngine( + TemplateEngine templateEngine) { this.templateEngineConfigurer.setTemplateEngine(templateEngine); return this; } @@ -120,7 +121,8 @@ public class RestDocumentationMockMvcConfigurer extends MockMvcConfigurerAdapter * @param writerResolver The writer resolver to use * @return {@code this} */ - public RestDocumentationMockMvcConfigurer writerResolver(WriterResolver writerResolver) { + public RestDocumentationMockMvcConfigurer writerResolver( + WriterResolver writerResolver) { this.writerResolverConfigurer.setWriterResolver(writerResolver); return this; } @@ -157,9 +159,8 @@ public class RestDocumentationMockMvcConfigurer extends MockMvcConfigurerAdapter if (resolverToUse == null) { resolverToUse = new StandardWriterResolver( new RestDocumentationContextPlaceholderResolver( - (RestDocumentationContext) request - .getAttribute(RestDocumentationContext.class - .getName()))); + (RestDocumentationContext) request.getAttribute( + RestDocumentationContext.class.getName()))); } request.setAttribute(WriterResolver.class.getName(), resolverToUse); } @@ -170,8 +171,8 @@ public class RestDocumentationMockMvcConfigurer extends MockMvcConfigurerAdapter } - private static final class ConfigurerApplyingRequestPostProcessor implements - RequestPostProcessor { + private static final class ConfigurerApplyingRequestPostProcessor + implements RequestPostProcessor { private final RestDocumentation restDocumentation; diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuilders.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuilders.java index 2c9dc452..23f8b793 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuilders.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuilders.java @@ -54,8 +54,8 @@ public abstract class RestDocumentationRequestBuilders { */ public static MockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables) { - return MockMvcRequestBuilders.get(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + return MockMvcRequestBuilders.get(urlTemplate, urlVariables) + .requestAttr(ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -78,8 +78,8 @@ public abstract class RestDocumentationRequestBuilders { */ public static MockHttpServletRequestBuilder post(String urlTemplate, Object... urlVariables) { - return MockMvcRequestBuilders.post(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + return MockMvcRequestBuilders.post(urlTemplate, urlVariables) + .requestAttr(ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -102,8 +102,8 @@ public abstract class RestDocumentationRequestBuilders { */ public static MockHttpServletRequestBuilder put(String urlTemplate, Object... urlVariables) { - return MockMvcRequestBuilders.put(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + return MockMvcRequestBuilders.put(urlTemplate, urlVariables) + .requestAttr(ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -126,8 +126,8 @@ public abstract class RestDocumentationRequestBuilders { */ public static MockHttpServletRequestBuilder patch(String urlTemplate, Object... urlVariables) { - return MockMvcRequestBuilders.patch(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + return MockMvcRequestBuilders.patch(urlTemplate, urlVariables) + .requestAttr(ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -150,8 +150,8 @@ public abstract class RestDocumentationRequestBuilders { */ public static MockHttpServletRequestBuilder delete(String urlTemplate, Object... urlVariables) { - return MockMvcRequestBuilders.delete(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + return MockMvcRequestBuilders.delete(urlTemplate, urlVariables) + .requestAttr(ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -174,8 +174,8 @@ public abstract class RestDocumentationRequestBuilders { */ public static MockHttpServletRequestBuilder options(String urlTemplate, Object... urlVariables) { - return MockMvcRequestBuilders.options(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + return MockMvcRequestBuilders.options(urlTemplate, urlVariables) + .requestAttr(ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -198,8 +198,8 @@ public abstract class RestDocumentationRequestBuilders { */ public static MockHttpServletRequestBuilder head(String urlTemplate, Object... urlVariables) { - return MockMvcRequestBuilders.head(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + return MockMvcRequestBuilders.head(urlTemplate, urlVariables) + .requestAttr(ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -249,8 +249,8 @@ public abstract class RestDocumentationRequestBuilders { public static MockMultipartHttpServletRequestBuilder fileUpload(String urlTemplate, Object... urlVariables) { return (MockMultipartHttpServletRequestBuilder) MockMvcRequestBuilders - .fileUpload(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + .fileUpload(urlTemplate, urlVariables) + .requestAttr(ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationResultHandler.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationResultHandler.java index 425cd2fc..962f12b4 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationResultHandler.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationResultHandler.java @@ -59,14 +59,14 @@ public class RestDocumentationResultHandler implements ResultHandler { RestDocumentationResultHandler(String identifier, OperationRequestPreprocessor requestPreprocessor, Snippet... snippets) { - this(identifier, requestPreprocessor, - new IdentityOperationResponsePreprocessor(), snippets); + this(identifier, requestPreprocessor, new IdentityOperationResponsePreprocessor(), + snippets); } RestDocumentationResultHandler(String identifier, OperationResponsePreprocessor responsePreprocessor, Snippet... snippets) { - this(identifier, new IdentityOperationRequestPreprocessor(), - responsePreprocessor, snippets); + this(identifier, new IdentityOperationRequestPreprocessor(), responsePreprocessor, + snippets); } RestDocumentationResultHandler(String identifier, @@ -116,15 +116,15 @@ public class RestDocumentationResultHandler implements ResultHandler { @SuppressWarnings("unchecked") private List getSnippets(MvcResult result) { - List combinedSnippets = new ArrayList<>((List) result - .getRequest().getAttribute( + List combinedSnippets = new ArrayList<>( + (List) result.getRequest().getAttribute( "org.springframework.restdocs.mockmvc.defaultSnippets")); combinedSnippets.addAll(this.snippets); return combinedSnippets; } - private static final class IdentityOperationRequestPreprocessor implements - OperationRequestPreprocessor { + private static final class IdentityOperationRequestPreprocessor + implements OperationRequestPreprocessor { @Override public OperationRequest preprocess(OperationRequest request) { @@ -133,8 +133,8 @@ public class RestDocumentationResultHandler implements ResultHandler { } - private static final class IdentityOperationResponsePreprocessor implements - OperationResponsePreprocessor { + private static final class IdentityOperationResponsePreprocessor + implements OperationResponsePreprocessor { @Override public OperationResponse preprocess(OperationResponse response) { diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/SnippetConfigurer.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/SnippetConfigurer.java index 2723d016..7ac33bd0 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/SnippetConfigurer.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/SnippetConfigurer.java @@ -30,12 +30,11 @@ import org.springframework.restdocs.snippet.WriterResolver; * * @author Andy Wilkinson */ -public class SnippetConfigurer extends - AbstractNestedConfigurer { +public class SnippetConfigurer + extends AbstractNestedConfigurer { - private List defaultSnippets = Arrays.asList( - CurlDocumentation.curlRequest(), HttpDocumentation.httpRequest(), - HttpDocumentation.httpResponse()); + private List defaultSnippets = Arrays.asList(CurlDocumentation.curlRequest(), + HttpDocumentation.httpRequest(), HttpDocumentation.httpResponse()); /** * The default encoding for documentation snippets. diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/UriConfigurer.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/UriConfigurer.java index b7024fd4..bbf44345 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/UriConfigurer.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/UriConfigurer.java @@ -23,8 +23,8 @@ import org.springframework.mock.web.MockHttpServletRequest; * * @author Andy Wilkinson */ -public class UriConfigurer extends - AbstractNestedConfigurer { +public class UriConfigurer + extends AbstractNestedConfigurer { /** * The default scheme for documented URIs. diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/package-info.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/package-info.java index 10c8b9a0..e587e074 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/package-info.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/package-info.java @@ -18,4 +18,3 @@ * Core classes for using Spring REST Docs with Spring Test's MockMvc. */ package org.springframework.restdocs.mockmvc; - diff --git a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcOperationRequestFactoryTests.java b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcOperationRequestFactoryTests.java index 6770d31b..3ca08471 100644 --- a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcOperationRequestFactoryTests.java +++ b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcOperationRequestFactoryTests.java @@ -23,6 +23,7 @@ import java.util.Arrays; import javax.servlet.http.Part; import org.junit.Test; + import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.mock.web.MockHttpServletRequest; @@ -53,8 +54,8 @@ public class MockMvcOperationRequestFactoryTests { @Test public void httpRequest() throws Exception { - OperationRequest request = createOperationRequest(MockMvcRequestBuilders - .get("/foo")); + OperationRequest request = createOperationRequest( + MockMvcRequestBuilders.get("/foo")); assertThat(request.getUri(), is(URI.create("http://localhost/foo"))); assertThat(request.getMethod(), is(HttpMethod.GET)); } @@ -71,8 +72,8 @@ public class MockMvcOperationRequestFactoryTests { @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(), is(URI.create("http://localhost/foo/bar"))); assertThat(request.getMethod(), is(HttpMethod.GET)); } @@ -124,8 +125,8 @@ public class MockMvcOperationRequestFactoryTests { @Test public void getRequestWithQueryStringPopulatesParameters() throws Exception { - OperationRequest request = createOperationRequest(MockMvcRequestBuilders - .get("/foo?a=alpha&b=bravo")); + OperationRequest request = createOperationRequest( + MockMvcRequestBuilders.get("/foo?a=alpha&b=bravo")); assertThat(request.getUri(), is(URI.create("http://localhost/foo?a=alpha&b=bravo"))); assertThat(request.getParameters().size(), is(2)); @@ -148,9 +149,9 @@ public class MockMvcOperationRequestFactoryTests { @Test public void mockMultipartFileUpload() throws Exception { - OperationRequest request = createOperationRequest(MockMvcRequestBuilders - .fileUpload("/foo").file( - new MockMultipartFile("file", new byte[] { 1, 2, 3, 4 }))); + OperationRequest request = createOperationRequest( + MockMvcRequestBuilders.fileUpload("/foo") + .file(new MockMultipartFile("file", new byte[] { 1, 2, 3, 4 }))); assertThat(request.getUri(), is(URI.create("http://localhost/foo"))); assertThat(request.getMethod(), is(HttpMethod.POST)); assertThat(request.getParts().size(), is(1)); @@ -164,10 +165,9 @@ public class MockMvcOperationRequestFactoryTests { @Test public void mockMultipartFileUploadWithContentType() throws Exception { - OperationRequest request = createOperationRequest(MockMvcRequestBuilders - .fileUpload("/foo").file( - new MockMultipartFile("file", "original", "image/png", - new byte[] { 1, 2, 3, 4 }))); + OperationRequest request = createOperationRequest( + MockMvcRequestBuilders.fileUpload("/foo").file(new MockMultipartFile( + "file", "original", "image/png", new byte[] { 1, 2, 3, 4 }))); assertThat(request.getUri(), is(URI.create("http://localhost/foo"))); assertThat(request.getMethod(), is(HttpMethod.POST)); assertThat(request.getParts().size(), is(1)); @@ -186,8 +186,8 @@ public class MockMvcOperationRequestFactoryTests { 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); @@ -210,8 +210,8 @@ public class MockMvcOperationRequestFactoryTests { 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"); @@ -229,8 +229,8 @@ public class MockMvcOperationRequestFactoryTests { private OperationRequest createOperationRequest(MockHttpServletRequestBuilder builder) throws Exception { - return this.factory.createOperationRequest(builder - .buildRequest(new MockServletContext())); + return this.factory + .createOperationRequest(builder.buildRequest(new MockServletContext())); } } diff --git a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java index 76e3dd67..f37ce499 100644 --- a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java +++ b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java @@ -29,6 +29,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -128,12 +129,12 @@ public class MockMvcRestDocumentationIntegrationTests { 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"), - is(snippet().withContents( - codeBlock("bash").content( - "$ curl " + "'http://localhost:8080/' -i -X POST " - + "-H 'Accept: application/json' -d 'content'")))); + assertThat( + new File( + "build/generated-snippets/curl-snippet-with-content/curl-request.adoc"), + is(snippet().withContents(codeBlock("bash") + .content("$ curl " + "'http://localhost:8080/' -i -X POST " + + "-H 'Accept: application/json' -d 'content'")))); } @Test @@ -141,18 +142,15 @@ public class MockMvcRestDocumentationIntegrationTests { 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()) + 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"), - is(snippet().withContents( - codeBlock("bash").content( - "$ curl " - + "'http://localhost:8080/?foo=bar' -i -X POST " - + "-H 'Accept: application/json' -d 'a=alpha'")))); + is(snippet().withContents(codeBlock("bash").content( + "$ curl " + "'http://localhost:8080/?foo=bar' -i -X POST " + + "-H 'Accept: application/json' -d 'a=alpha'")))); } @Test @@ -161,8 +159,7 @@ public class MockMvcRestDocumentationIntegrationTests { .apply(documentationConfiguration(this.restDocumentation)).build(); mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()) - .andDo(document("links", + .andExpect(status().isOk()).andDo(document("links", links(linkWithRel("rel").description("The description")))); assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"), @@ -176,9 +173,8 @@ public class MockMvcRestDocumentationIntegrationTests { .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")))); + .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", @@ -191,9 +187,8 @@ public class MockMvcRestDocumentationIntegrationTests { .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")))); + .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", @@ -205,12 +200,10 @@ public class MockMvcRestDocumentationIntegrationTests { 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")))); + 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", @@ -224,12 +217,10 @@ public class MockMvcRestDocumentationIntegrationTests { mockMvc.perform(get("/").param("foo", "bar").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) - .andDo(document( - "links", - responseFields( - fieldWithPath("a").description("The description"), - fieldWithPath("links").description( - "Links to other resources")))); + .andDo(document("links", + responseFields(fieldWithPath("a") + .description("The description"), + fieldWithPath("links").description("Links to other resources")))); assertExpectedSnippetFilesExist(new File("build/generated-snippets/links"), "http-request.adoc", "http-response.adoc", "curl-request.adoc", @@ -243,8 +234,8 @@ public class MockMvcRestDocumentationIntegrationTests { mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()).andDo(document("{method-name}")); - assertExpectedSnippetFilesExist(new File( - "build/generated-snippets/parameterized-output-directory"), + assertExpectedSnippetFilesExist( + new File("build/generated-snippets/parameterized-output-directory"), "http-request.adoc", "http-response.adoc", "curl-request.adoc"); } @@ -254,20 +245,20 @@ public class MockMvcRestDocumentationIntegrationTests { .apply(documentationConfiguration(this.restDocumentation)) .alwaysDo(document("{method-name}-{step}")).build(); - mockMvc.perform(get("/").accept(MediaType.APPLICATION_JSON)).andExpect( - status().isOk()); + 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()); + 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()); + 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"); @@ -280,39 +271,32 @@ public class MockMvcRestDocumentationIntegrationTests { Pattern pattern = Pattern.compile("(\"alpha\")"); - mockMvc.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(), + mockMvc.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), replacePattern(pattern, "\"<>\"")))); assertThat( new File("build/generated-snippets/original-request/http-request.adoc"), - is(snippet().withContents( - httpRequest(RequestMethod.GET, "/").header("a", "alpha") - .header("b", "bravo") - .header("Content-Type", "application/json") - .header("Accept", MediaType.APPLICATION_JSON_VALUE) - .header("Host", "localhost") - .header("Content-Length", "13") - .content("{\"a\":\"alpha\"}")))); + is(snippet().withContents(httpRequest(RequestMethod.GET, "/") + .header("a", "alpha").header("b", "bravo") + .header("Content-Type", "application/json") + .header("Accept", MediaType.APPLICATION_JSON_VALUE) + .header("Host", "localhost").header("Content-Length", "13") + .content("{\"a\":\"alpha\"}")))); String prettyPrinted = String.format("{%n \"a\" : \"<>\"%n}"); assertThat( new File( "build/generated-snippets/preprocessed-request/http-request.adoc"), - is(snippet().withContents( - httpRequest(RequestMethod.GET, "/").header("b", "bravo") - .header("Content-Type", "application/json") - .header("Accept", MediaType.APPLICATION_JSON_VALUE) - .content(prettyPrinted)))); + is(snippet().withContents(httpRequest(RequestMethod.GET, "/") + .header("b", "bravo").header("Content-Type", "application/json") + .header("Accept", MediaType.APPLICATION_JSON_VALUE) + .content(prettyPrinted)))); } @Test @@ -323,35 +307,29 @@ 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"), + .andExpect(status().isOk()).andDo(document("original-response")) + .andDo(document("preprocessed-response", + preprocessResponse(prettyPrint(), maskLinks(), removeHeaders("a"), replacePattern(pattern, "\"<>\"")))); String original = "{\"a\":\"alpha\",\"links\":[{\"rel\":\"rel\"," + "\"href\":\"href\"}]}"; assertThat( new File("build/generated-snippets/original-response/http-response.adoc"), - is(snippet().withContents( - httpResponse(HttpStatus.OK) - .header("a", "alpha") - .header("Content-Type", "application/json") - .header(HttpHeaders.CONTENT_LENGTH, - original.getBytes().length).content(original)))); + is(snippet().withContents(httpResponse(HttpStatus.OK).header("a", "alpha") + .header("Content-Type", "application/json") + .header(HttpHeaders.CONTENT_LENGTH, original.getBytes().length) + .content(original)))); String prettyPrinted = String.format("{%n \"a\" : \"<>\",%n \"links\" : " + "[ {%n \"rel\" : \"rel\",%n \"href\" : \"...\"%n } ]%n}"); assertThat( new File( "build/generated-snippets/preprocessed-response/http-response.adoc"), - is(snippet().withContents( - httpResponse(HttpStatus.OK) - .header("Content-Type", "application/json") - .header(HttpHeaders.CONTENT_LENGTH, - prettyPrinted.getBytes().length) - .content(prettyPrinted)))); + is(snippet().withContents(httpResponse(HttpStatus.OK) + .header("Content-Type", "application/json") + .header(HttpHeaders.CONTENT_LENGTH, + prettyPrinted.getBytes().length) + .content(prettyPrinted)))); } @Test @@ -359,8 +337,8 @@ public class MockMvcRestDocumentationIntegrationTests { 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); @@ -372,15 +350,13 @@ public class MockMvcRestDocumentationIntegrationTests { finally { Thread.currentThread().setContextClassLoader(previous); } - assertThat(new File( - "build/generated-snippets/custom-snippet-template/curl-request.adoc"), + assertThat( + new File( + "build/generated-snippets/custom-snippet-template/curl-request.adoc"), is(snippet().withContents(equalTo("Custom curl request")))); - mockMvc.perform(get("/")).andDo( - document( - "index", - curlRequest(attributes(key("title").value( - "Access the index using curl"))))); + mockMvc.perform(get("/")).andDo(document("index", curlRequest( + attributes(key("title").value("Access the index using curl"))))); } @Test @@ -392,12 +368,10 @@ public class MockMvcRestDocumentationIntegrationTests { 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"), - is(snippet() - .withContents( - codeBlock("bash") - .content( - "$ curl 'http://localhost:8080/custom/' -i -H 'Accept: application/json'")))); + new File( + "build/generated-snippets/custom-context-path/curl-request.adoc"), + is(snippet().withContents(codeBlock("bash").content( + "$ curl 'http://localhost:8080/custom/' -i -H 'Accept: application/json'")))); } private void assertExpectedSnippetFilesExist(File directory, String... snippets) { diff --git a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationConfigurerTests.java b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationConfigurerTests.java index 486bfd8e..eda5107d 100644 --- a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationConfigurerTests.java +++ b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationConfigurerTests.java @@ -20,6 +20,7 @@ import java.net.URI; import org.junit.Rule; import org.junit.Test; + import org.springframework.hateoas.mvc.BasicLinkBuilder; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.restdocs.RestDocumentation; @@ -58,7 +59,7 @@ public class RestDocumentationConfigurerTests { public void customScheme() { RequestPostProcessor postProcessor = new RestDocumentationMockMvcConfigurer( this.restDocumentation).uris().withScheme("https") - .beforeMockMvcCreated(null, null); + .beforeMockMvcCreated(null, null); postProcessor.postProcessRequest(this.request); assertUriConfiguration("https", "localhost", 8080); @@ -68,7 +69,7 @@ public class RestDocumentationConfigurerTests { public void customHost() { RequestPostProcessor postProcessor = new RestDocumentationMockMvcConfigurer( this.restDocumentation).uris().withHost("api.example.com") - .beforeMockMvcCreated(null, null); + .beforeMockMvcCreated(null, null); postProcessor.postProcessRequest(this.request); assertUriConfiguration("http", "api.example.com", 8080); @@ -77,8 +78,8 @@ public class RestDocumentationConfigurerTests { @Test public void customPort() { RequestPostProcessor postProcessor = new RestDocumentationMockMvcConfigurer( - this.restDocumentation).uris().withPort(8081) - .beforeMockMvcCreated(null, null); + this.restDocumentation).uris().withPort(8081).beforeMockMvcCreated(null, + null); postProcessor.postProcessRequest(this.request); assertUriConfiguration("http", "localhost", 8081); @@ -87,8 +88,8 @@ public class RestDocumentationConfigurerTests { @Test public void noContentLengthHeaderWhenRequestHasNotContent() { RequestPostProcessor postProcessor = new RestDocumentationMockMvcConfigurer( - this.restDocumentation).uris().withPort(8081) - .beforeMockMvcCreated(null, null); + this.restDocumentation).uris().withPort(8081).beforeMockMvcCreated(null, + null); postProcessor.postProcessRequest(this.request); assertThat(this.request.getHeader("Content-Length"), is(nullValue())); } @@ -97,8 +98,8 @@ public class RestDocumentationConfigurerTests { assertEquals(scheme, this.request.getScheme()); assertEquals(host, this.request.getServerName()); assertEquals(port, this.request.getServerPort()); - RequestContextHolder.setRequestAttributes(new ServletRequestAttributes( - this.request)); + RequestContextHolder + .setRequestAttributes(new ServletRequestAttributes(this.request)); try { URI uri = BasicLinkBuilder.linkToCurrentMapping().toUri(); assertEquals(scheme, uri.getScheme()); diff --git a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java index a5bd3159..0ed8fee9 100644 --- a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java +++ b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java @@ -21,6 +21,7 @@ import java.net.URI; import javax.servlet.ServletContext; import org.junit.Test; + import org.springframework.http.HttpMethod; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockServletContext;