@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2022 the original author or authors .
* Copyright 2002 - 2025 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -290,6 +290,21 @@ class CookieServerCsrfTokenRepositoryTests {
@@ -290,6 +290,21 @@ class CookieServerCsrfTokenRepositoryTests {
loadAndAssertExpectedValues ( ) ;
}
// gh-16820
@Test
void withHttpOnlyFalseWhenCookieCustomizerThenStillDefaultsToFalse ( ) {
CookieServerCsrfTokenRepository repository = CookieServerCsrfTokenRepository . withHttpOnlyFalse ( ) ;
repository . setCookieCustomizer ( ( customizer ) - > customizer . maxAge ( 1000 ) ) ;
MockServerHttpRequest . BaseBuilder < ? > request = MockServerHttpRequest . get ( "/dummy" ) ;
MockServerWebExchange exchange = MockServerWebExchange . from ( request ) ;
CsrfToken csrfToken = repository . generateToken ( exchange ) . block ( ) ;
repository . saveToken ( exchange , csrfToken ) . block ( ) ;
ResponseCookie cookie = exchange . getResponse ( ) . getCookies ( ) . getFirst ( "XSRF-TOKEN" ) ;
assertThat ( cookie ) . isNotNull ( ) ;
assertThat ( cookie . getMaxAge ( ) . getSeconds ( ) ) . isEqualTo ( 1000 ) ;
assertThat ( cookie . isHttpOnly ( ) ) . isEqualTo ( Boolean . FALSE ) ;
}
private void setExpectedHeaderName ( String expectedHeaderName ) {
this . csrfTokenRepository . setHeaderName ( expectedHeaderName ) ;
this . expectedHeaderName = expectedHeaderName ;