Files
codex/codex-rs/config/src/browser_computer_use_requirements_tests.rs
T
nmccormack-oai 0f64d70808 Expose managed WebMCP policy through the app server (#42823)
## What changed

- Parse the optional `[browser_use].allow_webmcp` boolean from managed requirements and preserve requirement-layer precedence.
- Return the policy as `browserUse.allowWebmcp` from `configRequirements/read`, including explicit `true`, explicit `false`, and `null` when omitted.
- Update the generated JSON and TypeScript protocol schemas.

## Testing

- Cover parsing, invalid values, layered overrides, and app-server response serialization.

GitOrigin-RevId: a3fd7d1a6f838bb3ab0ac2a644409101a2338ca6
2026-09-04 18:30:26 +00:00

46 lines
1.5 KiB
Rust

use crate::BrowserUseRequirementsToml;
use crate::ConfigRequirementsToml;
use pretty_assertions::assert_eq;
#[test]
fn webmcp_requirements_preserve_explicit_values_and_omission() {
for (contents, expected_browser_use, expected_empty) in [
("", None, true),
("[browser_use]", Some(None), true),
(
"[browser_use]\nallow_webmcp = true",
Some(Some(true)),
false,
),
(
"[browser_use]\nallow_webmcp = false",
Some(Some(false)),
false,
),
] {
let requirements: ConfigRequirementsToml =
toml::from_str(contents).expect("parse managed WebMCP policy");
assert_eq!(
requirements,
ConfigRequirementsToml {
browser_use: expected_browser_use.map(|allow_webmcp| BrowserUseRequirementsToml {
allow_webmcp,
..Default::default()
}),
..Default::default()
},
);
assert_eq!(requirements.is_empty(), expected_empty, "{contents}");
}
}
#[test]
fn webmcp_requirements_reject_non_booleans() {
for value in ["\"true\"", "1", "[]"] {
let contents = format!("[browser_use]\nallow_webmcp = {value}");
let error = toml::from_str::<ConfigRequirementsToml>(&contents)
.expect_err("WebMCP policy must be a boolean");
assert!(error.to_string().contains("allow_webmcp"));
}
}