67 lines
1.3 KiB
Go
67 lines
1.3 KiB
Go
package validation
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
"unicode/utf8"
|
|
)
|
|
|
|
func FuzzValidateEmail(f *testing.F) {
|
|
runValidationFuzzTest(f, ValidateEmail)
|
|
}
|
|
|
|
func FuzzValidateUsername(f *testing.F) {
|
|
runValidationFuzzTest(f, ValidateUsername)
|
|
}
|
|
|
|
func FuzzValidatePassword(f *testing.F) {
|
|
runValidationFuzzTest(f, ValidatePassword)
|
|
}
|
|
|
|
func FuzzValidateURL(f *testing.F) {
|
|
runValidationFuzzTest(f, ValidateURL)
|
|
}
|
|
|
|
func FuzzValidateTitle(f *testing.F) {
|
|
runValidationFuzzTest(f, ValidateTitle)
|
|
}
|
|
|
|
func FuzzValidateContent(f *testing.F) {
|
|
runValidationFuzzTest(f, ValidateContent)
|
|
}
|
|
|
|
func FuzzValidateSearchQuery(f *testing.F) {
|
|
runValidationFuzzTest(f, ValidateSearchQuery)
|
|
}
|
|
|
|
func FuzzSanitizeString(f *testing.F) {
|
|
f.Add("test input")
|
|
f.Fuzz(func(t *testing.T, input string) {
|
|
if !utf8.ValidString(input) {
|
|
return
|
|
}
|
|
result := SanitizeString(input)
|
|
if !utf8.ValidString(result) {
|
|
t.Fatal("Sanitized result contains invalid UTF-8")
|
|
}
|
|
if containsNullBytes(result) {
|
|
t.Fatal("Sanitized result contains null bytes")
|
|
}
|
|
})
|
|
}
|
|
|
|
func runValidationFuzzTest(f *testing.F, validateFunc func(string) error) {
|
|
f.Add("test input")
|
|
f.Fuzz(func(t *testing.T, input string) {
|
|
if !utf8.ValidString(input) {
|
|
return
|
|
}
|
|
err := validateFunc(input)
|
|
_ = err
|
|
})
|
|
}
|
|
|
|
func containsNullBytes(s string) bool {
|
|
return strings.Contains(s, "\x00")
|
|
}
|