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'), '****') })