#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(dead_code)]
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
#[cfg(test)]
mod tests {
use super::*;
use std::ffi::CString;
#[test]
fn test_waf_lifecycle() {
unsafe {
let config = coraza_new_waf_config();
assert_ne!(config, 0);
let rules = CString::new("SecRuleEngine DetectionOnly").unwrap();
let ret = coraza_rules_add(config, rules.as_ptr());
assert_eq!(ret, 0);
let mut err: *mut i8 = std::ptr::null_mut();
let waf = coraza_new_waf(config, &mut err);
assert_ne!(waf, 0);
assert!(err.is_null());
let tx = coraza_new_transaction(waf);
assert_ne!(tx, 0);
let ret = coraza_free_transaction(tx);
assert_eq!(ret, 0);
let ret = coraza_free_waf(waf);
assert_eq!(ret, 0);
}
}
#[test]
fn test_process_connection() {
unsafe {
let config = coraza_new_waf_config();
let rules = CString::new("SecRuleEngine DetectionOnly").unwrap();
coraza_rules_add(config, rules.as_ptr());
let mut err: *mut i8 = std::ptr::null_mut();
let waf = coraza_new_waf(config, &mut err);
let tx = coraza_new_transaction(waf);
let src = CString::new("127.0.0.1").unwrap();
let host = CString::new("localhost").unwrap();
let ret = coraza_process_connection(tx, src.as_ptr(), 8080, host.as_ptr(), 80);
assert_eq!(ret, 0);
coraza_free_transaction(tx);
coraza_free_waf(waf);
}
}
#[test]
fn test_process_uri() {
unsafe {
let config = coraza_new_waf_config();
let rules = CString::new("SecRuleEngine DetectionOnly").unwrap();
coraza_rules_add(config, rules.as_ptr());
let mut err: *mut i8 = std::ptr::null_mut();
let waf = coraza_new_waf(config, &mut err);
let tx = coraza_new_transaction(waf);
let uri = CString::new("/test").unwrap();
let method = CString::new("GET").unwrap();
let proto = CString::new("HTTP/1.1").unwrap();
let ret = coraza_process_uri(tx, uri.as_ptr(), method.as_ptr(), proto.as_ptr());
assert_eq!(ret, 0);
coraza_free_transaction(tx);
coraza_free_waf(waf);
}
}
#[test]
fn test_intervention_nil_when_no_match() {
unsafe {
let config = coraza_new_waf_config();
let rules = CString::new("SecRuleEngine DetectionOnly").unwrap();
coraza_rules_add(config, rules.as_ptr());
let mut err: *mut i8 = std::ptr::null_mut();
let waf = coraza_new_waf(config, &mut err);
let tx = coraza_new_transaction(waf);
let it = coraza_intervention(tx);
assert!(it.is_null());
coraza_free_transaction(tx);
coraza_free_waf(waf);
}
}
}