@eggjs/mock 7.0.0-beta.20 → 7.0.0-beta.22
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/dist/app/extend/agent.d.ts +33 -38
- package/dist/app/extend/agent.js +46 -5
- package/dist/app/extend/application.d.ts +171 -5
- package/dist/app/extend/application.js +445 -9
- package/dist/app/middleware/cluster_app_mock.d.ts +2 -5
- package/dist/app/middleware/cluster_app_mock.js +99 -96
- package/dist/app.d.ts +5 -9
- package/dist/app.js +18 -17
- package/dist/bootstrap.d.ts +5 -15
- package/dist/bootstrap.js +13 -29
- package/dist/index.d.ts +77 -10
- package/dist/index.js +90 -22
- package/dist/inject_mocha.d.ts +1 -1
- package/dist/inject_mocha.js +35 -23
- package/dist/lib/agent_handler.d.ts +3 -10
- package/dist/lib/agent_handler.js +24 -9
- package/dist/lib/app.d.ts +3 -6
- package/dist/lib/app.js +291 -14
- package/dist/lib/app_handler.d.ts +5 -6
- package/dist/lib/app_handler.js +69 -21
- package/dist/lib/cluster.d.ts +121 -6
- package/dist/lib/cluster.js +340 -7
- package/dist/lib/context.d.ts +1 -4
- package/dist/lib/context.js +11 -3
- package/dist/lib/format_options.d.ts +2 -7
- package/dist/lib/format_options.js +93 -4
- package/dist/lib/inject_context.d.ts +1 -4
- package/dist/lib/inject_context.js +126 -22
- package/dist/lib/mock_agent.d.ts +4 -8
- package/dist/lib/mock_agent.js +45 -3
- package/dist/lib/mock_custom_loader.d.ts +1 -4
- package/dist/lib/mock_custom_loader.js +34 -3
- package/dist/lib/mock_http_server.d.ts +2 -6
- package/dist/lib/mock_http_server.js +18 -3
- package/dist/lib/mock_httpclient.d.ts +36 -2
- package/dist/lib/mock_httpclient.js +146 -4
- package/dist/lib/parallel/agent.d.ts +20 -5
- package/dist/lib/parallel/agent.js +117 -8
- package/dist/lib/parallel/app.d.ts +19 -24
- package/dist/lib/parallel/app.js +111 -9
- package/dist/lib/parallel/util.d.ts +3 -2
- package/dist/lib/parallel/util.js +66 -4
- package/dist/lib/prerequire.d.ts +1 -1
- package/dist/lib/prerequire.js +25 -1
- package/dist/lib/request_call_function.d.ts +1 -1
- package/dist/lib/request_call_function.js +47 -34
- package/dist/lib/restore.d.ts +1 -2
- package/dist/lib/restore.js +13 -9
- package/dist/lib/start-cluster.d.ts +2 -1
- package/dist/lib/start-cluster.js +14 -15
- package/dist/lib/supertest.d.ts +11 -2
- package/dist/lib/supertest.js +40 -5
- package/dist/lib/tmp/empty.d.ts +1 -1
- package/dist/lib/tmp/empty.js +2 -1
- package/dist/lib/types.d.ts +72 -3
- package/dist/lib/types.js +2 -3
- package/dist/lib/utils.d.ts +8 -11
- package/dist/lib/utils.js +69 -3
- package/dist/register.d.ts +7 -11
- package/dist/register.js +41 -55
- package/package.json +7 -7
- package/dist/agent-BKYkjoCx.js +0 -111
- package/dist/agent-CHCe8tnW.d.ts +0 -24
- package/dist/agent-DZ_fHoxJ.js +0 -48
- package/dist/agent_handler-DeUtoRVT.js +0 -26
- package/dist/app-6Bn3F5Uw.js +0 -252
- package/dist/app-CoypamK1.js +0 -99
- package/dist/app-l47a-gqT.d.ts +0 -7
- package/dist/app_handler-CkiK6fyC.js +0 -55
- package/dist/app_handler-Gp5J9X-v.d.ts +0 -9
- package/dist/application-BPpvw5dg.d.ts +0 -175
- package/dist/application-LrKwuOKn.js +0 -385
- package/dist/cluster-CA_hr9eV.js +0 -283
- package/dist/cluster-RTfUwmUd.d.ts +0 -126
- package/dist/context-BIduDy1M.js +0 -10
- package/dist/format_options-LRnReKde.js +0 -65
- package/dist/index-BtBMDZg8.d.ts +0 -78
- package/dist/inject_context-BxpcF-ds.js +0 -106
- package/dist/inject_mocha-BVf8v6El.js +0 -38
- package/dist/inject_mocha-Daf1Aj8M.d.ts +0 -1
- package/dist/mock_agent-CxT7Q0_N.js +0 -45
- package/dist/mock_custom_loader-f_tHRojG.js +0 -35
- package/dist/mock_http_server-De0r07gr.js +0 -17
- package/dist/mock_httpclient-1EgQkMxi.d.ts +0 -40
- package/dist/mock_httpclient-B6UVI7GS.js +0 -110
- package/dist/restore-BL0cE0KG.d.ts +0 -4
- package/dist/restore-CVQYXquh.js +0 -16
- package/dist/src-D22EjdGo.js +0 -47
- package/dist/supertest-BIds28yL.d.ts +0 -16
- package/dist/supertest-Cg412Los.js +0 -39
- package/dist/types-CPNMyF89.js +0 -1
- package/dist/types-CjZ-JeCo.d.ts +0 -75
- package/dist/typings/index.d.ts +0 -1
- package/dist/util-1xYBaaoh.d.ts +0 -6
- package/dist/util-BpppqTXv.js +0 -59
- package/dist/utils-MhP_Krx1.js +0 -40
|
@@ -1,9 +1,445 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
2
|
+
import http, { IncomingMessage } from 'node:http';
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import assert from 'node:assert';
|
|
5
|
+
import mergeDescriptors from 'merge-descriptors';
|
|
6
|
+
import { isAsyncFunction, isObject } from 'is-type-of';
|
|
7
|
+
import { mock, restore } from 'mm';
|
|
8
|
+
import { Transport, Logger } from 'egg-logger';
|
|
9
|
+
import { Application } from 'egg';
|
|
10
|
+
import { getMockAgent, restoreMockAgent } from "../../lib/mock_agent.js";
|
|
11
|
+
import { createMockHttpClient, } from "../../lib/mock_httpclient.js";
|
|
12
|
+
import { request as supertestRequest, EggTestRequest } from "../../lib/supertest.js";
|
|
13
|
+
import {} from "../../lib/types.js";
|
|
14
|
+
const debug = debuglog('egg/mock/app/extend/application');
|
|
15
|
+
const ORIGIN_TYPES = Symbol('@eggjs/mock originTypes');
|
|
16
|
+
const BACKGROUND_TASKS = Symbol('Application#backgroundTasks');
|
|
17
|
+
const REUSED_CTX = Symbol('Context#reusedInSuite');
|
|
18
|
+
export default class ApplicationUnittest extends Application {
|
|
19
|
+
_mockHttpClient;
|
|
20
|
+
/**
|
|
21
|
+
* mock Context
|
|
22
|
+
* @function App#mockContext
|
|
23
|
+
* @param {Object} data - ctx data
|
|
24
|
+
* @param {Object} [options] - mock ctx options
|
|
25
|
+
* @example
|
|
26
|
+
* ```js
|
|
27
|
+
* const ctx = app.mockContext({
|
|
28
|
+
* user: {
|
|
29
|
+
* name: 'Jason'
|
|
30
|
+
* }
|
|
31
|
+
* });
|
|
32
|
+
* console.log(ctx.user.name); // Jason
|
|
33
|
+
*
|
|
34
|
+
* // controller
|
|
35
|
+
* module.exports = function*() {
|
|
36
|
+
* this.body = this.user.name;
|
|
37
|
+
* };
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
mockContext(data, options) {
|
|
41
|
+
data = data ?? {};
|
|
42
|
+
function mockRequest(req) {
|
|
43
|
+
for (const key in data?.headers) {
|
|
44
|
+
mock(req.headers, key, data.headers[key]);
|
|
45
|
+
mock(req.headers, key.toLowerCase(), data.headers[key]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// try to use app.options.mockCtxStorage first
|
|
49
|
+
const mockCtxStorage = this.options.mockCtxStorage ?? true;
|
|
50
|
+
options = Object.assign({ mockCtxStorage }, options);
|
|
51
|
+
if ('_customMockContext' in this && typeof this._customMockContext === 'function') {
|
|
52
|
+
this._customMockContext(data);
|
|
53
|
+
}
|
|
54
|
+
// 使用者自定义mock,可以覆盖上面的 mock
|
|
55
|
+
for (const key in data) {
|
|
56
|
+
mock(this.context, key, data[key]);
|
|
57
|
+
}
|
|
58
|
+
const req = this.mockRequest(data);
|
|
59
|
+
const res = new http.ServerResponse(req);
|
|
60
|
+
if (options.reuseCtxStorage !== false) {
|
|
61
|
+
if (this.currentContext && !this.currentContext[REUSED_CTX]) {
|
|
62
|
+
mockRequest(this.currentContext.request.req);
|
|
63
|
+
this.currentContext[REUSED_CTX] = true;
|
|
64
|
+
return this.currentContext;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const ctx = this.createContext(req, res);
|
|
68
|
+
if (options.mockCtxStorage) {
|
|
69
|
+
mock(this.ctxStorage, 'getStore', () => ctx);
|
|
70
|
+
}
|
|
71
|
+
return ctx;
|
|
72
|
+
}
|
|
73
|
+
async mockContextScope(fn, data) {
|
|
74
|
+
const ctx = this.mockContext(data, {
|
|
75
|
+
mockCtxStorage: false,
|
|
76
|
+
reuseCtxStorage: false,
|
|
77
|
+
});
|
|
78
|
+
return await this.ctxStorage.run(ctx, async () => {
|
|
79
|
+
return await fn(ctx);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* mock cookie session
|
|
84
|
+
* @function App#mockSession
|
|
85
|
+
* @param {Object} data - session object
|
|
86
|
+
*/
|
|
87
|
+
mockSession(data) {
|
|
88
|
+
if (!data) {
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
if (isObject(data) && !('save' in data)) {
|
|
92
|
+
// keep session.save() work
|
|
93
|
+
Object.defineProperty(data, 'save', {
|
|
94
|
+
value: () => { },
|
|
95
|
+
enumerable: false,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
mock(this.context, 'session', data);
|
|
99
|
+
return this;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Mock service
|
|
103
|
+
* @function App#mockService
|
|
104
|
+
* @param {String} service - name
|
|
105
|
+
* @param {String} methodName - method
|
|
106
|
+
* @param {Object|Function|Error} fn - mock you data
|
|
107
|
+
*/
|
|
108
|
+
mockService(service, methodName, fn) {
|
|
109
|
+
if (typeof service === 'string') {
|
|
110
|
+
const splits = service.split('.');
|
|
111
|
+
service = this.serviceClasses;
|
|
112
|
+
for (const key of splits) {
|
|
113
|
+
service = service[key];
|
|
114
|
+
}
|
|
115
|
+
service = service.prototype || service;
|
|
116
|
+
}
|
|
117
|
+
this._mockFn(service, methodName, fn);
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* mock service that return error
|
|
122
|
+
* @function App#mockServiceError
|
|
123
|
+
* @param {String} service - name
|
|
124
|
+
* @param {String} methodName - method
|
|
125
|
+
* @param {Error} [err] - error information
|
|
126
|
+
*/
|
|
127
|
+
mockServiceError(service, methodName, err) {
|
|
128
|
+
if (typeof err === 'string') {
|
|
129
|
+
err = new Error(err);
|
|
130
|
+
}
|
|
131
|
+
if (!err) {
|
|
132
|
+
// mockServiceError(service, methodName)
|
|
133
|
+
err = new Error(`mock ${methodName} error`);
|
|
134
|
+
}
|
|
135
|
+
this.mockService(service, methodName, err);
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
_mockFn(obj, name, data) {
|
|
139
|
+
const origin = obj[name];
|
|
140
|
+
assert(typeof origin === 'function', `property ${name} in original object must be function`);
|
|
141
|
+
// keep origin properties' type to support mock multi times
|
|
142
|
+
if (!obj[ORIGIN_TYPES])
|
|
143
|
+
obj[ORIGIN_TYPES] = {};
|
|
144
|
+
let type = obj[ORIGIN_TYPES][name];
|
|
145
|
+
if (!type) {
|
|
146
|
+
type = obj[ORIGIN_TYPES][name] = isAsyncFunction(origin) ? 'async' : 'sync';
|
|
147
|
+
}
|
|
148
|
+
if (typeof data === 'function') {
|
|
149
|
+
const fn = data;
|
|
150
|
+
// if original is async function
|
|
151
|
+
// but the mock function is normal function, need to change it return a promise
|
|
152
|
+
if (type === 'async' && !isAsyncFunction(fn)) {
|
|
153
|
+
mock(obj, name, function (...args) {
|
|
154
|
+
return new Promise(resolve => {
|
|
155
|
+
resolve(fn.apply(this, args));
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
mock(obj, name, fn);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (type === 'async') {
|
|
164
|
+
mock(obj, name, () => {
|
|
165
|
+
return new Promise((resolve, reject) => {
|
|
166
|
+
if (data instanceof Error)
|
|
167
|
+
return reject(data);
|
|
168
|
+
resolve(data);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
mock(obj, name, () => {
|
|
174
|
+
if (data instanceof Error) {
|
|
175
|
+
throw data;
|
|
176
|
+
}
|
|
177
|
+
return data;
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* mock request
|
|
182
|
+
* @function App#mockRequest
|
|
183
|
+
* @param {Request} req - mock request
|
|
184
|
+
*/
|
|
185
|
+
mockRequest(req) {
|
|
186
|
+
req = { ...req };
|
|
187
|
+
const headers = req.headers ?? {};
|
|
188
|
+
for (const key in req.headers) {
|
|
189
|
+
headers[key.toLowerCase()] = req.headers[key];
|
|
190
|
+
}
|
|
191
|
+
if (!headers['x-forwarded-for']) {
|
|
192
|
+
headers['x-forwarded-for'] = '127.0.0.1';
|
|
193
|
+
}
|
|
194
|
+
headers['x-mock-request-from'] = '@eggjs/mock';
|
|
195
|
+
req.headers = headers;
|
|
196
|
+
mergeDescriptors(req, {
|
|
197
|
+
query: {},
|
|
198
|
+
querystring: '',
|
|
199
|
+
host: '127.0.0.1',
|
|
200
|
+
hostname: '127.0.0.1',
|
|
201
|
+
protocol: 'http',
|
|
202
|
+
secure: 'false',
|
|
203
|
+
method: 'GET',
|
|
204
|
+
url: '/',
|
|
205
|
+
path: '/',
|
|
206
|
+
socket: {
|
|
207
|
+
remoteAddress: '127.0.0.1',
|
|
208
|
+
remotePort: 7001,
|
|
209
|
+
},
|
|
210
|
+
});
|
|
211
|
+
return req;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* mock cookies
|
|
215
|
+
* @function App#mockCookies
|
|
216
|
+
*/
|
|
217
|
+
mockCookies(cookies) {
|
|
218
|
+
if (!cookies) {
|
|
219
|
+
return this;
|
|
220
|
+
}
|
|
221
|
+
const createContext = this.createContext;
|
|
222
|
+
mock(this, 'createContext', function (req, res) {
|
|
223
|
+
const ctx = createContext.call(this, req, res);
|
|
224
|
+
const getCookie = ctx.cookies.get;
|
|
225
|
+
mock(ctx.cookies, 'get', function (key, opts) {
|
|
226
|
+
if (cookies[key]) {
|
|
227
|
+
return cookies[key];
|
|
228
|
+
}
|
|
229
|
+
return getCookie.call(this, key, opts);
|
|
230
|
+
});
|
|
231
|
+
return ctx;
|
|
232
|
+
});
|
|
233
|
+
return this;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* mock header
|
|
237
|
+
* @function App#mockHeaders
|
|
238
|
+
*/
|
|
239
|
+
mockHeaders(headers) {
|
|
240
|
+
if (!headers) {
|
|
241
|
+
return this;
|
|
242
|
+
}
|
|
243
|
+
const getHeader = this.request.get;
|
|
244
|
+
mock(this.request, 'get', function (field) {
|
|
245
|
+
const value = findHeaders(headers, field);
|
|
246
|
+
if (value)
|
|
247
|
+
return value;
|
|
248
|
+
return getHeader.call(this, field);
|
|
249
|
+
});
|
|
250
|
+
return this;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* mock csrf
|
|
254
|
+
* @function App#mockCsrf
|
|
255
|
+
* @since 1.11
|
|
256
|
+
*/
|
|
257
|
+
mockCsrf() {
|
|
258
|
+
mock(this.context, 'assertCSRF', () => { });
|
|
259
|
+
mock(this.context, 'assertCsrf', () => { });
|
|
260
|
+
return this;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* mock httpclient
|
|
264
|
+
* @alias mockHttpClient
|
|
265
|
+
* @function App#mockHttpclient
|
|
266
|
+
*/
|
|
267
|
+
mockHttpclient(mockUrl, mockMethod, mockResult) {
|
|
268
|
+
return this.mockHttpClient(mockUrl, mockMethod, mockResult);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* mock httpclient
|
|
272
|
+
* @function App#mockHttpClient
|
|
273
|
+
*/
|
|
274
|
+
mockHttpClient(mockUrl, mockMethod, mockResult) {
|
|
275
|
+
if (!this._mockHttpClient) {
|
|
276
|
+
this._mockHttpClient = createMockHttpClient(this);
|
|
277
|
+
}
|
|
278
|
+
this._mockHttpClient(mockUrl, mockMethod, mockResult);
|
|
279
|
+
return this;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* @deprecated Please use app.mockHttpClient instead of app.mockUrllib
|
|
283
|
+
*/
|
|
284
|
+
mockUrllib(mockUrl, mockMethod, mockResult) {
|
|
285
|
+
this.deprecate('[@eggjs/mock] Please use app.mockHttpClient instead of app.mockUrllib');
|
|
286
|
+
return this.mockHttpClient(mockUrl, mockMethod, mockResult);
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* get mock httpclient agent
|
|
290
|
+
* @function App#mockHttpclientAgent
|
|
291
|
+
*/
|
|
292
|
+
mockAgent() {
|
|
293
|
+
return getMockAgent(this);
|
|
294
|
+
}
|
|
295
|
+
async mockAgentRestore() {
|
|
296
|
+
await restoreMockAgent();
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* @see mm#restore
|
|
300
|
+
* @function App#mockRestore
|
|
301
|
+
*/
|
|
302
|
+
async mockRestore() {
|
|
303
|
+
await this.mockAgentRestore();
|
|
304
|
+
restore();
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* @see mm
|
|
308
|
+
* @function App#mm
|
|
309
|
+
*/
|
|
310
|
+
get mm() {
|
|
311
|
+
return mock;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* override loadAgent
|
|
315
|
+
* @function App#loadAgent
|
|
316
|
+
*/
|
|
317
|
+
loadAgent() { }
|
|
318
|
+
/**
|
|
319
|
+
* mock serverEnv
|
|
320
|
+
* @function App#mockEnv
|
|
321
|
+
* @param {String} env - serverEnv
|
|
322
|
+
*/
|
|
323
|
+
mockEnv(env) {
|
|
324
|
+
mock(this.config, 'env', env);
|
|
325
|
+
mock(this.config, 'serverEnv', env);
|
|
326
|
+
debug('mock env: %o', env);
|
|
327
|
+
return this;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* http request helper
|
|
331
|
+
* @function App#httpRequest
|
|
332
|
+
* @return {SupertestRequest} req - supertest request
|
|
333
|
+
* @see https://github.com/visionmedia/supertest
|
|
334
|
+
*/
|
|
335
|
+
httpRequest() {
|
|
336
|
+
return supertestRequest(this);
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* collection logger message, then can be use on `expectLog()`
|
|
340
|
+
* @param {String|Logger} [logger] - logger instance, default is `app.logger`
|
|
341
|
+
* @function App#mockLog
|
|
342
|
+
*/
|
|
343
|
+
mockLog(logger) {
|
|
344
|
+
logger = logger ?? this.logger;
|
|
345
|
+
if (typeof logger === 'string') {
|
|
346
|
+
logger = this.getLogger(logger);
|
|
347
|
+
}
|
|
348
|
+
// make sure mock once
|
|
349
|
+
if ('_mockLogs' in logger && logger._mockLogs)
|
|
350
|
+
return;
|
|
351
|
+
const transport = new Transport(logger.options);
|
|
352
|
+
// https://github.com/eggjs/egg-logger/blob/master/lib/logger.js#L64
|
|
353
|
+
const log = logger.log;
|
|
354
|
+
const mockLogs = [];
|
|
355
|
+
mock(logger, '_mockLogs', mockLogs);
|
|
356
|
+
mock(logger, 'log', (level, args, meta) => {
|
|
357
|
+
const message = transport.log(level, args, meta);
|
|
358
|
+
mockLogs.push(message);
|
|
359
|
+
log.apply(logger, [level, args, meta]);
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
__checkExpectLog(expectOrNot, str, logger) {
|
|
363
|
+
logger = logger || this.logger;
|
|
364
|
+
if (typeof logger === 'string') {
|
|
365
|
+
logger = this.getLogger(logger);
|
|
366
|
+
}
|
|
367
|
+
const filepath = logger.options.file;
|
|
368
|
+
let content;
|
|
369
|
+
if ('_mockLogs' in logger && logger._mockLogs) {
|
|
370
|
+
content = logger._mockLogs.join('\n');
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
content = fs.readFileSync(filepath, 'utf8');
|
|
374
|
+
}
|
|
375
|
+
let match;
|
|
376
|
+
let type;
|
|
377
|
+
if (str instanceof RegExp) {
|
|
378
|
+
match = str.test(content);
|
|
379
|
+
type = 'RegExp';
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
match = content.includes(String(str));
|
|
383
|
+
type = 'String';
|
|
384
|
+
}
|
|
385
|
+
if (expectOrNot) {
|
|
386
|
+
assert(match, `Can't find ${type}:"${str}" in ${filepath}, log content: ...${content.substring(content.length - 500)}`);
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
assert(!match, `Find ${type}:"${str}" in ${filepath}, log content: ...${content.substring(content.length - 500)}`);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* expect str/regexp in the logger, if your server disk is slow, please call `mockLog()` first.
|
|
394
|
+
* @param {String|RegExp} str - test str or regexp
|
|
395
|
+
* @param {String|Logger} [logger] - logger instance, default is `ctx.logger`
|
|
396
|
+
* @function App#expectLog
|
|
397
|
+
*/
|
|
398
|
+
expectLog(str, logger) {
|
|
399
|
+
this.__checkExpectLog(true, str, logger);
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* not expect str/regexp in the logger, if your server disk is slow, please call `mockLog()` first.
|
|
403
|
+
* @param {String|RegExp} str - test str or regexp
|
|
404
|
+
* @param {String|Logger} [logger] - logger instance, default is `ctx.logger`
|
|
405
|
+
* @function App#notExpectLog
|
|
406
|
+
*/
|
|
407
|
+
notExpectLog(str, logger) {
|
|
408
|
+
this.__checkExpectLog(false, str, logger);
|
|
409
|
+
}
|
|
410
|
+
async backgroundTasksFinished() {
|
|
411
|
+
const tasks = this._backgroundTasks;
|
|
412
|
+
debug('waiting %d background tasks', tasks.length);
|
|
413
|
+
if (tasks.length === 0)
|
|
414
|
+
return;
|
|
415
|
+
this._backgroundTasks = [];
|
|
416
|
+
await Promise.all(tasks);
|
|
417
|
+
debug('finished %d background tasks', tasks.length);
|
|
418
|
+
if (this._backgroundTasks.length) {
|
|
419
|
+
debug('new background tasks created: %s', this._backgroundTasks.length);
|
|
420
|
+
await this.backgroundTasksFinished();
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
get _backgroundTasks() {
|
|
424
|
+
if (!this[BACKGROUND_TASKS]) {
|
|
425
|
+
this[BACKGROUND_TASKS] = [];
|
|
426
|
+
}
|
|
427
|
+
return this[BACKGROUND_TASKS];
|
|
428
|
+
}
|
|
429
|
+
set _backgroundTasks(tasks) {
|
|
430
|
+
this[BACKGROUND_TASKS] = tasks;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
function findHeaders(headers, key) {
|
|
434
|
+
if (!headers || !key) {
|
|
435
|
+
return null;
|
|
436
|
+
}
|
|
437
|
+
key = key.toLowerCase();
|
|
438
|
+
for (const headerKey in headers) {
|
|
439
|
+
if (key === headerKey.toLowerCase()) {
|
|
440
|
+
return headers[headerKey];
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
return null;
|
|
444
|
+
}
|
|
445
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sSUFBSSxFQUFFLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFFakMsT0FBTyxnQkFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBcUMsTUFBTSxZQUFZLENBQUM7QUFDbEYsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFHaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxvQkFBb0IsR0FJckIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxJQUFJLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JGLE9BQU8sRUFBb0IsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUUxRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUN2RCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBQy9ELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FB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
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { Context, Next } from
|
|
2
|
-
|
|
3
|
-
//#region src/app/middleware/cluster_app_mock.d.ts
|
|
1
|
+
import { Context, type Next } from 'egg';
|
|
4
2
|
declare const _default: () => (ctx: Context, next: Next) => Promise<void>;
|
|
5
|
-
|
|
6
|
-
export { _default as default };
|
|
3
|
+
export default _default;
|