mod browser_detection {
use assert_cmd::Command;
use predicates::prelude::*;
#[allow(deprecated)] fn csm_cmd() -> Command {
Command::cargo_bin("chasm").unwrap()
}
#[test]
fn test_harvest_scan_with_web_flag() {
csm_cmd()
.args(["harvest", "scan", "--web", "--timeout", "1"])
.assert()
.success()
.stdout(predicate::str::contains("Browser Authentication"));
}
#[test]
fn test_harvest_scan_without_web_flag() {
csm_cmd()
.args(["harvest", "scan"])
.assert()
.success()
.stdout(predicate::str::contains("LLM Providers"))
.stdout(predicate::str::contains("VS Code Workspaces"));
}
#[test]
fn test_harvest_scan_timeout_option() {
csm_cmd()
.args(["harvest", "scan", "--web", "--timeout", "2"])
.assert()
.success();
}
#[test]
fn test_harvest_scan_verbose_option() {
csm_cmd()
.args(["harvest", "scan", "--verbose"])
.assert()
.success();
}
#[test]
fn test_harvest_scan_sessions_option() {
csm_cmd()
.args(["harvest", "scan", "--sessions"])
.assert()
.success();
}
}
mod web_provider_scanning {
use assert_cmd::Command;
use predicates::prelude::*;
#[allow(deprecated)] fn csm_cmd() -> Command {
Command::cargo_bin("chasm").unwrap()
}
#[test]
fn test_web_scan_includes_summary() {
csm_cmd()
.args(["harvest", "scan", "--web", "--timeout", "1"])
.assert()
.success()
.stdout(predicate::str::contains("Summary"))
.stdout(predicate::str::contains("local providers"))
.stdout(predicate::str::contains("web providers"));
}
#[test]
fn test_web_scan_shows_endpoint_status() {
csm_cmd()
.args(["harvest", "scan", "--web", "--timeout", "2"])
.assert()
.success()
.stdout(predicate::str::contains("Web LLM Provider Endpoints"));
}
}