use crate::handlers::pxhd::*;
use crate::pxconfig::PXConfig;
use crate::pxcontext::PXContext;
#[test]
fn set_cookie_includes_required_attributes_without_secure_by_default() {
let cookie = build_pxhd_set_cookie_value("abc123", None, false);
assert_eq!(
cookie,
"_pxhd=abc123; Max-Age=31536000; SameSite=Lax; Path=/"
);
}
#[test]
fn set_cookie_includes_domain_when_present() {
let cookie = build_pxhd_set_cookie_value("abc123", Some("example.com"), false);
assert_eq!(
cookie,
"_pxhd=abc123; Max-Age=31536000; SameSite=Lax; Path=/; Domain=example.com"
);
}
#[test]
fn set_cookie_omits_empty_domain() {
let cookie = build_pxhd_set_cookie_value("abc123", Some(""), false);
assert_eq!(
cookie,
"_pxhd=abc123; Max-Age=31536000; SameSite=Lax; Path=/"
);
}
#[test]
fn set_cookie_includes_secure_when_enabled() {
let cookie = build_pxhd_set_cookie_value("abc123", Some("example.com"), true);
assert_eq!(
cookie,
"_pxhd=abc123; Max-Age=31536000; SameSite=Lax; Path=/; Domain=example.com; Secure"
);
}
#[test]
fn set_cookie_secure_without_domain() {
let cookie = build_pxhd_set_cookie_value("abc123", None, true);
assert_eq!(
cookie,
"_pxhd=abc123; Max-Age=31536000; SameSite=Lax; Path=/; Secure"
);
}
#[test]
fn resolve_pxhd_cookie_domain_prefers_config_over_risk_api() {
let ctx = PXContext {
pxhd_domain: Some("risk.example.com".to_owned()),
..Default::default()
};
let conf = PXConfig {
pxhd_domain: "config.example.com".to_owned(),
..Default::default()
};
assert_eq!(
resolve_pxhd_cookie_domain(&conf, &ctx),
Some("config.example.com")
);
}
#[test]
fn resolve_pxhd_cookie_domain_uses_risk_api_when_config_empty() {
let ctx = PXContext {
pxhd_domain: Some("risk.example.com".to_owned()),
..Default::default()
};
let conf = PXConfig::default();
assert_eq!(
resolve_pxhd_cookie_domain(&conf, &ctx),
Some("risk.example.com")
);
}
#[test]
fn config_domain_wins_over_risk_api_domain_in_set_cookie() {
let ctx = PXContext {
pxhd_domain: Some("risk.example.com".to_owned()),
..Default::default()
};
let conf = PXConfig {
pxhd_domain: "config.example.com".to_owned(),
..Default::default()
};
let cookie =
build_pxhd_set_cookie_value("abc123", resolve_pxhd_cookie_domain(&conf, &ctx), false);
assert_eq!(
cookie,
"_pxhd=abc123; Max-Age=31536000; SameSite=Lax; Path=/; Domain=config.example.com"
);
}