@eggjs/mock 6.0.7 → 6.1.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -57
- package/README.zh_CN.md +31 -51
- package/dist/_virtual/rolldown_runtime.js +7 -0
- package/dist/app/extend/agent.d.ts +39 -0
- package/dist/app/extend/agent.js +48 -0
- package/dist/app/extend/application.d.ts +175 -0
- package/dist/app/extend/application.js +385 -0
- package/dist/app/middleware/cluster_app_mock.d.ts +6 -0
- package/dist/app/middleware/cluster_app_mock.js +97 -0
- package/dist/app.d.ts +10 -0
- package/dist/app.js +17 -0
- package/dist/bootstrap.d.ts +9 -0
- package/dist/bootstrap.js +14 -0
- package/dist/index.d.ts +81 -0
- package/dist/index.js +47 -0
- package/dist/inject_mocha.d.ts +1 -0
- package/dist/inject_mocha.js +34 -0
- package/dist/lib/agent_handler.d.ts +7 -0
- package/dist/lib/agent_handler.js +26 -0
- package/dist/lib/app.d.ts +7 -0
- package/dist/lib/app.js +251 -0
- package/dist/lib/app_handler.d.ts +9 -0
- package/dist/lib/app_handler.js +56 -0
- package/dist/lib/cluster.d.ts +126 -0
- package/dist/lib/cluster.js +283 -0
- package/dist/lib/context.d.ts +4 -0
- package/dist/lib/context.js +10 -0
- package/dist/lib/format_options.d.ts +10 -0
- package/dist/lib/format_options.js +65 -0
- package/dist/lib/inject_context.d.ts +9 -0
- package/dist/lib/inject_context.js +106 -0
- package/dist/lib/mock_agent.d.ts +9 -0
- package/dist/lib/mock_agent.js +45 -0
- package/dist/lib/mock_custom_loader.d.ts +4 -0
- package/dist/lib/mock_custom_loader.js +35 -0
- package/dist/lib/mock_http_server.d.ts +6 -0
- package/dist/lib/mock_http_server.js +17 -0
- package/dist/lib/mock_httpclient.d.ts +40 -0
- package/dist/lib/mock_httpclient.js +110 -0
- package/dist/lib/parallel/agent.d.ts +24 -0
- package/dist/lib/parallel/agent.js +111 -0
- package/dist/lib/parallel/app.d.ts +24 -0
- package/dist/lib/parallel/app.js +99 -0
- package/dist/lib/parallel/util.d.ts +6 -0
- package/dist/lib/parallel/util.js +59 -0
- package/dist/lib/prerequire.d.ts +1 -0
- package/dist/lib/prerequire.js +1 -0
- package/dist/lib/request_call_function.d.ts +1 -0
- package/dist/lib/request_call_function.js +37 -0
- package/dist/lib/restore.d.ts +4 -0
- package/dist/lib/restore.js +16 -0
- package/dist/lib/start-cluster.d.ts +1 -0
- package/dist/lib/start-cluster.js +19 -0
- package/dist/lib/supertest.d.ts +16 -0
- package/dist/lib/supertest.js +39 -0
- package/dist/lib/tmp/empty.d.ts +1 -0
- package/dist/lib/tmp/empty.js +1 -0
- package/{src/lib/types.ts → dist/lib/types.d.ts} +12 -29
- package/dist/lib/types.js +1 -0
- package/dist/lib/utils.d.ts +12 -0
- package/dist/lib/utils.js +40 -0
- package/dist/register.d.ts +10 -0
- package/dist/register.js +40 -0
- package/dist/typings/index.d.ts +1 -0
- package/package.json +69 -98
- package/dist/commonjs/app/extend/agent.d.ts +0 -34
- package/dist/commonjs/app/extend/agent.js +0 -49
- package/dist/commonjs/app/extend/application.d.ts +0 -172
- package/dist/commonjs/app/extend/application.js +0 -450
- package/dist/commonjs/app/middleware/cluster_app_mock.d.ts +0 -3
- package/dist/commonjs/app/middleware/cluster_app_mock.js +0 -101
- package/dist/commonjs/app.d.ts +0 -6
- package/dist/commonjs/app.js +0 -20
- package/dist/commonjs/bootstrap.d.ts +0 -5
- package/dist/commonjs/bootstrap.js +0 -59
- package/dist/commonjs/index.d.ts +0 -77
- package/dist/commonjs/index.js +0 -114
- package/dist/commonjs/lib/agent_handler.d.ts +0 -3
- package/dist/commonjs/lib/agent_handler.js +0 -28
- package/dist/commonjs/lib/app.d.ts +0 -3
- package/dist/commonjs/lib/app.js +0 -301
- package/dist/commonjs/lib/app_handler.d.ts +0 -5
- package/dist/commonjs/lib/app_handler.js +0 -71
- package/dist/commonjs/lib/cluster.d.ts +0 -114
- package/dist/commonjs/lib/cluster.js +0 -337
- package/dist/commonjs/lib/context.d.ts +0 -1
- package/dist/commonjs/lib/context.js +0 -16
- package/dist/commonjs/lib/format_options.d.ts +0 -5
- package/dist/commonjs/lib/format_options.js +0 -100
- package/dist/commonjs/lib/inject_context.d.ts +0 -6
- package/dist/commonjs/lib/inject_context.js +0 -132
- package/dist/commonjs/lib/mock_agent.d.ts +0 -5
- package/dist/commonjs/lib/mock_agent.js +0 -49
- package/dist/commonjs/lib/mock_custom_loader.d.ts +0 -1
- package/dist/commonjs/lib/mock_custom_loader.js +0 -37
- package/dist/commonjs/lib/mock_http_server.d.ts +0 -2
- package/dist/commonjs/lib/mock_http_server.js +0 -24
- package/dist/commonjs/lib/mock_httpclient.d.ts +0 -36
- package/dist/commonjs/lib/mock_httpclient.js +0 -147
- package/dist/commonjs/lib/parallel/agent.d.ts +0 -20
- package/dist/commonjs/lib/parallel/agent.js +0 -125
- package/dist/commonjs/lib/parallel/app.d.ts +0 -20
- package/dist/commonjs/lib/parallel/app.js +0 -115
- package/dist/commonjs/lib/parallel/util.d.ts +0 -3
- package/dist/commonjs/lib/parallel/util.js +0 -77
- package/dist/commonjs/lib/prerequire.d.ts +0 -1
- package/dist/commonjs/lib/prerequire.js +0 -26
- package/dist/commonjs/lib/request_call_function.d.ts +0 -1
- package/dist/commonjs/lib/request_call_function.js +0 -52
- package/dist/commonjs/lib/restore.d.ts +0 -1
- package/dist/commonjs/lib/restore.js +0 -16
- package/dist/commonjs/lib/start-cluster.d.ts +0 -2
- package/dist/commonjs/lib/start-cluster.js +0 -23
- package/dist/commonjs/lib/supertest.d.ts +0 -11
- package/dist/commonjs/lib/supertest.js +0 -48
- package/dist/commonjs/lib/tmp/empty.d.ts +0 -1
- package/dist/commonjs/lib/tmp/empty.js +0 -3
- package/dist/commonjs/lib/types.d.ts +0 -68
- package/dist/commonjs/lib/types.js +0 -3
- package/dist/commonjs/lib/utils.d.ts +0 -9
- package/dist/commonjs/lib/utils.js +0 -80
- package/dist/commonjs/package.json +0 -3
- package/dist/commonjs/register.d.ts +0 -8
- package/dist/commonjs/register.js +0 -80
- package/dist/esm/app/extend/agent.d.ts +0 -34
- package/dist/esm/app/extend/agent.js +0 -46
- package/dist/esm/app/extend/application.d.ts +0 -172
- package/dist/esm/app/extend/application.js +0 -444
- package/dist/esm/app/middleware/cluster_app_mock.d.ts +0 -3
- package/dist/esm/app/middleware/cluster_app_mock.js +0 -99
- package/dist/esm/app.d.ts +0 -6
- package/dist/esm/app.js +0 -17
- package/dist/esm/bootstrap.d.ts +0 -5
- package/dist/esm/bootstrap.js +0 -15
- package/dist/esm/index.d.ts +0 -77
- package/dist/esm/index.js +0 -91
- package/dist/esm/lib/agent_handler.d.ts +0 -3
- package/dist/esm/lib/agent_handler.js +0 -24
- package/dist/esm/lib/app.d.ts +0 -3
- package/dist/esm/lib/app.js +0 -295
- package/dist/esm/lib/app_handler.d.ts +0 -5
- package/dist/esm/lib/app_handler.js +0 -65
- package/dist/esm/lib/cluster.d.ts +0 -114
- package/dist/esm/lib/cluster.js +0 -328
- package/dist/esm/lib/context.d.ts +0 -1
- package/dist/esm/lib/context.js +0 -13
- package/dist/esm/lib/format_options.d.ts +0 -5
- package/dist/esm/lib/format_options.js +0 -94
- package/dist/esm/lib/inject_context.d.ts +0 -6
- package/dist/esm/lib/inject_context.js +0 -126
- package/dist/esm/lib/mock_agent.d.ts +0 -5
- package/dist/esm/lib/mock_agent.js +0 -45
- package/dist/esm/lib/mock_custom_loader.d.ts +0 -1
- package/dist/esm/lib/mock_custom_loader.js +0 -34
- package/dist/esm/lib/mock_http_server.d.ts +0 -2
- package/dist/esm/lib/mock_http_server.js +0 -18
- package/dist/esm/lib/mock_httpclient.d.ts +0 -36
- package/dist/esm/lib/mock_httpclient.js +0 -144
- package/dist/esm/lib/parallel/agent.d.ts +0 -20
- package/dist/esm/lib/parallel/agent.js +0 -117
- package/dist/esm/lib/parallel/app.d.ts +0 -20
- package/dist/esm/lib/parallel/app.js +0 -110
- package/dist/esm/lib/parallel/util.d.ts +0 -3
- package/dist/esm/lib/parallel/util.js +0 -73
- package/dist/esm/lib/prerequire.d.ts +0 -1
- package/dist/esm/lib/prerequire.js +0 -25
- package/dist/esm/lib/request_call_function.d.ts +0 -1
- package/dist/esm/lib/request_call_function.js +0 -47
- package/dist/esm/lib/restore.d.ts +0 -1
- package/dist/esm/lib/restore.js +0 -13
- package/dist/esm/lib/start-cluster.d.ts +0 -2
- package/dist/esm/lib/start-cluster.js +0 -18
- package/dist/esm/lib/supertest.d.ts +0 -11
- package/dist/esm/lib/supertest.js +0 -40
- package/dist/esm/lib/tmp/empty.d.ts +0 -1
- package/dist/esm/lib/tmp/empty.js +0 -2
- package/dist/esm/lib/types.d.ts +0 -68
- package/dist/esm/lib/types.js +0 -2
- package/dist/esm/lib/utils.d.ts +0 -9
- package/dist/esm/lib/utils.js +0 -69
- package/dist/esm/package.json +0 -3
- package/dist/esm/register.d.ts +0 -8
- package/dist/esm/register.js +0 -75
- package/dist/package.json +0 -4
- package/src/app/extend/agent.ts +0 -57
- package/src/app/extend/application.ts +0 -512
- package/src/app/middleware/cluster_app_mock.ts +0 -102
- package/src/app.ts +0 -18
- package/src/bootstrap.ts +0 -25
- package/src/index.ts +0 -112
- package/src/lib/agent_handler.ts +0 -28
- package/src/lib/app.ts +0 -314
- package/src/lib/app_handler.ts +0 -77
- package/src/lib/cluster.ts +0 -363
- package/src/lib/context.ts +0 -14
- package/src/lib/format_options.ts +0 -103
- package/src/lib/inject_context.ts +0 -134
- package/src/lib/mock_agent.ts +0 -57
- package/src/lib/mock_custom_loader.ts +0 -36
- package/src/lib/mock_http_server.ts +0 -19
- package/src/lib/mock_httpclient.ts +0 -183
- package/src/lib/parallel/agent.ts +0 -128
- package/src/lib/parallel/app.ts +0 -123
- package/src/lib/parallel/util.ts +0 -66
- package/src/lib/prerequire.ts +0 -25
- package/src/lib/request_call_function.ts +0 -49
- package/src/lib/restore.ts +0 -14
- package/src/lib/start-cluster.ts +0 -23
- package/src/lib/supertest.ts +0 -45
- package/src/lib/tmp/.gitkeep +0 -0
- package/src/lib/tmp/empty.ts +0 -0
- package/src/lib/utils.ts +0 -82
- package/src/register.ts +0 -80
- package/src/typings/index.d.ts +0 -4
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { debuglog } from 'node:util';
|
|
2
|
-
import assert from 'node:assert';
|
|
3
|
-
import { getApp } from './app_handler.js';
|
|
4
|
-
const MOCHA_SUITE_APP = Symbol.for('mocha#suite#app');
|
|
5
|
-
const debug = debuglog('@eggjs/mock/lib/inject_context');
|
|
6
|
-
/**
|
|
7
|
-
* Monkey patch the mocha instance with egg context.
|
|
8
|
-
*
|
|
9
|
-
* @param {Function} mocha - the module of mocha
|
|
10
|
-
*/
|
|
11
|
-
export function injectContext(mocha) {
|
|
12
|
-
if (mocha._injectContextLoaded) {
|
|
13
|
-
debug('mocha already injected context, skip it');
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
const { Runner } = mocha;
|
|
17
|
-
const runSuite = Runner.prototype.runSuite;
|
|
18
|
-
const runTests = Runner.prototype.runTests;
|
|
19
|
-
function getTestTitle(suite, test) {
|
|
20
|
-
const suiteTitle = suite.root ? 'root suite' : suite.title;
|
|
21
|
-
if (!test) {
|
|
22
|
-
return `"${suiteTitle}"`;
|
|
23
|
-
}
|
|
24
|
-
return `"${suiteTitle} - ${test.title}"`;
|
|
25
|
-
}
|
|
26
|
-
// Inject ctx for before/after.
|
|
27
|
-
Runner.prototype.runSuite = async function (suite, fn) {
|
|
28
|
-
debug('run suite: %s', suite.title);
|
|
29
|
-
let app;
|
|
30
|
-
const self = this;
|
|
31
|
-
try {
|
|
32
|
-
app = await getApp(suite);
|
|
33
|
-
debug('get app: %s', !!app);
|
|
34
|
-
await app.ready();
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
// 可能 app.ready 时报错,不使用失败的 app
|
|
38
|
-
app = null;
|
|
39
|
-
}
|
|
40
|
-
if (!app) {
|
|
41
|
-
// app 不存在,直接跳过,在 beforeEach 的 hook 中会报错
|
|
42
|
-
// 确保不打乱 mocha 的顺序,防止 mocha 内部状态错误
|
|
43
|
-
return runSuite.call(self, suite, fn);
|
|
44
|
-
}
|
|
45
|
-
let errSuite;
|
|
46
|
-
try {
|
|
47
|
-
suite.ctx[MOCHA_SUITE_APP] = app;
|
|
48
|
-
const mockContextFun = app.mockModuleContextScope || app.mockContextScope;
|
|
49
|
-
await mockContextFun.call(app, async function () {
|
|
50
|
-
await new Promise(resolve => {
|
|
51
|
-
runSuite.call(self, suite, (aErrSuite) => {
|
|
52
|
-
errSuite = aErrSuite;
|
|
53
|
-
resolve();
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
catch (err) {
|
|
59
|
-
// mockContext 失败后动态注册一个 beforeAll hook
|
|
60
|
-
// 快速失败,直接阻塞后续用例
|
|
61
|
-
suite.beforeAll('egg-mock-mock-ctx-failed', async () => {
|
|
62
|
-
throw err;
|
|
63
|
-
});
|
|
64
|
-
return runSuite.call(self, suite, (aErrSuite) => {
|
|
65
|
-
return fn(aErrSuite);
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
return fn(errSuite);
|
|
69
|
-
};
|
|
70
|
-
// Inject ctx for beforeEach/it/afterEach.
|
|
71
|
-
// And ctx with before/after is not same as beforeEach/it/afterEach.
|
|
72
|
-
Runner.prototype.runTests = async function (suite, fn) {
|
|
73
|
-
const tests = suite.tests.slice();
|
|
74
|
-
if (!tests.length) {
|
|
75
|
-
return runTests.call(this, suite, fn);
|
|
76
|
-
}
|
|
77
|
-
const app = suite.ctx[MOCHA_SUITE_APP];
|
|
78
|
-
const self = this;
|
|
79
|
-
if (!app) {
|
|
80
|
-
return runTests.call(self, suite, fn);
|
|
81
|
-
}
|
|
82
|
-
function done(errSuite) {
|
|
83
|
-
suite.tests = tests;
|
|
84
|
-
return fn(errSuite);
|
|
85
|
-
}
|
|
86
|
-
async function next(i) {
|
|
87
|
-
const test = tests[i];
|
|
88
|
-
if (!test) {
|
|
89
|
-
return done();
|
|
90
|
-
}
|
|
91
|
-
suite.tests = [test];
|
|
92
|
-
let app;
|
|
93
|
-
try {
|
|
94
|
-
app = await getApp(suite, test);
|
|
95
|
-
assert(app, `not found app for test ${getTestTitle(suite, test)}`);
|
|
96
|
-
await app.ready();
|
|
97
|
-
}
|
|
98
|
-
catch (err) {
|
|
99
|
-
self.fail(test, err);
|
|
100
|
-
return next(i + 1);
|
|
101
|
-
}
|
|
102
|
-
try {
|
|
103
|
-
const mockContextFun = app.mockModuleContextScope || app.mockContextScope;
|
|
104
|
-
await mockContextFun.call(app, async function () {
|
|
105
|
-
return await new Promise(resolve => {
|
|
106
|
-
runTests.call(self, suite, () => {
|
|
107
|
-
return resolve();
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
catch (err) {
|
|
113
|
-
self.fail(test, err);
|
|
114
|
-
return next(i + 1);
|
|
115
|
-
}
|
|
116
|
-
return next(i + 1);
|
|
117
|
-
}
|
|
118
|
-
next(0).catch(err => {
|
|
119
|
-
self.fail(suite, err);
|
|
120
|
-
done(suite);
|
|
121
|
-
});
|
|
122
|
-
};
|
|
123
|
-
mocha._injectContextLoaded = true;
|
|
124
|
-
debug('inject context success');
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0X2NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luamVjdF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFdEQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7QUFFekQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBVTtJQUN0QyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQy9CLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ2pELE9BQU87SUFDVCxDQUFDO0lBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUN6QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUUzQyxTQUFTLFlBQVksQ0FBQyxLQUFVLEVBQUUsSUFBUztRQUN6QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDM0QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLFVBQVUsR0FBRyxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLElBQUksVUFBVSxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztJQUMzQyxDQUFDO0lBRUQsK0JBQStCO0lB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
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { debuglog } from 'node:util';
|
|
2
|
-
import { MockAgent, setGlobalDispatcher, getGlobalDispatcher, } from 'urllib';
|
|
3
|
-
const debug = debuglog('@eggjs/mock/lib/mock_agent');
|
|
4
|
-
globalThis.__mockAgent = null;
|
|
5
|
-
globalThis.__httpClientDispatchers = new Map();
|
|
6
|
-
export function getMockAgent(app) {
|
|
7
|
-
debug('getMockAgent');
|
|
8
|
-
if (!globalThis.__globalDispatcher) {
|
|
9
|
-
globalThis.__globalDispatcher = getGlobalDispatcher();
|
|
10
|
-
debug('create global dispatcher');
|
|
11
|
-
}
|
|
12
|
-
if (app?.httpClient && !globalThis.__httpClientDispatchers.has(app.httpClient)) {
|
|
13
|
-
globalThis.__httpClientDispatchers.set(app.httpClient, app.httpClient.getDispatcher());
|
|
14
|
-
debug('add new httpClient, size: %d', globalThis.__httpClientDispatchers.size);
|
|
15
|
-
}
|
|
16
|
-
if (!globalThis.__mockAgent) {
|
|
17
|
-
globalThis.__mockAgent = new MockAgent();
|
|
18
|
-
setGlobalDispatcher(globalThis.__mockAgent);
|
|
19
|
-
if (typeof app?.httpClient?.setDispatcher === 'function') {
|
|
20
|
-
app.httpClient.setDispatcher(globalThis.__mockAgent);
|
|
21
|
-
}
|
|
22
|
-
debug('create new mockAgent');
|
|
23
|
-
}
|
|
24
|
-
return globalThis.__mockAgent;
|
|
25
|
-
}
|
|
26
|
-
export async function restoreMockAgent() {
|
|
27
|
-
debug('restoreMockAgent start');
|
|
28
|
-
if (globalThis.__globalDispatcher) {
|
|
29
|
-
setGlobalDispatcher(globalThis.__globalDispatcher);
|
|
30
|
-
debug('restore global dispatcher');
|
|
31
|
-
}
|
|
32
|
-
debug('restore httpClient, size: %d', globalThis.__httpClientDispatchers.size);
|
|
33
|
-
for (const [httpClient, dispatcher] of globalThis.__httpClientDispatchers) {
|
|
34
|
-
httpClient.setDispatcher(dispatcher);
|
|
35
|
-
}
|
|
36
|
-
globalThis.__httpClientDispatchers.clear();
|
|
37
|
-
if (globalThis.__mockAgent) {
|
|
38
|
-
const agent = globalThis.__mockAgent;
|
|
39
|
-
globalThis.__mockAgent = null;
|
|
40
|
-
await agent.close();
|
|
41
|
-
debug('close mockAgent');
|
|
42
|
-
}
|
|
43
|
-
debug('restoreMockAgent end');
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbW9ja19hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFDTCxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEdBRXBELE1BQU0sUUFBUSxDQUFDO0FBRWhCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBUXJELFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQzlCLFVBQVUsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQztBQUV2RSxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQWlDO0lBQzVELEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDbkMsVUFBVSxDQUFDLGtCQUFrQixHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFDdEQsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELElBQUksR0FBRyxFQUFFLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0UsVUFBVSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUN2RixLQUFLLENBQUMsOEJBQThCLEVBQUUsVUFBVSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUN6QyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsSUFBSSxPQUFPLEdBQUcsRUFBRSxVQUFVLEVBQUUsYUFBYSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3pELEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQztBQUNoQyxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0I7SUFDcEMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDaEMsSUFBSSxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNuRCxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsS0FBSyxDQUFDLDhCQUE4QixFQUFFLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRSxLQUFLLE1BQU0sQ0FBRSxVQUFVLEVBQUUsVUFBVSxDQUFFLElBQUksVUFBVSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDNUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsVUFBVSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNDLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7UUFDckMsVUFBVSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDOUIsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2hDLENBQUMifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function setCustomLoader(app: any): void;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { debuglog } from 'node:util';
|
|
2
|
-
const debug = debuglog('@eggjs/mock/lib/mock_custom_loader');
|
|
3
|
-
export function setCustomLoader(app) {
|
|
4
|
-
const customLoader = app.config.customLoader;
|
|
5
|
-
if (!customLoader)
|
|
6
|
-
return;
|
|
7
|
-
for (const field of Object.keys(customLoader)) {
|
|
8
|
-
const loaderConfig = Object.assign({}, customLoader[field]);
|
|
9
|
-
loaderConfig.field = field;
|
|
10
|
-
addMethod(loaderConfig);
|
|
11
|
-
}
|
|
12
|
-
function addMethod(loaderConfig) {
|
|
13
|
-
const field = loaderConfig.field;
|
|
14
|
-
const appMethodName = 'mock' + field.replace(/^[a-z]/i, s => s.toUpperCase());
|
|
15
|
-
if (app[appMethodName]) {
|
|
16
|
-
app.coreLogger.warn('Can\'t override app.%s', appMethodName);
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
debug('[addMethod] %s => %j', appMethodName, loaderConfig);
|
|
20
|
-
app[appMethodName] = function (service, methodName, fn) {
|
|
21
|
-
if (typeof service === 'string') {
|
|
22
|
-
const arr = service.split('.');
|
|
23
|
-
service = loaderConfig.inject === 'ctx' ? this[field + 'Classes'] : this[field];
|
|
24
|
-
for (const key of arr) {
|
|
25
|
-
service = service[key];
|
|
26
|
-
}
|
|
27
|
-
service = service.prototype || service;
|
|
28
|
-
}
|
|
29
|
-
this._mockFn(service, methodName, fn);
|
|
30
|
-
return this;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19jdXN0b21fbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tb2NrX2N1c3RvbV9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUU3RCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQVE7SUFDdEMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDN0MsSUFBSSxDQUFDLFlBQVk7UUFBRSxPQUFPO0lBRTFCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVELFlBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzNCLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUyxTQUFTLENBQUMsWUFBaUI7UUFDbEMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQWUsQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5RSxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdELE9BQU87UUFDVCxDQUFDO1FBQ0QsS0FBSyxDQUFDLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMzRCxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsVUFBUyxPQUFZLEVBQUUsVUFBa0IsRUFBRSxFQUFPO1lBQ3JFLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLE9BQU8sR0FBRyxZQUFZLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoRixLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUN0QixPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QixDQUFDO2dCQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztZQUN6QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import http from 'node:http';
|
|
2
|
-
const SERVER = Symbol('http_server');
|
|
3
|
-
export function createServer(app) {
|
|
4
|
-
let server = app[SERVER] || app.callback();
|
|
5
|
-
if (typeof server === 'function') {
|
|
6
|
-
server = http.createServer(server);
|
|
7
|
-
// cache server, avoid create many times
|
|
8
|
-
app[SERVER] = server;
|
|
9
|
-
if (!app.server) {
|
|
10
|
-
app.server = server;
|
|
11
|
-
}
|
|
12
|
-
// emit server event just like egg-cluster does
|
|
13
|
-
// https://github.com/eggjs/egg-cluster/blob/master/lib/app_worker.js#L52
|
|
14
|
-
app.emit('server', server);
|
|
15
|
-
}
|
|
16
|
-
return server;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19odHRwX3NlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbW9ja19odHRwX3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQWdCLE1BQU0sV0FBVyxDQUFDO0FBRXpDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUVyQyxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQVE7SUFDbkMsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLHdDQUF3QztRQUN4QyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDdEIsQ0FBQztRQUNELCtDQUErQztRQUMvQyx5RUFBeUU7UUFDekUsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMifQ==
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { Dispatcher, Headers, BodyInit } from 'urllib';
|
|
2
|
-
export interface MockResultOptions {
|
|
3
|
-
data: string | Buffer | Record<string, any>;
|
|
4
|
-
/**
|
|
5
|
-
* http status
|
|
6
|
-
*/
|
|
7
|
-
status?: number;
|
|
8
|
-
/**
|
|
9
|
-
* response header
|
|
10
|
-
*/
|
|
11
|
-
headers?: Record<string, string>;
|
|
12
|
-
/**
|
|
13
|
-
* delay the associated reply by a set amount in ms
|
|
14
|
-
*/
|
|
15
|
-
delay?: number;
|
|
16
|
-
/**
|
|
17
|
-
* any matching request will always reply with the defined response indefinitely
|
|
18
|
-
*/
|
|
19
|
-
persist?: boolean;
|
|
20
|
-
/**
|
|
21
|
-
* any matching request will reply with the defined response a fixed amount of times
|
|
22
|
-
*/
|
|
23
|
-
repeats?: number;
|
|
24
|
-
}
|
|
25
|
-
export type ResultObject = MockResultOptions;
|
|
26
|
-
export interface MockResponseCallbackOptions {
|
|
27
|
-
path: string;
|
|
28
|
-
method: string;
|
|
29
|
-
headers?: Headers | Record<string, string>;
|
|
30
|
-
origin?: string;
|
|
31
|
-
body?: BodyInit | Dispatcher.DispatchOptions['body'] | null;
|
|
32
|
-
maxRedirections?: number;
|
|
33
|
-
}
|
|
34
|
-
export type MockResultFunction = (url: string, options: MockResponseCallbackOptions) => MockResultOptions | string;
|
|
35
|
-
export declare function createMockHttpClient(app: any): (mockUrl: string | RegExp, mockMethod: string | string[] | MockResultOptions | MockResultFunction, mockResult?: MockResultOptions | MockResultFunction | string) => void;
|
|
36
|
-
export type MockHttpClientMethod = ReturnType<typeof createMockHttpClient>;
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { mm } from 'mm';
|
|
2
|
-
import { extend } from 'extend2';
|
|
3
|
-
import { getMockAgent } from './mock_agent.js';
|
|
4
|
-
function normalizeResult(result) {
|
|
5
|
-
if (typeof result === 'string') {
|
|
6
|
-
result = { data: result };
|
|
7
|
-
}
|
|
8
|
-
if (!result.status) {
|
|
9
|
-
result.status = 200;
|
|
10
|
-
}
|
|
11
|
-
result.data = result.data || '';
|
|
12
|
-
if (Buffer.isBuffer(result.data)) {
|
|
13
|
-
// do nothing
|
|
14
|
-
}
|
|
15
|
-
else if (typeof result.data === 'object') {
|
|
16
|
-
// json
|
|
17
|
-
result.data = Buffer.from(JSON.stringify(result.data));
|
|
18
|
-
}
|
|
19
|
-
else if (typeof result.data === 'string') {
|
|
20
|
-
// string
|
|
21
|
-
result.data = Buffer.from(result.data);
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
throw new Error('`mockResult.data` must be buffer, string or json');
|
|
25
|
-
}
|
|
26
|
-
result.headers = result.headers ?? {};
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
const MOCK_CONFIGS = Symbol('MOCK_CONFIGS');
|
|
30
|
-
const MOCK_CONFIG_INDEX = Symbol('MOCK_CONFIG_INDEX');
|
|
31
|
-
export function createMockHttpClient(app) {
|
|
32
|
-
/**
|
|
33
|
-
* mock httpclient
|
|
34
|
-
* @function mockHttpclient
|
|
35
|
-
* @param {String} mockUrl - url
|
|
36
|
-
* @param {String|Array} mockMethod - http method, default is '*'
|
|
37
|
-
* @param {Object|Function} mockResult - you data
|
|
38
|
-
* - data - buffer / string / json
|
|
39
|
-
* - status - http status
|
|
40
|
-
* - headers - response header
|
|
41
|
-
* - delay - delay the associated reply by a set amount in ms.
|
|
42
|
-
* - persist - any matching request will always reply with the defined response indefinitely, default is true
|
|
43
|
-
* - repeats - number, any matching request will reply with the defined response a fixed amount of times
|
|
44
|
-
*/
|
|
45
|
-
return function mockHttpClient(mockUrl, mockMethod, mockResult) {
|
|
46
|
-
let mockMethods = mockMethod;
|
|
47
|
-
if (!mockResult) {
|
|
48
|
-
// app.mockHttpclient(mockUrl, mockResult)
|
|
49
|
-
mockResult = mockMethod;
|
|
50
|
-
mockMethods = ['*'];
|
|
51
|
-
}
|
|
52
|
-
if (!Array.isArray(mockMethods)) {
|
|
53
|
-
mockMethods = [mockMethods];
|
|
54
|
-
}
|
|
55
|
-
mockMethods = mockMethods.map(method => (method || 'GET').toUpperCase());
|
|
56
|
-
// use MockAgent on undici
|
|
57
|
-
let mockConfigs = app[MOCK_CONFIGS];
|
|
58
|
-
if (!mockConfigs) {
|
|
59
|
-
mockConfigs = [];
|
|
60
|
-
mm(app, MOCK_CONFIGS, mockConfigs);
|
|
61
|
-
}
|
|
62
|
-
let mockConfigIndex = -1;
|
|
63
|
-
let origin = mockUrl;
|
|
64
|
-
let originMethod;
|
|
65
|
-
const pathname = mockUrl;
|
|
66
|
-
let pathMethod;
|
|
67
|
-
if (typeof mockUrl === 'string') {
|
|
68
|
-
const urlObject = new URL(mockUrl);
|
|
69
|
-
origin = urlObject.origin;
|
|
70
|
-
const originalPathname = urlObject.pathname;
|
|
71
|
-
pathMethod = path => {
|
|
72
|
-
if (path === originalPathname)
|
|
73
|
-
return true;
|
|
74
|
-
// should match /foo?a=1 including query
|
|
75
|
-
if (path.includes('?'))
|
|
76
|
-
return path.startsWith(originalPathname);
|
|
77
|
-
return false;
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
else if (mockUrl instanceof RegExp) {
|
|
81
|
-
let requestOrigin = '';
|
|
82
|
-
originMethod = value => {
|
|
83
|
-
requestOrigin = value;
|
|
84
|
-
return true;
|
|
85
|
-
};
|
|
86
|
-
pathMethod = path => {
|
|
87
|
-
for (const config of mockConfigs) {
|
|
88
|
-
if (config.mockUrl.test(`${requestOrigin}${path}`)) {
|
|
89
|
-
mm(app, MOCK_CONFIG_INDEX, config.mockConfigIndex);
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return false;
|
|
94
|
-
};
|
|
95
|
-
mockConfigIndex = mockConfigs.length;
|
|
96
|
-
mockConfigs.push({ mockUrl, mockResult, mockConfigIndex });
|
|
97
|
-
}
|
|
98
|
-
const mockPool = originMethod
|
|
99
|
-
? getMockAgent(app).get(originMethod)
|
|
100
|
-
: getMockAgent(app).get(originMethod ?? origin);
|
|
101
|
-
// persist default is true
|
|
102
|
-
let persist = true;
|
|
103
|
-
if (typeof mockResult === 'object' && typeof mockResult.persist === 'boolean') {
|
|
104
|
-
persist = mockResult.persist;
|
|
105
|
-
}
|
|
106
|
-
mockMethods.forEach(function (method) {
|
|
107
|
-
const mockScope = mockPool.intercept({
|
|
108
|
-
path: pathMethod ?? pathname,
|
|
109
|
-
method: method === '*' ? () => true : method,
|
|
110
|
-
}).reply(options => {
|
|
111
|
-
// not support mockResult as an async function
|
|
112
|
-
const requestUrl = `${options.origin}${options.path}`;
|
|
113
|
-
let mockRequestResult;
|
|
114
|
-
if (mockConfigIndex >= 0) {
|
|
115
|
-
mockResult = mockConfigs[app[MOCK_CONFIG_INDEX]].mockResult;
|
|
116
|
-
mockRequestResult = typeof mockResult === 'function' ? mockResult(requestUrl, options) : mockResult;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
mockRequestResult = typeof mockResult === 'function' ? mockResult(requestUrl, options) : mockResult;
|
|
120
|
-
}
|
|
121
|
-
const result = extend(true, {}, normalizeResult(mockRequestResult));
|
|
122
|
-
return {
|
|
123
|
-
statusCode: result.status,
|
|
124
|
-
data: result.data,
|
|
125
|
-
responseOptions: {
|
|
126
|
-
headers: result.headers,
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
});
|
|
130
|
-
if (typeof mockResult === 'object') {
|
|
131
|
-
if (mockResult.delay && mockResult.delay > 0) {
|
|
132
|
-
mockScope.delay(mockResult.delay);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
if (persist) {
|
|
136
|
-
mockScope.persist();
|
|
137
|
-
}
|
|
138
|
-
else if (typeof mockResult === 'object' && mockResult.repeats && mockResult.repeats > 0) {
|
|
139
|
-
mockScope.times(mockResult.repeats);
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19odHRwY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tb2NrX2h0dHBjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLElBQUksQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQXdDL0MsU0FBUyxlQUFlLENBQUMsTUFBa0M7SUFDekQsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDaEMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2pDLGFBQWE7SUFDZixDQUFDO1NBQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0MsT0FBTztRQUNQLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7U0FBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzQyxTQUFTO1FBQ1QsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FB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
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Base } from 'sdk-base';
|
|
2
|
-
import type { EggCore } from '@eggjs/core';
|
|
3
|
-
import { MockOptions, MockApplicationOptions } from '../types.js';
|
|
4
|
-
import { APP_INIT } from './util.js';
|
|
5
|
-
export declare class MockAgent extends Base {
|
|
6
|
-
#private;
|
|
7
|
-
options: MockApplicationOptions;
|
|
8
|
-
baseDir: string;
|
|
9
|
-
[APP_INIT]: boolean;
|
|
10
|
-
_instance: EggCore;
|
|
11
|
-
constructor(options: MockApplicationOptions);
|
|
12
|
-
_init(): Promise<void>;
|
|
13
|
-
on(...args: any[]): this;
|
|
14
|
-
once(...args: any[]): this;
|
|
15
|
-
/**
|
|
16
|
-
* close agent
|
|
17
|
-
*/
|
|
18
|
-
_close(): Promise<void>;
|
|
19
|
-
}
|
|
20
|
-
export declare function createAgent(options: MockOptions): MockAgent;
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { debuglog } from 'node:util';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { Base } from 'sdk-base';
|
|
4
|
-
import { detectPort } from 'detect-port';
|
|
5
|
-
import { importModule } from '@eggjs/utils';
|
|
6
|
-
import { context } from '../context.js';
|
|
7
|
-
import { formatOptions } from '../format_options.js';
|
|
8
|
-
import { sleep, rimraf } from '../utils.js';
|
|
9
|
-
import { setCustomLoader } from '../mock_custom_loader.js';
|
|
10
|
-
import { APP_INIT } from './util.js';
|
|
11
|
-
const debug = debuglog('@eggjs/mock/lib/parallel/agent');
|
|
12
|
-
export class MockAgent extends Base {
|
|
13
|
-
baseDir;
|
|
14
|
-
[APP_INIT] = false;
|
|
15
|
-
#initOnListeners = new Set();
|
|
16
|
-
#initOnceListeners = new Set();
|
|
17
|
-
_instance;
|
|
18
|
-
constructor(options) {
|
|
19
|
-
super({ initMethod: '_init' });
|
|
20
|
-
this.options = options;
|
|
21
|
-
this.baseDir = this.options.baseDir;
|
|
22
|
-
}
|
|
23
|
-
async _init() {
|
|
24
|
-
if (this.options.beforeInit) {
|
|
25
|
-
await this.options.beforeInit(this);
|
|
26
|
-
delete this.options.beforeInit;
|
|
27
|
-
}
|
|
28
|
-
if (this.options.clean !== false) {
|
|
29
|
-
const logDir = path.join(this.options.baseDir, 'logs');
|
|
30
|
-
try {
|
|
31
|
-
await rimraf(logDir);
|
|
32
|
-
}
|
|
33
|
-
catch (err) {
|
|
34
|
-
console.error(`remove log dir ${logDir} failed: ${err.stack}`);
|
|
35
|
-
}
|
|
36
|
-
const runDir = path.join(this.options.baseDir, 'run');
|
|
37
|
-
try {
|
|
38
|
-
await rimraf(runDir);
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
console.error(`remove run dir ${runDir} failed: ${err.stack}`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
this.options.clusterPort = await detectPort();
|
|
45
|
-
process.env.CLUSTER_PORT = String(this.options.clusterPort);
|
|
46
|
-
debug('get clusterPort %s', this.options.clusterPort);
|
|
47
|
-
const { Agent } = await importModule(this.options.framework);
|
|
48
|
-
const agent = this._instance = new Agent({ ...this.options });
|
|
49
|
-
// egg-mock plugin need to override egg context
|
|
50
|
-
Object.assign(agent.context, context);
|
|
51
|
-
setCustomLoader(agent);
|
|
52
|
-
debug('agent instantiate');
|
|
53
|
-
this[APP_INIT] = true;
|
|
54
|
-
debug('this[APP_INIT] = true');
|
|
55
|
-
this.#bindEvents();
|
|
56
|
-
await agent.ready();
|
|
57
|
-
const msg = {
|
|
58
|
-
action: 'egg-ready',
|
|
59
|
-
data: this.options,
|
|
60
|
-
};
|
|
61
|
-
agent.messenger.onMessage(msg);
|
|
62
|
-
debug('agent ready');
|
|
63
|
-
}
|
|
64
|
-
#bindEvents() {
|
|
65
|
-
debug('bind cache events to agent');
|
|
66
|
-
for (const args of this.#initOnListeners) {
|
|
67
|
-
debug('on(%s), use cache and pass to agent', args);
|
|
68
|
-
this._instance.on(args[0], args[1]);
|
|
69
|
-
this.removeListener(args[0], args[1]);
|
|
70
|
-
}
|
|
71
|
-
for (const args of this.#initOnceListeners) {
|
|
72
|
-
debug('once(%s), use cache and pass to agent', args);
|
|
73
|
-
this._instance.once(args[0], args[1]);
|
|
74
|
-
this.removeListener(args[0], args[1]);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
on(...args) {
|
|
78
|
-
if (this[APP_INIT]) {
|
|
79
|
-
debug('on(%s), pass to agent', args);
|
|
80
|
-
this._instance.on(args[0], args[1]);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
debug('on(%s), cache it because agent has not init', args);
|
|
84
|
-
this.#initOnListeners.add(args);
|
|
85
|
-
super.on(args[0], args[1]);
|
|
86
|
-
}
|
|
87
|
-
return this;
|
|
88
|
-
}
|
|
89
|
-
once(...args) {
|
|
90
|
-
if (this[APP_INIT]) {
|
|
91
|
-
debug('once(%s), pass to agent', args);
|
|
92
|
-
this._instance.once(args[0], args[1]);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
debug('once(%s), cache it because agent has not init', args);
|
|
96
|
-
this.#initOnceListeners.add(args);
|
|
97
|
-
super.on(args[0], args[1]);
|
|
98
|
-
}
|
|
99
|
-
return this;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* close agent
|
|
103
|
-
*/
|
|
104
|
-
async _close() {
|
|
105
|
-
if (this._instance) {
|
|
106
|
-
await this._instance.close();
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
// when agent init throws an exception, must wait for agent quit gracefully
|
|
110
|
-
await sleep(200);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
export function createAgent(options) {
|
|
115
|
-
return new MockAgent(formatOptions(options));
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3BhcmFsbGVsL2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0FBRXpELE1BQU0sT0FBTyxTQUFVLFNBQVEsSUFBSTtJQUVqQyxPQUFPLENBQVM7SUFDaEIsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbkIsZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQVMsQ0FBQztJQUNwQyxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBUyxDQUFDO0lBQ3RDLFNBQVMsQ0FBVTtJQUVuQixZQUFZLE9BQStCO1FBQ3pDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9B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
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Base } from 'sdk-base';
|
|
2
|
-
import type { EggCore } from '@eggjs/core';
|
|
3
|
-
import { MockOptions, MockApplicationOptions } from '../types.js';
|
|
4
|
-
import { APP_INIT } from './util.js';
|
|
5
|
-
export declare class MockParallelApplication extends Base {
|
|
6
|
-
#private;
|
|
7
|
-
options: MockApplicationOptions;
|
|
8
|
-
baseDir: string;
|
|
9
|
-
[APP_INIT]: boolean;
|
|
10
|
-
_instance: EggCore;
|
|
11
|
-
constructor(options: MockApplicationOptions);
|
|
12
|
-
_init(): Promise<void>;
|
|
13
|
-
on(...args: any[]): this;
|
|
14
|
-
once(...args: any[]): this;
|
|
15
|
-
/**
|
|
16
|
-
* close app
|
|
17
|
-
*/
|
|
18
|
-
_close(): Promise<void>;
|
|
19
|
-
}
|
|
20
|
-
export declare function createApp(initOptions: MockOptions): any;
|