package validate import ( "strings" "testing" ) func TestPasswordValid(t *testing.T) { valid := []string{ strings.Repeat("a", MinPasswordLen), strings.Repeat("a", MinPasswordLen+1), "correct horse battery staple", "P@ssw0rd!2024XY", } for _, p := range valid { if err := Password(p); err != nil { t.Errorf("Password(%q) = %v, want nil", p, err) } } } func TestPasswordTooShort(t *testing.T) { short := []string{ "", "short", strings.Repeat("a", MinPasswordLen-1), } for _, p := range short { if err := Password(p); err == nil { t.Errorf("Password(%q) = nil, want error", p) } } } func TestUsernameValid(t *testing.T) { valid := []string{ "alice", "Bob123", "user.name", "user_name", "user-name", "user@domain", "a", strings.Repeat("a", MaxUsernameLen), } for _, u := range valid { if err := Username(u); err != nil { t.Errorf("Username(%q) = %v, want nil", u, err) } } } func TestUsernameInvalid(t *testing.T) { invalid := []string{ "", // empty strings.Repeat("a", MaxUsernameLen+1), // too long "user name", // space "user\tname", // tab "user\nname", // newline "user\x00name", // null byte "user