Commit Graph

220 Commits

Author SHA1 Message Date
Johnny Lim
a3c3bef093 Fix the link in the documentation to the default snippet templates
Closes gh-160
2015-12-03 17:54:43 +00:00
Andy Wilkinson
e8cf957f15 Update documentation to mention that you can write custom preprocessors
Closes gh-156
2015-12-03 17:50:34 +00:00
Andy Wilkinson
7a819b15b6 Make it clear that JSON array responses can be documented
Closes gh-163
2015-12-03 17:39:00 +00:00
Andy Wilkinson
c559efb81b Provide examples for JUnit rule configuration with both Maven and Gradle
Closes gh-162
2015-12-03 16:02:16 +00:00
Andy Wilkinson
310639a4cc Merge branch 'gh-167' into 1.0.x 2015-11-16 17:48:51 +00:00
Andy Wilkinson
acb87b98b8 Improve testing of XML attribute handling
Closes gh-166
2015-11-16 17:47:07 +00:00
cschaetzlein
58b992d99e Allow individual attributes in an XML element to be documented
Documenting an XML attribute in the XML payload leads to a
NullPointerException since no parent nodes exists for an XML
attribute. Rather than always trying to remove a node from its parent,
this commit changes the logic to apply special treament to nodes that
are attributes and remove the attribute from its owning element
instead.

Closes gh-167
2015-11-16 17:46:22 +00:00
Andy Wilkinson
75085477b6 Suppress unwanted output to System.err when pretty printing content
Previously, when the XML pretty printer attempted to pretty print
the content of a request or response it would output an error to
System.err if the content was not valid XML. While, benign, this
output was distracting.

This commit updates the XML pretty printer to suppress its output to
System.err by configuring it with an ErrorHandler and an ErrorListener
that swallow any errors of which they are notified.

Closes gh-153
2015-10-22 10:04:56 +01:00
Andy Wilkinson
9a3e4c5f70 Update the samples to build against 1.0.1 snapshots 2015-10-22 10:04:56 +01:00
Andy Wilkinson
69f6b40e28 Correct the links in the documentation to the samples on GitHub
Closes gh-147
2015-10-09 09:43:34 +01:00
Spring Buildmaster
260ffeebba Next development version 2015-10-07 05:48:20 -07:00
Andy Wilkinson
cfcc43c482 Ensure that generated poms contain <name> and <description> 2015-10-07 11:48:09 +01:00
Andy Wilkinson
6debc593e5 Don't apply to Spring IO Plugin to the docs project 2015-10-07 10:38:50 +01:00
Andy Wilkinson
0213c9e6fd Add the Spring IO plugin to the build 2015-10-07 09:47:21 +01:00
Andy Wilkinson
6443ed177e Fix building Maven sample on Windows 2015-10-06 17:48:30 +01:00
Andy Wilkinson
75e965c782 Correct the name of the mvnw script on Windows 2015-10-06 17:15:47 +01:00
Andy Wilkinson
9a362abe77 Update reference to mvnw.bat when building samples on Windows 2015-10-06 17:07:46 +01:00
Andy Wilkinson
f07f23ec85 Update versions of various dependencies 2015-10-06 16:49:07 +01:00
Andy Wilkinson
c97efcce2e Use the Maven Wrapper in the Spring Data REST-based sample
Closes gh-146
2015-10-06 16:41:34 +01:00
Andy Wilkinson
a693d12ce0 Polish the documentation 2015-10-06 16:29:23 +01:00
Andy Wilkinson
723b7a284f Use default location for .adoc source in Gradle-based sample
Previously both samples supported Maven and Gradle. Due to the different
default locations between the two build systems, the Gradle-based sample
was configured to use Maven’s default location for its .adoc files.

The samples have now been updated so that one sample uses Maven and the
other uses Gradle. However, when this change was made, the customization
of the Gradle-based sample’s .adoc file location wasn’t removed.

This commit updates the Gradle-based sample to use the default location,
src/docs/asciidoc, for its .adoc source files.

Closes gh-145
2015-10-05 10:22:55 +01:00
Andy Wilkinson
2730a7ceef Polishing 2015-09-30 19:28:43 +01:00
Andy Wilkinson
fb01a26a16 Allow an item to be undocumented without it causing a test failure
Previously, it was necessary to document every payload field, link,
path parameter, or request. If an item was not documented a failure
would occur. This has proven to be too restrictive for some use cases,
for example splitting up the documentation of a payload’s fields. While
it was possible to use a preprocessor to modify the operation prior to
documentation to remove the items that should not be documented, this
was more difficult than it needed to be.

This commit adds support for marking a descriptor as ignored. Ignored
descriptors count when checking that everything has been documented but
do not actually appear in the generated documentation.

Closes gh-143
2015-09-30 17:53:57 +01:00
Andy Wilkinson
7919845e8a Merge branch 'gh-71' 2015-09-29 13:05:50 +01:00
Andy Wilkinson
ea8f736259 Polish contribution that added support for documenting HTTP headers
The main changes are:

- Update javadoc to align with changes made in 5a01016
- Update documentation with details of the new support for documenting
  HTTP headers
- Add tests to verify that HTTP headers are matched case-insensitively

Closes gh-71
2015-09-29 13:03:27 +01:00
andreasevers
48f4d1343a Add support for documenting HTTP headers
This commit adds support for documenting HTTP headers in both requests
and responses.

Closes gh-140
2015-09-29 12:55:26 +01:00
Andy Wilkinson
5a010160a1 Polish Snippet-related javadoc
Closes gh-136
2015-09-28 20:18:37 +01:00
Andy Wilkinson
0d2c24ccc1 Improve curl request snippet's handling of query parameters
Previously, if a request had no content and it was a POST or a PUT
request, the curl request snippet would use the request's parameters
as application/x-www-form-urlencoded data sent using the -d option.
This resulted in the wrong snippet being produced if those parameters
had actually come from the request's query string.

This commit enhances CurlRequestSnippet so that, when it's using the
request's parameter's to create its content, it only includes
parameters that are not specified in the query string. With these
changes in place, this MockMvc request:

post("/?foo=bar").param("foo", "bar").param("a", "alpha")

Will produce a curl snippet with the following command:

$ curl 'http://localhost:8080/?foo=bar' -i -X POST -d 'a=alpha'

foo=bar only appears in the command's query string, despite also
being a general request parameter, and a=alpha only appears in the
request's data.

Closes gh-139
2015-09-28 17:23:22 +01:00
Andy Wilkinson
535bea24f9 Improve handling of Host header so a preprocessor can remove it
Previously, the Host header was treated specially in the HTTP request
snippet. If no Host header was specified, one would always be added
prior to producing the snippet. This ensured that the snippet was
valid (an HTTP 1.1 request must include a Host header), but came at
the cost of some confusion about why a preprocessor could not remove
it.

This commit updates the special treatment of the Host header so that
it's now performed in a central location so that all of the snippets
can benefit from a Host header being added if one isn't provided.
The handling of the Content-Length header has also been reworked so
that it's performed in the same location. The curl request snippet
has been updated so that it doesn't include setting the Host header
on the command line; it's unnecessary as curl will automatically
include a Host header in the request. The documentation of the
Host header's special treatment (made in 2fc0420) that noted that it
was unaffected by preprocessing has been reverted.

Closes gh-134
2015-09-28 15:16:48 +01:00
Andy Wilkinson
5da4bee3c6 Improve handling of the Content-Length header
Previously, some MockMvc-specific logic would add a Content-Length
header to every request that had content. This led to the curl request
snippet containing a -H option for the Content-Length header. This is
unnecessary as curl will automatically generate a Content-Length
header based on the data that's being sent to the server. A secondary
problem was the inconsistent automatic addition of a Content-Length
header; the header was not automatically added to responses.

This commit remove the MockMvc-specific logic in favour of some new
logic in the core project to automatically add a Content-Length header
to both requests and responses. The curl request snippet has been
updated to supress the header in favour of curl's automatic
generation.

Closes gh-111
2015-09-28 11:14:58 +01:00
Andy Wilkinson
cc0edcb901 Avoid using JVM’s default charset for String to byte[] in unit tests 2015-09-23 22:19:45 +01:00
Andy Wilkinson
8f9c4249af Use UTF-8 when reading in snippet files to verify their contents 2015-09-23 21:32:52 +01:00
Andy Wilkinson
f8cbb3b63c Avoid using UTF-8 characters in source code
Using UTF-8 in the source can be problematic on platforms that are
not configured to use UTF-8 by default. This commit replaces a number
of strings with UTF-8 characters in them with an equivalent ASCII
string that uses unicode character escapes.
2015-09-23 20:51:44 +01:00
Andy Wilkinson
318ed18233 Merge branch 'gh-126' 2015-09-23 17:15:01 +01:00
Andy Wilkinson
3f6d4b9639 Honour Content-Type charset whenever content is turned into a String
This commit builds on the changes made in the previous commit to
make wider use of the new getContentAsString methods on
OperationRequest and OperationResponse. It also adds such a method to
OperationRequestPart. Any code that previously got the content as a
byte array and then created a String has been updated to either use
getContentAsString or to use the charset from the Content-Type header
when creating a String.

See gh-126
2015-09-23 17:12:02 +01:00
MURAKAMI Masahiko
9b31c0ce9b Update HTTP request and response snippets to honour charset of content
Closes gh-126
2015-09-23 17:11:35 +01:00
Andy Wilkinson
e04d361dcd Merge branch 'gh-119' 2015-09-23 15:55:32 +01:00
Andy Wilkinson
130a230105 Configure checkstyle and update code to comply
This commit configures Checkstyle and updates the build to comply with
that configuration. The Eclipse JDT metadata has also been updated
so that the output of Eclipse’s code formatting and clean-up is
compliant with Checkstyle.

The use of the latest version (6.10.1) of Checkstyle has required an
upgrade to Gradle 2.7. Gradle hardcode’s the name of the Checkstyle’s
main class which has changed between version 5 (Gradle’s default) and
version 6.

Closes gh-119
2015-09-23 15:50:42 +01:00
Paul-Christian Volkmer
ccb5f3d191 Configure the build to use Checkstyle
This commit adds checkstyle plugin and provides a simple config file.

Closes gh-125
2015-09-23 10:11:26 +01:00
Andy Wilkinson
2fc0420aef Document HTTP request snippet’s special treatment of the Host header
For an HTTP 1.1 request to be valid it must contain a Host header. To
ensure that the HTTP request snippet is a valid HTTP 1.1 request a
Host header will always be included. If one is not present in the
request that’s being documented, the snippet will generate one
automatically. A side-effect of this is that a preprocessor that removes
the Host header will have no effect on the HTTP request snippet. This
commit updates the documentation to describe this behaviour.

Closes gh-134
2015-09-23 10:06:13 +01:00
Andy Wilkinson
50514293a8 Add an integration test for custom context path configuration
Closes gh-135
2015-09-22 17:45:34 +01:00
Andy Wilkinson
42aa996277 Polish JSON field path bracket notation contribution
Closes gh-131
2015-09-22 17:16:22 +01:00
“Jeremy
f3b83f977e Add basic support for using bracket notation in JSON field paths
Previously, only dot notation JSON field paths were supported. Using
dot notation, each key is separated by a '.'. This makes it impossible
to reference a field where the key itself contains a dot.

This commit adds basic bracket notation support to JsonFieldPath.
With this commit, existing functionality remains as is, but users can
now use a basic form of JsonPath bracket notation. This enables the
use of Json keys with embedded dots. i.e. something like :

{
	"a.b" : "one"
}

.andDo(document("example",responseFields(fieldWithPath("['a.b']")…

Closes gh-132
2015-09-22 16:59:15 +01:00
Andy Wilkinson
5cd25897ce Update references to RestDocumentationConfigurer in the documentation
Following the refactoring, the class is now named
RestDocumentationMockMvcConfigurer.
2015-09-22 15:50:56 +01:00
Oliver Trosien
387257ba6f Fix typos in sample asciidoc
Closes gh-129
2015-09-18 21:21:12 -04:00
izeye
9fe4442fcd Fix typo in ConstraintDescriptions' javadoc
Closes gh-127
2015-09-17 09:15:25 -04:00
Andy Wilkinson
7d532aa7bc Merge branch 'gh-120' 2015-09-16 17:45:15 -04:00
Andy Wilkinson
ce26bd4b1a Polish contribution
- Make commons-codec an optional dependency
 - Isolate knowledge of basic auth header to code that produces the
   -u option

Closes gh-120
2015-09-16 17:39:24 -04:00
Paul-Christian Volkmer
d329e2da5d Use -u 'username:password' for basic auth in the curl request snippet
Previously, when a request was made that used basic auth, the curl
snippet would configure the authentication header with the
Base64-encoded header. This commit updates the snippet to use the
more human-friendly -u option to provide the username and password
in place of the authentication header.

Closes gh-122
2015-09-16 15:44:31 -04:00
Andy Wilkinson
26adbb10ae Add missing copyright header 2015-09-13 12:01:41 -04:00