Skip to content

Commit 3a72095

Browse files
committed
Add Servlet request tests to validate RFC 6265 cookie compliance
1 parent 9f61d50 commit 3a72095

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletRequestTest.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ public class AwsHttpServletRequestTest {
2626
.header(HttpHeaders.CONTENT_TYPE, "application/xml; charset=utf-8").build();
2727
private static final AwsProxyRequest validCookieRequest = new AwsProxyRequestBuilder("/cookie", "GET")
2828
.header(HttpHeaders.COOKIE, "yummy_cookie=choco; tasty_cookie=strawberry").build();
29+
private static final AwsProxyRequest controlCharCookieRequest = new AwsProxyRequestBuilder("/cookie", "GET")
30+
.header(HttpHeaders.COOKIE, "name=\u0007\u0009; tasty_cookie=strawberry").build();
31+
private static final AwsProxyRequest unicodeCookieRequest = new AwsProxyRequestBuilder("/cookie", "GET")
32+
.header(HttpHeaders.COOKIE, "yummy_cookie=chøcø; tasty_cookie=strawberry").build();
33+
private static final AwsProxyRequest invalidNameCookieRequest = new AwsProxyRequestBuilder("/cookie", "GET")
34+
.header(HttpHeaders.COOKIE, "yummy@cookie=choco; tasty_cookie=strawberry").build();
2935
private static final AwsProxyRequest complexAcceptHeader = new AwsProxyRequestBuilder("/accept", "GET")
3036
.header(HttpHeaders.ACCEPT, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8").build();
3137
private static final AwsProxyRequest queryString = new AwsProxyRequestBuilder("/test", "GET")
@@ -75,6 +81,39 @@ void headers_parseHeaderValue_validMultipleCookie() {
7581
assertEquals("strawberry", values.get(1).getValue());
7682
}
7783

84+
@Test
85+
void headers_parseHeaderValue_controlCharCookie() {
86+
AwsProxyHttpServletRequest request = new AwsProxyHttpServletRequest(controlCharCookieRequest, mockContext, null, config);
87+
Cookie[] cookies = request.getCookies();
88+
89+
// parse only valid cookies
90+
assertEquals(1, cookies.length);
91+
assertEquals("tasty_cookie", cookies[0].getName());
92+
assertEquals("strawberry", cookies[0].getValue());
93+
}
94+
95+
@Test
96+
void headers_parseHeaderValue_unicodeCookie() {
97+
AwsProxyHttpServletRequest request = new AwsProxyHttpServletRequest(unicodeCookieRequest, mockContext, null, config);
98+
Cookie[] cookies = request.getCookies();
99+
100+
// parse only valid cookies
101+
assertEquals(1, cookies.length);
102+
assertEquals("tasty_cookie", cookies[0].getName());
103+
assertEquals("strawberry", cookies[0].getValue());
104+
}
105+
106+
@Test
107+
void headers_parseHeaderValue_invalidNameCookie() {
108+
AwsProxyHttpServletRequest request = new AwsProxyHttpServletRequest(invalidNameCookieRequest, mockContext, null, config);
109+
Cookie[] cookies = request.getCookies();
110+
111+
// parse only valid cookies
112+
assertEquals(1, cookies.length);
113+
assertEquals("tasty_cookie", cookies[0].getName());
114+
assertEquals("strawberry", cookies[0].getValue());
115+
}
116+
78117
@Test
79118
void headers_parseHeaderValue_complexAccept() {
80119
AwsProxyHttpServletRequest request = new AwsProxyHttpServletRequest(complexAcceptHeader, mockContext, null, config);

0 commit comments

Comments
 (0)