Files
Genarrative/server-node/src/config.test.ts
高物 0981d6ee1b
Some checks failed
CI / verify (push) Has been cancelled
1
2026-04-11 15:43:32 +08:00

62 lines
1.8 KiB
TypeScript

import assert from 'node:assert/strict';
import fs from 'node:fs';
import os from 'node:os';
import path from 'node:path';
import test from 'node:test';
import { loadConfig } from './config.ts';
function createTempProjectRoot(prefix: string) {
return fs.mkdtempSync(path.join(os.tmpdir(), prefix));
}
test('development config auto-enables aliyun sms auth when local credentials are provided', () => {
const projectRoot = createTempProjectRoot('genarrative-config-dev-');
fs.writeFileSync(
path.join(projectRoot, '.env.example'),
'SMS_AUTH_ENABLED=\"false\"\nSMS_AUTH_PROVIDER=\"aliyun\"\n',
'utf8',
);
fs.writeFileSync(
path.join(projectRoot, '.env.local'),
'ALIYUN_SMS_ACCESS_KEY_ID=\"test-ak\"\nALIYUN_SMS_ACCESS_KEY_SECRET=\"test-sk\"\n',
'utf8',
);
const config = loadConfig({
projectRoot,
env: {
NODE_ENV: 'development',
},
});
assert.equal(config.smsAuth.enabled, true);
assert.equal(config.smsAuth.provider, 'aliyun');
assert.equal(config.smsAuth.accessKeyId, 'test-ak');
assert.equal(config.smsAuth.accessKeySecret, 'test-sk');
});
test('development config respects explicit local sms auth overrides', () => {
const projectRoot = createTempProjectRoot('genarrative-config-local-');
fs.writeFileSync(
path.join(projectRoot, '.env.example'),
'SMS_AUTH_ENABLED=\"false\"\nSMS_AUTH_PROVIDER=\"aliyun\"\n',
'utf8',
);
fs.writeFileSync(
path.join(projectRoot, '.env.local'),
'SMS_AUTH_ENABLED=\"false\"\nSMS_AUTH_PROVIDER=\"aliyun\"\nALIYUN_SMS_ACCESS_KEY_ID=\"test-ak\"\nALIYUN_SMS_ACCESS_KEY_SECRET=\"test-sk\"\n',
'utf8',
);
const config = loadConfig({
projectRoot,
env: {
NODE_ENV: 'development',
},
});
assert.equal(config.smsAuth.enabled, false);
assert.equal(config.smsAuth.provider, 'aliyun');
});