Files
khadhroony-solana-project/crates/ksp-app-store-desk/tests/desktop_security.rs
2026-09-03 11:39:09 +02:00

68 lines
2.8 KiB
Rust

// file: crates/ksp-app-store-desk/tests/desktop_security.rs
// version: 3
//! Security boundary tests for the Store Desk scaffold.
fn parse_json(source: &str) -> serde_json::Result<serde_json::Value> {
return serde_json::from_str::<serde_json::Value>(source);
}
#[test]
fn pre_002_capabilities_are_core_and_tracing_only() {
let parsed = parse_json(include_str!("../capabilities/default.json"));
assert!(parsed.is_ok(), "committed capability JSON must be valid");
let capability = match parsed {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let permissions = capability["permissions"].as_array();
assert!(permissions.is_some(), "capability permissions must be an array");
let permissions = match permissions {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
assert_eq!(permissions.len(), 2);
assert_eq!(permissions[0], "core:default");
assert_eq!(permissions[1], "tracing:default");
}
#[test]
fn pre_002_frontend_avoids_network_browser_storage_and_blocking_dialogs() {
let frontend = [
include_str!("../frontend/ts/frontend_log.ts"),
include_str!("../frontend/ts/invoke.ts"),
include_str!("../frontend/ts/main.ts"),
include_str!("../frontend/ts/splash.ts"),
]
.join("\n");
for forbidden in ["fetch(", "XMLHttpRequest", "localStorage", "sessionStorage", "window.alert", "window.confirm", "window.prompt"] {
assert!(!frontend.contains(forbidden), "forbidden frontend primitive present: {forbidden}");
}
}
#[test]
fn pre_003_frontend_tracing_covers_navigation_buttons_tabs_controls_refresh_and_ipc() {
let main = include_str!("../frontend/ts/main.ts");
let invoke = include_str!("../frontend/ts/invoke.ts");
assert!(main.contains("navigation button clicked"));
assert!(main.contains("diagnostics refresh button clicked"));
assert!(main.contains("generic button clicked"));
assert!(main.contains("tab control clicked"));
assert!(main.contains("tab activated"));
assert!(main.contains("interactive control changed"));
assert!(main.contains("view activated"));
assert!(invoke.contains("IPC command requested"));
assert!(invoke.contains("IPC command completed"));
assert!(invoke.contains("IPC command failed"));
}
#[test]
fn pre_003_store_desk_development_logging_explicitly_selects_supertrace() {
let constants = include_str!("../src/constants.rs");
let bootstrap = include_str!("../src/bootstrap.rs");
assert!(constants.contains("DEVELOPMENT_LOGGING_PROFILE: &str = \"supertrace\""));
assert!(bootstrap.contains("std::option::Option::Some(crate::DEVELOPMENT_LOGGING_PROFILE)"));
assert!(bootstrap.contains("LogFilterLevel::Trace"));
return;
}