From e6ea3bba9b3ac15321d0ddd13683b454fa50aba3 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 6 Apr 2026 21:36:02 -0400 Subject: [PATCH] tests --- .../avt_cookie_manager.rs | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/crates/lib/actix_artcraft/src/anonymous_visitor_tracking/avt_cookie_manager.rs b/crates/lib/actix_artcraft/src/anonymous_visitor_tracking/avt_cookie_manager.rs index 4053368391..52d63905cb 100644 --- a/crates/lib/actix_artcraft/src/anonymous_visitor_tracking/avt_cookie_manager.rs +++ b/crates/lib/actix_artcraft/src/anonymous_visitor_tracking/avt_cookie_manager.rs @@ -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); + } +}