Files
ai_site/platform/internal/userstore/creds_test.go
2026-07-31 10:19:22 +08:00

52 lines
1.3 KiB
Go

package userstore
import (
"context"
"testing"
)
func TestRandomUsernameUnique(t *testing.T) {
seen := map[string]struct{}{}
for i := 0; i < 20; i++ {
u, err := RandomUsername()
if err != nil || len(u) != 10 {
t.Fatalf("got %q %v", u, err)
}
if u[0] < 'a' || u[0] > 'z' {
t.Fatalf("must start with letter: %q", u)
}
seen[u] = struct{}{}
}
if len(seen) < 15 {
t.Fatalf("expected diverse usernames, got %d", len(seen))
}
}
func TestCreateMemberAndChangePassword(t *testing.T) {
s := NewMemoryStore()
ten, err := s.CreateTenant(context.Background(), "测试公司", "acme")
if err != nil {
t.Fatal(err)
}
uname, err := AllocUniqueUsername(context.Background(), s.UsernameExists)
if err != nil {
t.Fatal(err)
}
u, plain, err := s.CreateMember(context.Background(), ten.TenantID, uname, "", "管理员", "管理员", 0)
if err != nil || plain == "" {
t.Fatalf("u=%v plain=%q err=%v", u, plain, err)
}
if _, err := s.Login(context.Background(), uname, plain); err != nil {
t.Fatal(err)
}
if err := s.ChangePassword(context.Background(), u.UserID, plain, "newpass99"); err != nil {
t.Fatal(err)
}
if _, err := s.Login(context.Background(), uname, "newpass99"); err != nil {
t.Fatal(err)
}
if err := s.ChangePassword(context.Background(), u.UserID, "wrong", "x"); err == nil {
t.Fatal("expected old password check")
}
}