cli

Command-line interface for Radroots
git clone https://radroots.dev/git/cli.git
Log | Files | Refs | README | LICENSE

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:
Mtests/signer_runtime_modes.rs | 37++++++++++++++++++++++++++++++++++++-
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)]