Skip to content

Commit 9efea7e

Browse files
committed
MockHttpServletRequest preserves original Accept-Language header value
Issue: SPR-17566
1 parent d3cdecc commit 9efea7e

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,12 +1013,14 @@ else if (HttpHeaders.ACCEPT_LANGUAGE.equalsIgnoreCase(name) &&
10131013
try {
10141014
HttpHeaders headers = new HttpHeaders();
10151015
headers.add(HttpHeaders.ACCEPT_LANGUAGE, value.toString());
1016-
setPreferredLocales(headers.getAcceptLanguageAsLocales());
1016+
List<Locale> locales = headers.getAcceptLanguageAsLocales();
1017+
this.locales.clear();
1018+
this.locales.addAll(locales);
10171019
}
10181020
catch (IllegalArgumentException ex) {
1019-
// Invalid Accept-Language format -> store plain header instead
1020-
doAddHeaderValue(name, value, true);
1021+
// Invalid Accept-Language format -> just store plain header
10211022
}
1023+
doAddHeaderValue(name, value, true);
10221024
}
10231025
else {
10241026
doAddHeaderValue(name, value, false);

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ public void preferredLocalesFromAcceptLanguageHeader() {
341341
List<Locale> actual = Collections.list(request.getLocales());
342342
assertEquals(Arrays.asList(Locale.forLanguageTag("fr-ch"), Locale.forLanguageTag("fr"),
343343
Locale.forLanguageTag("en"), Locale.forLanguageTag("de")), actual);
344+
assertEquals(headerValue, request.getHeader("Accept-Language"));
344345
}
345346

346347
@Test

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,12 +1013,14 @@ else if (HttpHeaders.ACCEPT_LANGUAGE.equalsIgnoreCase(name) &&
10131013
try {
10141014
HttpHeaders headers = new HttpHeaders();
10151015
headers.add(HttpHeaders.ACCEPT_LANGUAGE, value.toString());
1016-
setPreferredLocales(headers.getAcceptLanguageAsLocales());
1016+
List<Locale> locales = headers.getAcceptLanguageAsLocales();
1017+
this.locales.clear();
1018+
this.locales.addAll(locales);
10171019
}
10181020
catch (IllegalArgumentException ex) {
1019-
// Invalid Accept-Language format -> store plain header instead
1020-
doAddHeaderValue(name, value, true);
1021+
// Invalid Accept-Language format -> just store plain header
10211022
}
1023+
doAddHeaderValue(name, value, true);
10221024
}
10231025
else {
10241026
doAddHeaderValue(name, value, false);

0 commit comments

Comments
 (0)