Skip to content

Commit 93be975

Browse files
authored
tests(cookie) :: test cookie removal and expiry (#1431)
fix(cookie) :: test cookie removal and expiry The cookie component can end a cookie three ways :: (1) remove sends an empty value with `Max-Age=0`, (2) expires accepts a RFC 3339 string, or (3)expires accepts an Unix timestamp. Adds tests for all three cases.
1 parent 6d32b40 commit 93be975

4 files changed

Lines changed: 37 additions & 0 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
select 'cookie' as component,
2+
'session' as name,
3+
'abc123' as value,
4+
'2035-06-15T12:34:56Z' as expires;
5+
select 'text' as component, 'ok' as contents;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
select 'cookie' as component,
2+
'session' as name,
3+
'abc123' as value,
4+
1988150400 as expires;
5+
select 'text' as component, 'ok' as contents;

tests/cookies/mod.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,28 @@ async fn zero_turns_off_a_cookie_protection() {
2929
assert!(header.contains("SameSite=Lax"), "{header}");
3030
assert!(header.contains("Path=/admin"), "{header}");
3131
}
32+
33+
#[actix_web::test]
34+
async fn removing_a_cookie_expires_it() {
35+
let header = set_cookie_header("/tests/cookies/remove_cookie.sql").await;
36+
assert!(header.starts_with("session=;"), "{header}");
37+
assert!(header.contains("Max-Age=0"), "{header}");
38+
}
39+
40+
#[actix_web::test]
41+
async fn an_rfc_3339_expires_date_becomes_an_http_date() {
42+
let header = set_cookie_header("/tests/cookies/cookie_expires_rfc3339.sql").await;
43+
assert!(
44+
header.contains("Expires=Fri, 15 Jun 2035 12:34:56 GMT"),
45+
"{header}"
46+
);
47+
}
48+
49+
#[actix_web::test]
50+
async fn a_unix_timestamp_expires_date_becomes_an_http_date() {
51+
let header = set_cookie_header("/tests/cookies/cookie_expires_timestamp.sql").await;
52+
assert!(
53+
header.contains("Expires=Sat, 01 Jan 2033 00:00:00 GMT"),
54+
"{header}"
55+
);
56+
}

tests/cookies/remove_cookie.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
select 'cookie' as component, 'session' as name, 1 as remove;
2+
select 'text' as component, 'ok' as contents;

0 commit comments

Comments
 (0)