22 lines
1.2 KiB
JavaScript
22 lines
1.2 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import {readFileSync} from 'node:fs';
|
|
import {createRequire} from 'node:module';
|
|
import vm from 'node:vm';
|
|
import test from 'node:test';
|
|
const require=createRequire(import.meta.url);
|
|
const ts=require(process.env.KEFU_SSO_TYPESCRIPT||'typescript');
|
|
test('实际Vite代理同时接受旧前缀与标准API前缀,保留独立后端配置',async()=>{
|
|
const source=readFileSync(new URL('../vite.config.ts',import.meta.url),'utf8');
|
|
const code=ts.transpileModule(source,{compilerOptions:{module:ts.ModuleKind.CommonJS}}).outputText;
|
|
for(const target of [undefined,'http://127.0.0.1:18766']) {
|
|
const module={exports:{}};
|
|
vm.runInNewContext(code,{module,exports:module.exports,process:{env:{VITE_API_TARGET:target}},
|
|
require(name){assert.equal(name,'@vben/vite-config');return {defineConfig:factory=>factory};}});
|
|
const proxy=(await module.exports.default()).vite.server.proxy['/api'];
|
|
assert.equal(proxy.rewrite('/api/auth/login'),'/api/v2/auth/login');
|
|
assert.equal(proxy.rewrite('/api/v2/auth/group/config'),'/api/v2/auth/group/config');
|
|
assert.equal(proxy.rewrite('/api/v2/users?active=true'),'/api/v2/users?active=true');
|
|
assert.equal(proxy.target,target||'http://127.0.0.1:8766');
|
|
}
|
|
});
|