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.
This commit is contained in:
Andy Wilkinson
2019-12-18 17:43:35 +00:00
parent d34a81ff19
commit 1ee96bbb76

View File

@@ -25,8 +25,10 @@ import java.net.URLClassLoader;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.servlet.http.Cookie; import javax.servlet.http.Cookie;
@@ -385,11 +387,17 @@ public class MockMvcRestDocumentationIntegrationTests {
replacePattern(pattern, "\"<<beta>>\"")))) replacePattern(pattern, "\"<<beta>>\""))))
.andReturn(); .andReturn();
HttpRequestCondition originalRequest = httpRequest(TemplateFormats.asciidoctor(), RequestMethod.GET, "/"); HttpRequestCondition originalRequest = httpRequest(TemplateFormats.asciidoctor(), RequestMethod.GET, "/");
Set<String> mvcResultHeaderNames = new HashSet<>();
for (String headerName : IterableEnumeration.of(result.getRequest().getHeaderNames())) { for (String headerName : IterableEnumeration.of(result.getRequest().getHeaderNames())) {
originalRequest.header(headerName, result.getRequest().getHeader(headerName)); originalRequest.header(headerName, result.getRequest().getHeader(headerName));
mvcResultHeaderNames.add(headerName);
} }
assertThat(new File("build/generated-snippets/original-request/http-request.adoc")).has(content(originalRequest originalRequest.header("Host", "localhost:8080");
.header("Host", "localhost:8080").header("Content-Length", "13").content("{\"a\":\"alpha\"}"))); 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, "/"); HttpRequestCondition preprocessedRequest = httpRequest(TemplateFormats.asciidoctor(), RequestMethod.GET, "/");
List<String> removedHeaders = Arrays.asList("a", HttpHeaders.HOST, HttpHeaders.CONTENT_LENGTH); List<String> removedHeaders = Arrays.asList("a", HttpHeaders.HOST, HttpHeaders.CONTENT_LENGTH);
for (String headerName : IterableEnumeration.of(result.getRequest().getHeaderNames())) { for (String headerName : IterableEnumeration.of(result.getRequest().getHeaderNames())) {