diff --git a/spring-session/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java b/spring-session/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java index d8ce8f6..61f2d44 100644 --- a/spring-session/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java +++ b/spring-session/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java @@ -23,8 +23,12 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.NoSuchElementException; import javax.servlet.FilterChain; @@ -51,6 +55,7 @@ import org.springframework.session.ExpiringSession; import org.springframework.session.MapSessionRepository; import org.springframework.session.Session; import org.springframework.session.SessionRepository; +import org.springframework.test.util.ReflectionTestUtils; @RunWith(MockitoJUnitRunner.class) @SuppressWarnings("deprecation") @@ -72,9 +77,7 @@ public class SessionRepositoryFilterTests { public void setup() throws Exception { sessionRepository = new MapSessionRepository(); filter = new SessionRepositoryFilter(sessionRepository); - request = new MockHttpServletRequest(); - response = new MockHttpServletResponse(); - chain = new MockFilterChain(); + setupRequest(); } @Test @@ -92,7 +95,7 @@ public class SessionRepositoryFilterTests { final long expectedCreationTime = (Long) request.getAttribute(CREATE_ATTR); Thread.sleep(50L); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -117,7 +120,7 @@ public class SessionRepositoryFilterTests { }); Thread.sleep(10L); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -208,7 +211,7 @@ public class SessionRepositoryFilterTests { } }); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -231,7 +234,7 @@ public class SessionRepositoryFilterTests { } }); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -241,7 +244,7 @@ public class SessionRepositoryFilterTests { } }); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -254,7 +257,7 @@ public class SessionRepositoryFilterTests { } }); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -277,7 +280,7 @@ public class SessionRepositoryFilterTests { } }); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -287,7 +290,7 @@ public class SessionRepositoryFilterTests { } }); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -300,7 +303,7 @@ public class SessionRepositoryFilterTests { } }); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -330,7 +333,7 @@ public class SessionRepositoryFilterTests { } }); - setupSession(); + nextRequest(); response.reset(); doFilter(new DoInFilter() { @@ -360,7 +363,7 @@ public class SessionRepositoryFilterTests { }); assertThat(response.getCookie("SESSION")).isNotNull(); - setupSession(); + nextRequest(); response.reset(); doFilter(new DoInFilter() { @@ -418,7 +421,7 @@ public class SessionRepositoryFilterTests { } }); - setupSession(); + nextRequest(); request.setRequestedSessionIdValid(false); // ensure we are using wrapped request doFilter(new DoInFilter() { @@ -464,7 +467,7 @@ public class SessionRepositoryFilterTests { } }); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -529,7 +532,7 @@ public class SessionRepositoryFilterTests { assertNewSession(); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -796,7 +799,7 @@ public class SessionRepositoryFilterTests { assertNewSession(); - setupSession(); + nextRequest(); doFilter(new DoInFilter() { @Override @@ -1044,8 +1047,29 @@ public class SessionRepositoryFilterTests { request.setCookies(new Cookie[]{new Cookie("SESSION", sessionId)}); } - private void setupSession() { - setSessionCookie(getSessionCookie().getValue()); + private void setupRequest() { + request = new MockHttpServletRequest(); + response = new MockHttpServletResponse(); + chain = new MockFilterChain(); + } + + private void nextRequest() throws Exception { + Map nameToCookie = new HashMap(); + if (request.getCookies() != null) { + for(Cookie cookie : request.getCookies()) { + nameToCookie.put(cookie.getName(), cookie); + } + } + if (response.getCookies() != null) { + for(Cookie cookie : response.getCookies()) { + nameToCookie.put(cookie.getName(), cookie); + } + } + Cookie[] nextRequestCookies = new ArrayList(nameToCookie.values()).toArray(new Cookie[0]); + + setupRequest(); + + request.setCookies(nextRequestCookies); } @SuppressWarnings("serial")