Skip to content

Commit bc864dc

Browse files
committed
MockHttpServletRequest preserves original Accept-Language header value
Issue: SPR-17566 (cherry picked from commit 9efea7e)
1 parent d73b027 commit bc864dc

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

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

+5-3
Original file line numberDiff line numberDiff line change
@@ -990,12 +990,14 @@ else if (HttpHeaders.ACCEPT_LANGUAGE.equalsIgnoreCase(name) &&
990990
try {
991991
HttpHeaders headers = new HttpHeaders();
992992
headers.add(HttpHeaders.ACCEPT_LANGUAGE, value.toString());
993-
setPreferredLocales(headers.getAcceptLanguageAsLocales());
993+
List<Locale> locales = headers.getAcceptLanguageAsLocales();
994+
this.locales.clear();
995+
this.locales.addAll(locales);
994996
}
995997
catch (IllegalArgumentException ex) {
996-
// Invalid Accept-Language format -> store plain header instead
997-
doAddHeaderValue(name, value, true);
998+
// Invalid Accept-Language format -> just store plain header
998999
}
1000+
doAddHeaderValue(name, value, true);
9991001
}
10001002
else {
10011003
doAddHeaderValue(name, value, false);

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

+5-4
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@ public void preferredLocalesFromAcceptLanguageHeader() {
308308
List<Locale> actual = Collections.list(request.getLocales());
309309
assertEquals(Arrays.asList(Locale.forLanguageTag("fr-ch"), Locale.forLanguageTag("fr"),
310310
Locale.forLanguageTag("en"), Locale.forLanguageTag("de")), actual);
311+
assertEquals(headerValue, request.getHeader("Accept-Language"));
311312
}
312313

313314
@Test
@@ -500,25 +501,25 @@ public void httpHeaderTimestamp() {
500501
}
501502

502503
@Test
503-
public void httpHeaderRfcFormatedDate() {
504+
public void httpHeaderRfcFormattedDate() {
504505
request.addHeader(HttpHeaders.IF_MODIFIED_SINCE, "Tue, 21 Jul 2015 10:00:00 GMT");
505506
assertEquals(1437472800000L, request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE));
506507
}
507508

508509
@Test
509-
public void httpHeaderFirstVariantFormatedDate() {
510+
public void httpHeaderFirstVariantFormattedDate() {
510511
request.addHeader(HttpHeaders.IF_MODIFIED_SINCE, "Tue, 21-Jul-15 10:00:00 GMT");
511512
assertEquals(1437472800000L, request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE));
512513
}
513514

514515
@Test
515-
public void httpHeaderSecondVariantFormatedDate() {
516+
public void httpHeaderSecondVariantFormattedDate() {
516517
request.addHeader(HttpHeaders.IF_MODIFIED_SINCE, "Tue Jul 21 10:00:00 2015");
517518
assertEquals(1437472800000L, request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE));
518519
}
519520

520521
@Test(expected = IllegalArgumentException.class)
521-
public void httpHeaderFormatedDateError() {
522+
public void httpHeaderFormattedDateError() {
522523
request.addHeader(HttpHeaders.IF_MODIFIED_SINCE, "This is not a date");
523524
request.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE);
524525
}

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

+5-3
Original file line numberDiff line numberDiff line change
@@ -969,12 +969,14 @@ else if (HttpHeaders.ACCEPT_LANGUAGE.equalsIgnoreCase(name) &&
969969
try {
970970
HttpHeaders headers = new HttpHeaders();
971971
headers.add(HttpHeaders.ACCEPT_LANGUAGE, value.toString());
972-
setPreferredLocales(headers.getAcceptLanguageAsLocales());
972+
List<Locale> locales = headers.getAcceptLanguageAsLocales();
973+
this.locales.clear();
974+
this.locales.addAll(locales);
973975
}
974976
catch (IllegalArgumentException ex) {
975-
// Invalid Accept-Language format -> store plain header instead
976-
doAddHeaderValue(name, value, true);
977+
// Invalid Accept-Language format -> just store plain header
977978
}
979+
doAddHeaderValue(name, value, true);
978980
}
979981
else {
980982
doAddHeaderValue(name, value, false);

0 commit comments

Comments
 (0)