This is an automated email from the ASF dual-hosted git repository. bmarwell pushed a commit to branch fix/bmarwell/cookieExpiry in repository https://gitbox.apache.org/repos/asf/shiro.git
commit 427371f7c2307c817204c5cb408c48f24a0b3457 Author: Benjamin Marwell <[email protected]> AuthorDate: Thu Jun 18 15:46:13 2026 +0200 (wip) check cookie expiry --- .../shiro/web/mgt/CookieRememberMeManagerTest.java | 41 +++++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/web/src/test/java/org/apache/shiro/web/mgt/CookieRememberMeManagerTest.java b/web/src/test/java/org/apache/shiro/web/mgt/CookieRememberMeManagerTest.java index e28d6037a..5df9763bd 100644 --- a/web/src/test/java/org/apache/shiro/web/mgt/CookieRememberMeManagerTest.java +++ b/web/src/test/java/org/apache/shiro/web/mgt/CookieRememberMeManagerTest.java @@ -18,23 +18,27 @@ */ package org.apache.shiro.web.mgt; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.SimpleAuthenticationInfo; import org.apache.shiro.authc.UsernamePasswordToken; -import org.apache.shiro.lang.codec.Base64; import org.apache.shiro.crypto.CryptoException; +import org.apache.shiro.lang.codec.Base64; +import org.apache.shiro.mgt.SecurityManager; +import org.apache.shiro.session.mgt.SimpleSession; +import org.apache.shiro.subject.ImmutablePrincipalCollection; import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.web.servlet.ShiroHttpServletRequest; import org.apache.shiro.web.servlet.SimpleCookie; import org.apache.shiro.web.subject.WebSubject; import org.apache.shiro.web.subject.WebSubjectContext; import org.apache.shiro.web.subject.support.DefaultWebSubjectContext; +import org.apache.shiro.web.subject.support.WebDelegatingSubject; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; -import jakarta.servlet.http.Cookie; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; - import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; @@ -322,4 +326,31 @@ class CookieRememberMeManagerTest { assertDoesNotThrow(() -> Base64.decode(base64), "Error decoding " + stringToTest); } } + + @Test + void ensuresDeleteIfMaxAge() { + HttpServletRequest mockRequest = createNiceMock(HttpServletRequest.class); + HttpServletResponse mockResponse = createNiceMock(HttpServletResponse.class); + + WebSubjectContext context = new DefaultWebSubjectContext(); + context.setServletRequest(mockRequest); + context.setServletResponse(mockResponse); + expect(mockRequest.isSecure()).andReturn(true).anyTimes(); + + CookieRememberMeManager mgr = new CookieRememberMeManager(); + + Cookie cookie = createNiceMock(Cookie.class); + expect(cookie.getName()).andReturn("rememberMe").anyTimes(); + // TODO: set value + // TODO: check age / set age in servlet + expect(mockRequest.getCookies()).andReturn(new Cookie[]{cookie}).anyTimes(); + replay(mockRequest); + replay(cookie); + + // when + byte[] rememberedSerializedIdentity = mgr.getRememberedSerializedIdentity(context); + + // then + assertThat(rememberedSerializedIdentity).isNull(); + } }
