diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockCookie.java b/spring-test/src/main/java/org/springframework/mock/web/MockCookie.java index fc9c7e784b26..3b06547f4ade 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockCookie.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockCookie.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. @@ -39,7 +39,7 @@ @SuppressWarnings("removal") public class MockCookie extends Cookie { - private static final long serialVersionUID = 1198809317225300389L; + private static final long serialVersionUID = 4312531139502726325L; private static final String SAME_SITE = "SameSite"; private static final String EXPIRES = "Expires"; @@ -47,6 +47,7 @@ public class MockCookie extends Cookie { @Nullable private ZonedDateTime expires; + /** * Construct a new {@link MockCookie} with the supplied name and value. * @param name the name @@ -62,7 +63,7 @@ public MockCookie(String name, String value) { * @since 5.1.11 */ public void setExpires(@Nullable ZonedDateTime expires) { - setAttribute(EXPIRES, expires != null ? expires.format(DateTimeFormatter.RFC_1123_DATE_TIME) : null); + setAttribute(EXPIRES, (expires != null ? expires.format(DateTimeFormatter.RFC_1123_DATE_TIME) : null)); } /** @@ -156,8 +157,8 @@ private static String extractAttributeValue(String attribute, String header) { @Override public void setAttribute(String name, @Nullable String value) { - if(EXPIRES.equalsIgnoreCase(name)) { - this.expires = value != null ? ZonedDateTime.parse(value, DateTimeFormatter.RFC_1123_DATE_TIME) : null; + if (EXPIRES.equalsIgnoreCase(name)) { + this.expires = (value != null ? ZonedDateTime.parse(value, DateTimeFormatter.RFC_1123_DATE_TIME) : null); } super.setAttribute(name, value); } @@ -175,8 +176,7 @@ public String toString() { .append("HttpOnly", isHttpOnly()) .append(SAME_SITE, getSameSite()) .append("Max-Age", getMaxAge()) - .append(EXPIRES, (this.expires != null ? - DateTimeFormatter.RFC_1123_DATE_TIME.format(this.expires) : null)) + .append(EXPIRES, getAttribute(EXPIRES)) .toString(); } diff --git a/spring-test/src/test/java/org/springframework/mock/web/MockCookieTests.java b/spring-test/src/test/java/org/springframework/mock/web/MockCookieTests.java index 9783cb57cfec..6d284e3ea133 100644 --- a/spring-test/src/test/java/org/springframework/mock/web/MockCookieTests.java +++ b/spring-test/src/test/java/org/springframework/mock/web/MockCookieTests.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. @@ -148,11 +148,11 @@ void setSameSiteShouldSetAttribute() { @Test void setExpiresShouldSetAttribute() { + String expiresText = "Tue, 8 Oct 2019 19:50:00 GMT"; MockCookie cookie = new MockCookie("SESSION", "123"); - cookie.setExpires(ZonedDateTime.parse("Tue, 8 Oct 2019 19:50:00 GMT", - DateTimeFormatter.RFC_1123_DATE_TIME)); + cookie.setExpires(ZonedDateTime.parse(expiresText, DateTimeFormatter.RFC_1123_DATE_TIME)); - assertThat(cookie.getAttribute("expires")).isEqualTo("Tue, 8 Oct 2019 19:50:00 GMT"); + assertThat(cookie.getAttribute("expires")).isEqualTo(expiresText); } @Test @@ -168,11 +168,11 @@ void setSameSiteNullShouldClear() { @Test void setExpiresNullShouldClear() { + ZonedDateTime expiresDateTime = ZonedDateTime.parse("Tue, 8 Oct 2019 19:50:00 GMT", + DateTimeFormatter.RFC_1123_DATE_TIME); MockCookie cookie = new MockCookie("SESSION", "123"); - cookie.setExpires(ZonedDateTime.parse("Tue, 8 Oct 2019 19:50:00 GMT", - DateTimeFormatter.RFC_1123_DATE_TIME)); - assertThat(cookie.getExpires()).isEqualTo(ZonedDateTime.parse("Tue, 8 Oct 2019 19:50:00 GMT", - DateTimeFormatter.RFC_1123_DATE_TIME)); + cookie.setExpires(expiresDateTime); + assertThat(cookie.getExpires()).isEqualTo(expiresDateTime); cookie.setExpires(null); assertThat(cookie.getExpires()).isNull(); @@ -189,11 +189,12 @@ void setAttributeSameSiteShouldSetSameSite() { @Test void setAttributeExpiresShouldSetExpires() { + String expiresText = "Tue, 8 Oct 2019 19:50:00 GMT"; MockCookie cookie = new MockCookie("SESSION", "123"); - cookie.setAttribute("expires", "Tue, 8 Oct 2019 19:50:00 GMT"); + cookie.setAttribute("expires", expiresText); - assertThat(cookie.getExpires()).isEqualTo(ZonedDateTime.parse("Tue, 8 Oct 2019 19:50:00 GMT", - DateTimeFormatter.RFC_1123_DATE_TIME)); + assertThat(cookie.getExpires()).isEqualTo( + ZonedDateTime.parse(expiresText, DateTimeFormatter.RFC_1123_DATE_TIME)); } @Test @@ -201,4 +202,5 @@ void setInvalidAttributeExpiresShouldThrow() { MockCookie cookie = new MockCookie("SESSION", "123"); assertThatThrownBy(() -> cookie.setAttribute("expires", "12345")).isInstanceOf(DateTimeParseException.class); } + }