Allow any Accept and Content-Type raw values

See gh-2079
This commit is contained in:
Dzmitry Kabysh
2019-01-07 19:19:36 -08:00
committed by Rossen Stoyanchev
parent f8d6896e40
commit f4509d6e3a
2 changed files with 66 additions and 7 deletions

View File

@@ -29,6 +29,8 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.servlet.ServletContext;
import javax.servlet.http.Cookie;
@@ -337,6 +339,21 @@ public class MockHttpServletRequestBuilderTests {
assertThat(result.get(1).toString()).isEqualTo("application/xml");
}
@Test
public void anyAcceptMultipleContentTypeViaStringArray() {
this.builder.accept("any", "any2");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
List<String> accept = Collections.list(request.getHeaders("Accept"));
List<String> result = Stream.of(accept.get(0).split(","))
.map(String::trim)
.collect(Collectors.toList());
assertThat(result.get(0)).isEqualTo("any");
assertThat(result).hasSize(2);
assertThat(result.get(1)).isEqualTo("any2");
}
@Test
public void contentType() {
this.builder.contentType(MediaType.TEXT_HTML);
@@ -363,6 +380,19 @@ public class MockHttpServletRequestBuilderTests {
assertThat(contentTypes.get(0)).isEqualTo("text/html");
}
@Test
public void anyContentTypeViaString() {
this.builder.contentType("any");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
String contentType = request.getContentType();
List<String> contentTypes = Collections.list(request.getHeaders("Content-Type"));
assertThat(contentType).isEqualTo("any");
assertThat(contentTypes).hasSize(1);
assertThat(contentTypes.get(0)).isEqualTo("any");
}
@Test // SPR-11308
public void contentTypeViaHeader() {
this.builder.header("Content-Type", MediaType.TEXT_HTML_VALUE);
@@ -372,6 +402,16 @@ public class MockHttpServletRequestBuilderTests {
assertThat(contentType).isEqualTo("text/html");
}
@Test // SPR-17643
public void invalidContentTypeViaHeader() {
this.builder.header("Content-Type", "yaml");
this.builder.content("some content");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
String contentType = request.getContentType();
assertThat(contentType).isEqualTo("yaml");
}
@Test // SPR-11308
public void contentTypeViaMultipleHeaderValues() {
this.builder.header("Content-Type", MediaType.TEXT_HTML_VALUE, MediaType.ALL_VALUE);