Skip to content

Commit 9f61d50

Browse files
committed
Add unit test to verify cookie behavior with Max-Age=0
1 parent 72af452 commit 9f61d50

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

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

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.text.SimpleDateFormat;
1818
import java.time.Instant;
1919
import java.util.Calendar;
20+
import java.util.Locale;
2021
import java.util.TimeZone;
2122
import java.util.concurrent.CountDownLatch;
2223
import java.util.regex.Matcher;
@@ -36,7 +37,7 @@ public class AwsHttpServletResponseTest {
3637
private static final int MAX_AGE_VALUE = 300;
3738

3839
private static final Pattern MAX_AGE_PATTERN = Pattern.compile("Max-Age=(-?[0-9]+)");
39-
private static final Pattern EXPIRES_PATTERN = Pattern.compile("Expires=(.*)$");
40+
private static final Pattern EXPIRES_PATTERN = Pattern.compile("Expires=([^;]+)");
4041

4142
private static final String CONTENT_TYPE_WITH_CHARSET = "application/json; charset=UTF-8";
4243
private static final String JAVASCRIPT_CONTENT_TYPE_WITH_CHARSET = "application/javascript; charset=UTF-8";
@@ -144,6 +145,23 @@ void cookie_addCookieWithoutMaxAge_expectNoExpires() {
144145
assertFalse(cookieHeader.contains("Expires"));
145146
}
146147

148+
@Test
149+
void cookie_addCookieWithMaxAgeZero_expectExpiresInThePast() {
150+
AwsHttpServletResponse resp = new AwsHttpServletResponse(null, null);
151+
Cookie zeroMaxAgeCookie = new Cookie(COOKIE_NAME, COOKIE_VALUE);
152+
zeroMaxAgeCookie.setMaxAge(0);
153+
154+
resp.addCookie(zeroMaxAgeCookie);
155+
String cookieHeader = resp.getHeader(HttpHeaders.SET_COOKIE);
156+
157+
Calendar cal = getExpires(cookieHeader);
158+
long currentTimeMillis = System.currentTimeMillis();
159+
160+
assertNotNull(cookieHeader);
161+
assertTrue(cal.getTimeInMillis() < currentTimeMillis);
162+
assertTrue(cookieHeader.contains(COOKIE_NAME + "=" + COOKIE_VALUE));
163+
}
164+
147165
@Test
148166
void responseHeaders_getAwsResponseHeaders_expectLatestHeader() {
149167
AwsHttpServletResponse resp = new AwsHttpServletResponse(null, null);
@@ -352,7 +370,7 @@ private Calendar getExpires(String header) {
352370
assertTrue(ageMatcher.find());
353371
assertTrue(ageMatcher.groupCount() >= 1);
354372
String expiresString = ageMatcher.group(1);
355-
SimpleDateFormat sdf = new SimpleDateFormat(AwsHttpServletResponse.HEADER_DATE_PATTERN);
373+
SimpleDateFormat sdf = new SimpleDateFormat(AwsHttpServletResponse.HEADER_DATE_PATTERN, Locale.US);
356374
Calendar cal = Calendar.getInstance();
357375
try {
358376
cal.setTime(sdf.parse(expiresString));

0 commit comments

Comments
 (0)