feat: backend service

This commit is contained in:
Ilia Denisov
2026-05-06 10:14:55 +03:00
committed by GitHub
parent 3e2622757e
commit f446c6a2ac
1486 changed files with 49720 additions and 266401 deletions
+98
View File
@@ -0,0 +1,98 @@
package lobby
import (
"errors"
"strings"
"testing"
)
func TestPolicyCanonicalCaseFold(t *testing.T) {
policy := mustPolicy(t)
cases := []string{
"Andromeda",
"andromeda",
"ANDROMEDA",
" Andromeda ",
}
want, err := policy.Canonical(cases[0])
if err != nil {
t.Fatalf("baseline canonical: %v", err)
}
for _, c := range cases[1:] {
got, err := policy.Canonical(c)
if err != nil {
t.Fatalf("canonical %q: %v", c, err)
}
if got != want {
t.Errorf("canonical %q = %q, want %q", c, got, want)
}
}
}
func TestPolicyCanonicalAntiFraud(t *testing.T) {
policy := mustPolicy(t)
want, err := policy.Canonical("pilot")
if err != nil {
t.Fatalf("baseline canonical: %v", err)
}
for _, c := range []string{"P1lot", "p1lot", "p1L0T", "P1L0t"} {
got, err := policy.Canonical(c)
if err != nil {
t.Fatalf("canonical %q: %v", c, err)
}
if got != want {
t.Errorf("canonical %q = %q, want %q", c, got, want)
}
}
}
func TestPolicyCanonicalRejectsEmpty(t *testing.T) {
policy := mustPolicy(t)
_, err := policy.Canonical(" ")
if !errors.Is(err, ErrInvalidInput) {
t.Fatalf("canonical empty: err = %v, want ErrInvalidInput", err)
}
}
func TestPolicyCanonicalRejectsTooLong(t *testing.T) {
policy := mustPolicy(t)
long := strings.Repeat("a", 50)
_, err := policy.Canonical(long)
if !errors.Is(err, ErrInvalidInput) {
t.Fatalf("canonical too long: err = %v, want ErrInvalidInput", err)
}
}
func TestValidateDisplayNameRejectsControlChars(t *testing.T) {
if _, err := ValidateDisplayName("bad\x00name"); !errors.Is(err, ErrInvalidInput) {
t.Fatalf("ValidateDisplayName control: err = %v, want ErrInvalidInput", err)
}
if _, err := ValidateDisplayName("good name"); err != nil {
t.Fatalf("ValidateDisplayName valid: err = %v", err)
}
}
func TestPolicyWithSkeletonerOverrides(t *testing.T) {
stub := stubSkeletoner(func(s string) string { return "fixed" })
policy := mustPolicy(t).WithSkeletoner(stub)
got, err := policy.Canonical("Andromeda")
if err != nil {
t.Fatalf("canonical with stub: %v", err)
}
if string(got) != "fixed" {
t.Errorf("canonical with stub = %q, want %q", got, "fixed")
}
}
func mustPolicy(t *testing.T) *Policy {
t.Helper()
p, err := NewPolicy()
if err != nil {
t.Fatalf("NewPolicy: %v", err)
}
return p
}
type stubSkeletoner func(string) string
func (s stubSkeletoner) Skeleton(in string) string { return s(in) }