补齐 DocumentAccessDecider HTTP 409、projectcontext 私有对话排除统计,并更新整改 gap matrix 与测试报告。
59 lines
2.2 KiB
Go
59 lines
2.2 KiB
Go
package projectinstance
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"chat-agent-system/internal/workflowdef"
|
|
)
|
|
|
|
func TestCheckDocTaskAccess_DisabledDocumentRejected(t *testing.T) {
|
|
ctx := context.Background()
|
|
store := NewMemoryStore()
|
|
_ = SeedProjectMeta(store, 400, LifecyclePlanning, "", 1, 0)
|
|
resolver := disabledDocResolver()
|
|
svc := NewService(store, resolver, nil, nil)
|
|
|
|
version := resolver.versions[workflowdef.OfficialKeyMain]
|
|
plan := buildDefaultPlan(version)
|
|
for i := range plan.Stages[0].DocTasks {
|
|
if plan.Stages[0].DocTasks[i].TaskKey == "research" {
|
|
plan.Stages[0].DocTasks[i].Enabled = false
|
|
continue
|
|
}
|
|
plan.Stages[0].DocTasks[i].Duties = DocDuty{AuthorUserID: 1, ReviewerUserID: 2, ApproverUserID: 3}
|
|
}
|
|
_, _ = svc.SaveWorkflowPlan(ctx, 400, 1, true, SavePlanInput{Plan: plan, ExpectedPlanRevision: 0, ExpectedSelectionVersion: 1})
|
|
preview, _ := svc.ActivationPreview(ctx, 400, 1, true)
|
|
_, _ = svc.Activate(ctx, 400, 1, true, ActivateInput{
|
|
ConfirmationToken: preview.ConfirmationToken, ExpectedProjectVersion: preview.ExpectedProjectVersion,
|
|
ExpectedPlanRevision: preview.ExpectedPlanRevision,
|
|
})
|
|
|
|
decision := svc.CheckDocTaskAccess(ctx, 400, 1, "research", DocAccessActionRun, true)
|
|
if decision.Allowed || decision.Code != AccessCodeDocTaskDisabled {
|
|
t.Fatalf("expected DOC_TASK_DISABLED, got %+v", decision)
|
|
}
|
|
}
|
|
|
|
func TestCheckDocTaskAccess_NonDutyUserRejected(t *testing.T) {
|
|
ctx := context.Background()
|
|
store := NewMemoryStore()
|
|
_ = SeedProjectMeta(store, 401, LifecyclePlanning, "", 1, 0)
|
|
svc := NewService(store, TestResolver(), nil, nil)
|
|
|
|
_, _ = svc.SaveWorkflowPlan(ctx, 401, 1, true, SavePlanInput{
|
|
Plan: ValidTestPlan(), ExpectedPlanRevision: 0, ExpectedSelectionVersion: 1,
|
|
})
|
|
preview, _ := svc.ActivationPreview(ctx, 401, 1, true)
|
|
_, _ = svc.Activate(ctx, 401, 1, true, ActivateInput{
|
|
ConfirmationToken: preview.ConfirmationToken, ExpectedProjectVersion: preview.ExpectedProjectVersion,
|
|
ExpectedPlanRevision: preview.ExpectedPlanRevision,
|
|
})
|
|
|
|
decision := svc.CheckDocTaskAccess(ctx, 401, 99, "intake", DocAccessActionRun, false)
|
|
if decision.Allowed || decision.Code != AccessCodeForbiddenDuty {
|
|
t.Fatalf("expected DOC_DUTY_FORBIDDEN, got %+v", decision)
|
|
}
|
|
}
|