fix: fence resolved Workdir lease aliases

This commit is contained in:
2026-09-14 20:05:27 +09:00
parent 3eca380bd8
commit e448073b98
7 changed files with 292 additions and 86 deletions
+31
View File
@@ -1016,6 +1016,10 @@ async fn run_workdir_session_operation(
session.authorize_scope_path(request).await?;
WorkdirSessionOperationResult::AuthorizeScope
}
WorkdirSessionOperation::ScopeRulesOverlap(request) => {
let overlaps = session.scope_rules_overlap(request).await?;
WorkdirSessionOperationResult::ScopeRulesOverlap { overlaps }
}
WorkdirSessionOperation::Stat(request) => {
WorkdirSessionOperationResult::Stat(session.stat(request).await?)
}
@@ -3014,6 +3018,33 @@ mod tests {
WorkdirSessionOperationResult::AuthorizeScope
));
let overlap_rule = workdir::WorkdirToolScopeRule {
target: WorkdirPath::new("hello.txt").unwrap(),
permission: workdir::WorkdirToolScopePermission::Write,
recursive: false,
symlink_policy: Default::default(),
};
let overlap = WorkdirSessionOperationRequest {
operation: WorkdirSessionOperation::ScopeRulesOverlap(
workdir::WorkdirScopeOverlapRequest {
left: overlap_rule.clone(),
right: overlap_rule,
},
),
};
let Json(result) = run_workdir_session_operation(
State(state.clone()),
Path("session-1".to_string()),
Some(Extension(auth.clone())),
Ok(Json(overlap)),
)
.await
.expect("provider-side resolved overlap check");
assert!(matches!(
result,
WorkdirSessionOperationResult::ScopeRulesOverlap { overlaps: true }
));
let grep = WorkdirSessionOperationRequest {
operation: WorkdirSessionOperation::Grep(GrepRequest {
pattern: "hello".into(),