package testutils
import (
"bytes"
"encoding/json"
"net/http"
"net/http/httptest"
"regexp"
"strings"
"unicode/utf8"
)
type FuzzInputValidator struct {
MaxInputLength int
MinInputLength int
}
func NewFuzzInputValidator() *FuzzInputValidator {
return &FuzzInputValidator{
MaxInputLength: 10000,
MinInputLength: 0,
}
}
func (f *FuzzInputValidator) ValidateFuzzInput(data []byte) bool {
if !utf8.Valid(data) {
return false
}
if len(data) < f.MinInputLength || len(data) > f.MaxInputLength {
return false
}
return true
}
func (f *FuzzInputValidator) ValidateFuzzInputStrict(data []byte) bool {
if !f.ValidateFuzzInput(data) {
return false
}
input := string(data)
if len(strings.TrimSpace(input)) == 0 {
return false
}
return true
}
func ValidateUTF8String(s string) {
if !utf8.ValidString(s) {
panic("String contains invalid UTF-8")
}
}
func ValidateNoNullBytes(s string) {
if strings.Contains(s, "\x00") {
panic("String contains null bytes")
}
}
func ValidateNoScriptTags(s string) {
if strings.Contains(strings.ToLower(s), "", "