From 1ee96bbb7642614c59a67fccb0a7b8093a56d522 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 18 Dec 2019 17:43:35 +0000 Subject: [PATCH] Make tests tolerate varying presence of Content-Length header In Framework 5.2, the Content-Length is now provided by MockMvc. In earlier versions it is not. This commit updates the tests to tolerate this difference in behaviour so that the compatibility tests pass again. --- .../MockMvcRestDocumentationIntegrationTests.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 b2da36ad..b22f26b9 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 @@ -25,8 +25,10 @@ import java.net.URLClassLoader; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.regex.Pattern; import javax.servlet.http.Cookie; @@ -385,11 +387,17 @@ public class MockMvcRestDocumentationIntegrationTests { replacePattern(pattern, "\"<>\"")))) .andReturn(); HttpRequestCondition originalRequest = httpRequest(TemplateFormats.asciidoctor(), RequestMethod.GET, "/"); + Set mvcResultHeaderNames = new HashSet<>(); for (String headerName : IterableEnumeration.of(result.getRequest().getHeaderNames())) { originalRequest.header(headerName, result.getRequest().getHeader(headerName)); + mvcResultHeaderNames.add(headerName); } - assertThat(new File("build/generated-snippets/original-request/http-request.adoc")).has(content(originalRequest - .header("Host", "localhost:8080").header("Content-Length", "13").content("{\"a\":\"alpha\"}"))); + originalRequest.header("Host", "localhost:8080"); + if (!mvcResultHeaderNames.contains("Content-Length")) { + originalRequest.header("Content-Length", "13"); + } + assertThat(new File("build/generated-snippets/original-request/http-request.adoc")) + .has(content(originalRequest.content("{\"a\":\"alpha\"}"))); HttpRequestCondition preprocessedRequest = httpRequest(TemplateFormats.asciidoctor(), RequestMethod.GET, "/"); List removedHeaders = Arrays.asList("a", HttpHeaders.HOST, HttpHeaders.CONTENT_LENGTH); for (String headerName : IterableEnumeration.of(result.getRequest().getHeaderNames())) {