chore: initial commit of ai site platform
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
51
platform/internal/userstore/creds_test.go
Normal file
51
platform/internal/userstore/creds_test.go
Normal file
@@ -0,0 +1,51 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user