axe/internal/auth/password_test.go

35 lines
989 B
Go
Raw Normal View History

2026-10-18 19:07:25 +00:00
package auth
import (
"errors"
"strings"
"testing"
)
func TestValidatePassword(t *testing.T) {
cases := []struct {
name string
pw string
want error
}{
{"нормальный", "Password123", nil},
{"ровно минимум (10)", "abcdefg123", nil},
{"с кириллицей", "пароль1234", nil},
{"слишком короткий", "Password1", ErrPasswordShort},
{"ровно 9", "short1234"[:9], ErrPasswordShort},
{"пустой", "", ErrPasswordShort},
{"только буквы", "verylongpassword", ErrPasswordWeak},
{"только цифры", "1234567890", ErrPasswordWeak},
{"без цифры в середине", "abcdefghij1", nil},
{"длиннее 72 байт", strings.Repeat("a1", 40), ErrPasswordLong},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
err := ValidatePassword(tc.pw)
if !errors.Is(err, tc.want) {
t.Errorf("ValidatePassword(%q) = %v, want %v", tc.pw, err, tc.want)
}
})
}
}