refactor: modularize codebase and add 404 unit tests (#13)
CI / Format (push) Successful in 4s
CI / Clippy (push) Successful in 4m19s
CI / Security Audit (push) Successful in 1m44s
CI / Tests (push) Successful in 5m15s
CI / Detect Changes (push) Successful in 5s
CI / Deploy Agent (push) Successful in 2s
CI / Deploy Dashboard (push) Successful in 2s
CI / Deploy Docs (push) Has been skipped
CI / Deploy MCP (push) Successful in 2s

This commit was merged in pull request #13.
This commit is contained in:
2026-03-13 08:03:45 +00:00
parent acc5b86aa4
commit 3bb690e5bb
89 changed files with 11884 additions and 6046 deletions
+84
View File
@@ -12,6 +12,90 @@ fn cap_limit(limit: Option<i64>) -> i64 {
limit.unwrap_or(DEFAULT_LIMIT).clamp(1, MAX_LIMIT)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn cap_limit_default() {
assert_eq!(cap_limit(None), DEFAULT_LIMIT);
}
#[test]
fn cap_limit_clamps_high() {
assert_eq!(cap_limit(Some(1000)), MAX_LIMIT);
}
#[test]
fn cap_limit_clamps_low() {
assert_eq!(cap_limit(Some(-100)), 1);
assert_eq!(cap_limit(Some(0)), 1);
}
#[test]
fn cap_limit_normal() {
assert_eq!(cap_limit(Some(42)), 42);
}
#[test]
fn list_pentest_sessions_params_deserialize() {
let json = serde_json::json!({
"target_id": "tgt",
"status": "running",
"strategy": "aggressive",
"limit": 5
});
let params: ListPentestSessionsParams = serde_json::from_value(json).unwrap();
assert_eq!(params.target_id.as_deref(), Some("tgt"));
assert_eq!(params.status.as_deref(), Some("running"));
assert_eq!(params.strategy.as_deref(), Some("aggressive"));
assert_eq!(params.limit, Some(5));
}
#[test]
fn list_pentest_sessions_params_all_optional() {
let params: ListPentestSessionsParams =
serde_json::from_value(serde_json::json!({})).unwrap();
assert!(params.target_id.is_none());
assert!(params.status.is_none());
assert!(params.strategy.is_none());
assert!(params.limit.is_none());
}
#[test]
fn get_pentest_session_params_deserialize() {
let params: GetPentestSessionParams =
serde_json::from_value(serde_json::json!({ "id": "abc123" })).unwrap();
assert_eq!(params.id, "abc123");
}
#[test]
fn get_attack_chain_params_deserialize() {
let params: GetAttackChainParams =
serde_json::from_value(serde_json::json!({ "session_id": "s1", "limit": 20 })).unwrap();
assert_eq!(params.session_id, "s1");
assert_eq!(params.limit, Some(20));
}
#[test]
fn get_pentest_messages_params_deserialize() {
let params: GetPentestMessagesParams =
serde_json::from_value(serde_json::json!({ "session_id": "s2" })).unwrap();
assert_eq!(params.session_id, "s2");
assert!(params.limit.is_none());
}
#[test]
fn pentest_stats_params_deserialize() {
let params: PentestStatsParams =
serde_json::from_value(serde_json::json!({ "target_id": "t1" })).unwrap();
assert_eq!(params.target_id.as_deref(), Some("t1"));
let params2: PentestStatsParams = serde_json::from_value(serde_json::json!({})).unwrap();
assert!(params2.target_id.is_none());
}
}
// ── List Pentest Sessions ──────────────────────────────────────
#[derive(Debug, Deserialize, JsonSchema)]