62 lines
1.8 KiB
TypeScript
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');
|
|
});
|