Files
weichenandCursor 90f77eac93 feat(authz): implement six-phase permissions, settings and workflow v2
Close P0 auth gaps for lineage/runs, stage ABAC fail-closed, and
project:create; add IAM migrations 00021-23, me settings APIs, schema v2
manifests, orchestrator skeleton, and gate A regression coverage.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 02:50:23 +00:00

50 lines
1.3 KiB
Go

package auth_test
import (
"context"
"testing"
"chat-agent-system/internal/auth"
"chat-agent-system/internal/config"
)
func TestMemoryStore_DevEnvSeedsDemoUsers(t *testing.T) {
cfg := &config.Config{Env: "dev", AdminPassword: "admin-test-pass-999"}
store := auth.NewMemoryStore(cfg)
ctx := context.Background()
user, err := store.GetUserByUsername(ctx, "zhanggong")
if err != nil {
t.Fatalf("expected zhanggong in dev env: %v", err)
}
if user.RoleID != "role-tech-lead" {
t.Fatalf("unexpected role: %s", user.RoleID)
}
}
func TestMemoryStore_MainEnvNoSeedUsers(t *testing.T) {
cfg := &config.Config{
Env: "main",
AdminPassword: "secure-main-admin-pass-xyz",
}
store := auth.NewMemoryStore(cfg)
ctx := context.Background()
if _, err := store.GetUserByUsername(ctx, "zhanggong"); err == nil {
t.Fatal("main env must not seed zhanggong demo user")
}
if _, err := store.GetUserByUsername(ctx, "guest"); err == nil {
t.Fatal("main env must not seed guest demo user")
}
admin, err := store.GetUserByUsername(ctx, cfg.AdminUsername)
if err != nil && cfg.AdminUsername == "" {
admin, err = store.GetUserByUsername(ctx, "admin")
}
if err != nil {
t.Fatalf("admin account should still exist: %v", err)
}
if admin.RoleID != "role-admin" {
t.Fatalf("expected role-admin, got %s", admin.RoleID)
}
}