44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package auth
|
|
|
|
import "testing"
|
|
|
|
func TestNormalizeProfileValue(t *testing.T) {
|
|
for _, value := range []struct{ field, value, want string }{
|
|
{"username", " Reader.One ", "Reader.One"}, {"display_name", " Émilie ★ ", "Émilie ★"},
|
|
} {
|
|
got, err := NormalizeProfileValue(value.field, value.value)
|
|
if err != nil || got != value.want {
|
|
t.Fatalf("normalization: %q %v", got, err)
|
|
}
|
|
}
|
|
for _, value := range []struct{ field, value string }{
|
|
{"email", "new@example.test"}, {"role", "owner"}, {"username", "a"}, {"username", "foo@bar"},
|
|
{"display_name", ""}, {"display_name", "hello\x00world"}, {"display_name", "hello\nworld"}, {"display_name", string([]byte{0xff})},
|
|
} {
|
|
if _, err := NormalizeProfileValue(value.field, value.value); err == nil {
|
|
t.Fatalf("invalid field accepted: %s", value.field)
|
|
}
|
|
}
|
|
}
|
|
|
|
func FuzzProfileValue(f *testing.F) {
|
|
f.Add("username", "reader.one")
|
|
f.Add("display_name", "Émilie")
|
|
f.Add("email", "a@example.test")
|
|
f.Fuzz(func(t *testing.T, field, value string) {
|
|
normal, err := NormalizeProfileValue(field, value)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if len(normal) == 0 || len(normal) > 128 {
|
|
t.Fatal("unbounded value")
|
|
}
|
|
again, err := NormalizeProfileValue(field, normal)
|
|
if err != nil || again != normal {
|
|
t.Fatal("unstable normalization")
|
|
}
|
|
})
|
|
}
|