25 lines
854 B
TypeScript
25 lines
854 B
TypeScript
import { validatePasswordStrength } from '../password-policy'
|
|
|
|
describe('validatePasswordStrength', () => {
|
|
test('拒绝空密码、短密码和常见弱密码', () => {
|
|
expect(validatePasswordStrength('').valid).toBe(false)
|
|
expect(validatePasswordStrength('Ab1!').error).toBe('密码长度至少为 10 位')
|
|
expect(validatePasswordStrength('admin123').valid).toBe(false)
|
|
})
|
|
|
|
test('拒绝字符类别不足的密码', () => {
|
|
const result = validatePasswordStrength('abcdefghij')
|
|
|
|
expect(result.valid).toBe(false)
|
|
expect(result.error).toContain('至少 3 类')
|
|
})
|
|
|
|
test('拒绝全部重复字符', () => {
|
|
expect(validatePasswordStrength('!!!!!!!!!!').valid).toBe(false)
|
|
})
|
|
|
|
test('允许长度和复杂度达标的密码', () => {
|
|
expect(validatePasswordStrength('Flnxi-2026-Safe').valid).toBe(true)
|
|
})
|
|
})
|