elder-yudao-pro/yudao-ui-admin-vue3/tests/health-privacy.test.cjs

31 lines
1.3 KiB
JavaScript
Raw Permalink Normal View History

const { test } = require('node:test')
const assert = require('node:assert/strict')
const fs = require('node:fs')
const path = require('node:path')
const vm = require('node:vm')
const { createRequire } = require('node:module')
const esbuild = createRequire(require.resolve('vite'))('esbuild')
const result = { exports: {} }
vm.runInNewContext(
esbuild.transformSync(
fs.readFileSync(path.join(__dirname, '../src/utils/healthPrivacy.ts'), 'utf8'),
{ loader: 'ts', format: 'cjs' }
).code,
{ module: result, exports: result.exports }
)
const { maskHealthPhone, maskHealthIdCard, maskHealthInsurance } = result.exports
test('normal identity and phone displays reveal only limited prefix and suffix', () => {
assert.equal(maskHealthPhone('13800000001'), '138****0001')
assert.equal(maskHealthIdCard('11010519491231002X'), '110***********002X')
assert.equal(maskHealthInsurance('synthetic-insurance'), '***************ance')
})
test('malformed and short values never fall back to their full sensitive input', () => {
for (const value of ['abc', '1234567', '1234567890']) {
assert.notEqual(maskHealthIdCard(value), value)
assert.notEqual(maskHealthPhone(value), value)
}
assert.equal(maskHealthPhone(null), '未填写手机号')
assert.equal(maskHealthInsurance('1234'), '****')
})