perimeterx-fastly-enforcer 2.2.2

PerimeterX Fastly Compute@Edge Rust Enforcer
Documentation
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"
    );
}