forked from wangziqi/gongxue-base
chore: add PNVS provider configuration script
This commit is contained in:
40
scripts/configure-aliyun-pnvs-provider-test.js
Normal file
40
scripts/configure-aliyun-pnvs-provider-test.js
Normal file
@@ -0,0 +1,40 @@
|
||||
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');
|
||||
Reference in New Issue
Block a user