MockHttpServletRequest leniently handles invalid Accept-Language header
Issue: SPR-16454
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -52,10 +52,6 @@ public class MockHttpServletRequestTests {
|
||||
|
||||
private static final String HOST = "Host";
|
||||
|
||||
private static final String CONTENT_TYPE = "Content-Type";
|
||||
|
||||
private static final String IF_MODIFIED_SINCE = "If-Modified-Since";
|
||||
|
||||
private final MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
|
||||
@Rule
|
||||
@@ -121,7 +117,7 @@ public class MockHttpServletRequestTests {
|
||||
String contentType = "test/plain";
|
||||
request.setContentType(contentType);
|
||||
assertEquals(contentType, request.getContentType());
|
||||
assertEquals(contentType, request.getHeader(CONTENT_TYPE));
|
||||
assertEquals(contentType, request.getHeader(HttpHeaders.CONTENT_TYPE));
|
||||
assertNull(request.getCharacterEncoding());
|
||||
}
|
||||
|
||||
@@ -130,34 +126,34 @@ public class MockHttpServletRequestTests {
|
||||
String contentType = "test/plain;charset=UTF-8";
|
||||
request.setContentType(contentType);
|
||||
assertEquals(contentType, request.getContentType());
|
||||
assertEquals(contentType, request.getHeader(CONTENT_TYPE));
|
||||
assertEquals(contentType, request.getHeader(HttpHeaders.CONTENT_TYPE));
|
||||
assertEquals("UTF-8", request.getCharacterEncoding());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void contentTypeHeader() {
|
||||
String contentType = "test/plain";
|
||||
request.addHeader("Content-Type", contentType);
|
||||
request.addHeader(HttpHeaders.CONTENT_TYPE, contentType);
|
||||
assertEquals(contentType, request.getContentType());
|
||||
assertEquals(contentType, request.getHeader(CONTENT_TYPE));
|
||||
assertEquals(contentType, request.getHeader(HttpHeaders.CONTENT_TYPE));
|
||||
assertNull(request.getCharacterEncoding());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void contentTypeHeaderUTF8() {
|
||||
String contentType = "test/plain;charset=UTF-8";
|
||||
request.addHeader("Content-Type", contentType);
|
||||
request.addHeader(HttpHeaders.CONTENT_TYPE, contentType);
|
||||
assertEquals(contentType, request.getContentType());
|
||||
assertEquals(contentType, request.getHeader(CONTENT_TYPE));
|
||||
assertEquals(contentType, request.getHeader(HttpHeaders.CONTENT_TYPE));
|
||||
assertEquals("UTF-8", request.getCharacterEncoding());
|
||||
}
|
||||
|
||||
@Test // SPR-12677
|
||||
public void setContentTypeHeaderWithMoreComplexCharsetSyntax() {
|
||||
String contentType = "test/plain;charset=\"utf-8\";foo=\"charset=bar\";foocharset=bar;foo=bar";
|
||||
request.addHeader("Content-Type", contentType);
|
||||
request.addHeader(HttpHeaders.CONTENT_TYPE, contentType);
|
||||
assertEquals(contentType, request.getContentType());
|
||||
assertEquals(contentType, request.getHeader(CONTENT_TYPE));
|
||||
assertEquals(contentType, request.getHeader(HttpHeaders.CONTENT_TYPE));
|
||||
assertEquals("UTF-8", request.getCharacterEncoding());
|
||||
}
|
||||
|
||||
@@ -166,7 +162,7 @@ public class MockHttpServletRequestTests {
|
||||
request.setContentType("test/plain");
|
||||
request.setCharacterEncoding("UTF-8");
|
||||
assertEquals("test/plain", request.getContentType());
|
||||
assertEquals("test/plain;charset=UTF-8", request.getHeader(CONTENT_TYPE));
|
||||
assertEquals("test/plain;charset=UTF-8", request.getHeader(HttpHeaders.CONTENT_TYPE));
|
||||
assertEquals("UTF-8", request.getCharacterEncoding());
|
||||
}
|
||||
|
||||
@@ -175,7 +171,7 @@ public class MockHttpServletRequestTests {
|
||||
request.setCharacterEncoding("UTF-8");
|
||||
request.setContentType("test/plain");
|
||||
assertEquals("test/plain", request.getContentType());
|
||||
assertEquals("test/plain;charset=UTF-8", request.getHeader(CONTENT_TYPE));
|
||||
assertEquals("test/plain;charset=UTF-8", request.getHeader(HttpHeaders.CONTENT_TYPE));
|
||||
assertEquals("UTF-8", request.getCharacterEncoding());
|
||||
}
|
||||
|
||||
@@ -302,6 +298,13 @@ public class MockHttpServletRequestTests {
|
||||
Locale.forLanguageTag("en"), Locale.forLanguageTag("de")), actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invalidAcceptLanguageHeader() {
|
||||
request.addHeader("Accept-Language", "en_US");
|
||||
assertEquals(Locale.ENGLISH, request.getLocale());
|
||||
assertEquals("en_US", request.getHeader("Accept-Language"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getServerNameWithDefaultName() {
|
||||
assertEquals("localhost", request.getServerName());
|
||||
@@ -473,39 +476,39 @@ public class MockHttpServletRequestTests {
|
||||
@Test
|
||||
public void httpHeaderDate() {
|
||||
Date date = new Date();
|
||||
request.addHeader(IF_MODIFIED_SINCE, date);
|
||||
assertEquals(date.getTime(), request.getDateHeader(IF_MODIFIED_SINCE));
|
||||
request.addHeader(HttpHeaders.IF_MODIFIED_SINCE, date);
|
||||
assertEquals(date.getTime(), request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void httpHeaderTimestamp() {
|
||||
long timestamp = new Date().getTime();
|
||||
request.addHeader(IF_MODIFIED_SINCE, timestamp);
|
||||
assertEquals(timestamp, request.getDateHeader(IF_MODIFIED_SINCE));
|
||||
request.addHeader(HttpHeaders.IF_MODIFIED_SINCE, timestamp);
|
||||
assertEquals(timestamp, request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void httpHeaderRfcFormatedDate() {
|
||||
request.addHeader(IF_MODIFIED_SINCE, "Tue, 21 Jul 2015 10:00:00 GMT");
|
||||
assertEquals(1437472800000L, request.getDateHeader(IF_MODIFIED_SINCE));
|
||||
request.addHeader(HttpHeaders.IF_MODIFIED_SINCE, "Tue, 21 Jul 2015 10:00:00 GMT");
|
||||
assertEquals(1437472800000L, request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void httpHeaderFirstVariantFormatedDate() {
|
||||
request.addHeader(IF_MODIFIED_SINCE, "Tue, 21-Jul-15 10:00:00 GMT");
|
||||
assertEquals(1437472800000L, request.getDateHeader(IF_MODIFIED_SINCE));
|
||||
request.addHeader(HttpHeaders.IF_MODIFIED_SINCE, "Tue, 21-Jul-15 10:00:00 GMT");
|
||||
assertEquals(1437472800000L, request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void httpHeaderSecondVariantFormatedDate() {
|
||||
request.addHeader(IF_MODIFIED_SINCE, "Tue Jul 21 10:00:00 2015");
|
||||
assertEquals(1437472800000L, request.getDateHeader(IF_MODIFIED_SINCE));
|
||||
request.addHeader(HttpHeaders.IF_MODIFIED_SINCE, "Tue Jul 21 10:00:00 2015");
|
||||
assertEquals(1437472800000L, request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void httpHeaderFormatedDateError() {
|
||||
request.addHeader(IF_MODIFIED_SINCE, "This is not a date");
|
||||
request.getDateHeader(IF_MODIFIED_SINCE);
|
||||
request.addHeader(HttpHeaders.IF_MODIFIED_SINCE, "This is not a date");
|
||||
request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user