@eggjs/mock 6.0.0-beta.3
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/LICENSE +21 -0
- package/README.md +547 -0
- package/README.zh_CN.md +512 -0
- package/dist/commonjs/app/extend/agent.d.ts +33 -0
- package/dist/commonjs/app/extend/agent.js +49 -0
- package/dist/commonjs/app/extend/application.d.ts +175 -0
- package/dist/commonjs/app/extend/application.js +448 -0
- package/dist/commonjs/app/middleware/cluster_app_mock.d.ts +3 -0
- package/dist/commonjs/app/middleware/cluster_app_mock.js +100 -0
- package/dist/commonjs/app.d.ts +6 -0
- package/dist/commonjs/app.js +20 -0
- package/dist/commonjs/bootstrap.d.ts +4 -0
- package/dist/commonjs/bootstrap.js +58 -0
- package/dist/commonjs/index.d.ts +76 -0
- package/dist/commonjs/index.js +99 -0
- package/dist/commonjs/index.test-d.d.ts +1 -0
- package/dist/commonjs/index.test-d.js +43 -0
- package/dist/commonjs/lib/agent_handler.d.ts +3 -0
- package/dist/commonjs/lib/agent_handler.js +28 -0
- package/dist/commonjs/lib/app.d.ts +28 -0
- package/dist/commonjs/lib/app.js +303 -0
- package/dist/commonjs/lib/app_handler.d.ts +5 -0
- package/dist/commonjs/lib/app_handler.js +67 -0
- package/dist/commonjs/lib/cluster.d.ts +114 -0
- package/dist/commonjs/lib/cluster.js +337 -0
- package/dist/commonjs/lib/context.d.ts +1 -0
- package/dist/commonjs/lib/context.js +16 -0
- package/dist/commonjs/lib/format_options.d.ts +5 -0
- package/dist/commonjs/lib/format_options.js +100 -0
- package/dist/commonjs/lib/inject_context.d.ts +6 -0
- package/dist/commonjs/lib/inject_context.js +132 -0
- package/dist/commonjs/lib/mock_agent.d.ts +5 -0
- package/dist/commonjs/lib/mock_agent.js +49 -0
- package/dist/commonjs/lib/mock_custom_loader.d.ts +1 -0
- package/dist/commonjs/lib/mock_custom_loader.js +37 -0
- package/dist/commonjs/lib/mock_http_server.d.ts +2 -0
- package/dist/commonjs/lib/mock_http_server.js +24 -0
- package/dist/commonjs/lib/mock_httpclient.d.ts +35 -0
- package/dist/commonjs/lib/mock_httpclient.js +147 -0
- package/dist/commonjs/lib/parallel/agent.d.ts +20 -0
- package/dist/commonjs/lib/parallel/agent.js +125 -0
- package/dist/commonjs/lib/parallel/app.d.ts +20 -0
- package/dist/commonjs/lib/parallel/app.js +115 -0
- package/dist/commonjs/lib/parallel/util.d.ts +3 -0
- package/dist/commonjs/lib/parallel/util.js +77 -0
- package/dist/commonjs/lib/prerequire.d.ts +1 -0
- package/dist/commonjs/lib/prerequire.js +26 -0
- package/dist/commonjs/lib/request_call_function.d.ts +1 -0
- package/dist/commonjs/lib/request_call_function.js +52 -0
- package/dist/commonjs/lib/restore.d.ts +1 -0
- package/dist/commonjs/lib/restore.js +16 -0
- package/dist/commonjs/lib/start-cluster.d.ts +2 -0
- package/dist/commonjs/lib/start-cluster.js +23 -0
- package/dist/commonjs/lib/supertest.d.ts +11 -0
- package/dist/commonjs/lib/supertest.js +48 -0
- package/dist/commonjs/lib/tmp/empty.d.ts +1 -0
- package/dist/commonjs/lib/tmp/empty.js +3 -0
- package/dist/commonjs/lib/types.d.ts +60 -0
- package/dist/commonjs/lib/types.js +3 -0
- package/dist/commonjs/lib/utils.d.ts +9 -0
- package/dist/commonjs/lib/utils.js +80 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/register.d.ts +8 -0
- package/dist/commonjs/register.js +80 -0
- package/dist/esm/app/extend/agent.d.ts +33 -0
- package/dist/esm/app/extend/agent.js +46 -0
- package/dist/esm/app/extend/application.d.ts +175 -0
- package/dist/esm/app/extend/application.js +442 -0
- package/dist/esm/app/middleware/cluster_app_mock.d.ts +3 -0
- package/dist/esm/app/middleware/cluster_app_mock.js +98 -0
- package/dist/esm/app.d.ts +6 -0
- package/dist/esm/app.js +17 -0
- package/dist/esm/bootstrap.d.ts +4 -0
- package/dist/esm/bootstrap.js +16 -0
- package/dist/esm/index.d.ts +76 -0
- package/dist/esm/index.js +90 -0
- package/dist/esm/index.test-d.d.ts +1 -0
- package/dist/esm/index.test-d.js +42 -0
- package/dist/esm/lib/agent_handler.d.ts +3 -0
- package/dist/esm/lib/agent_handler.js +24 -0
- package/dist/esm/lib/app.d.ts +28 -0
- package/dist/esm/lib/app.js +295 -0
- package/dist/esm/lib/app_handler.d.ts +5 -0
- package/dist/esm/lib/app_handler.js +61 -0
- package/dist/esm/lib/cluster.d.ts +114 -0
- package/dist/esm/lib/cluster.js +328 -0
- package/dist/esm/lib/context.d.ts +1 -0
- package/dist/esm/lib/context.js +13 -0
- package/dist/esm/lib/format_options.d.ts +5 -0
- package/dist/esm/lib/format_options.js +94 -0
- package/dist/esm/lib/inject_context.d.ts +6 -0
- package/dist/esm/lib/inject_context.js +126 -0
- package/dist/esm/lib/mock_agent.d.ts +5 -0
- package/dist/esm/lib/mock_agent.js +45 -0
- package/dist/esm/lib/mock_custom_loader.d.ts +1 -0
- package/dist/esm/lib/mock_custom_loader.js +34 -0
- package/dist/esm/lib/mock_http_server.d.ts +2 -0
- package/dist/esm/lib/mock_http_server.js +18 -0
- package/dist/esm/lib/mock_httpclient.d.ts +35 -0
- package/dist/esm/lib/mock_httpclient.js +144 -0
- package/dist/esm/lib/parallel/agent.d.ts +20 -0
- package/dist/esm/lib/parallel/agent.js +117 -0
- package/dist/esm/lib/parallel/app.d.ts +20 -0
- package/dist/esm/lib/parallel/app.js +110 -0
- package/dist/esm/lib/parallel/util.d.ts +3 -0
- package/dist/esm/lib/parallel/util.js +73 -0
- package/dist/esm/lib/prerequire.d.ts +1 -0
- package/dist/esm/lib/prerequire.js +25 -0
- package/dist/esm/lib/request_call_function.d.ts +1 -0
- package/dist/esm/lib/request_call_function.js +47 -0
- package/dist/esm/lib/restore.d.ts +1 -0
- package/dist/esm/lib/restore.js +13 -0
- package/dist/esm/lib/start-cluster.d.ts +2 -0
- package/dist/esm/lib/start-cluster.js +18 -0
- package/dist/esm/lib/supertest.d.ts +11 -0
- package/dist/esm/lib/supertest.js +40 -0
- package/dist/esm/lib/tmp/empty.d.ts +1 -0
- package/dist/esm/lib/tmp/empty.js +2 -0
- package/dist/esm/lib/types.d.ts +60 -0
- package/dist/esm/lib/types.js +2 -0
- package/dist/esm/lib/utils.d.ts +9 -0
- package/dist/esm/lib/utils.js +69 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/register.d.ts +8 -0
- package/dist/esm/register.js +75 -0
- package/dist/package.json +4 -0
- package/package.json +131 -0
- package/src/app/extend/agent.ts +56 -0
- package/src/app/extend/application.ts +512 -0
- package/src/app/middleware/cluster_app_mock.ts +101 -0
- package/src/app.ts +18 -0
- package/src/bootstrap.ts +25 -0
- package/src/index.d.ts +193 -0
- package/src/index.test-d.ts +47 -0
- package/src/index.ts +110 -0
- package/src/lib/agent_handler.ts +28 -0
- package/src/lib/app.ts +313 -0
- package/src/lib/app_handler.ts +69 -0
- package/src/lib/cluster.ts +363 -0
- package/src/lib/context.ts +14 -0
- package/src/lib/format_options.ts +103 -0
- package/src/lib/inject_context.ts +134 -0
- package/src/lib/mock_agent.ts +57 -0
- package/src/lib/mock_custom_loader.ts +36 -0
- package/src/lib/mock_http_server.ts +19 -0
- package/src/lib/mock_httpclient.ts +181 -0
- package/src/lib/parallel/agent.ts +128 -0
- package/src/lib/parallel/app.ts +123 -0
- package/src/lib/parallel/util.ts +66 -0
- package/src/lib/prerequire.ts +25 -0
- package/src/lib/request_call_function.ts +49 -0
- package/src/lib/restore.ts +14 -0
- package/src/lib/start-cluster.ts +23 -0
- package/src/lib/supertest.ts +45 -0
- package/src/lib/tmp/.gitkeep +0 -0
- package/src/lib/tmp/empty.ts +0 -0
- package/src/lib/types.ts +72 -0
- package/src/lib/utils.ts +82 -0
- package/src/register.ts +80 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MockApplication = void 0;
|
|
7
|
+
exports.createApp = createApp;
|
|
8
|
+
const node_util_1 = require("node:util");
|
|
9
|
+
const node_assert_1 = require("node:assert");
|
|
10
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
11
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
12
|
+
const sdk_base_1 = require("sdk-base");
|
|
13
|
+
const detect_port_1 = require("detect-port");
|
|
14
|
+
const utils_1 = require("@eggjs/utils");
|
|
15
|
+
const utils_js_1 = require("./utils.js");
|
|
16
|
+
const format_options_js_1 = require("./format_options.js");
|
|
17
|
+
const context_js_1 = require("./context.js");
|
|
18
|
+
const mock_custom_loader_js_1 = require("./mock_custom_loader.js");
|
|
19
|
+
const mock_http_server_js_1 = require("./mock_http_server.js");
|
|
20
|
+
const debug = (0, node_util_1.debuglog)('@eggjs/mock/lib/app');
|
|
21
|
+
const apps = new Map();
|
|
22
|
+
const APP_INIT = Symbol('appInit');
|
|
23
|
+
const MESSENGER = Symbol('messenger');
|
|
24
|
+
const MOCK_APP_METHOD = [
|
|
25
|
+
'ready',
|
|
26
|
+
'closed',
|
|
27
|
+
'isClosed',
|
|
28
|
+
'close',
|
|
29
|
+
'_agent',
|
|
30
|
+
'_app',
|
|
31
|
+
'on',
|
|
32
|
+
'once',
|
|
33
|
+
'then',
|
|
34
|
+
];
|
|
35
|
+
class MockApplication extends sdk_base_1.Base {
|
|
36
|
+
_agent;
|
|
37
|
+
_app;
|
|
38
|
+
baseDir;
|
|
39
|
+
[APP_INIT] = false;
|
|
40
|
+
_initOnListeners;
|
|
41
|
+
_initOnceListeners;
|
|
42
|
+
constructor(options) {
|
|
43
|
+
super({
|
|
44
|
+
initMethod: '_init',
|
|
45
|
+
...options,
|
|
46
|
+
});
|
|
47
|
+
this.baseDir = options.baseDir;
|
|
48
|
+
this._initOnListeners = new Set();
|
|
49
|
+
this._initOnceListeners = new Set();
|
|
50
|
+
}
|
|
51
|
+
async _init() {
|
|
52
|
+
if (this.options.beforeInit) {
|
|
53
|
+
await this.options.beforeInit(this);
|
|
54
|
+
// init once
|
|
55
|
+
this.options.beforeInit = undefined;
|
|
56
|
+
}
|
|
57
|
+
if (this.options.clean !== false) {
|
|
58
|
+
const logDir = node_path_1.default.join(this.options.baseDir, 'logs');
|
|
59
|
+
try {
|
|
60
|
+
if (node_os_1.default.platform() === 'win32') {
|
|
61
|
+
await (0, utils_js_1.sleep)(1000);
|
|
62
|
+
}
|
|
63
|
+
await (0, utils_js_1.rimraf)(logDir);
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
console.error(`remove log dir ${logDir} failed: ${err.stack}`);
|
|
67
|
+
}
|
|
68
|
+
const runDir = node_path_1.default.join(this.options.baseDir, 'run');
|
|
69
|
+
try {
|
|
70
|
+
if (node_os_1.default.platform() === 'win32') {
|
|
71
|
+
await (0, utils_js_1.sleep)(1000);
|
|
72
|
+
}
|
|
73
|
+
await (0, utils_js_1.rimraf)(runDir);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
console.error(`remove run dir ${runDir} failed: ${err.stack}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
this.options.clusterPort = await (0, detect_port_1.detectPort)();
|
|
80
|
+
debug('get clusterPort %s', this.options.clusterPort);
|
|
81
|
+
const egg = await (0, utils_1.importModule)(this.options.framework);
|
|
82
|
+
(0, node_assert_1.strict)(egg.Agent, `should export Agent class from framework ${this.options.framework}`);
|
|
83
|
+
const Agent = egg.Agent;
|
|
84
|
+
const agent = this._agent = new Agent({ ...this.options });
|
|
85
|
+
debug('agent instantiate');
|
|
86
|
+
await agent.ready();
|
|
87
|
+
debug('agent ready');
|
|
88
|
+
const ApplicationClass = bindMessenger(egg.Application, agent);
|
|
89
|
+
const app = this._app = new ApplicationClass({ ...this.options });
|
|
90
|
+
// https://github.com/eggjs/egg/blob/8bb7c7e7d59d6aeca4b2ed1eb580368dcb731a4d/lib/egg.js#L125
|
|
91
|
+
// egg single mode mount this at start(), so egg-mock should impel it.
|
|
92
|
+
app.agent = agent;
|
|
93
|
+
Reflect.set(agent, 'app', app);
|
|
94
|
+
// egg-mock plugin need to override egg context
|
|
95
|
+
Object.assign(app.context, context_js_1.context);
|
|
96
|
+
debug('app instantiate');
|
|
97
|
+
this[APP_INIT] = true;
|
|
98
|
+
debug('this[APP_INIT] = true');
|
|
99
|
+
this.#bindEvent();
|
|
100
|
+
debug('http server instantiate');
|
|
101
|
+
(0, mock_http_server_js_1.createServer)(app);
|
|
102
|
+
await app.ready();
|
|
103
|
+
// work for config ready
|
|
104
|
+
(0, mock_custom_loader_js_1.setCustomLoader)(app);
|
|
105
|
+
const msg = {
|
|
106
|
+
action: 'egg-ready',
|
|
107
|
+
data: this.options,
|
|
108
|
+
};
|
|
109
|
+
app.messenger.onMessage(msg);
|
|
110
|
+
agent.messenger.onMessage(msg);
|
|
111
|
+
debug('app ready');
|
|
112
|
+
}
|
|
113
|
+
#bindEvent() {
|
|
114
|
+
debug('bind cache events to app');
|
|
115
|
+
for (const args of this._initOnListeners) {
|
|
116
|
+
debug('on(%s), use cache and pass to app', args);
|
|
117
|
+
this._app.on(args[0], args[1]);
|
|
118
|
+
this.removeListener(args[0], args[1]);
|
|
119
|
+
}
|
|
120
|
+
for (const args of this._initOnceListeners) {
|
|
121
|
+
debug('once(%s), use cache and pass to app', args);
|
|
122
|
+
this._app.once(args[0], args[1]);
|
|
123
|
+
this.removeListener(args[0], args[1]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
on(...args) {
|
|
127
|
+
if (this[APP_INIT]) {
|
|
128
|
+
debug('on(%s), pass to app', args);
|
|
129
|
+
this._app.on(args[0], args[1]);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
debug('on(%s), cache it because app has not init', args);
|
|
133
|
+
this._initOnListeners.add(args);
|
|
134
|
+
super.on(args[0], args[1]);
|
|
135
|
+
}
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
once(...args) {
|
|
139
|
+
if (this[APP_INIT]) {
|
|
140
|
+
debug('once(%s), pass to app', args);
|
|
141
|
+
this._app.once(args[0], args[1]);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
debug('once(%s), cache it because app has not init', args);
|
|
145
|
+
this._initOnceListeners.add(args);
|
|
146
|
+
// maybe some edge case bug here
|
|
147
|
+
super.on(args[0], args[1]);
|
|
148
|
+
}
|
|
149
|
+
return this;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* close app
|
|
153
|
+
*/
|
|
154
|
+
async _close() {
|
|
155
|
+
const baseDir = this.baseDir;
|
|
156
|
+
if (this._app) {
|
|
157
|
+
await this._app.close();
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// when app init throws an exception, must wait for app quit gracefully
|
|
161
|
+
await (0, utils_js_1.sleep)(200);
|
|
162
|
+
}
|
|
163
|
+
if (this._agent) {
|
|
164
|
+
await this._agent.close();
|
|
165
|
+
}
|
|
166
|
+
apps.delete(baseDir);
|
|
167
|
+
debug('delete app cache %s, remain %s', baseDir, [...apps.keys()]);
|
|
168
|
+
if (node_os_1.default.platform() === 'win32') {
|
|
169
|
+
await (0, utils_js_1.sleep)(1000);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* @deprecated please use isClosed instead, keep compatible with old version
|
|
174
|
+
*/
|
|
175
|
+
get closed() {
|
|
176
|
+
return this.isClosed;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.MockApplication = MockApplication;
|
|
180
|
+
function createApp(createOptions) {
|
|
181
|
+
const options = (0, format_options_js_1.formatOptions)(createOptions);
|
|
182
|
+
if (options.cache && apps.has(options.baseDir)) {
|
|
183
|
+
const app = apps.get(options.baseDir);
|
|
184
|
+
// return cache when it hasn't been killed
|
|
185
|
+
if (!app.isClosed) {
|
|
186
|
+
debug('use cache app %s', options.baseDir);
|
|
187
|
+
return app;
|
|
188
|
+
}
|
|
189
|
+
// delete the cache when it's closed
|
|
190
|
+
apps.delete(options.baseDir);
|
|
191
|
+
}
|
|
192
|
+
let app = new MockApplication(options);
|
|
193
|
+
app = new Proxy(app, {
|
|
194
|
+
get(target, prop) {
|
|
195
|
+
// don't delegate properties on MockApplication
|
|
196
|
+
if (MOCK_APP_METHOD.includes(prop)) {
|
|
197
|
+
return (0, utils_js_1.getProperty)(target, prop);
|
|
198
|
+
}
|
|
199
|
+
if (!target[APP_INIT]) {
|
|
200
|
+
throw new Error(`can't get ${prop} before ready`);
|
|
201
|
+
}
|
|
202
|
+
// it's asynchronous when agent and app are loading,
|
|
203
|
+
// so should get the properties after loader ready
|
|
204
|
+
debug('proxy handler.get %s', prop);
|
|
205
|
+
return target._app[prop];
|
|
206
|
+
},
|
|
207
|
+
set(target, prop, value) {
|
|
208
|
+
if (MOCK_APP_METHOD.includes(prop))
|
|
209
|
+
return true;
|
|
210
|
+
if (!target[APP_INIT])
|
|
211
|
+
throw new Error(`can't set ${prop} before ready`);
|
|
212
|
+
debug('proxy handler.set %s', prop);
|
|
213
|
+
target._app[prop] = value;
|
|
214
|
+
return true;
|
|
215
|
+
},
|
|
216
|
+
defineProperty(target, prop, descriptor) {
|
|
217
|
+
// can't define properties on MockApplication
|
|
218
|
+
if (MOCK_APP_METHOD.includes(prop))
|
|
219
|
+
return true;
|
|
220
|
+
if (!target[APP_INIT])
|
|
221
|
+
throw new Error(`can't defineProperty ${prop} before ready`);
|
|
222
|
+
debug('proxy handler.defineProperty %s', prop);
|
|
223
|
+
Object.defineProperty(target._app, prop, descriptor);
|
|
224
|
+
return true;
|
|
225
|
+
},
|
|
226
|
+
deleteProperty(target, prop) {
|
|
227
|
+
// can't delete properties on MockApplication
|
|
228
|
+
if (MOCK_APP_METHOD.includes(prop))
|
|
229
|
+
return true;
|
|
230
|
+
if (!target[APP_INIT])
|
|
231
|
+
throw new Error(`can't delete ${prop} before ready`);
|
|
232
|
+
debug('proxy handler.deleteProperty %s', prop);
|
|
233
|
+
delete target._app[prop];
|
|
234
|
+
return true;
|
|
235
|
+
},
|
|
236
|
+
getOwnPropertyDescriptor(target, prop) {
|
|
237
|
+
if (MOCK_APP_METHOD.includes(prop)) {
|
|
238
|
+
return Object.getOwnPropertyDescriptor(target, prop);
|
|
239
|
+
}
|
|
240
|
+
if (!target[APP_INIT]) {
|
|
241
|
+
throw new Error(`can't getOwnPropertyDescriptor ${prop} before ready`);
|
|
242
|
+
}
|
|
243
|
+
debug('proxy handler.getOwnPropertyDescriptor %s', prop);
|
|
244
|
+
return Object.getOwnPropertyDescriptor(target._app, prop);
|
|
245
|
+
},
|
|
246
|
+
getPrototypeOf(target) {
|
|
247
|
+
if (!target[APP_INIT]) {
|
|
248
|
+
throw new Error('can\'t getPrototypeOf before ready');
|
|
249
|
+
}
|
|
250
|
+
debug('proxy handler.getPrototypeOf %s');
|
|
251
|
+
return Object.getPrototypeOf(target._app);
|
|
252
|
+
},
|
|
253
|
+
});
|
|
254
|
+
apps.set(options.baseDir, app);
|
|
255
|
+
return app;
|
|
256
|
+
}
|
|
257
|
+
function bindMessenger(Application, agent) {
|
|
258
|
+
const agentMessenger = agent.messenger;
|
|
259
|
+
return class MessengerApplication extends Application {
|
|
260
|
+
[MESSENGER];
|
|
261
|
+
constructor(options) {
|
|
262
|
+
super(options);
|
|
263
|
+
// enable app to send to a random agent
|
|
264
|
+
this.messenger.sendRandom = (action, data) => {
|
|
265
|
+
this.messenger.sendToAgent(action, data);
|
|
266
|
+
};
|
|
267
|
+
// enable agent to send to a random app
|
|
268
|
+
agentMessenger.on('egg-ready', () => {
|
|
269
|
+
agentMessenger.sendRandom = (action, data) => {
|
|
270
|
+
agentMessenger.sendToApp(action, data);
|
|
271
|
+
return agentMessenger;
|
|
272
|
+
};
|
|
273
|
+
});
|
|
274
|
+
agentMessenger.send = new Proxy(agentMessenger.send, {
|
|
275
|
+
apply: this._sendMessage.bind(this),
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
_sendMessage(_target, _thisArg, [action, data, to]) {
|
|
279
|
+
const appMessenger = this.messenger;
|
|
280
|
+
setImmediate(() => {
|
|
281
|
+
if (to === 'app') {
|
|
282
|
+
appMessenger.onMessage({ action, data });
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
agentMessenger.onMessage({ action, data });
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
get messenger() {
|
|
290
|
+
return this[MESSENGER];
|
|
291
|
+
}
|
|
292
|
+
set messenger(m) {
|
|
293
|
+
m.send = new Proxy(m.send, {
|
|
294
|
+
apply: this._sendMessage.bind(this),
|
|
295
|
+
});
|
|
296
|
+
this[MESSENGER] = m;
|
|
297
|
+
}
|
|
298
|
+
get [Symbol.for('egg#eggPath')]() {
|
|
299
|
+
return node_path_1.default.join((0, utils_js_1.getSourceDirname)(), 'lib/tmp');
|
|
300
|
+
}
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBOExBLDhCQXdFQztBQXRRRCx5Q0FBcUM7QUFDckMsNkNBQStDO0FBQy9DLHNEQUF5QjtBQUN6QiwwREFBNkI7QUFDN0IsdUNBQWdDO0FBQ2hDLDZDQUF5QztBQUV6Qyx3Q0FBNEM7QUFDNUMseUNBQTBFO0FBQzFFLDJEQUFvRDtBQUNwRCw2Q0FBdUM7QUFDdkMsbUVBQTBEO0FBQzFELCtEQUFxRDtBQUdyRCxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU5QyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdEMsTUFBTSxlQUFlLEdBQUc7SUFDdEIsT0FBTztJQUNQLFFBQVE7SUFDUixVQUFVO0lBQ1YsT0FBTztJQUNQLFFBQVE7SUFDUixNQUFNO0lBQ04sSUFBSTtJQUNKLE1BQU07SUFDTixNQUFNO0NBQ1AsQ0FBQztBQUVGLE1BQWEsZUFBZ0IsU0FBUSxlQUFJO0lBQ3ZDLE1BQU0sQ0FBUTtJQUNkLElBQUksQ0FBYztJQUVsQixPQUFPLENBQVM7SUFDaEIsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbkIsZ0JBQWdCLENBQWE7SUFDN0Isa0JBQWtCLENBQWE7SUFFL0IsWUFBWSxPQUErQjtRQUN6QyxLQUFLLENBQUM7WUFDSixVQUFVLEVBQUUsT0FBTztZQUNuQixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksR0FB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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Application from '../app/extend/application.js';
|
|
2
|
+
export declare function setupApp(): Application | undefined;
|
|
3
|
+
export declare function setGetAppCallback(cb: (suite: unknown, test?: unknown) => any): void;
|
|
4
|
+
export declare function getApp(suite?: unknown, test?: unknown): Promise<any>;
|
|
5
|
+
export declare function getBootstrapApp(): Application;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setupApp = setupApp;
|
|
4
|
+
exports.setGetAppCallback = setGetAppCallback;
|
|
5
|
+
exports.getApp = getApp;
|
|
6
|
+
exports.getBootstrapApp = getBootstrapApp;
|
|
7
|
+
const node_util_1 = require("node:util");
|
|
8
|
+
const app_js_1 = require("./parallel/app.js");
|
|
9
|
+
const agent_handler_js_1 = require("./agent_handler.js");
|
|
10
|
+
const app_js_2 = require("./app.js");
|
|
11
|
+
const restore_js_1 = require("./restore.js");
|
|
12
|
+
const utils_js_1 = require("./utils.js");
|
|
13
|
+
const debug = (0, node_util_1.debuglog)('@eggjs/mock/lib/app_handler');
|
|
14
|
+
let app;
|
|
15
|
+
function setupApp() {
|
|
16
|
+
if (app) {
|
|
17
|
+
debug('return exists app');
|
|
18
|
+
return app;
|
|
19
|
+
}
|
|
20
|
+
const options = (0, utils_js_1.getEggOptions)();
|
|
21
|
+
debug('env.ENABLE_MOCHA_PARALLEL: %s, process.env.AUTO_AGENT: %s', process.env.ENABLE_MOCHA_PARALLEL, process.env.AUTO_AGENT);
|
|
22
|
+
if (process.env.ENABLE_MOCHA_PARALLEL && process.env.AUTO_AGENT) {
|
|
23
|
+
// setup agent first
|
|
24
|
+
app = (0, app_js_1.createApp)({
|
|
25
|
+
...options,
|
|
26
|
+
beforeInit: async (parallelApp) => {
|
|
27
|
+
const agent = await (0, agent_handler_js_1.setupAgent)();
|
|
28
|
+
parallelApp.options.clusterPort = agent.options.clusterPort;
|
|
29
|
+
debug('mockParallelApp beforeInit get clusterPort: %s', parallelApp.options.clusterPort);
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
debug('mockParallelApp app: %s', !!app);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
app = (0, app_js_2.createApp)(options);
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
37
|
+
// @ts-ignore
|
|
38
|
+
if (typeof beforeAll === 'function') {
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
40
|
+
// @ts-ignore
|
|
41
|
+
// jest
|
|
42
|
+
beforeAll(() => app.ready());
|
|
43
|
+
}
|
|
44
|
+
if (typeof afterEach === 'function') {
|
|
45
|
+
// mocha and jest
|
|
46
|
+
afterEach(() => app.backgroundTasksFinished());
|
|
47
|
+
afterEach(restore_js_1.restore);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
let getAppCallback;
|
|
52
|
+
function setGetAppCallback(cb) {
|
|
53
|
+
getAppCallback = cb;
|
|
54
|
+
}
|
|
55
|
+
async function getApp(suite, test) {
|
|
56
|
+
if (getAppCallback) {
|
|
57
|
+
return getAppCallback(suite, test);
|
|
58
|
+
}
|
|
59
|
+
if (app) {
|
|
60
|
+
await app.ready();
|
|
61
|
+
}
|
|
62
|
+
return app;
|
|
63
|
+
}
|
|
64
|
+
function getBootstrapApp() {
|
|
65
|
+
return app;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwX2hhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2FwcF9oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsNEJBb0NDO0FBSUQsOENBRUM7QUFFRCx3QkFRQztBQUVELDBDQUVDO0FBcEVELHlDQUFxQztBQUNyQyw4Q0FBbUU7QUFDbkUseURBQWdEO0FBQ2hELHFDQUFxQztBQUNyQyw2Q0FBdUM7QUFDdkMseUNBQTJDO0FBRzNDLE1BQU0sS0FBSyxHQUFHLElBQUEsb0JBQVEsRUFBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBRXRELElBQUksR0FBZ0IsQ0FBQztBQUVyQixTQUFnQixRQUFRO0lBQ3RCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFBLHdCQUFhLEdBQUUsQ0FBQztJQUNoQyxLQUFLLENBQUMsMkRBQTJELEVBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3RCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoRSxvQkFBb0I7UUFDcEIsR0FBRyxHQUFHLElBQUEsa0JBQWlCLEVBQUM7WUFDdEIsR0FBRyxPQUFPO1lBQ1YsVUFBVSxFQUFFLEtBQUssRUFBQyxXQUFXLEVBQUMsRUFBRTtnQkFDOUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLDZCQUFVLEdBQUUsQ0FBQztnQkFDakMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7Z0JBQzVELEtBQUssQ0FBQyxnREFBZ0QsRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNGLENBQUM7U0FDRixDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7U0FBTSxDQUFDO1FBQ04sR0FBRyxHQUFHLElBQUEsa0JBQVMsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUN6Qiw2REFBNkQ7UUFDN0QsYUFBYTtRQUNiLElBQUksT0FBTyxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDcEMsNkRBQTZEO1lBQzdELGFBQWE7WUFDYixPQUFPO1lBQ1AsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3BDLGlCQUFpQjtZQUNqQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztZQUMvQyxTQUFTLENBQUMsb0JBQU8sQ0FBQyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELElBQUksY0FBdUQsQ0FBQztBQUU1RCxTQUFnQixpQkFBaUIsQ0FBQyxFQUEyQztJQUMzRSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLENBQUM7QUFFTSxLQUFLLFVBQVUsTUFBTSxDQUFDLEtBQWUsRUFBRSxJQUFjO0lBQzFELElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkIsT0FBTyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1IsTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQWdCLGVBQWU7SUFDN0IsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIn0=
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Coffee } from 'coffee';
|
|
2
|
+
import type { MockClusterOptions, MockClusterApplicationOptions } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* A cluster version of egg.Application, you can test with supertest
|
|
5
|
+
* @example
|
|
6
|
+
* ```js
|
|
7
|
+
* const mm = require('mm');
|
|
8
|
+
* const request = require('supertest');
|
|
9
|
+
*
|
|
10
|
+
* describe('ClusterApplication', () => {
|
|
11
|
+
* let app;
|
|
12
|
+
* before(function (done) {
|
|
13
|
+
* app = mm.cluster({ baseDir });
|
|
14
|
+
* app.ready(done);
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* after(function () {
|
|
18
|
+
* app.close();
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* it('should 200', function (done) {
|
|
22
|
+
* request(app.callback())
|
|
23
|
+
* .get('/')
|
|
24
|
+
* .expect(200, done);
|
|
25
|
+
* });
|
|
26
|
+
* });
|
|
27
|
+
*/
|
|
28
|
+
export declare class ClusterApplication extends Coffee {
|
|
29
|
+
[key: string | symbol]: any;
|
|
30
|
+
options: MockClusterApplicationOptions;
|
|
31
|
+
port: number;
|
|
32
|
+
baseDir: string;
|
|
33
|
+
closed: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* @class
|
|
36
|
+
* @param {Object} options
|
|
37
|
+
* - {String} baseDir - The directory of the application
|
|
38
|
+
* - {Object} plugins - Custom you plugins
|
|
39
|
+
* - {String} framework - The directory of the egg framework
|
|
40
|
+
* - {Boolean} [cache=true] - Cache application based on baseDir
|
|
41
|
+
* - {Boolean} [coverage=true] - Switch on process coverage, but it'll be slower
|
|
42
|
+
* - {Boolean} [clean=true] - Remove $baseDir/logs
|
|
43
|
+
* - {Object} [opt] - opt pass to coffee, such as { execArgv: ['--debug'] }
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
constructor(options: MockClusterApplicationOptions);
|
|
47
|
+
/**
|
|
48
|
+
* the process that forked
|
|
49
|
+
* @member {ChildProcess}
|
|
50
|
+
*/
|
|
51
|
+
get process(): any;
|
|
52
|
+
/**
|
|
53
|
+
* Compatible API for supertest
|
|
54
|
+
*/
|
|
55
|
+
callback(): this;
|
|
56
|
+
/**
|
|
57
|
+
* Compatible API for supertest
|
|
58
|
+
* @member {String} url
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
61
|
+
get url(): string;
|
|
62
|
+
/**
|
|
63
|
+
* Compatible API for supertest
|
|
64
|
+
*/
|
|
65
|
+
address(): {
|
|
66
|
+
port: number;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Compatible API for supertest
|
|
70
|
+
*/
|
|
71
|
+
listen(): this;
|
|
72
|
+
/**
|
|
73
|
+
* kill the process
|
|
74
|
+
*/
|
|
75
|
+
close(): Promise<void>;
|
|
76
|
+
get isClosed(): boolean;
|
|
77
|
+
get router(): {
|
|
78
|
+
pathFor(url: string): any;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* get app[property] value in app worker
|
|
82
|
+
*/
|
|
83
|
+
getAppInstanceProperty(property: string): any;
|
|
84
|
+
/**
|
|
85
|
+
* collection logger message, then can be use on `expectLog()`
|
|
86
|
+
* it's different from `app.expectLog()`, only support string params.
|
|
87
|
+
*
|
|
88
|
+
* @param {String} [logger] - logger instance name, default is `logger`
|
|
89
|
+
* @function ClusterApplication#expectLog
|
|
90
|
+
*/
|
|
91
|
+
mockLog(logger?: string): void;
|
|
92
|
+
/**
|
|
93
|
+
* expect str in the logger
|
|
94
|
+
* it's different from `app.expectLog()`, only support string params.
|
|
95
|
+
*
|
|
96
|
+
* @param {String} str - test str
|
|
97
|
+
* @param {String} [logger] - logger instance name, default is `logger`
|
|
98
|
+
* @function ClusterApplication#expectLog
|
|
99
|
+
*/
|
|
100
|
+
expectLog(str: string, logger?: string): void;
|
|
101
|
+
/**
|
|
102
|
+
* not expect str in the logger
|
|
103
|
+
* it's different from `app.notExpectLog()`, only support string params.
|
|
104
|
+
*
|
|
105
|
+
* @param {String} str - test str
|
|
106
|
+
* @param {String} [logger] - logger instance name, default is `logger`
|
|
107
|
+
* @function ClusterApplication#notExpectLog
|
|
108
|
+
*/
|
|
109
|
+
notExpectLog(str: string, logger?: string): void;
|
|
110
|
+
httpRequest(): import("./supertest.js").EggTestRequest;
|
|
111
|
+
_callFunctionOnAppWorker(method: string, args?: any[], property?: any, needResult?: boolean): any;
|
|
112
|
+
}
|
|
113
|
+
export declare function createCluster(initOptions?: MockClusterOptions): any;
|
|
114
|
+
export declare function restore(): Promise<void>;
|