You've already forked agentic-coding-workflow
主流程
This commit is contained in:
@@ -212,10 +212,33 @@ func (r *fakeAcpRepo) DeleteAgentKind(_ context.Context, _ uuid.UUID) error { re
|
||||
func (r *fakeAcpRepo) CountAgentKindUsage(_ context.Context, _ uuid.UUID) (int64, error) {
|
||||
return 0, nil
|
||||
}
|
||||
func (r *fakeAcpRepo) ListSessionsByUser(_ context.Context, _ uuid.UUID) ([]*acp.Session, error) {
|
||||
return nil, nil
|
||||
func (r *fakeAcpRepo) ListSessionsByUser(_ context.Context, userID uuid.UUID, reqID *uuid.UUID) ([]*acp.Session, error) {
|
||||
r.mu.Lock()
|
||||
defer r.mu.Unlock()
|
||||
var out []*acp.Session
|
||||
for _, s := range r.sessions {
|
||||
if s.UserID != userID {
|
||||
continue
|
||||
}
|
||||
if reqID != nil && (s.RequirementID == nil || *s.RequirementID != *reqID) {
|
||||
continue
|
||||
}
|
||||
out = append(out, s)
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
func (r *fakeAcpRepo) ListAllSessions(_ context.Context, reqID *uuid.UUID) ([]*acp.Session, error) {
|
||||
r.mu.Lock()
|
||||
defer r.mu.Unlock()
|
||||
var out []*acp.Session
|
||||
for _, s := range r.sessions {
|
||||
if reqID != nil && (s.RequirementID == nil || *s.RequirementID != *reqID) {
|
||||
continue
|
||||
}
|
||||
out = append(out, s)
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
func (r *fakeAcpRepo) ListAllSessions(_ context.Context) ([]*acp.Session, error) { return nil, nil }
|
||||
func (r *fakeAcpRepo) UpdateSessionRunning(_ context.Context, _ uuid.UUID, _ string, _ int32) error {
|
||||
return nil
|
||||
}
|
||||
@@ -440,3 +463,35 @@ func (f *fakeAcpRepo) ExpirePendingPermissionRequestsBySession(context.Context,
|
||||
func (f *fakeAcpRepo) ExpireStalePermissionRequests(context.Context, time.Time) (int64, error) {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
func TestSessionService_List_RequirementFilter(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
uid := uuid.New()
|
||||
reqID := uuid.New()
|
||||
repo := &fakeAcpRepo{}
|
||||
repo.sessions = []*acp.Session{
|
||||
{ID: uuid.New(), UserID: uid, RequirementID: &reqID},
|
||||
{ID: uuid.New(), UserID: uid},
|
||||
{ID: uuid.New(), UserID: uuid.New(), RequirementID: &reqID},
|
||||
}
|
||||
|
||||
svc := acp.NewSessionService(
|
||||
repo, nil, nil, nil, nil, nil, nil,
|
||||
acp.SessionServiceConfig{}, nil,
|
||||
)
|
||||
|
||||
// 普通用户:仅本人 + requirement 过滤
|
||||
list, err := svc.List(context.Background(), acp.Caller{UserID: uid}, acp.SessionListFilter{RequirementID: &reqID})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, list, 1)
|
||||
|
||||
// 非 admin 请求 all → 403
|
||||
_, err = svc.List(context.Background(), acp.Caller{UserID: uid}, acp.SessionListFilter{All: true})
|
||||
require.Error(t, err)
|
||||
|
||||
// admin all + requirement 过滤:跨用户 2 条
|
||||
list, err = svc.List(context.Background(), acp.Caller{UserID: uid, IsAdmin: true}, acp.SessionListFilter{All: true, RequirementID: &reqID})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, list, 2)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user