Skip to content

Commit 3f4873f

Browse files
committed
Simplify tests related to SameSite cookie directive support
Closes gh-1147
1 parent 644239e commit 3f4873f

File tree

10 files changed

+39
-470
lines changed

10 files changed

+39
-470
lines changed

docs/src/test/java/docs/security/RememberMeSecurityConfigurationTests.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,16 @@
1616

1717
package docs.security;
1818

19-
import java.net.HttpCookie;
2019
import java.time.Duration;
2120
import java.util.Base64;
2221

23-
import javax.servlet.http.HttpServletResponse;
22+
import javax.servlet.http.Cookie;
2423

2524
import org.junit.Before;
2625
import org.junit.Test;
2726
import org.junit.runner.RunWith;
2827

2928
import org.springframework.beans.factory.annotation.Autowired;
30-
import org.springframework.http.HttpHeaders;
3129
import org.springframework.session.Session;
3230
import org.springframework.session.SessionRepository;
3331
import org.springframework.session.web.http.SessionRepositoryFilter;
@@ -81,7 +79,7 @@ public void authenticateWhenSpringSessionRememberMeEnabledThenCookieMaxAgeAndSes
8179
.andReturn();
8280
// @formatter:on
8381

84-
HttpCookie cookie = getSessionCookie(result.getResponse());
82+
Cookie cookie = result.getResponse().getCookie("SESSION");
8583
assertThat(cookie.getMaxAge()).isEqualTo(Integer.MAX_VALUE);
8684
T session = this.sessions
8785
.findById(new String(Base64.getDecoder().decode(cookie.getValue())));
@@ -90,14 +88,5 @@ public void authenticateWhenSpringSessionRememberMeEnabledThenCookieMaxAgeAndSes
9088

9189
}
9290

93-
private HttpCookie getSessionCookie(HttpServletResponse response) {
94-
for (HttpCookie cookie : HttpCookie.parse(response.getHeader(HttpHeaders.SET_COOKIE))) {
95-
if ("SESSION".equals(cookie.getName())) {
96-
return cookie;
97-
}
98-
}
99-
return null;
100-
}
101-
10291
}
10392
// end::class[]

docs/src/test/java/docs/security/RememberMeSecurityConfigurationXmlTests.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,16 @@
1616

1717
package docs.security;
1818

19-
import java.net.HttpCookie;
2019
import java.time.Duration;
2120
import java.util.Base64;
2221

23-
import javax.servlet.http.HttpServletResponse;
22+
import javax.servlet.http.Cookie;
2423

2524
import org.junit.Before;
2625
import org.junit.Test;
2726
import org.junit.runner.RunWith;
2827

2928
import org.springframework.beans.factory.annotation.Autowired;
30-
import org.springframework.http.HttpHeaders;
3129
import org.springframework.session.Session;
3230
import org.springframework.session.SessionRepository;
3331
import org.springframework.session.web.http.SessionRepositoryFilter;
@@ -81,7 +79,7 @@ public void authenticateWhenSpringSessionRememberMeEnabledThenCookieMaxAgeAndSes
8179
.andReturn();
8280
// @formatter:on
8381

84-
HttpCookie cookie = getSessionCookie(result.getResponse());
82+
Cookie cookie = result.getResponse().getCookie("SESSION");
8583
assertThat(cookie.getMaxAge()).isEqualTo(Integer.MAX_VALUE);
8684
T session = this.sessions
8785
.findById(new String(Base64.getDecoder().decode(cookie.getValue())));
@@ -90,14 +88,5 @@ public void authenticateWhenSpringSessionRememberMeEnabledThenCookieMaxAgeAndSes
9088

9189
}
9290

93-
private HttpCookie getSessionCookie(HttpServletResponse response) {
94-
for (HttpCookie cookie : HttpCookie.parse(response.getHeader(HttpHeaders.SET_COOKIE))) {
95-
if ("SESSION".equals(cookie.getName())) {
96-
return cookie;
97-
}
98-
}
99-
return null;
100-
}
101-
10291
}
10392
// end::class[]

samples/boot/findbyusername/src/integration-test/java/sample/FindByUsernameTests.java

Lines changed: 0 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,6 @@
1616

1717
package sample;
1818

19-
import java.io.IOException;
20-
import java.net.HttpCookie;
21-
import java.util.List;
22-
23-
import javax.servlet.Filter;
24-
import javax.servlet.FilterChain;
25-
import javax.servlet.FilterConfig;
26-
import javax.servlet.ServletException;
27-
import javax.servlet.ServletRequest;
28-
import javax.servlet.ServletResponse;
29-
import javax.servlet.http.Cookie;
30-
import javax.servlet.http.HttpServletResponse;
31-
import javax.servlet.http.HttpServletResponseWrapper;
32-
3319
import org.junit.After;
3420
import org.junit.Before;
3521
import org.junit.Test;
@@ -44,11 +30,8 @@
4430
import org.springframework.boot.test.context.SpringBootTest;
4531
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
4632
import org.springframework.boot.test.context.TestConfiguration;
47-
import org.springframework.boot.web.servlet.FilterRegistrationBean;
4833
import org.springframework.context.annotation.Bean;
49-
import org.springframework.core.Ordered;
5034
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
51-
import org.springframework.http.HttpHeaders;
5235
import org.springframework.test.context.junit4.SpringRunner;
5336
import org.springframework.test.web.servlet.MockMvc;
5437
import org.springframework.test.web.servlet.htmlunit.webdriver.MockMvcHtmlUnitDriverBuilder;
@@ -113,62 +96,6 @@ public LettuceConnectionFactory redisConnectionFactory() {
11396
redisContainer().getFirstMappedPort());
11497
}
11598

116-
@Bean
117-
public FilterRegistrationBean<SetCookieHandlerFilter> testFilter() {
118-
FilterRegistrationBean<SetCookieHandlerFilter> registrationBean = new FilterRegistrationBean<>(
119-
new SetCookieHandlerFilter());
120-
registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
121-
return registrationBean;
122-
}
123-
124-
}
125-
126-
private static class SetCookieHandlerFilter implements Filter {
127-
128-
@Override
129-
public void init(FilterConfig filterConfig) {
130-
}
131-
132-
@Override
133-
public void doFilter(ServletRequest request, ServletResponse response,
134-
FilterChain chain) throws IOException, ServletException {
135-
final HttpServletResponse httpServletResponse = (HttpServletResponse) response;
136-
HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper(
137-
httpServletResponse) {
138-
139-
@Override
140-
public void addHeader(String name, String value) {
141-
if (HttpHeaders.SET_COOKIE.equals(name)) {
142-
List<HttpCookie> cookies = HttpCookie.parse(value);
143-
if (!cookies.isEmpty()) {
144-
addCookie(toServletCookie(cookies.get(0)));
145-
}
146-
}
147-
super.setHeader(name, value);
148-
}
149-
150-
};
151-
152-
chain.doFilter(request, responseWrapper);
153-
}
154-
155-
@Override
156-
public void destroy() {
157-
}
158-
159-
private static Cookie toServletCookie(HttpCookie httpCookie) {
160-
Cookie cookie = new Cookie(httpCookie.getName(), httpCookie.getValue());
161-
String domain = httpCookie.getDomain();
162-
if (domain != null) {
163-
cookie.setDomain(domain);
164-
}
165-
cookie.setMaxAge((int) httpCookie.getMaxAge());
166-
cookie.setPath(httpCookie.getPath());
167-
cookie.setSecure(httpCookie.getSecure());
168-
cookie.setHttpOnly(httpCookie.isHttpOnly());
169-
return cookie;
170-
}
171-
17299
}
173100

174101
}

samples/boot/jdbc/src/integration-test/java/sample/BootTests.java

Lines changed: 0 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,6 @@
1616

1717
package sample;
1818

19-
import java.io.IOException;
20-
import java.net.HttpCookie;
21-
import java.util.List;
22-
23-
import javax.servlet.Filter;
24-
import javax.servlet.FilterChain;
25-
import javax.servlet.FilterConfig;
26-
import javax.servlet.ServletException;
27-
import javax.servlet.ServletRequest;
28-
import javax.servlet.ServletResponse;
29-
import javax.servlet.http.Cookie;
30-
import javax.servlet.http.HttpServletResponse;
31-
import javax.servlet.http.HttpServletResponseWrapper;
32-
3319
import org.junit.After;
3420
import org.junit.Before;
3521
import org.junit.Test;
@@ -42,11 +28,6 @@
4228
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
4329
import org.springframework.boot.test.context.SpringBootTest;
4430
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
45-
import org.springframework.boot.test.context.TestConfiguration;
46-
import org.springframework.boot.web.servlet.FilterRegistrationBean;
47-
import org.springframework.context.annotation.Bean;
48-
import org.springframework.core.Ordered;
49-
import org.springframework.http.HttpHeaders;
5031
import org.springframework.test.context.junit4.SpringRunner;
5132
import org.springframework.test.web.servlet.MockMvc;
5233
import org.springframework.test.web.servlet.htmlunit.webdriver.MockMvcHtmlUnitDriverBuilder;
@@ -99,65 +80,4 @@ public void logout() {
9980
login.assertAt();
10081
}
10182

102-
@TestConfiguration
103-
static class Config {
104-
105-
@Bean
106-
public FilterRegistrationBean<SetCookieHandlerFilter> testFilter() {
107-
FilterRegistrationBean<SetCookieHandlerFilter> registrationBean = new FilterRegistrationBean<>(
108-
new SetCookieHandlerFilter());
109-
registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
110-
return registrationBean;
111-
}
112-
113-
}
114-
115-
private static class SetCookieHandlerFilter implements Filter {
116-
117-
@Override
118-
public void init(FilterConfig filterConfig) {
119-
}
120-
121-
@Override
122-
public void doFilter(ServletRequest request, ServletResponse response,
123-
FilterChain chain) throws IOException, ServletException {
124-
final HttpServletResponse httpServletResponse = (HttpServletResponse) response;
125-
HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper(
126-
httpServletResponse) {
127-
128-
@Override
129-
public void addHeader(String name, String value) {
130-
if (HttpHeaders.SET_COOKIE.equals(name)) {
131-
List<HttpCookie> cookies = HttpCookie.parse(value);
132-
if (!cookies.isEmpty()) {
133-
addCookie(toServletCookie(cookies.get(0)));
134-
}
135-
}
136-
super.setHeader(name, value);
137-
}
138-
139-
};
140-
141-
chain.doFilter(request, responseWrapper);
142-
}
143-
144-
@Override
145-
public void destroy() {
146-
}
147-
148-
private static Cookie toServletCookie(HttpCookie httpCookie) {
149-
Cookie cookie = new Cookie(httpCookie.getName(), httpCookie.getValue());
150-
String domain = httpCookie.getDomain();
151-
if (domain != null) {
152-
cookie.setDomain(domain);
153-
}
154-
cookie.setMaxAge((int) httpCookie.getMaxAge());
155-
cookie.setPath(httpCookie.getPath());
156-
cookie.setSecure(httpCookie.getSecure());
157-
cookie.setHttpOnly(httpCookie.isHttpOnly());
158-
return cookie;
159-
}
160-
161-
}
162-
16383
}

samples/boot/redis-json/src/integration-test/java/sample/HttpRedisJsonTest.java

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,8 @@
1616

1717
package sample;
1818

19-
import java.io.IOException;
20-
import java.net.HttpCookie;
2119
import java.util.List;
2220

23-
import javax.servlet.Filter;
24-
import javax.servlet.FilterChain;
25-
import javax.servlet.FilterConfig;
26-
import javax.servlet.ServletException;
27-
import javax.servlet.ServletRequest;
28-
import javax.servlet.ServletResponse;
29-
import javax.servlet.http.Cookie;
30-
import javax.servlet.http.HttpServletResponse;
31-
import javax.servlet.http.HttpServletResponseWrapper;
32-
3321
import org.junit.After;
3422
import org.junit.Before;
3523
import org.junit.Test;
@@ -45,11 +33,8 @@
4533
import org.springframework.boot.test.context.SpringBootTest;
4634
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
4735
import org.springframework.boot.test.context.TestConfiguration;
48-
import org.springframework.boot.web.servlet.FilterRegistrationBean;
4936
import org.springframework.context.annotation.Bean;
50-
import org.springframework.core.Ordered;
5137
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
52-
import org.springframework.http.HttpHeaders;
5338
import org.springframework.test.context.junit4.SpringRunner;
5439
import org.springframework.test.web.servlet.MockMvc;
5540
import org.springframework.test.web.servlet.htmlunit.webdriver.MockMvcHtmlUnitDriverBuilder;
@@ -135,62 +120,6 @@ public LettuceConnectionFactory redisConnectionFactory() {
135120
redisContainer().getFirstMappedPort());
136121
}
137122

138-
@Bean
139-
public FilterRegistrationBean<SetCookieHandlerFilter> testFilter() {
140-
FilterRegistrationBean<SetCookieHandlerFilter> registrationBean = new FilterRegistrationBean<>(
141-
new SetCookieHandlerFilter());
142-
registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
143-
return registrationBean;
144-
}
145-
146-
}
147-
148-
private static class SetCookieHandlerFilter implements Filter {
149-
150-
@Override
151-
public void init(FilterConfig filterConfig) {
152-
}
153-
154-
@Override
155-
public void doFilter(ServletRequest request, ServletResponse response,
156-
FilterChain chain) throws IOException, ServletException {
157-
final HttpServletResponse httpServletResponse = (HttpServletResponse) response;
158-
HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper(
159-
httpServletResponse) {
160-
161-
@Override
162-
public void addHeader(String name, String value) {
163-
if (HttpHeaders.SET_COOKIE.equals(name)) {
164-
List<HttpCookie> cookies = HttpCookie.parse(value);
165-
if (!cookies.isEmpty()) {
166-
addCookie(toServletCookie(cookies.get(0)));
167-
}
168-
}
169-
super.setHeader(name, value);
170-
}
171-
172-
};
173-
174-
chain.doFilter(request, responseWrapper);
175-
}
176-
177-
@Override
178-
public void destroy() {
179-
}
180-
181-
private static Cookie toServletCookie(HttpCookie httpCookie) {
182-
Cookie cookie = new Cookie(httpCookie.getName(), httpCookie.getValue());
183-
String domain = httpCookie.getDomain();
184-
if (domain != null) {
185-
cookie.setDomain(domain);
186-
}
187-
cookie.setMaxAge((int) httpCookie.getMaxAge());
188-
cookie.setPath(httpCookie.getPath());
189-
cookie.setSecure(httpCookie.getSecure());
190-
cookie.setHttpOnly(httpCookie.isHttpOnly());
191-
return cookie;
192-
}
193-
194123
}
195124

196125
}

0 commit comments

Comments
 (0)