Add disabled-user 401, admin roles/sessions handler tests, optional PG store integration, cross-project 403 fixture, and update the Phase 1 test report to reflect completion status. Co-authored-by: Cursor <cursoragent@cursor.com>
33 lines
888 B
Go
33 lines
888 B
Go
package auth_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"chat-agent-system/internal/auth"
|
|
"chat-agent-system/internal/config"
|
|
)
|
|
|
|
func TestService_DisabledUserRevokesSession(t *testing.T) {
|
|
cfg := &config.Config{Env: "dev", AdminUsername: "admin", AdminPassword: "admin123"}
|
|
store := auth.NewMemoryStore(cfg)
|
|
sessions := auth.NewMemorySessionStore()
|
|
svc := auth.NewService(store, sessions, cfg)
|
|
|
|
ctx := context.Background()
|
|
sess, err := svc.Login(ctx, "zhanggong", "123456")
|
|
if err != nil {
|
|
t.Fatalf("login: %v", err)
|
|
}
|
|
if _, err := svc.GetUserByToken(ctx, sess.Token); err != nil {
|
|
t.Fatalf("token should work before disable: %v", err)
|
|
}
|
|
|
|
if _, err := svc.UpdateUserStatus(ctx, 2, auth.StatusDisabled); err != nil {
|
|
t.Fatalf("disable: %v", err)
|
|
}
|
|
if _, err := svc.GetUserByToken(ctx, sess.Token); err == nil {
|
|
t.Fatal("expected disabled user token to be rejected")
|
|
}
|
|
}
|