|
16 | 16 |
|
17 | 17 | package org.springframework.security.web.server.header;
|
18 | 18 |
|
| 19 | +import java.util.Locale; |
| 20 | + |
19 | 21 | import org.junit.Test;
|
20 | 22 |
|
21 | 23 | import org.springframework.http.HttpHeaders;
|
22 | 24 | import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
|
23 | 25 | import org.springframework.mock.web.server.MockServerWebExchange;
|
| 26 | +import org.springframework.util.LinkedMultiValueMap; |
24 | 27 | import org.springframework.web.server.ServerWebExchange;
|
25 | 28 |
|
26 | 29 | import static org.assertj.core.api.Assertions.assertThat;
|
@@ -56,6 +59,24 @@ public void writeHeadersWhenSingleHeaderAndHeaderWrittenThenSuccess() {
|
56 | 59 | .containsOnly(headerValue);
|
57 | 60 | }
|
58 | 61 |
|
| 62 | + // gh-10557 |
| 63 | + @Test |
| 64 | + public void writeHeadersWhenHeaderWrittenWithDifferentCaseThenDoesNotWriteHeaders() { |
| 65 | + String headerName = HttpHeaders.CACHE_CONTROL.toLowerCase(Locale.ROOT); |
| 66 | + String headerValue = "max-age=120"; |
| 67 | + this.headers.set(headerName, headerValue); |
| 68 | + // Note: This test inverts which collection uses case sensitive headers, |
| 69 | + // due to the fact that gh-10557 reports NettyHeadersAdapter as the |
| 70 | + // response headers implementation, which is not accessible here. |
| 71 | + HttpHeaders caseSensitiveHeaders = new HttpHeaders(new LinkedMultiValueMap<>()); |
| 72 | + caseSensitiveHeaders.set(HttpHeaders.CACHE_CONTROL, CacheControlServerHttpHeadersWriter.CACHE_CONTRTOL_VALUE); |
| 73 | + caseSensitiveHeaders.set(HttpHeaders.PRAGMA, CacheControlServerHttpHeadersWriter.PRAGMA_VALUE); |
| 74 | + caseSensitiveHeaders.set(HttpHeaders.EXPIRES, CacheControlServerHttpHeadersWriter.EXPIRES_VALUE); |
| 75 | + this.writer = new StaticServerHttpHeadersWriter(caseSensitiveHeaders); |
| 76 | + this.writer.writeHttpHeaders(this.exchange); |
| 77 | + assertThat(this.headers.get(headerName)).containsOnly(headerValue); |
| 78 | + } |
| 79 | + |
59 | 80 | @Test
|
60 | 81 | public void writeHeadersWhenMultiHeaderThenWritesAllHeaders() {
|
61 | 82 | this.writer = StaticServerHttpHeadersWriter.builder()
|
|
0 commit comments