forked from wangziqi/gongxue-base
41 lines
1.6 KiB
JavaScript
41 lines
1.6 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import { buildConfig, configureAliyunPnvsProvider, publicConfig } from './configure-aliyun-pnvs-provider.js';
|
|
|
|
const env = {
|
|
DATABASE_URL: 'postgresql://user:pass@127.0.0.1:54322/postgres',
|
|
PNVS_TENANT_ID: '00000000-0000-0000-0000-000000000001',
|
|
ALIYUN_ACCESS_KEY_ID: 'access-key-id',
|
|
ALIYUN_ACCESS_KEY_SECRET: 'access-key-secret',
|
|
ALIYUN_PNVS_SIGN_NAME: '短信签名',
|
|
ALIYUN_PNVS_TEMPLATE_CODE: 'SMS_123456789',
|
|
};
|
|
|
|
const config = buildConfig(env);
|
|
assert.equal(config.tenantId, env.PNVS_TENANT_ID);
|
|
assert.equal(config.templateParam.code, '##code##');
|
|
assert.equal(config.templateParam.min, '5');
|
|
|
|
const driftConfig = buildConfig({
|
|
...env,
|
|
ALIYUN_PNVS_TEMPLATE_PARAM: '{"min":"5"}',
|
|
});
|
|
assert.equal(driftConfig.templateParam.code, '##code##', 'script should preserve PNVS code placeholder');
|
|
|
|
const cfgPublic = publicConfig(config);
|
|
assert.equal(cfgPublic.secretRef, 'app_private.tenant_secrets:sms:aliyun-pnvs');
|
|
assert.equal(cfgPublic.endpoint, 'https://dypnsapi.aliyuncs.com');
|
|
assert.equal(JSON.stringify(cfgPublic).includes('access-key-secret'), false, 'public config must not include secrets');
|
|
|
|
const dryRun = await configureAliyunPnvsProvider(config, { dryRun: true });
|
|
assert.equal(dryRun.provider, 'aliyun-pnvs');
|
|
assert.equal(dryRun.secretScope, 'sms');
|
|
assert.equal(dryRun.secretKey, 'aliyun-pnvs');
|
|
assert.equal(JSON.stringify(dryRun).includes('access-key-secret'), false, 'dry-run output must not include secret plaintext');
|
|
|
|
assert.throws(
|
|
() => buildConfig({ ...env, ALIYUN_ACCESS_KEY_SECRET: '' }),
|
|
/Missing required PNVS config env/,
|
|
);
|
|
|
|
console.log('[PASS] configure Aliyun PNVS provider script');
|