package security
// Tests for input sanitization utilities and validation helpers.
import (
"regexp"
"strings"
"testing"
"unicode/utf8"
"github.com/stretchr/testify/require"
)
// TestSanitize_Options ensures sanitize options behavior is handled correctly.
func TestSanitize_Options(t *testing.T) {
opts := SanitizeOptions{
TrimWhitespace: true,
RemoveMultipleSpaces: true,
HTMLEscape: true,
MaxLength: 0,
AllowedPattern: nil,
}
result := Sanitize(" Hello World ", opts)
require.Equal(t, "Hello <b>World</b>", result)
opts.MaxLength = 5
require.Equal(t, "Hello", Sanitize("Hello World", opts))
opts.AllowedPattern = regexp.MustCompile(`^[a-z]+$`)
require.Equal(t, "", Sanitize("Hello123", opts))
}
// TestSanitizePlayerName ensures sanitize player name behavior is handled correctly.
func TestSanitizePlayerName(t *testing.T) {
require.Equal(t, "Alice Bob", SanitizePlayerName(" Alice Bob "))
require.Equal(t, "", SanitizePlayerName("Alice <"))
}
// TestSanitizeAnswer ensures sanitize answer behavior is handled correctly.
func TestSanitizeAnswer(t *testing.T) {
require.Equal(t, "hello", SanitizeAnswer(" HeLLo "))
}
// TestSanitizeQuestionText ensures sanitize question text behavior is handled correctly.
func TestSanitizeQuestionText(t *testing.T) {
result := SanitizeQuestionText(" Question")
require.NotContains(t, result, "