Polish "Add auto-configuration for REST Docs with REST Assured"

Closes gh-9643
This commit is contained in:
Andy Wilkinson
2017-09-25 12:36:34 +01:00
parent 98b2267a5b
commit 352e3ca397
10 changed files with 175 additions and 36 deletions

View File

@@ -45,11 +45,12 @@ import org.springframework.restdocs.restassured3.RestAssuredRestDocumentationCon
*/
@Configuration
@EnableConfigurationProperties
@ConditionalOnWebApplication
public class RestDocsAutoConfiguration {
@Configuration
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass(MockMvcRestDocumentation.class)
@ConditionalOnWebApplication(type = Type.SERVLET)
static class RestDocsMockMvcAutoConfiguration {
@Bean
@@ -79,7 +80,8 @@ public class RestDocsAutoConfiguration {
}
@Configuration
@ConditionalOnClass({ RequestSpecification.class, RestAssuredRestDocumentation.class })
@ConditionalOnClass({ RequestSpecification.class,
RestAssuredRestDocumentation.class })
static class RestDocsRestAssuredAutoConfiguration {
@Bean
@@ -89,7 +91,8 @@ public class RestDocsAutoConfiguration {
RestDocumentationContextProvider contextProvider) {
RestAssuredRestDocumentationConfigurer configurer = RestAssuredRestDocumentation
.documentationConfiguration(contextProvider);
RestDocsRestAssuredConfigurationCustomizer configurationCustomizer = configurationCustomizerProvider.getIfAvailable();
RestDocsRestAssuredConfigurationCustomizer configurationCustomizer = configurationCustomizerProvider
.getIfAvailable();
if (configurationCustomizer != null) {
configurationCustomizer.customize(configurer);
}
@@ -105,5 +108,4 @@ public class RestDocsAutoConfiguration {
}
}

View File

@@ -22,7 +22,7 @@ import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.StringUtils;
/**
* A customizer that configures Spring REST Docs with RestAssured.
* A customizer that configures Spring REST Docs with REST Assured.
*
* @author Eddú Meléndez
*/

View File

@@ -41,14 +41,15 @@ import static org.springframework.restdocs.hypermedia.HypermediaDocumentation.li
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
/**
* Tests for {@link AutoConfigureRestDocs}.
* Integration tests for advanced configuration of {@link AutoConfigureRestDocs} with Mock
* MVC.
*
* @author Andy Wilkinson
*/
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = RestDocsTestController.class, secure = false)
@AutoConfigureRestDocs
public class RestDocsAutoConfigurationAdvancedConfigurationIntegrationTests {
public class MockMvcRestDocsAutoConfigurationAdvancedConfigurationIntegrationTests {
@Before
public void deleteSnippets() {

View File

@@ -34,14 +34,14 @@ import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.docu
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
/**
* Tests for {@link RestDocsAutoConfiguration}.
* Integration tests for {@link RestDocsAutoConfiguration} with Mock MVC.
*
* @author Andy Wilkinson
*/
@RunWith(SpringRunner.class)
@WebMvcTest
@AutoConfigureRestDocs(uriScheme = "https", uriHost = "api.example.com", uriPort = 443)
public class RestDocsAutoConfigurationIntegrationTests {
public class MockMvcRestDocsAutoConfigurationIntegrationTests {
@Before
public void deleteSnippets() {

View File

@@ -42,14 +42,15 @@ import static org.springframework.restdocs.restassured3.RestAssuredRestDocumenta
import static org.springframework.restdocs.restassured3.operation.preprocess.RestAssuredPreprocessors.modifyUris;
/**
* Tests for {@link AutoConfigureRestDocs}.
* Integration tests for advanced configuration of {@link AutoConfigureRestDocs} with REST
* Assured.
*
* @author Eddú Meléndez
*/
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@AutoConfigureRestDocs
public class RestAssuredAutoConfigurationAdvancedConfigurationIntegrationTests {
public class RestAssuredRestDocsAutoConfigurationAdvancedConfigurationIntegrationTests {
@LocalServerPort
private int port;
@@ -65,15 +66,16 @@ public class RestAssuredAutoConfigurationAdvancedConfigurationIntegrationTests {
@Test
public void snippetGeneration() throws Exception {
given(this.documentationSpec)
.filter(document("default-snippets", preprocessRequest(modifyUris()
.scheme("https").host("api.example.com").removePort()))).when()
.port(this.port).get("/").then().assertThat().statusCode(is(200));
.filter(document("default-snippets",
preprocessRequest(modifyUris().scheme("https")
.host("api.example.com").removePort())))
.when().port(this.port).get("/").then().assertThat().statusCode(is(200));
File defaultSnippetsDir = new File("target/generated-snippets/default-snippets");
assertThat(defaultSnippetsDir).exists();
assertThat(new File(defaultSnippetsDir, "curl-request.md")).has(
contentContaining("'https://api.example.com/'"));
assertThat(new File(defaultSnippetsDir, "http-request.md")).has(
contentContaining("api.example.com"));
assertThat(new File(defaultSnippetsDir, "curl-request.md"))
.has(contentContaining("'https://api.example.com/'"));
assertThat(new File(defaultSnippetsDir, "http-request.md"))
.has(contentContaining("api.example.com"));
assertThat(new File(defaultSnippetsDir, "http-response.md")).isFile();
}
@@ -82,8 +84,8 @@ public class RestAssuredAutoConfigurationAdvancedConfigurationIntegrationTests {
}
@TestConfiguration
public static class CustomizationConfiguration implements
RestDocsRestAssuredConfigurationCustomizer {
public static class CustomizationConfiguration
implements RestDocsRestAssuredConfigurationCustomizer {
@Override
public void customize(RestAssuredRestDocumentationConfigurer configurer) {

View File

@@ -39,14 +39,14 @@ import static org.springframework.restdocs.restassured3.RestAssuredRestDocumenta
import static org.springframework.restdocs.restassured3.operation.preprocess.RestAssuredPreprocessors.modifyUris;
/**
* Tests for {@link RestDocsAutoConfiguration}
* Integration tests for {@link RestDocsAutoConfiguration} with REST Assured.
*
* @author Eddú Meléndez
*/
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@AutoConfigureRestDocs
public class RestAssuredAutoConfigurationIntegrationTests {
public class RestAssuredRestDocsAutoConfigurationIntegrationTests {
@LocalServerPort
private int port;
@@ -62,15 +62,16 @@ public class RestAssuredAutoConfigurationIntegrationTests {
@Test
public void defaultSnippetsAreWritten() throws Exception {
given(this.documentationSpec)
.filter(document("default-snippets", preprocessRequest(modifyUris()
.scheme("https").host("api.example.com").removePort()))).when()
.port(this.port).get("/").then().assertThat().statusCode(is(200));
.filter(document("default-snippets",
preprocessRequest(modifyUris().scheme("https")
.host("api.example.com").removePort())))
.when().port(this.port).get("/").then().assertThat().statusCode(is(200));
File defaultSnippetsDir = new File("target/generated-snippets/default-snippets");
assertThat(defaultSnippetsDir).exists();
assertThat(new File(defaultSnippetsDir, "curl-request.adoc")).has(
contentContaining("'https://api.example.com/'"));
assertThat(new File(defaultSnippetsDir, "http-request.adoc")).has(
contentContaining("api.example.com"));
assertThat(new File(defaultSnippetsDir, "curl-request.adoc"))
.has(contentContaining("'https://api.example.com/'"));
assertThat(new File(defaultSnippetsDir, "http-request.adoc"))
.has(contentContaining("api.example.com"));
assertThat(new File(defaultSnippetsDir, "http-response.adoc")).isFile();
}