From 27a84387789784d250c1fafd8e1926bf74f81efe Mon Sep 17 00:00:00 2001 From: dreamhead Date: Wed, 30 Aug 2023 22:14:06 +0800 Subject: [PATCH] added same site with same site enum value --- .../com/github/dreamhead/moco/CookieAttribute.java | 12 ++++++++++++ .../com/github/dreamhead/moco/MocoWebTest.java | 14 +++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/moco-core/src/main/java/com/github/dreamhead/moco/CookieAttribute.java b/moco-core/src/main/java/com/github/dreamhead/moco/CookieAttribute.java index 0babfefac..6a82ca92c 100644 --- a/moco-core/src/main/java/com/github/dreamhead/moco/CookieAttribute.java +++ b/moco-core/src/main/java/com/github/dreamhead/moco/CookieAttribute.java @@ -36,6 +36,18 @@ public static CookieAttribute sameSite(final String sameSite) { return new SameSiteAttribute(name); } + public static CookieAttribute sameSite(final SameSite sameSite) { + CookieHeaderNames.SameSite name = ofSameSite(sameSite.name()); + return new SameSiteAttribute(name); + } + + + public enum SameSite { + STRICT, + LAX, + NONE + } + private static CookieHeaderNames.SameSite ofSameSite(final String name) { if (name != null) { for (CookieHeaderNames.SameSite each : CookieHeaderNames.SameSite.class.getEnumConstants()) { diff --git a/moco-core/src/test/java/com/github/dreamhead/moco/MocoWebTest.java b/moco-core/src/test/java/com/github/dreamhead/moco/MocoWebTest.java index bd159dd30..ff379aedd 100644 --- a/moco-core/src/test/java/com/github/dreamhead/moco/MocoWebTest.java +++ b/moco-core/src/test/java/com/github/dreamhead/moco/MocoWebTest.java @@ -143,7 +143,7 @@ public void should_set_and_recognize_cookie_with_domain() throws Exception { } @Test - public void should_set_and_recognize_cookie_with_samesite() throws Exception { + public void should_set_and_recognize_cookie_with_samesite_text() throws Exception { server.request(eq(cookie("loggedIn"), "true")).response(status(200)); server.response(cookie("loggedIn", "true", sameSite("NONE")), status(302)); running(server, () -> { @@ -154,6 +154,18 @@ public void should_set_and_recognize_cookie_with_samesite() throws Exception { }); } + @Test + public void should_set_and_recognize_cookie_with_samesite_enum() throws Exception { + server.request(eq(cookie("loggedIn"), "true")).response(status(200)); + server.response(cookie("loggedIn", "true", sameSite(CookieAttribute.SameSite.NONE)), status(302)); + running(server, () -> { + org.apache.hc.core5.http.HttpResponse response = helper.getResponse(root()); + String value = response.getFirstHeader(HttpHeaders.SET_COOKIE).getValue(); + Cookie decodeCookie = ClientCookieDecoder.STRICT.decode(value); + assertThat(((DefaultCookie)decodeCookie).sameSite(), is(CookieHeaderNames.SameSite.None)); + }); + } + @Test(expected = IllegalArgumentException.class) public void should_throw_exception_for_unknown_samesite_value() throws Exception { sameSite("Unknown");