From dd97ee4e99fe9e870e77c1257b1fdf822fb353ce Mon Sep 17 00:00:00 2001 From: Justin Tay Date: Sat, 1 Apr 2023 21:32:40 +0800 Subject: [PATCH] Support SameSite cookie attribute in MockMvcHttpConnector Closes gh-30264 --- .../test/web/servlet/client/MockMvcHttpConnector.java | 3 ++- .../standalone/resultmatches/CookieAssertionTests.java | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/client/MockMvcHttpConnector.java b/spring-test/src/main/java/org/springframework/test/web/servlet/client/MockMvcHttpConnector.java index adcb0115cfd..b7fa5dbd354 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/client/MockMvcHttpConnector.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/client/MockMvcHttpConnector.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2023 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. @@ -197,6 +197,7 @@ public class MockMvcHttpConnector implements ClientHttpConnector { .path(cookie.getPath()) .secure(cookie.getSecure()) .httpOnly(cookie.isHttpOnly()) + .sameSite(cookie.getAttribute("samesite")) .build(); clientResponse.getCookies().add(httpCookie.getName(), httpCookie); } diff --git a/spring-test/src/test/java/org/springframework/test/web/servlet/samples/client/standalone/resultmatches/CookieAssertionTests.java b/spring-test/src/test/java/org/springframework/test/web/servlet/samples/client/standalone/resultmatches/CookieAssertionTests.java index 0d224e207df..0a070d91c02 100644 --- a/spring-test/src/test/java/org/springframework/test/web/servlet/samples/client/standalone/resultmatches/CookieAssertionTests.java +++ b/spring-test/src/test/java/org/springframework/test/web/servlet/samples/client/standalone/resultmatches/CookieAssertionTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2023 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. @@ -50,6 +50,7 @@ public class CookieAssertionTests { CookieLocaleResolver localeResolver = new CookieLocaleResolver(); localeResolver.setCookieDomain("domain"); localeResolver.setCookieHttpOnly(true); + localeResolver.setCookieSameSite("Strict"); client = MockMvcWebTestClient.bindToController(new SimpleController()) .interceptors(new LocaleChangeInterceptor()) @@ -107,6 +108,10 @@ public class CookieAssertionTests { client.get().uri("/").exchange().expectCookie().httpOnly(COOKIE_NAME, true); } + @Test + public void testSameSite() { + client.get().uri("/").exchange().expectCookie().sameSite(COOKIE_NAME, "Strict"); + } @Controller private static class SimpleController {