diff --git a/spring-cloud-contract-wiremock/pom.xml b/spring-cloud-contract-wiremock/pom.xml
index 4d563b00eb..dde0ef9318 100644
--- a/spring-cloud-contract-wiremock/pom.xml
+++ b/spring-cloud-contract-wiremock/pom.xml
@@ -17,6 +17,16 @@
com.github.tomakehurst
wiremock-standalone
+
+ io.rest-assured
+ rest-assured
+ true
+
+
+ javax.servlet
+ javax.servlet-api
+ true
+
org.apache.httpcomponents
httpclient
@@ -39,6 +49,11 @@
spring-restdocs-mockmvc
true
+
+ org.springframework.restdocs
+ spring-restdocs-restassured
+ true
+
org.springframework.boot
spring-boot-starter-test
diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/WireMockRestAssuredConfiguration.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/WireMockRestAssuredConfiguration.java
new file mode 100644
index 0000000000..132d233c40
--- /dev/null
+++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/WireMockRestAssuredConfiguration.java
@@ -0,0 +1,26 @@
+package org.springframework.cloud.contract.wiremock.restdocs;
+
+import org.springframework.boot.test.autoconfigure.restdocs.RestDocsRestAssuredConfigurationCustomizer;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.restdocs.restassured3.RestAssuredRestDocumentationConfigurer;
+
+/**
+ * Custom configuration for Spring RestDocs that adds a WireMock snippet (for generating
+ * JSON stubs). Applied automatically if you use
+ * {@link org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs @AutoConfigureRestDocs} in your test case and this class
+ * is available. JSON stubs are generated and added to the restdocs path under "stubs".
+ *
+ * @see WireMockRestDocs for a convenient entry point for customizing and asserting the
+ * stub behaviour
+ *
+ * @author EddĂș MelĂ©ndez
+ */
+@Configuration
+public class WireMockRestAssuredConfiguration implements RestDocsRestAssuredConfigurationCustomizer {
+
+ @Override
+ public void customize(RestAssuredRestDocumentationConfigurer configurer) {
+ configurer.snippets().withDefaults(new WireMockSnippet());
+ }
+
+}
diff --git a/spring-cloud-contract-wiremock/src/main/resources/META-INF/spring.factories b/spring-cloud-contract-wiremock/src/main/resources/META-INF/spring.factories
index 9ac5aa6677..c0e49b7d51 100644
--- a/spring-cloud-contract-wiremock/src/main/resources/META-INF/spring.factories
+++ b/spring-cloud-contract-wiremock/src/main/resources/META-INF/spring.factories
@@ -4,4 +4,5 @@ org.springframework.cloud.contract.wiremock.WireMockApplicationListener
# RestDocs Auto Configuration
org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs=\
-org.springframework.cloud.contract.wiremock.restdocs.WireMockRestDocsConfiguration
+org.springframework.cloud.contract.wiremock.restdocs.WireMockRestDocsConfiguration,\
+org.springframework.cloud.contract.wiremock.restdocs.WireMockRestAssuredConfiguration
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerRestAssuredApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerRestAssuredApplicationTests.java
new file mode 100644
index 0000000000..d0830fd5d3
--- /dev/null
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerRestAssuredApplicationTests.java
@@ -0,0 +1,83 @@
+package org.springframework.cloud.contract.wiremock;
+
+import io.restassured.specification.RequestSpecification;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import wiremock.org.eclipse.jetty.http.HttpStatus;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
+import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+import static org.springframework.restdocs.restassured3.RestAssuredRestDocumentation.document;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = {ServletWebServerFactoryAutoConfiguration.EmbeddedTomcat.class, DispatcherServletAutoConfiguration.class},
+ webEnvironment = WebEnvironment.RANDOM_PORT)
+@AutoConfigureRestDocs(outputDir = "target/snippets")
+public class WiremockServerRestAssuredApplicationTests {
+
+ @Autowired
+ private RequestSpecification documentationSpec;
+
+ @LocalServerPort
+ private int port;
+
+ @Test
+ public void contextLoads() throws Exception {
+ given()
+ .port(this.port)
+ .when()
+ .get("/resource")
+ .then()
+ .assertThat()
+ .statusCode(is(200))
+ .content(equalTo("Hello World"));
+ }
+
+ @Test
+ public void statusIsMaintained() throws Exception {
+ given(this.documentationSpec)
+ .filter(document("status"))
+ .when()
+ .get("/status")
+ .then()
+ .assertThat()
+ .statusCode(is(202))
+ .content(equalTo("Hello World"));
+ }
+
+ @Configuration
+ @EnableWebMvc
+ @RestController
+ protected static class TestConfiguration {
+
+ @ResponseBody
+ @RequestMapping("/resource")
+ public String resource() {
+ return "Hello World";
+ }
+
+ @ResponseBody
+ @RequestMapping("/status")
+ public ResponseEntity status() {
+ return ResponseEntity.status(HttpStatus.ACCEPTED_202).body("Hello World");
+ }
+
+ }
+
+}