Commit Graph

305 Commits

Author SHA1 Message Date
Andy Wilkinson
83e8b92c3b Upgrade to Gradle 2.12 2016-04-04 11:55:52 +01:00
Andy Wilkinson
976c31f860 Merge branch '1.0.x' 2016-04-04 11:43:57 +01:00
Andy Wilkinson
547c4f3fb1 Simplify documentation of Asciidoctor Maven plugin's phase
Previously the phase was documented as `package` by default with
instructions to change it to `prepare-package` if you want to
include the documentation in the project's package. This led to some
confusion and sometimes the step to change it to `prepare-package`
was missed.

This commit updates the documentation to recommend that
`prepare-package` is always used. It works equally well for both
cases (packaging the documentation or not) and avoids the possible
confusion described above.

Closes gh-218
2016-04-04 11:39:56 +01:00
Andy Wilkinson
72aeed6bd2 Merge pull request #208 from Johnny Lim
* gh-208:
  Fix typo
2016-04-04 11:17:20 +01:00
Johnny Lim
05f738d12c Fix typo 2016-04-04 11:17:17 +01:00
Andy Wilkinson
cb39af5163 Improve the formatting of the default Markdown path parameters snippet
Add the required blank line between the table "title" and the
table itself. Without this blank line the table wasn't not formatted
correctly. The "title" has also been wrapped in back ticks to improve
its formatting in the generated HTML.

Closes gh-212
2016-04-04 11:12:15 +01:00
Andy Wilkinson
488d36d4bf Do not double-encode URIs when they are being modified
Previously, when UriModifyingOperationPreprocessor modified a URI it
would always encode it. However, the URIs being modified will always
have been encoded, resulting in double-encoding of the URI.

This commit updates UriModifyingOperationPreprocessor to tell
UriComponentsBuilder that the components have already been encoded.
This ensures that they are not encoded for a second time when the URI
is being built.

Closes gh-211
2016-04-04 10:51:23 +01:00
Andy Wilkinson
6ea6dcf996 Fix test failures on Windows caused by different new line characters 2016-03-09 17:51:48 +00:00
Andy Wilkinson
7a3fe6b72c Merge pull request #207 from Raman Gupta
* gh-207:
  Polish contribution
  Add support for generating an HTTPie snippet

Closes gh-207
2016-03-09 17:38:34 +00:00
Andy Wilkinson
37e16bc308 Polish contribution
This commit polishes the HTTPie request snippet contribution made in
b26d8c0. It makes the following significant changes:

- Applies project’s coding conventions for formatting and the like
- Moves to a composition-based approach for sharing functionality
  between the curl and HTTPie snippets by replacing AbstractCliSnippet
  with CliOperationRequest.
- Introduces a single package for CLI command snippets, thereby allowing
  more code to be package-private.

See gh-207
2016-03-09 17:38:04 +00:00
Raman Gupta
b26d8c085d Add support for generating an HTTPie snippet
This commit adds support for generating a snippet that contains
the HTTPie command for the request. As the snippet does not require
any additional configuration, it has added to the existing default
snippets.

Httpie does not currently support setting the content type for each
part in a multipart form -- these multipart types are currently
ignored. See:

    https://github.com/jkbrzt/httpie/issues/199
    https://github.com/jkbrzt/httpie/issues/271
    https://github.com/jkbrzt/httpie/pull/285
    https://github.com/jkbrzt/httpie/pull/398

There is an issue with specifying piped input for multipart form
data. There is no way currently to specify the data without specifying
a filename parameter in the Content-Disposition. For now, this is
ignored. See:

    https://github.com/jkbrzt/httpie/issues/342

See gh-207
2016-03-09 15:27:38 +00:00
Andy Wilkinson
536e49287d Update tests to cope with different Content-Type charset attribute 2016-03-01 09:38:43 +00:00
Andy Wilkinson
ee865ce4ed Tolerate relocated test-related classes in Spring Boot 1.4 2016-02-22 10:13:35 +00:00
Andy Wilkinson
67920dd9f6 Merge branch '1.0.x' 2016-02-16 11:12:54 +00:00
Andy Wilkinson
36bacb470b Move to the offical SonarQube plugin 2016-02-16 11:11:53 +00:00
Andy Wilkinson
d84fca4d63 Ensure that version updates are applied to Slate sample 2016-02-16 10:47:07 +00:00
Andy Wilkinson
4c5095589a Ensure that REST Assured module is installed before sample is built 2016-02-15 17:57:51 +00:00
Andy Wilkinson
ba76c2f843 Add a sample showing how to use Spring REST Docs with Slate
Closes gh-124
2016-02-15 17:52:08 +00:00
Andy Wilkinson
b224333c97 Upgrade to Gradle 2.11 2016-02-15 17:17:36 +00:00
Andy Wilkinson
c8ecd25591 Add a sample demonstrating how to use REST Assured
Closes gh-198
2016-02-15 17:12:16 +00:00
Andy Wilkinson
7e2a3dcd18 Fix faulty forward merge 2016-02-15 16:04:42 +00:00
Andy Wilkinson
228424e497 Merge branch '1.0.x' 2016-02-15 15:50:08 +00:00
Andy Wilkinson
40201e2e99 Improve handling of empty parameters in curl and HTTP request snippets
Previously, both the curl and HTTP request snippets would ignore
a parameter with no value, for example from the query string of the
url http://localhost:8080/foo?bar.

This commit updates both snippets so that such parameters are
included in the generated snippet, including a multi-part request
that is uploading form data and a field in the form has no value.
Additions have been made to the tests for both snippets.

While the request parameters snippet correctly handled parameters with
no value, there was no test verifying that this was the case. One
has been added in this commit.

Closes gh-200
2016-02-15 15:41:09 +00:00
Andy Wilkinson
26bae13b85 Merge branch '1.0.x' 2016-02-15 14:20:33 +00:00
Andy Wilkinson
4d44401efa Add a note in the documentation about use of the JVM's default charset
Closes gh-201
2016-02-15 12:43:32 +00:00
Andy Wilkinson
7fc5ac10d0 Merge branch '1.0.x' 2016-02-15 12:30:42 +00:00
Andy Wilkinson
cfc413f7ed Avoid byte[] to String to byte[] conversion when pretty printing
Previously, PrettyPrintingContentModifier would convert the byte[]
content into a String and then back into a byte[]. It did so without
consideration for the content’s character set. As a result, it could
fail to preserve the correct character encoding.

This commit updates PrettyPrintingContentModifier to avoid converting
the content into a String and back into a byte[] and to work entirely
with byte arrays instead. Removing the intermediate String from the
process removes the possibility of the content becoming corrupted.

Closes gh-202
2016-02-15 12:28:07 +00:00
Andy Wilkinson
4e996e2cdb Merge branch '1.0.x' 2016-02-15 12:25:49 +00:00
Andy Wilkinson
74f9e272fd Apply Eclipse Mars' code formatting 2016-02-15 12:15:40 +00:00
Andy Wilkinson
0ef9307481 Add support for manually managing the RestDocumentationContext
In 1.0, the reliance on JUnit was more widespread than it should have
been. It should have been isolated to the JUnit TestRule implementation,
RestDocumentation. Unfortunately, RestDocumentation was also an argument
to MockMvcRestDocumentation.documentationConfiguration which made it
impossible to use Spring REST Docs without having JUnit on the
classpath.

This commit introduces JUnitRestDocumentation and
ManualRestDocumentation. The format is a direct replacement for
RestDocumentation which has been reworked to delegate to
JUnitRestDocumentation. The latter allows manual management of the
RestDocumentationContext, primarily for use with TestNG.

A new interface, RestDocumentationContextProvider, has been introduced.
It is implemented by RestDocumentation, JUnitRestDocumentation and
ManualRestDocumentation.
MockMvcRestDocumentation.documentationConfiguration has been overridden
to also accept a RestDocumentationContextProvider. The method that
accepts a RestDocumentation has been deprecated, as has
RestDocumentation itself.

The documentation has been updated to encourage the use of
JUnitRestDocumentation and a sample illustrating the use of Spring REST
Docs with TestNG has been added.

Closes gh-171
2016-02-09 17:31:32 +00:00
Andy Wilkinson
6578f42730 Allow custom templates to be provided for a specific template format
Previously, custom snippet templates were loaded from
org/springframework/restdocs/templates and the default templates were
loaded from org/springframework/restdocs/templates/{$formatId}.
Without relying on the ordering of the classpath, this made it
impossible to provide a custom template for a specific format.

This commit updates the locations that are checked for snippet
templates. The following locations are now checked in order:

1. org/springframework/restdocs/templates/${formatId}/${name}.snippet
2. org/springframework/restdocs/templates/${name}.snippet
3. org/springframework/restdocs/templates/${formatId}/default-${name}.snippet

The second location is provided largely for backwards compatibility
with 1.0. Users are expected to use the first location to provide
any custom templates, with Spring REST Docs provided templates for
all of the built-in snippets in the third location.

Closes gh-196
Closes gh-197
2016-02-08 13:41:24 +00:00
Andy Wilkinson
83b72f7962 Introduce constants for common attribute names
Closes gh-193
2016-02-08 12:21:25 +00:00
Andy Wilkinson
6df01419cd Merge branch '1.0.x' 2016-02-08 11:49:09 +00:00
Andy Wilkinson
811e7adf70 Add missing package-info.java for config package 2016-02-08 11:49:04 +00:00
Andy Wilkinson
cb9e10bf5a Break the package cycle caused by the introduction of SnippetFormat 2016-02-08 11:41:47 +00:00
Andy Wilkinson
c0fac14fdf Break cycle caused by introduction of RestDocumentationHandler 2016-02-06 10:17:27 +00:00
Andy Wilkinson
712d785b95 Merge pull request #195 from Roland Huß
* gh-195:
  Polish pattern-based header removal contribution
  Add support for removing headers that match a Pattern
2016-02-05 09:36:50 +00:00
Andy Wilkinson
1131c9fa6e Polish pattern-based header removal contribution
Closes gh-191
2016-02-05 09:36:28 +00:00
Roland Huß
1897ec54f2 Add support for removing headers that match a Pattern
A new preprocessor method `removeMatchingHeaders` has been introduced
which takes one or more regular expression patterns (as Strings). Any
header that matches a pattern is removed.

Closes gh-195
2016-02-05 09:32:29 +00:00
Andy Wilkinson
a9c9bad15e Reduce duplication by introducing RestDocumentationHandler
Previously, logic for creating an Operation, determining the snippets
to call, and calling them was duplicated in both the MockMvc and
REST Assured modules. This commit introduces a new core class,
RestDocumentationHandler, that now does the bulk of the work in a
reusable manner. The MockMvc and REST Assured modules have been
updated to delegate to RestDocumentationHandler.

Closes gh-194
2016-02-04 11:33:40 +00:00
Andy Wilkinson
27f919748b Upgrade to the latest version of the Spring IO Plugin 2016-02-03 17:18:44 +00:00
Andy Wilkinson
28476c2d08 Polish RestDocumentationConfigurer and improve its test coverage 2016-02-02 14:09:20 +00:00
Andy Wilkinson
4d37dea1d6 Add support for generating snippets in Markdown
This commit introduces support for generating snippets formatted
using Markdown. Asciidoctor remains the default.

A new SnippetFormat abstraction has been introduced with Asciidoctor
and Markdown implementations provided out of the box.
Markdown-formatted templates are also provided for all of the default
snippets.

Please refer to the updated reference documentation for further
details.

Closes gh-150
Closes gh-19
2016-02-02 12:55:58 +00:00
Andy Wilkinson
b34d2dd443 Merge branch '1.0.x' 2016-02-02 09:48:14 +00:00
Andy Wilkinson
29675728aa Introduce a code of conduct 2016-02-02 09:45:37 +00:00
Andy Wilkinson
91d6e2f8ec Improve extensibility and reusability of MustacheTemplateEngine
Previously, MustacheTemplateEngine hard coded the configuration of
its Mustache Compiler. This commit adds an overloaded constructor that
allows a custom Compiler to be used. It also adds protected accessors
for the compiler and the template resource resolver so that they
can be easily accessed by subclasses.

Closes gh-149
2016-02-01 12:37:23 +00:00
Andy Wilkinson
2410f06ff5 Merge branch '1.0.x' 2016-01-29 13:56:48 +00:00
Andy Wilkinson
068e59608d Merge pull request #186 from Martin Hock
* gh-186:
  Fix String comparison in HttpRequestSnippet
2016-01-29 13:55:10 +00:00
mnhock
5dbb31f38a Fix String comparison in HttpRequestSnippet
Closes gh-186
2016-01-29 13:54:16 +00:00
Andy Wilkinson
130b411e2a Add support for using REST Assured to generate documentation snippets
This commit adds a new module, spring-restdocs-restassured, that
can be used to generate documentation snippets when testing a service
with REST Assured.

Please refer to the updated reference documentation for details.

Thanks to Johan Haleby for making a change to REST Assured so that
path parameters could be documented.

Closes gh-102
2016-01-29 12:31:37 +00:00