Files
client-web/src/modules/account/utils/accountProfile.test.mjs
T
2026-08-03 18:52:21 +08:00

38 lines
1.5 KiB
JavaScript

import assert from 'node:assert/strict'
import test from 'node:test'
import {
getPasswordStrength,
validateEditableAccountProfile,
validatePasswordChange,
} from './accountProfile.ts'
test('accepts a complete editable account profile', () => {
assert.deepEqual(validateEditableAccountProfile({
realName: '企业管理员',
phone: '13800006601',
email: 'admin@example.com',
}), [])
})
test('reports invalid profile fields together', () => {
const errors = validateEditableAccountProfile({ realName: '', phone: '1'.repeat(33), email: 'bad' })
assert.equal(errors.length, 3)
})
test('validates password length, equality and confirmation', () => {
assert.deepEqual(validatePasswordChange({
currentPassword: 'OldPass123',
newPassword: 'NewPass456',
confirmPassword: 'NewPass456',
}), [])
assert.equal(validatePasswordChange({ currentPassword: '', newPassword: '123', confirmPassword: '456' }).length, 3)
assert.match(validatePasswordChange({ currentPassword: 'SamePass1', newPassword: 'SamePass1', confirmPassword: 'SamePass1' }).join('|'), /不能与当前密码相同/)
assert.match(validatePasswordChange({ currentPassword: 'OldPass1', newPassword: 'abcdefgh', confirmPassword: 'abcdefgh' }).join('|'), /同时包含字母和数字/)
})
test('grades password strength without making extra complexity mandatory', () => {
assert.equal(getPasswordStrength('short'), 'weak')
assert.equal(getPasswordStrength('Password1'), 'medium')
assert.equal(getPasswordStrength('Stronger@2026'), 'strong')
})