This commit is contained in:
Brandon Thomas committed 2026-04-06 21:36:02 -04:00
1 parent efae7b5ade
commit e6ea3bba9b
1 file changed
+85
@@ -95,3 +95,88 @@ impl AvtCookieManager {
.map(|payload| payload.avt_token)
}
}
#[cfg(test)]
mod tests {
use actix_web::test::TestRequest;
use crate::anonymous_visitor_tracking::avt_cookie_manager::AvtCookieManager;
use crate::anonymous_visitor_tracking::avt_cookie_payload::AvtCookiePayload;
use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken;
#[test]
fn test_create_cookie() {
// NB: Let's make extra sure this always works when migrating cookies, else we'll accidentally invalidate visitor tracking.
// (These are version 1 cookies.)
let manager = AvtCookieManager::new("fakeyou.com", "secret").unwrap();
let token = AnonymousVisitorTrackingToken::new_from_str("avt_ex_anonymous_visitor_tracking_token");
let cookie = manager.make_new_cookie_with_apriori_token(&token).unwrap();
assert_eq!(cookie.value(), "eyJhbGciOiJIUzI1NiJ9.eyJhdnRfdG9rZW4iOiJhdnRfZXhfYW5vbnltb3VzX3Zpc2l0b3JfdHJhY2tpbmdfdG9rZW4iLCJjb29raWVfdmVyc2lvbiI6IjEifQ.w0KRxBxiyBfTZGxaezRa0IgD8ojmCnhRH4SS33Nq3O8");
}
#[test]
fn test_cookie_round_trip() {
let manager = AvtCookieManager::new("fakeyou.com", "secret").unwrap();
let token = AnonymousVisitorTrackingToken::new_from_str("avt_ex_anonymous_visitor_tracking_token");
let cookie = manager.make_new_cookie_with_apriori_token(&token).unwrap();
let http_request = TestRequest::default()
.cookie(cookie)
.to_http_request();
let decoded = manager.decode_cookie_payload_from_request(&http_request)
.expect("no error")
.expect("must exist");
assert_eq!(decoded.avt_token.as_str(), "avt_ex_anonymous_visitor_tracking_token");
assert_eq!(decoded.cookie_version, 1);
}
#[test]
fn test_encode() {
// NB: Stable encoding test. If this changes we should bump the cookie version.
let manager = AvtCookieManager::new("fakeyou.com", "fake_secret").unwrap();
let token = AnonymousVisitorTrackingToken::new_from_str("avt_ex_anonymous_visitor_tracking_token");
let payload = AvtCookiePayload::from_token(token);
let claims = payload.to_map();
let jwt_string = manager.jwt_signer.claims_to_jwt(&claims).unwrap();
assert_eq!(
jwt_string,
"eyJhbGciOiJIUzI1NiJ9.eyJhdnRfdG9rZW4iOiJhdnRfZXhfYW5vbnltb3VzX3Zpc2l0b3JfdHJhY2tpbmdfdG9rZW4iLCJjb29raWVfdmVyc2lvbiI6IjEifQ.5jgQfSXue684okKBzW3847jEhL7eLQKzelyAkgnwe_I"
);
}
#[test]
fn test_decode_version_1() {
// NB: Version 1 payload. The expected encoded value below was generated by `test_encode`.
let payload =
"eyJhbGciOiJIUzI1NiJ9.eyJhdnRfdG9rZW4iOiJhdnRfZXhfYW5vbnltb3VzX3Zpc2l0b3JfdHJhY2tpbmdfdG9rZW4iLCJjb29raWVfdmVyc2lvbiI6IjEifQ.5jgQfSXue684okKBzW3847jEhL7eLQKzelyAkgnwe_I";
let manager = AvtCookieManager::new("fakeyou.com", "fake_secret").unwrap();
let claims = manager.jwt_signer.jwt_to_claims(payload).unwrap();
let decoded_payload = AvtCookiePayload::from_map(claims).unwrap();
assert_eq!(decoded_payload.avt_token.as_str(), "avt_ex_anonymous_visitor_tracking_token");
assert_eq!(decoded_payload.cookie_version, 1);
}
#[test]
fn test_round_trip() {
let manager = AvtCookieManager::new("fakeyou.com", "fake_secret").unwrap();
let token = AnonymousVisitorTrackingToken::new_from_str("avt_ex_anonymous_visitor_tracking_token");
// Encode
let payload = AvtCookiePayload::from_token(token);
let claims = payload.to_map();
let jwt_string = manager.jwt_signer.claims_to_jwt(&claims).unwrap();
// Decode
let claims = manager.jwt_signer.jwt_to_claims(&jwt_string).unwrap();
let decoded_payload = AvtCookiePayload::from_map(claims).unwrap();
assert_eq!(decoded_payload.avt_token.as_str(), "avt_ex_anonymous_visitor_tracking_token");
assert_eq!(decoded_payload.cookie_version, 1);
}
}