v0.2.6-pre.011

This commit is contained in:
2026-08-21 15:22:42 +02:00
parent 6dcd278459
commit 8ba554306a
14 changed files with 572 additions and 30 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-app-wallet-desk/tests/desktop_security.rs
// version: 11
// version: 12
//! Static desktop security contracts for the Wallet Desk pre.002 shell.
@@ -217,3 +217,48 @@ fn rotation_passwords_are_request_only_confirmed_frontend_side_and_never_logged(
assert!(!main.contains("frontendTrace(\"main\", request.password"));
assert!(!main.contains("KSP_SECRET_WALLET_PASS_"));
}
#[test]
fn strong_view_administration_is_owner_only_uses_bootstrap_modals_and_returns_no_secret() {
let root = app_root();
let security = read_text(root.join("src/wallet_security.rs").as_path());
let state = read_text(root.join("src/app_state.rs").as_path());
let tauri = read_text(root.join("src/tauri.rs").as_path());
let main = read_text(root.join("frontend/ts/main.ts").as_path());
let status = security.split("pub(crate) struct WalletViewSecurityStatusDto").nth(1);
assert!(status.is_some());
let fields = status
.unwrap_or_default()
.split("}\n")
.next()
.unwrap_or_default()
.lines()
.filter(|line| return line.trim_start().starts_with("pub(crate) "))
.collect::<std::vec::Vec<_>>()
.join("\n");
assert!(!fields.contains("password"));
assert!(!fields.contains("pubkey"));
assert!(!fields.contains("alias"));
assert!(!fields.contains("note"));
assert!(state.contains("begin_owner_operation(\"view_disable\")"));
assert!(state.contains("begin_owner_operation(\"view_recreate\")"));
assert!(!state.contains("begin_view_operation(\"view_disable\")"));
assert!(!state.contains("begin_view_operation(\"view_recreate\")"));
let disable = tauri.find("async fn disable_wallet_view");
assert!(disable.is_some());
let disable = &tauri[disable.unwrap_or_default()..];
let disable = disable.split("#[tauri::command]").next().unwrap_or_default();
assert!(!disable.contains("request:"));
let recreate = tauri.find("async fn recreate_wallet_view");
assert!(recreate.is_some());
let recreate = &tauri[recreate.unwrap_or_default()..];
let recreate = recreate.split("#[tauri::command]").next().unwrap_or_default();
assert!(recreate.contains("WalletPasswordRotationRequestDto"));
assert!(main.contains("new Modal(disableModalElement)"));
assert!(main.contains("new Modal(recreateModalElement)"));
assert!(main.contains("clearStrongViewSensitiveInputs"));
assert!(main.contains("hidden.bs.modal"));
assert!(!main.contains("window.confirm"));
assert!(!main.contains("frontendDebug(\"main\", request.password"));
assert!(!main.contains("frontendTrace(\"main\", request.password"));
}