tests: use permission profiles in config loader checks

This commit is contained in:
Michael Bolin
2026-04-30 03:10:40 -07:00
parent 0fc2a7b068
commit 87336eefd9

View File

@@ -27,9 +27,11 @@ use codex_config::version_for_toml;
use codex_exec_server::LOCAL_FS;
use codex_protocol::config_types::TrustLevel;
use codex_protocol::config_types::WebSearchMode;
use codex_protocol::models::ManagedFileSystemPermissions;
use codex_protocol::models::PermissionProfile;
use codex_protocol::permissions::FileSystemAccessMode;
use codex_protocol::permissions::FileSystemPath;
use codex_protocol::protocol::AskForApproval;
use codex_protocol::protocol::SandboxPolicy;
use codex_utils_absolute_path::AbsolutePathBuf;
use pretty_assertions::assert_eq;
use std::collections::BTreeMap;
@@ -526,17 +528,25 @@ writable_roots = ["~/code"]
.await?;
let expected_root = AbsolutePathBuf::from_absolute_path(home.join("code"))?;
match &config.legacy_sandbox_policy() {
SandboxPolicy::WorkspaceWrite { writable_roots, .. } => {
assert_eq!(
writable_roots
.iter()
.filter(|root| **root == expected_root)
.count(),
1,
);
}
other => panic!("expected workspace-write policy, got {other:?}"),
match config.permissions.permission_profile() {
PermissionProfile::Managed {
file_system:
ManagedFileSystemPermissions::Restricted {
entries,
glob_scan_max_depth: _,
},
network: _,
} => assert_eq!(
entries
.iter()
.filter(|entry| {
entry.access == FileSystemAccessMode::Write
&& matches!(&entry.path, FileSystemPath::Path { path } if path == &expected_root)
})
.count(),
1,
),
other => panic!("expected workspace-write profile, got {other:?}"),
}
Ok(())
@@ -591,14 +601,7 @@ allowed_sandbox_modes = ["read-only"]
state
.requirements()
.permission_profile
.can_set(&PermissionProfile::from_legacy_sandbox_policy(
&SandboxPolicy::WorkspaceWrite {
writable_roots: Vec::new(),
network_access: false,
exclude_tmpdir_env_var: false,
exclude_slash_tmp: false,
},
))
.can_set(&PermissionProfile::workspace_write())
.is_err()
);
@@ -904,11 +907,9 @@ allowed_sandbox_modes = ["read-only"]
let config_requirements: ConfigRequirements = config_requirements_toml.try_into()?;
assert_eq!(
config_requirements.permission_profile.can_set(
&PermissionProfile::from_legacy_sandbox_policy(
&SandboxPolicy::new_workspace_write_policy()
)
),
config_requirements
.permission_profile
.can_set(&PermissionProfile::workspace_write()),
Err(ConstraintError::InvalidValue {
field_name: "sandbox_mode",
candidate: "WorkspaceWrite".into(),
@@ -1233,9 +1234,7 @@ async fn load_config_layers_applies_matching_remote_sandbox_config() -> anyhow::
layers
.requirements()
.permission_profile
.can_set(&PermissionProfile::from_legacy_sandbox_policy(
&SandboxPolicy::new_workspace_write_policy()
))
.can_set(&PermissionProfile::workspace_write())
.is_ok()
);