package main import "testing" func TestAllowlist_Empty_OpenToAll(t *testing.T) { a := NewAllowlist("") if !a.Open() { t.Fatal("expected open=true on empty raw") } if !a.IsAllowed(0) || !a.IsAllowed(123456789) { t.Fatal("open allowlist should allow any user") } } func TestAllowlist_Whitespace_OpenToAll(t *testing.T) { a := NewAllowlist(" \t\n ") if !a.Open() { t.Fatal("whitespace-only should be treated as empty") } } func TestAllowlist_OneID(t *testing.T) { a := NewAllowlist("7497777082") if a.Open() { t.Fatal("non-empty should not be open") } if !a.IsAllowed(7497777082) { t.Fatal("listed user must be allowed") } if a.IsAllowed(999) { t.Fatal("stranger must be rejected") } } func TestAllowlist_MultiCSVWithSpaces(t *testing.T) { a := NewAllowlist(" 12345 , 67890 , 42 ") if a.Size() != 3 { t.Fatalf("expected 3, got %d", a.Size()) } for _, id := range []int64{12345, 67890, 42} { if !a.IsAllowed(id) { t.Fatalf("id=%d should be allowed", id) } } if a.IsAllowed(999) { t.Fatal("999 must be rejected") } } func TestAllowlist_InvalidEntriesIgnored(t *testing.T) { a := NewAllowlist("123,abc,,456,not-a-number") if a.Size() != 2 { t.Fatalf("expected 2 valid ids, got %d", a.Size()) } if !a.IsAllowed(123) || !a.IsAllowed(456) { t.Fatal("valid ids should pass") } } func TestAllowlist_AllInvalid_ClosedNotOpen(t *testing.T) { a := NewAllowlist("abc,xyz") if a.Open() { t.Fatal("CSV with no valid ids should be closed (fail-safe), not open") } if a.IsAllowed(123) { t.Fatal("must reject everyone when no valid ids") } }