use crate::pxcontext::{BlockReason, PXModuleMode};
use crate::pxenforce::*;
fn enforcer_with_mode(mode: PXModuleMode) -> PXEnforcer {
let mut enforcer = PXEnforcer::default();
enforcer.conf.module_mode = mode;
enforcer.ctx.risk_mode = mode;
enforcer
}
#[test]
fn active_blocking_real_block_keeps_simulated_block_false() {
let mut enforcer = enforcer_with_mode(PXModuleMode::Blocking);
enforcer.ctx.block_reason = Some(BlockReason::ServerScore);
enforcer.ctx.is_monitored_request = false;
enforcer.apply_simulated_block_flag();
assert!(!enforcer.ctx.is_simulated_block);
}
#[test]
fn active_blocking_cookie_score_block_keeps_simulated_block_false() {
let mut enforcer = enforcer_with_mode(PXModuleMode::Blocking);
enforcer.ctx.block_reason = Some(BlockReason::CookieScore);
enforcer.ctx.is_monitored_request = false;
enforcer.apply_simulated_block_flag();
assert!(!enforcer.ctx.is_simulated_block);
}
#[test]
fn monitor_mode_cookie_score_block_marks_simulated_block_true() {
let mut enforcer = enforcer_with_mode(PXModuleMode::Monitor);
enforcer.ctx.block_reason = Some(BlockReason::CookieScore);
enforcer.ctx.is_monitored_request = false;
enforcer.apply_simulated_block_flag();
assert!(enforcer.ctx.is_simulated_block);
}
#[test]
fn monitor_mode_server_score_block_marks_simulated_block_true() {
let mut enforcer = enforcer_with_mode(PXModuleMode::Monitor);
enforcer.ctx.block_reason = Some(BlockReason::ServerScore);
enforcer.ctx.is_monitored_request = false;
enforcer.apply_simulated_block_flag();
assert!(enforcer.ctx.is_simulated_block);
}
#[test]
fn monitor_mode_enforced_request_keeps_simulated_block_false() {
let mut enforcer = enforcer_with_mode(PXModuleMode::Monitor);
enforcer.ctx.block_reason = Some(BlockReason::ServerScore);
enforcer.ctx.is_enforced_request = true;
enforcer.apply_simulated_block_flag();
assert!(!enforcer.ctx.is_simulated_block);
}
#[test]
fn set_is_enforced_request_fn_stores_callback() {
let mut enforcer = enforcer_with_mode(PXModuleMode::Monitor);
assert!(enforcer.conf.is_enforced_request_fn.is_none());
enforcer.set_is_enforced_request_fn(|_req, _conf| true);
assert!(enforcer.conf.is_enforced_request_fn.is_some());
}
#[test]
fn set_is_monitored_request_fn_stores_callback() {
let mut enforcer = enforcer_with_mode(PXModuleMode::Blocking);
assert!(enforcer.conf.is_monitored_request_fn.is_none());
enforcer.set_is_monitored_request_fn(|_req, _conf| true);
assert!(enforcer.conf.is_monitored_request_fn.is_some());
}
#[test]
fn active_blocking_monitored_request_marks_simulated_block_true() {
let mut enforcer = enforcer_with_mode(PXModuleMode::Blocking);
enforcer.ctx.block_reason = Some(BlockReason::ServerScore);
enforcer.ctx.is_monitored_request = true;
enforcer.apply_simulated_block_flag();
assert!(enforcer.ctx.is_simulated_block);
}