17 lines
1.3 KiB
JavaScript
17 lines
1.3 KiB
JavaScript
'use strict';
|
|
// Local test/dev runner only. The production service launches h5/server.js directly.
|
|
const fs = require('node:fs'), path = require('node:path'), vm = require('node:vm');
|
|
if (!process.env.JUZI_DATA_ROOT || !process.env.PUBLIC_BASE_URL) throw Error('Explicit isolated data root and public URL required');
|
|
Object.assign(process.env, { NODE_ENV: 'test', HOST: '127.0.0.1', SKIN_API_KEY: 'fixture', SKIN_API_SECRET: 'fixture',
|
|
WECHAT_APP_ID: '', WECHAT_APP_SECRET: '', TAOBAO_APP_KEY: '', TAOBAO_APP_SECRET: '' });
|
|
const root = path.resolve(__dirname, '../..'), context = { window: {} };
|
|
vm.runInNewContext(fs.readFileSync(path.join(root, 'h5/assets/mock/report-fixture.js'), 'utf8'), context);
|
|
const fixture = context.window.MOCK_FIXTURE;
|
|
global.fetch = async url => {
|
|
if (!String(url).startsWith('https://api-cn.faceplusplus.com/')) throw Error('External requests disabled in fixture mode');
|
|
if (process.env.FIXTURE_DELAY_MS) await new Promise(resolve => setTimeout(resolve, Number(process.env.FIXTURE_DELAY_MS)));
|
|
return { ok: true, status: 200, json: async () => ({ request_id: 'fixture', result: structuredClone(fixture.result),
|
|
face_rectangle: fixture.face_rectangle, left_side_result: fixture.side.left, right_side_result: fixture.side.right }) };
|
|
};
|
|
require('../../h5/server');
|