Files
chat_room/internal/utils/sanitize_test.go
T

72 lines
1.9 KiB
Go
Raw Normal View History

package utils
import (
"errors"
"strings"
"testing"
)
func TestSanitizeMessageText_TrimsWhitespace(t *testing.T) {
got, err := SanitizeMessageText(" سلام دوست من ")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if got != "سلام دوست من" {
t.Fatalf("expected trimmed text, got %q", got)
}
}
func TestSanitizeMessageText_EmptyAfterTrim(t *testing.T) {
_, err := SanitizeMessageText(" ")
if !errors.Is(err, ErrMessageEmpty) {
t.Fatalf("expected ErrMessageEmpty, got %v", err)
}
}
func TestSanitizeMessageText_StripsControlChars(t *testing.T) {
got, err := SanitizeMessageText("سلام\x00\x07دنیا")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if got != "سلامدنیا" {
t.Fatalf("expected control chars stripped, got %q", got)
}
}
func TestSanitizeMessageText_KeepsNewlinesAndTabs(t *testing.T) {
got, err := SanitizeMessageText("خط اول\nخط دوم\tبا تب")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if got != "خط اول\nخط دوم\tبا تب" {
t.Fatalf("expected newline/tab preserved, got %q", got)
}
}
func TestSanitizeMessageText_InvalidUTF8(t *testing.T) {
invalid := string([]byte{0xff, 0xfe, 0xfd})
_, err := SanitizeMessageText(invalid)
if !errors.Is(err, ErrInvalidMessageEncoding) {
t.Fatalf("expected ErrInvalidMessageEncoding, got %v", err)
}
}
func TestSanitizeMessageText_TooLong(t *testing.T) {
long := strings.Repeat("a", MaxMessageLength+1)
_, err := SanitizeMessageText(long)
if !errors.Is(err, ErrMessageTooLong) {
t.Fatalf("expected ErrMessageTooLong, got %v", err)
}
}
func TestSanitizeMessageText_ExactlyMaxLength(t *testing.T) {
exact := strings.Repeat("a", MaxMessageLength)
got, err := SanitizeMessageText(exact)
if err != nil {
t.Fatalf("unexpected error at exact max length: %v", err)
}
if len(got) != MaxMessageLength {
t.Fatalf("expected length %d, got %d", MaxMessageLength, len(got))
}
}