package textsafe_test import ( "strings" "testing" "github.com/yuxingu/digital-psychology/apps/api/internal/textsafe" ) func TestOK(t *testing.T) { got, err := textsafe.Check(textsafe.Nickname, " 心语岛 ") if err != nil || got != "心语岛" { t.Fatalf("got %q err=%v", got, err) } got, err = textsafe.Check(textsafe.DisplayName, "小愈") if err != nil || got != "小愈" { t.Fatalf("got %q err=%v", got, err) } } func TestBanned(t *testing.T) { if _, err := textsafe.Check(textsafe.Nickname, "算命达人"); err == nil { t.Fatal("expected reject") } if _, err := textsafe.Check(textsafe.AskContent, "帮我占卜一下"); err == nil { t.Fatal("expected reject") } } func TestXSS(t *testing.T) { if _, err := textsafe.Check(textsafe.AskContent, `hi `); err == nil { t.Fatal("expected reject") } } func TestSpam(t *testing.T) { if _, err := textsafe.Check(textsafe.Note, "啊啊啊啊啊啊啊啊"); err == nil { t.Fatal("expected reject") } } func TestLength(t *testing.T) { long := strings.Repeat("字", 20) if _, err := textsafe.Check(textsafe.Nickname, long); err == nil { t.Fatal("expected reject") } } func TestOptionalEmpty(t *testing.T) { got, err := textsafe.Check(textsafe.Note, " ") if err != nil || got != "" { t.Fatalf("got %q err=%v", got, err) } }