swarm repositories / source
aboutsummaryrefslogtreecommitdiff
path: root/crates/phone-opus/tests
diff options
context:
space:
mode:
authormain <main@swarm.moe>2026-03-23 18:11:44 -0400
committermain <main@swarm.moe>2026-03-23 18:11:44 -0400
commit4e80028e44ede42b9e0f7bd4beaee8a5cf9aae7c (patch)
treeedcc99524a961398060fd1a1002d271107c15d72 /crates/phone-opus/tests
parenta4a4798b4deed085021149e45e20c5e014ee4de5 (diff)
downloadphone_opus-4e80028e44ede42b9e0f7bd4beaee8a5cf9aae7c.zip
Persist consult outputs in /tmp
Diffstat (limited to 'crates/phone-opus/tests')
-rw-r--r--crates/phone-opus/tests/mcp_hardening.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/crates/phone-opus/tests/mcp_hardening.rs b/crates/phone-opus/tests/mcp_hardening.rs
index 23a1325..f7ce125 100644
--- a/crates/phone-opus/tests/mcp_hardening.rs
+++ b/crates/phone-opus/tests/mcp_hardening.rs
@@ -12,6 +12,7 @@ use libmcp_testkit::read_json_lines;
use serde as _;
use serde_json::{Value, json};
use thiserror as _;
+use time as _;
use users as _;
use uuid as _;
@@ -409,6 +410,26 @@ fn consult_can_resume_a_prior_session_with_read_only_toolset_and_requested_worki
tool_content(&consult)["session_id"].as_str(),
Some(resumed_session)
);
+ let persisted_output_path = must_some(
+ tool_content(&consult)["persisted_output_path"]
+ .as_str()
+ .map(str::to_owned),
+ "persisted output path",
+ )?;
+ assert!(persisted_output_path.starts_with("/tmp/phone_opus-consults/"));
+ let persisted_output = must(
+ fs::read_to_string(&persisted_output_path),
+ "read persisted consult output",
+ )?;
+ let persisted_output: Value = must(
+ serde_json::from_str(&persisted_output),
+ "parse persisted consult output",
+ )?;
+ assert_eq!(persisted_output["response"].as_str(), Some("oracle"));
+ assert_eq!(
+ persisted_output["requested_session_id"].as_str(),
+ Some(resumed_session)
+ );
let pwd = must(fs::read_to_string(&pwd_file), "read fake pwd file")?;
assert_eq!(pwd.trim(), sandbox.display().to_string());
@@ -616,6 +637,25 @@ fn consult_can_run_in_background_and_be_polled() -> TestResult {
tool_content(&job)["result"]["response"].as_str(),
Some("background oracle")
);
+ let persisted_output_path = must_some(
+ tool_content(&job)["result"]["persisted_output_path"]
+ .as_str()
+ .map(str::to_owned),
+ "background persisted output path",
+ )?;
+ assert!(persisted_output_path.starts_with("/tmp/phone_opus-consults/"));
+ let persisted_output = must(
+ fs::read_to_string(&persisted_output_path),
+ "read background persisted consult output",
+ )?;
+ let persisted_output: Value = must(
+ serde_json::from_str(&persisted_output),
+ "parse background persisted consult output",
+ )?;
+ assert_eq!(
+ persisted_output["response"].as_str(),
+ Some("background oracle")
+ );
let jobs = harness.call_tool(5, "consult_jobs", json!({ "render": "json" }))?;
assert_tool_ok(&jobs);