Skip to content

Commit e86becc

Browse files
committed
Relax assertions in HeaderSpecTests
Fixes: spring-projectsgh-5116
1 parent 4f709d4 commit e86becc

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

config/src/test/java/org/springframework/security/config/web/server/HeaderSpecTests.java

+19-14
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.springframework.test.web.reactive.server.WebTestClient;
2929

3030
import java.time.Duration;
31-
import java.util.Collections;
31+
import java.util.HashSet;
3232
import java.util.List;
3333
import java.util.Map;
3434
import java.util.Set;
@@ -45,7 +45,7 @@ public class HeaderSpecTests {
4545

4646
HttpHeaders expectedHeaders = new HttpHeaders();
4747

48-
Set<String> ignoredHeaderNames = Collections.singleton(HttpHeaders.CONTENT_TYPE);
48+
Set<String> headerNamesNotPresent = new HashSet<>();
4949

5050
@Before
5151
public void setup() {
@@ -67,25 +67,23 @@ public void headersWhenDefaultsThenAllDefaultsWritten() {
6767

6868
@Test
6969
public void headersWhenCacheDisableThenCacheNotWritten() {
70-
this.expectedHeaders.remove(HttpHeaders.CACHE_CONTROL);
71-
this.expectedHeaders.remove(HttpHeaders.PRAGMA);
72-
this.expectedHeaders.remove(HttpHeaders.EXPIRES);
70+
expectHeaderNamesNotPresent(HttpHeaders.CACHE_CONTROL, HttpHeaders.PRAGMA, HttpHeaders.EXPIRES);
7371
this.headers.cache().disable();
7472

7573
assertHeaders();
7674
}
7775

7876
@Test
7977
public void headersWhenContentOptionsDisableThenContentTypeOptionsNotWritten() {
80-
this.expectedHeaders.remove(ContentTypeOptionsServerHttpHeadersWriter.X_CONTENT_OPTIONS);
78+
expectHeaderNamesNotPresent(ContentTypeOptionsServerHttpHeadersWriter.X_CONTENT_OPTIONS);
8179
this.headers.contentTypeOptions().disable();
8280

8381
assertHeaders();
8482
}
8583

8684
@Test
8785
public void headersWhenHstsDisableThenHstsNotWritten() {
88-
this.expectedHeaders.remove(StrictTransportSecurityServerHttpHeadersWriter.STRICT_TRANSPORT_SECURITY);
86+
expectHeaderNamesNotPresent(StrictTransportSecurityServerHttpHeadersWriter.STRICT_TRANSPORT_SECURITY);
8987
this.headers.hsts().disable();
9088

9189
assertHeaders();
@@ -103,30 +101,35 @@ public void headersWhenHstsCustomThenCustomHstsWritten() {
103101

104102
@Test
105103
public void headersWhenFrameOptionsDisableThenFrameOptionsNotWritten() {
106-
this.expectedHeaders.remove(XFrameOptionsServerHttpHeadersWriter.X_FRAME_OPTIONS);
104+
expectHeaderNamesNotPresent(XFrameOptionsServerHttpHeadersWriter.X_FRAME_OPTIONS);
107105
this.headers.frameOptions().disable();
108106

109107
assertHeaders();
110108
}
111109

112110
@Test
113111
public void headersWhenFrameOptionsModeThenFrameOptionsCustomMode() {
114-
this.expectedHeaders.remove(XFrameOptionsServerHttpHeadersWriter.X_FRAME_OPTIONS);
115-
this.expectedHeaders
116-
.add(XFrameOptionsServerHttpHeadersWriter.X_FRAME_OPTIONS, "SAMEORIGIN");
112+
this.expectedHeaders.set(XFrameOptionsServerHttpHeadersWriter.X_FRAME_OPTIONS, "SAMEORIGIN");
117113
this.headers.frameOptions().mode(XFrameOptionsServerHttpHeadersWriter.Mode.SAMEORIGIN);
118114

119115
assertHeaders();
120116
}
121117

122118
@Test
123119
public void headersWhenXssProtectionDisableThenXssProtectionNotWritten() {
124-
this.expectedHeaders.remove("X-Xss-Protection");
120+
expectHeaderNamesNotPresent("X-Xss-Protection");
125121
this.headers.xssProtection().disable();
126122

127123
assertHeaders();
128124
}
129125

126+
private void expectHeaderNamesNotPresent(String... headerNames) {
127+
for(String headerName : headerNames) {
128+
this.expectedHeaders.remove(headerName);
129+
this.headerNamesNotPresent.add(headerName);
130+
}
131+
}
132+
130133
private void assertHeaders() {
131134
WebTestClient client = buildClient();
132135
FluxExchangeResult<String> response = client.get()
@@ -135,10 +138,12 @@ private void assertHeaders() {
135138
.returnResult(String.class);
136139

137140
Map<String, List<String>> responseHeaders = response.getResponseHeaders();
138-
this.ignoredHeaderNames.stream().forEach(responseHeaders::remove);
139141

140-
assertThat(responseHeaders).describedAs(response.toString()).isEqualTo(
142+
assertThat(responseHeaders).describedAs(response.toString()).containsAllEntriesOf(
141143
this.expectedHeaders);
144+
if (!this.headerNamesNotPresent.isEmpty()) {
145+
assertThat(responseHeaders.keySet()).doesNotContainAnyElementsOf(this.headerNamesNotPresent);
146+
}
142147
}
143148

144149
private WebTestClient buildClient() {

0 commit comments

Comments
 (0)