target_cli.rs (1542B)
1 use assert_cmd::Command; 2 use serde_json::Value; 3 4 fn radroots() -> Command { 5 Command::cargo_bin("radroots").expect("radroots binary") 6 } 7 8 #[test] 9 fn help_exposes_the_resource_command_tree() { 10 let output = radroots().arg("--help").output().expect("help output"); 11 assert!(output.status.success()); 12 let stdout = String::from_utf8(output.stdout).expect("UTF-8 help"); 13 assert!(stdout.contains("health")); 14 assert!(stdout.contains("profile")); 15 } 16 17 #[test] 18 fn health_uses_the_registry_backed_facade() { 19 let output = radroots() 20 .args(["health", "inspect", "--format", "json"]) 21 .output() 22 .expect("health output"); 23 assert!(output.status.success()); 24 let value: Value = serde_json::from_slice(&output.stdout).expect("JSON envelope"); 25 assert_eq!(value["schema"], "radroots.cli.output.v1"); 26 assert_eq!(value["operation_id"], "health.inspect"); 27 assert_eq!(value["status"], "ok"); 28 assert_eq!(value["data"]["ready"], true); 29 assert_eq!(value["data"]["profile"]["artifact_graph"], "registry"); 30 } 31 32 #[test] 33 fn retired_runtime_operations_fail_closed() { 34 let output = radroots() 35 .args(["account", "list", "--format", "json"]) 36 .output() 37 .expect("account output"); 38 assert_eq!(output.status.code(), Some(2)); 39 let value: Value = serde_json::from_slice(&output.stdout).expect("JSON envelope"); 40 assert_eq!(value["operation_id"], "account.list"); 41 assert_eq!(value["status"], "error"); 42 assert_eq!(value["error"]["code"], "unsupported_operation"); 43 }