commit 359744643321020efef68d068bc74348a8baed9c
parent 70335dcc0cabd9e3a94fc16c42ae64958a3f0ea8
Author: triesap <tyson@radroots.org>
Date: Mon, 27 Apr 2026 05:09:57 +0000
cli: prove local signer status modes
- assert local signer status without an account
- prove account create in isolated encrypted file roots
- assert secret backed local signer readiness
- keep signer runtime mode coverage process level
Diffstat:
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/tests/signer_runtime_modes.rs b/tests/signer_runtime_modes.rs
@@ -3,7 +3,7 @@ mod support;
use support::RadrootsCliSandbox;
#[test]
-fn harness_runs_local_signer_status_with_json_envelope() {
+fn local_signer_status_reports_unconfigured_without_account() {
let sandbox = RadrootsCliSandbox::new();
let value = sandbox.json_success(&["--format", "json", "signer", "status", "get"]);
@@ -12,6 +12,41 @@ fn harness_runs_local_signer_status_with_json_envelope() {
assert_eq!(value["operation_id"], "signer.status.get");
assert_eq!(value["kind"], "signer.status.get");
assert_eq!(value["result"]["mode"], "local");
+ assert_eq!(value["result"]["state"], "unconfigured");
+ assert_eq!(
+ value["result"]["signer_account_id"],
+ serde_json::Value::Null
+ );
+ assert_eq!(value["result"]["binding"]["state"], "disabled");
+ assert_eq!(value["result"]["local"], serde_json::Value::Null);
+ assert_eq!(value["errors"].as_array().expect("errors").len(), 0);
+}
+
+#[test]
+fn local_signer_status_reports_ready_after_account_create() {
+ let sandbox = RadrootsCliSandbox::new();
+
+ let created = sandbox.json_success(&["--format", "json", "account", "create"]);
+ assert_eq!(created["operation_id"], "account.create");
+ assert_eq!(created["result"]["state"], "created");
+ assert_eq!(created["result"]["account"]["signer"], "local");
+ assert_eq!(created["result"]["account"]["is_default"], true);
+ let account_id = created["result"]["account"]["id"]
+ .as_str()
+ .expect("created account id");
+
+ let status = sandbox.json_success(&["--format", "json", "signer", "status", "get"]);
+
+ assert_eq!(status["operation_id"], "signer.status.get");
+ assert_eq!(status["result"]["mode"], "local");
+ assert_eq!(status["result"]["state"], "ready");
+ assert_eq!(status["result"]["signer_account_id"], account_id);
+ assert_eq!(status["result"]["local"]["account_id"], account_id);
+ assert_eq!(status["result"]["local"]["availability"], "secret_backed");
+ assert_eq!(status["result"]["local"]["secret_backed"], true);
+ assert_eq!(status["result"]["local"]["backend"], "encrypted_file");
+ assert_eq!(status["result"]["local"]["used_fallback"], false);
+ assert_eq!(status["result"]["binding"]["state"], "disabled");
}
#[cfg(unix)]