Browse Source

MockHttpServletRequest preserves original Accept-Language header value

Issue: SPR-17566

(cherry picked from commit 9efea7eb73)
pull/23430/head
Juergen Hoeller 7 years ago
parent
commit
bc864dc161
  1. 8
      spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java
  2. 9
      spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java
  3. 8
      spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java

8
spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java

@ -990,12 +990,14 @@ public class MockHttpServletRequest implements HttpServletRequest { @@ -990,12 +990,14 @@ public class MockHttpServletRequest implements HttpServletRequest {
try {
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.ACCEPT_LANGUAGE, value.toString());
setPreferredLocales(headers.getAcceptLanguageAsLocales());
List<Locale> locales = headers.getAcceptLanguageAsLocales();
this.locales.clear();
this.locales.addAll(locales);
}
catch (IllegalArgumentException ex) {
// Invalid Accept-Language format -> store plain header instead
doAddHeaderValue(name, value, true);
// Invalid Accept-Language format -> just store plain header
}
doAddHeaderValue(name, value, true);
}
else {
doAddHeaderValue(name, value, false);

9
spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java

@ -308,6 +308,7 @@ public class MockHttpServletRequestTests { @@ -308,6 +308,7 @@ public class MockHttpServletRequestTests {
List<Locale> actual = Collections.list(request.getLocales());
assertEquals(Arrays.asList(Locale.forLanguageTag("fr-ch"), Locale.forLanguageTag("fr"),
Locale.forLanguageTag("en"), Locale.forLanguageTag("de")), actual);
assertEquals(headerValue, request.getHeader("Accept-Language"));
}
@Test
@ -500,25 +501,25 @@ public class MockHttpServletRequestTests { @@ -500,25 +501,25 @@ public class MockHttpServletRequestTests {
}
@Test
public void httpHeaderRfcFormatedDate() {
public void httpHeaderRfcFormattedDate() {
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() {
public void httpHeaderFirstVariantFormattedDate() {
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() {
public void httpHeaderSecondVariantFormattedDate() {
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() {
public void httpHeaderFormattedDateError() {
request.addHeader(HttpHeaders.IF_MODIFIED_SINCE, "This is not a date");
request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE);
}

8
spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java

@ -969,12 +969,14 @@ public class MockHttpServletRequest implements HttpServletRequest { @@ -969,12 +969,14 @@ public class MockHttpServletRequest implements HttpServletRequest {
try {
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.ACCEPT_LANGUAGE, value.toString());
setPreferredLocales(headers.getAcceptLanguageAsLocales());
List<Locale> locales = headers.getAcceptLanguageAsLocales();
this.locales.clear();
this.locales.addAll(locales);
}
catch (IllegalArgumentException ex) {
// Invalid Accept-Language format -> store plain header instead
doAddHeaderValue(name, value, true);
// Invalid Accept-Language format -> just store plain header
}
doAddHeaderValue(name, value, true);
}
else {
doAddHeaderValue(name, value, false);

Loading…
Cancel
Save