forked from wangziqi/gongxue-base
54 lines
1.7 KiB
JavaScript
54 lines
1.7 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import { pathToFileURL } from 'node:url';
|
|
|
|
const repoRoot = process.cwd();
|
|
const envModule = await import(pathToFileURL(`${repoRoot}/apps/taro/src/env.ts`).href);
|
|
|
|
envModule.applyRuntimeConfig({
|
|
portal: 'tenant-admin',
|
|
apiBaseUrl: 'https://api.gongxue100.com///',
|
|
supabaseUrl: 'https://auth.gongxue100.com///',
|
|
supabasePublishableKey: 'sb_publishable_public_key',
|
|
tenantCode: 'tenant-a',
|
|
});
|
|
|
|
assert.equal(envModule.appEnv.portal, 'tenant-admin');
|
|
assert.equal(envModule.appEnv.apiBaseUrl, 'https://api.gongxue100.com');
|
|
assert.equal(envModule.appEnv.supabaseUrl, 'https://auth.gongxue100.com');
|
|
assert.equal(envModule.appEnv.supabasePublishableKey, 'sb_publishable_public_key');
|
|
assert.equal(envModule.appEnv.tenantCode, 'tenant-a');
|
|
|
|
envModule.applyRuntimeConfig({
|
|
TARO_APP_PORTAL: 'platform-admin',
|
|
TARO_APP_API_BASE_URL: 'https://api2.gongxue100.com',
|
|
});
|
|
|
|
assert.equal(envModule.appEnv.portal, 'platform-admin');
|
|
assert.equal(envModule.appEnv.apiBaseUrl, 'https://api2.gongxue100.com');
|
|
|
|
envModule.applyRuntimeConfig({
|
|
portal: 'invalid-portal',
|
|
apiBaseUrl: '',
|
|
});
|
|
|
|
assert.equal(envModule.appEnv.portal, 'platform-admin');
|
|
assert.equal(envModule.appEnv.apiBaseUrl, 'https://api2.gongxue100.com');
|
|
|
|
assert.throws(
|
|
() => envModule.applyRuntimeConfig({
|
|
apiBaseUrl: 'https://api.gongxue100.com',
|
|
SUPABASE_SERVICE_ROLE_KEY: 'must-not-ship-to-browser',
|
|
}),
|
|
/Forbidden secret key in runtime config: SUPABASE_SERVICE_ROLE_KEY/,
|
|
);
|
|
|
|
assert.throws(
|
|
() => envModule.applyRuntimeConfig({
|
|
apiBaseUrl: 'https://api.gongxue100.com',
|
|
unexpectedFeatureFlag: 'unsafe-drift',
|
|
}),
|
|
/Unknown key in runtime config: unexpectedFeatureFlag/,
|
|
);
|
|
|
|
console.log('[PASS] Taro runtime config guardrails');
|