use super::*;
#[test]
fn untrusted_literal_with_cmd_token_passes_through_verbatim_no_execution() {
let value = SecretValue::literal("${cmd:touch /tmp/newt-1301-should-not-exist}");
let got = resolve_secret_under_trust(&value, McpTrust::Untrusted).unwrap();
assert_eq!(
got.expose(),
"${cmd:touch /tmp/newt-1301-should-not-exist}",
"an untrusted ${{cmd:…}} literal must reach the child verbatim, not run"
);
let bare = SecretValue::literal("Bearer ${SOME_VAR}");
assert_eq!(
resolve_secret_under_trust(&bare, McpTrust::Untrusted)
.unwrap()
.expose(),
"Bearer ${SOME_VAR}"
);
}
#[test]
fn untrusted_structured_ref_is_rejected() {
for r in [
SecretRef {
cmd: Some("touch /tmp/pwned".into()),
..Default::default()
},
SecretRef {
file: Some("/etc/passwd".into()),
..Default::default()
},
SecretRef {
env: Some("HOME".into()),
..Default::default()
},
] {
let err = resolve_secret_under_trust(&SecretValue::Ref(r), McpTrust::Untrusted)
.expect_err("an untrusted {env|file|cmd} ref must be rejected");
assert!(
format!("{err}").contains("untrusted"),
"error should name the trust violation: {err}"
);
}
}
#[test]
fn trusted_literal_without_token_resolves_verbatim() {
assert_eq!(
resolve_secret_under_trust(&SecretValue::literal("plain"), McpTrust::Trusted)
.unwrap()
.expose(),
"plain"
);
}