@@ -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