v0.3.7-pre.010
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-backfill-desk/tests/desktop_contract.rs
|
||||
// version: 11
|
||||
// version: 12
|
||||
|
||||
//! Structural desktop contract checks for the Backfill Desk scaffold.
|
||||
|
||||
@@ -346,3 +346,31 @@ fn pre_009_latest_value_monitoring_uses_snapshot_source_event_bridge_and_resynch
|
||||
assert!(frontend.contains("syncBackfillStatus"));
|
||||
assert!(!frontend.contains("parseBackfillLog"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_010_cancel_is_targeted_idempotent_and_shutdown_requests_cooperative_cancellation_before_exit() {
|
||||
let root = app_root();
|
||||
let state = read_text(root.join("src/app_state.rs").as_path());
|
||||
let run = read_text(root.join("src/backfill_run.rs").as_path());
|
||||
let tauri = read_text(root.join("src/tauri.rs").as_path());
|
||||
let html = read_text(root.join("frontend/main.html").as_path());
|
||||
let frontend = read_text(root.join("frontend/ts/main.ts").as_path());
|
||||
assert!(run.contains("current.job_id.as_str() != job_id"));
|
||||
assert!(run.contains("current.handle.cancel()"));
|
||||
assert!(run.contains("ERROR_CODE_BACKFILL_RUN_MISMATCH"));
|
||||
assert!(state.contains("cancel_backfill"));
|
||||
assert!(state.contains("cancel_active_backfill_for_shutdown"));
|
||||
assert!(tauri.contains("backfill_cancel"));
|
||||
assert!(tauri.contains("cancel_active_backfill_for_shutdown"));
|
||||
let shutdown_cancel = tauri.find("cancel_active_backfill_for_shutdown");
|
||||
let shutdown_exit = tauri.find("app_handle.exit(0)");
|
||||
assert!(shutdown_cancel.is_some());
|
||||
assert!(shutdown_exit.is_some());
|
||||
if let (std::option::Option::Some(cancel), std::option::Option::Some(exit)) = (shutdown_cancel, shutdown_exit) {
|
||||
assert!(cancel < exit);
|
||||
}
|
||||
assert!(html.contains("cancelBackfillRun"));
|
||||
assert!(html.contains("Annuler"));
|
||||
assert!(frontend.contains("backfill_cancel"));
|
||||
assert!(frontend.contains("{ jobId: status.jobId }"));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-backfill-desk/tests/desktop_security.rs
|
||||
// version: 12
|
||||
// version: 13
|
||||
|
||||
//! Security and dependency-boundary checks for the Backfill Desk scaffold.
|
||||
|
||||
@@ -104,7 +104,7 @@ fn pre_002_tauri_commands_remain_centralized() {
|
||||
assert_eq!(count, 0, "{} declares a Tauri command outside tauri.rs", path.display());
|
||||
}
|
||||
}
|
||||
assert_eq!(command_count, 7);
|
||||
assert_eq!(command_count, 8);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -262,3 +262,36 @@ fn pre_009_monitoring_projection_exposes_counters_and_codes_without_checkpoint_o
|
||||
assert!(!dto.contains(forbidden), "monitoring DTO leaks forbidden field marker {forbidden}");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_010_cancel_surface_targets_backend_job_identity_without_business_payloads() {
|
||||
let root = app_root();
|
||||
let dto_source = read_text(root.join("src/dto_backfill.rs").as_path());
|
||||
let dto = struct_source(dto_source.as_str(), "BackfillCancelResponseDto");
|
||||
for required in ["accepted", "job_id", "state"] {
|
||||
assert!(dto.contains(required), "Cancel acknowledgement missing safe field {required}");
|
||||
}
|
||||
for forbidden in [
|
||||
"pub(crate) address:",
|
||||
"pub(crate) signature:",
|
||||
"pub(crate) endpoint:",
|
||||
"pub(crate) provider:",
|
||||
"pub(crate) credential:",
|
||||
"pub(crate) token:",
|
||||
"pub(crate) checkpoint:",
|
||||
"pub(crate) payload:",
|
||||
] {
|
||||
assert!(!dto.contains(forbidden), "Cancel acknowledgement leaks forbidden field marker {forbidden}");
|
||||
}
|
||||
let frontend = read_text(root.join("frontend/ts/main.ts").as_path());
|
||||
let cancel_marker = frontend.find("Backfill Desk cooperative cancellation requested");
|
||||
assert!(cancel_marker.is_some());
|
||||
let cancel_source = match cancel_marker {
|
||||
std::option::Option::Some(index) => &frontend[index..std::cmp::min(index + 700, frontend.len())],
|
||||
std::option::Option::None => "",
|
||||
};
|
||||
assert!(cancel_source.contains("jobId: status.jobId"));
|
||||
for forbidden in ["address:", "anchorSignature:", "explicitSignatures:", "minContextSlot:"] {
|
||||
assert!(!cancel_source.contains(forbidden), "Cancel tracing includes forbidden campaign payload marker {forbidden}");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user