Scert/backend/internal/passwordpolicy/password_test.go

35 lines
1.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package passwordpolicy
import (
"strings"
"testing"
)
func TestValidate(t *testing.T) {
cases := []struct {
name string
password string
username string
wantErr bool
}{
{name: "合法密码", password: "Password123", username: "admin"},
{name: "length at max", password: "Pass12345678", username: "admin"},
{name: "length above max", password: "Pass123456789", username: "admin", wantErr: true},
{name: "支持中文字符", password: "安全密码2026", username: "admin"},
{name: "长度不足", password: "Pass123", username: "admin", wantErr: true},
{name: "缺少数字", password: "PasswordOnly", username: "admin", wantErr: true},
{name: "缺少字母", password: "123456789", username: "admin", wantErr: true},
{name: "等于用户名", password: "Admin123", username: "Admin123", wantErr: true},
{name: "包含控制字符", password: "Password1\n", username: "admin", wantErr: true},
{name: "长度超限", password: "Password1" + strings.Repeat("a", MaxLength), username: "admin", wantErr: true},
}
for _, test := range cases {
t.Run(test.name, func(t *testing.T) {
err := Validate(test.password, test.username)
if (err != nil) != test.wantErr {
t.Fatalf("密码校验结果不正确:err=%v", err)
}
})
}
}