Add cookie customizer to CookieRequestCache and CookieServerRequestCache
Issue gh-15204
This commit is contained in:
committed by
Marcus Hert Da Coregio
parent
820ce4ea7a
commit
008cbc2cae
@@ -20,6 +20,7 @@ import java.util.Arrays;
|
||||
import java.util.Base64;
|
||||
import java.util.Collections;
|
||||
import java.util.Locale;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import jakarta.servlet.http.Cookie;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
@@ -204,6 +205,22 @@ public class CookieRequestCacheTests {
|
||||
assertThat(Collections.list(matchingRequest.getLocales())).contains(Locale.FRENCH, Locale.GERMANY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setCookieCustomizer() {
|
||||
Consumer<Cookie> cookieCustomizer = (cookie) -> {
|
||||
cookie.setAttribute("SameSite", "Strict");
|
||||
cookie.setAttribute("CustomAttribute", "CustomValue");
|
||||
};
|
||||
CookieRequestCache cookieRequestCache = new CookieRequestCache();
|
||||
cookieRequestCache.setCookieCustomizer(cookieCustomizer);
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
cookieRequestCache.saveRequest(new MockHttpServletRequest(), response);
|
||||
Cookie savedCookie = response.getCookie(DEFAULT_COOKIE_NAME);
|
||||
assertThat(savedCookie).isNotNull();
|
||||
assertThat(savedCookie.getAttribute("SameSite")).isEqualTo("Strict");
|
||||
assertThat(savedCookie.getAttribute("CustomAttribute")).isEqualTo("CustomValue");
|
||||
}
|
||||
|
||||
private static String encodeCookie(String cookieValue) {
|
||||
return Base64.getEncoder().encodeToString(cookieValue.getBytes());
|
||||
}
|
||||
|
||||
@@ -138,4 +138,20 @@ public class CookieServerRequestCacheTests {
|
||||
"REDIRECT_URI=; Path=/; Max-Age=0; Expires=Thu, 01 Jan 1970 00:00:00 GMT; HttpOnly; SameSite=Lax");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveRequestWithCookieCustomizerThenSameSiteStrict() {
|
||||
MockServerWebExchange exchange = MockServerWebExchange
|
||||
.from(MockServerHttpRequest.get("/secured/").accept(MediaType.TEXT_HTML));
|
||||
CookieServerRequestCache cacheWithCustomizer = new CookieServerRequestCache();
|
||||
cacheWithCustomizer.setCookieCustomizer(((cookieBuilder) -> cookieBuilder.sameSite("Strict")));
|
||||
cacheWithCustomizer.saveRequest(exchange).block();
|
||||
MultiValueMap<String, ResponseCookie> cookies = exchange.getResponse().getCookies();
|
||||
assertThat(cookies).hasSize(1);
|
||||
ResponseCookie cookie = cookies.getFirst("REDIRECT_URI");
|
||||
assertThat(cookie).isNotNull();
|
||||
String encodedRedirectUrl = Base64.getEncoder().encodeToString("/secured/".getBytes());
|
||||
assertThat(cookie.toString())
|
||||
.isEqualTo("REDIRECT_URI=" + encodedRedirectUrl + "; Path=/; HttpOnly; SameSite=Strict");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user