21
21
import org .junit .jupiter .api .Test ;
22
22
23
23
import org .springframework .http .HttpHeaders ;
24
- import org .springframework .mock .web .MockCookie ;
25
24
import org .springframework .mock .web .MockHttpServletRequest ;
26
25
import org .springframework .mock .web .MockHttpServletResponse ;
27
26
28
27
import static org .assertj .core .api .Assertions .assertThat ;
29
28
import static org .assertj .core .api .Assertions .assertThatIllegalArgumentException ;
29
+ import static org .mockito .ArgumentMatchers .any ;
30
+ import static org .mockito .Mockito .spy ;
31
+ import static org .mockito .Mockito .verify ;
30
32
import static org .springframework .security .web .csrf .CsrfTokenAssert .assertThatCsrfToken ;
31
33
32
34
/**
@@ -85,6 +87,15 @@ void saveToken() {
85
87
assertThat (tokenCookie .isHttpOnly ()).isTrue ();
86
88
}
87
89
90
+ // gh-14131
91
+ @ Test
92
+ void saveTokenShouldUseResponseAddCookie () {
93
+ CsrfToken token = this .repository .generateToken (this .request );
94
+ MockHttpServletResponse spyResponse = spy (this .response );
95
+ this .repository .saveToken (token , this .request , spyResponse );
96
+ verify (spyResponse ).addCookie (any (Cookie .class ));
97
+ }
98
+
88
99
@ Test
89
100
void saveTokenSecure () {
90
101
this .request .setSecure (true );
@@ -268,7 +279,7 @@ void saveTokenWithSameSiteNull() {
268
279
CsrfToken token = this .repository .generateToken (this .request );
269
280
this .repository .saveToken (token , this .request , this .response );
270
281
Cookie tokenCookie = this .response .getCookie (CookieCsrfTokenRepository .DEFAULT_CSRF_COOKIE_NAME );
271
- assertThat ((( MockCookie ) tokenCookie ). getSameSite ( )).isNull ();
282
+ assertThat (tokenCookie . getAttribute ( "SameSite" )).isNull ();
272
283
}
273
284
274
285
@ Test
@@ -278,7 +289,7 @@ void saveTokenWithSameSiteStrict() {
278
289
CsrfToken token = this .repository .generateToken (this .request );
279
290
this .repository .saveToken (token , this .request , this .response );
280
291
Cookie tokenCookie = this .response .getCookie (CookieCsrfTokenRepository .DEFAULT_CSRF_COOKIE_NAME );
281
- assertThat ((( MockCookie ) tokenCookie ). getSameSite ( )).isEqualTo (sameSitePolicy );
292
+ assertThat (tokenCookie . getAttribute ( "SameSite" )).isEqualTo (sameSitePolicy );
282
293
}
283
294
284
295
@ Test
@@ -288,7 +299,7 @@ void saveTokenWithSameSiteLax() {
288
299
CsrfToken token = this .repository .generateToken (this .request );
289
300
this .repository .saveToken (token , this .request , this .response );
290
301
Cookie tokenCookie = this .response .getCookie (CookieCsrfTokenRepository .DEFAULT_CSRF_COOKIE_NAME );
291
- assertThat ((( MockCookie ) tokenCookie ). getSameSite ( )).isEqualTo (sameSitePolicy );
302
+ assertThat (tokenCookie . getAttribute ( "SameSite" )).isEqualTo (sameSitePolicy );
292
303
}
293
304
294
305
// gh-13075
@@ -420,7 +431,7 @@ void cookieCustomizer() {
420
431
assertThat (tokenCookie .getDomain ()).isEqualTo (domainName );
421
432
assertThat (tokenCookie .getPath ()).isEqualTo (customPath );
422
433
assertThat (tokenCookie .isHttpOnly ()).isEqualTo (Boolean .TRUE );
423
- assertThat ((( MockCookie ) tokenCookie ). getSameSite ( )).isEqualTo (sameSitePolicy );
434
+ assertThat (tokenCookie . getAttribute ( "SameSite" )).isEqualTo (sameSitePolicy );
424
435
}
425
436
426
437
// gh-13659
0 commit comments