@jaypie/testkit 1.1.2 → 1.1.4
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/jaypie.mock.d.ts +1 -2
- package/dist/jaypie.mock.js +435 -0
- package/dist/jaypie.mock.js.map +1 -0
- package/package.json +2 -3
package/dist/jaypie.mock.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { uuid as originalUuid } from "@jaypie/core";
|
|
2
|
-
import { BadGatewayError as BadGatewayErrorOriginal, BadRequestError as BadRequestErrorOriginal, ConfigurationError as ConfigurationErrorOriginal, ForbiddenError as ForbiddenErrorOriginal, GatewayTimeoutError as GatewayTimeoutErrorOriginal, GoneError as GoneErrorOriginal, IllogicalError as IllogicalErrorOriginal, InternalError as InternalErrorOriginal, MethodNotAllowedError as MethodNotAllowedErrorOriginal, MultiError as MultiErrorOriginal, NotFoundError as NotFoundErrorOriginal, NotImplementedError as NotImplementedErrorOriginal, ProjectError as ProjectErrorOriginal, ProjectMultiError as ProjectMultiErrorOriginal, RejectedError as RejectedErrorOriginal, TeapotError as TeapotErrorOriginal, UnauthorizedError as UnauthorizedErrorOriginal, UnavailableError as UnavailableErrorOriginal, UnhandledError as UnhandledErrorOriginal, UnreachableCodeError as UnreachableCodeErrorOriginal } from "@jaypie/core";
|
|
1
|
+
import { uuid as originalUuid, BadGatewayError as BadGatewayErrorOriginal, BadRequestError as BadRequestErrorOriginal, ConfigurationError as ConfigurationErrorOriginal, ForbiddenError as ForbiddenErrorOriginal, GatewayTimeoutError as GatewayTimeoutErrorOriginal, GoneError as GoneErrorOriginal, IllogicalError as IllogicalErrorOriginal, InternalError as InternalErrorOriginal, MethodNotAllowedError as MethodNotAllowedErrorOriginal, MultiError as MultiErrorOriginal, NotFoundError as NotFoundErrorOriginal, NotImplementedError as NotImplementedErrorOriginal, ProjectError as ProjectErrorOriginal, ProjectMultiError as ProjectMultiErrorOriginal, RejectedError as RejectedErrorOriginal, TeapotError as TeapotErrorOriginal, UnauthorizedError as UnauthorizedErrorOriginal, UnavailableError as UnavailableErrorOriginal, UnhandledError as UnhandledErrorOriginal, UnreachableCodeError as UnreachableCodeErrorOriginal } from "@jaypie/core";
|
|
3
2
|
import { ExpressHandlerParameter, GenericArgs, JaypieHandlerFunction, JaypieHandlerOptions, JaypieHandlerParameter } from "./types/jaypie-testkit";
|
|
4
3
|
import type { SQSMessageResponse } from "@jaypie/aws";
|
|
5
4
|
export * from "@jaypie/aws";
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
import { getMessages as getMessages$1 } from '@jaypie/aws';
|
|
2
|
+
export * from '@jaypie/aws';
|
|
3
|
+
import { JAYPIE, BadGatewayError as BadGatewayError$1, BadRequestError as BadRequestError$1, ConfigurationError as ConfigurationError$1, force, uuid as uuid$1, HTTP, ForbiddenError as ForbiddenError$1, GatewayTimeoutError as GatewayTimeoutError$1, GoneError as GoneError$1, IllogicalError as IllogicalError$1, InternalError as InternalError$1, MethodNotAllowedError as MethodNotAllowedError$1, MultiError as MultiError$1, NotFoundError as NotFoundError$1, NotImplementedError as NotImplementedError$1, ProjectError as ProjectError$1, ProjectMultiError as ProjectMultiError$1, RejectedError as RejectedError$1, TeapotError as TeapotError$1, UnauthorizedError as UnauthorizedError$1, UnavailableError as UnavailableError$1, UnhandledError as UnhandledError$1, UnreachableCodeError as UnreachableCodeError$1, log } from '@jaypie/core';
|
|
4
|
+
export * from '@jaypie/core';
|
|
5
|
+
import { vi, beforeAll } from 'vitest';
|
|
6
|
+
export * from '@jaypie/express';
|
|
7
|
+
export * from '@jaypie/datadog';
|
|
8
|
+
export * from '@jaypie/lambda';
|
|
9
|
+
export * from '@jaypie/mongoose';
|
|
10
|
+
|
|
11
|
+
function mockLogFactory() {
|
|
12
|
+
// Create skeleton of mock objects
|
|
13
|
+
const mock = {
|
|
14
|
+
debug: vi.fn(),
|
|
15
|
+
error: vi.fn(),
|
|
16
|
+
fatal: vi.fn(),
|
|
17
|
+
info: vi.fn(),
|
|
18
|
+
init: vi.fn(),
|
|
19
|
+
lib: vi.fn(),
|
|
20
|
+
tag: vi.fn(),
|
|
21
|
+
trace: vi.fn(),
|
|
22
|
+
untag: vi.fn(),
|
|
23
|
+
var: vi.fn(),
|
|
24
|
+
warn: vi.fn(),
|
|
25
|
+
with: vi.fn(),
|
|
26
|
+
};
|
|
27
|
+
// Fill out nested mocks
|
|
28
|
+
mock.debug.var = mock.var;
|
|
29
|
+
mock.error.var = mock.var;
|
|
30
|
+
mock.fatal.var = mock.var;
|
|
31
|
+
mock.info.var = mock.var;
|
|
32
|
+
mock.trace.var = mock.var;
|
|
33
|
+
mock.warn.var = mock.var;
|
|
34
|
+
// Have modules return correct objects
|
|
35
|
+
mock.init.mockReturnValue(null);
|
|
36
|
+
mock.lib.mockReturnValue(mock);
|
|
37
|
+
mock.with.mockReturnValue(mock);
|
|
38
|
+
// Pin mocks to the module
|
|
39
|
+
mock.mock = {
|
|
40
|
+
debug: mock.debug,
|
|
41
|
+
error: mock.error,
|
|
42
|
+
fatal: mock.fatal,
|
|
43
|
+
info: mock.info,
|
|
44
|
+
init: mock.init,
|
|
45
|
+
lib: mock.lib,
|
|
46
|
+
tag: mock.tag,
|
|
47
|
+
trace: mock.trace,
|
|
48
|
+
untag: mock.untag,
|
|
49
|
+
var: mock.var,
|
|
50
|
+
warn: mock.warn,
|
|
51
|
+
with: mock.with,
|
|
52
|
+
};
|
|
53
|
+
return mock;
|
|
54
|
+
}
|
|
55
|
+
const LOG_METHOD_NAMES = [
|
|
56
|
+
"debug",
|
|
57
|
+
"error",
|
|
58
|
+
"fatal",
|
|
59
|
+
"info",
|
|
60
|
+
"init",
|
|
61
|
+
"lib",
|
|
62
|
+
"tag",
|
|
63
|
+
"trace",
|
|
64
|
+
"untag",
|
|
65
|
+
"var",
|
|
66
|
+
"warn",
|
|
67
|
+
"with",
|
|
68
|
+
];
|
|
69
|
+
const originalLogMethods = new WeakMap();
|
|
70
|
+
function spyLog(log) {
|
|
71
|
+
if (!originalLogMethods.has(log)) {
|
|
72
|
+
const mockLog = mockLogFactory();
|
|
73
|
+
const originalMethods = {};
|
|
74
|
+
LOG_METHOD_NAMES.forEach((method) => {
|
|
75
|
+
originalMethods[method] = log[method];
|
|
76
|
+
log[method] = mockLog[method];
|
|
77
|
+
});
|
|
78
|
+
originalLogMethods.set(log, originalMethods);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
//
|
|
83
|
+
//
|
|
84
|
+
// Setup
|
|
85
|
+
//
|
|
86
|
+
const TAG = JAYPIE.LIB.TESTKIT;
|
|
87
|
+
// Spy on log:
|
|
88
|
+
beforeAll(() => {
|
|
89
|
+
spyLog(log);
|
|
90
|
+
});
|
|
91
|
+
//
|
|
92
|
+
//
|
|
93
|
+
// Mock Functions
|
|
94
|
+
//
|
|
95
|
+
// @jaypie/aws
|
|
96
|
+
const getMessages = vi.fn((...params) => getMessages$1(...params));
|
|
97
|
+
const getSecret = vi.fn(() => {
|
|
98
|
+
return `_MOCK_SECRET_[${TAG}]`;
|
|
99
|
+
});
|
|
100
|
+
const sendBatchMessages = vi.fn(() => {
|
|
101
|
+
return { value: `_MOCK_BATCH_MESSAGES_[${TAG}]` };
|
|
102
|
+
});
|
|
103
|
+
const sendMessage = vi.fn(() => {
|
|
104
|
+
return { value: `_MOCK_MESSAGE_[${TAG}]` };
|
|
105
|
+
});
|
|
106
|
+
// @jaypie/core Errors
|
|
107
|
+
const BadGatewayError = vi.fn((...params) => {
|
|
108
|
+
return new BadGatewayError$1(...params);
|
|
109
|
+
});
|
|
110
|
+
const BadRequestError = vi.fn((...params) => {
|
|
111
|
+
return new BadRequestError$1(...params);
|
|
112
|
+
});
|
|
113
|
+
const ConfigurationError = vi.fn((...params) => {
|
|
114
|
+
return new ConfigurationError$1(...params);
|
|
115
|
+
});
|
|
116
|
+
// @jaypie/core Functions
|
|
117
|
+
const envBoolean = vi.fn(() => {
|
|
118
|
+
return true;
|
|
119
|
+
});
|
|
120
|
+
const jaypieHandler = vi.fn((handler, { setup = [], teardown = [], unavailable = force.boolean(process.env.PROJECT_UNAVAILABLE), validate = [], } = {}) => {
|
|
121
|
+
return async (...args) => {
|
|
122
|
+
let result;
|
|
123
|
+
let thrownError;
|
|
124
|
+
if (unavailable)
|
|
125
|
+
throw UnavailableError();
|
|
126
|
+
validate = force.array(validate);
|
|
127
|
+
for (const validator of validate) {
|
|
128
|
+
if (typeof validator === "function") {
|
|
129
|
+
const valid = await validator(...args);
|
|
130
|
+
if (valid === false) {
|
|
131
|
+
throw new BadRequestError();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
setup = force.array(setup);
|
|
137
|
+
for (const setupFunction of setup) {
|
|
138
|
+
if (typeof setupFunction === "function") {
|
|
139
|
+
await setupFunction(...args);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript
|
|
143
|
+
result = handler(...args);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
thrownError = error;
|
|
147
|
+
}
|
|
148
|
+
teardown = force.array(teardown);
|
|
149
|
+
for (const teardownFunction of teardown) {
|
|
150
|
+
if (typeof teardownFunction === "function") {
|
|
151
|
+
try {
|
|
152
|
+
await teardownFunction(...args);
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
// eslint-disable-next-line no-console
|
|
156
|
+
console.error(error);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (thrownError) {
|
|
161
|
+
throw thrownError;
|
|
162
|
+
}
|
|
163
|
+
return result;
|
|
164
|
+
};
|
|
165
|
+
});
|
|
166
|
+
const sleep = vi.fn(() => {
|
|
167
|
+
return true;
|
|
168
|
+
});
|
|
169
|
+
const uuid = vi.fn(uuid$1);
|
|
170
|
+
// @jaypie/datadog
|
|
171
|
+
const submitMetric = vi.fn(() => {
|
|
172
|
+
return true;
|
|
173
|
+
});
|
|
174
|
+
const submitMetricSet = vi.fn(() => {
|
|
175
|
+
return true;
|
|
176
|
+
});
|
|
177
|
+
// @jaypie/express
|
|
178
|
+
const expressHandler = vi.fn((handlerOrProps, propsOrHandler) => {
|
|
179
|
+
let handler;
|
|
180
|
+
let props;
|
|
181
|
+
if (typeof handlerOrProps === "object" &&
|
|
182
|
+
typeof propsOrHandler === "function") {
|
|
183
|
+
handler = propsOrHandler;
|
|
184
|
+
props = handlerOrProps;
|
|
185
|
+
}
|
|
186
|
+
else if (typeof handlerOrProps === "function") {
|
|
187
|
+
handler = handlerOrProps;
|
|
188
|
+
props = (propsOrHandler || {});
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
throw BadRequestError("handler must be a function");
|
|
192
|
+
}
|
|
193
|
+
// Add locals setup if needed
|
|
194
|
+
if (props.locals &&
|
|
195
|
+
typeof props.locals === "object" &&
|
|
196
|
+
!Array.isArray(props.locals)) {
|
|
197
|
+
const keys = Object.keys(props.locals);
|
|
198
|
+
if (!props.setup)
|
|
199
|
+
props.setup = [];
|
|
200
|
+
props.setup = force.array(props.setup);
|
|
201
|
+
// @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript
|
|
202
|
+
props.setup.unshift((req) => {
|
|
203
|
+
if (!req || typeof req !== "object") {
|
|
204
|
+
throw new BadRequestError("req must be an object");
|
|
205
|
+
}
|
|
206
|
+
// Set req.locals if it doesn't exist
|
|
207
|
+
if (!req.locals)
|
|
208
|
+
req.locals = {};
|
|
209
|
+
if (typeof req.locals !== "object" || Array.isArray(req.locals)) {
|
|
210
|
+
throw new BadRequestError("req.locals must be an object");
|
|
211
|
+
}
|
|
212
|
+
if (!req.locals._jaypie)
|
|
213
|
+
req.locals._jaypie = {};
|
|
214
|
+
});
|
|
215
|
+
const localsSetup = async (localsReq, localsRes) => {
|
|
216
|
+
for (let i = 0; i < keys.length; i += 1) {
|
|
217
|
+
const key = keys[i];
|
|
218
|
+
if (typeof props.locals[key] === "function") {
|
|
219
|
+
localsReq.locals[key] = await props.locals[key](localsReq, localsRes);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
localsReq.locals[key] = props.locals[key];
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
// @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript
|
|
227
|
+
props.setup.push(localsSetup);
|
|
228
|
+
}
|
|
229
|
+
if (props.locals && typeof props.locals !== "object") {
|
|
230
|
+
throw new BadRequestError("props.locals must be an object");
|
|
231
|
+
}
|
|
232
|
+
if (props.locals && Array.isArray(props.locals)) {
|
|
233
|
+
throw new BadRequestError("props.locals must be an object");
|
|
234
|
+
}
|
|
235
|
+
if (props.locals === null) {
|
|
236
|
+
throw new BadRequestError("props.locals must be an object");
|
|
237
|
+
}
|
|
238
|
+
const jaypieFunction = jaypieHandler(handler, props);
|
|
239
|
+
return async (req = {}, res = {}, ...extra) => {
|
|
240
|
+
const status = HTTP.CODE.OK;
|
|
241
|
+
let response;
|
|
242
|
+
let supertestMode = false;
|
|
243
|
+
if (res &&
|
|
244
|
+
typeof res === "object" &&
|
|
245
|
+
"socket" in res &&
|
|
246
|
+
res.constructor.name === "ServerResponse") {
|
|
247
|
+
// Use the response object in supertest mode
|
|
248
|
+
supertestMode = true;
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
response = await jaypieFunction(req, res, ...extra);
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
// In the mock context, if status is a function we are in a "supertest"
|
|
255
|
+
if (supertestMode &&
|
|
256
|
+
typeof res.status === "function") {
|
|
257
|
+
// In theory jaypieFunction has handled all errors
|
|
258
|
+
const errorStatus = error.status ||
|
|
259
|
+
HTTP.CODE.INTERNAL_SERVER_ERROR;
|
|
260
|
+
let errorResponse;
|
|
261
|
+
if (typeof error.json === "function") {
|
|
262
|
+
errorResponse = error.json();
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
// This should never happen
|
|
266
|
+
errorResponse = UnhandledError().json();
|
|
267
|
+
}
|
|
268
|
+
res.status(errorStatus).json(errorResponse);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
// else, res.status is not a function, throw the error
|
|
273
|
+
throw error;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (supertestMode &&
|
|
277
|
+
typeof res.status === "function") {
|
|
278
|
+
if (response) {
|
|
279
|
+
if (typeof response === "object") {
|
|
280
|
+
if (typeof response.json === "function") {
|
|
281
|
+
res.json(response.json());
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
res.status(status).json(response);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
else if (typeof response === "string") {
|
|
288
|
+
try {
|
|
289
|
+
res
|
|
290
|
+
.status(status)
|
|
291
|
+
.json(JSON.parse(response));
|
|
292
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
res.status(status).send(response);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else if (response === true) {
|
|
299
|
+
res.status(HTTP.CODE.CREATED).send();
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
res.status(status).send(response);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
res.status(HTTP.CODE.NO_CONTENT).send();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
return response;
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
});
|
|
314
|
+
// @jaypie/mongoose
|
|
315
|
+
const connect = vi.fn(() => {
|
|
316
|
+
return true;
|
|
317
|
+
});
|
|
318
|
+
const connectFromSecretEnv = vi.fn(() => {
|
|
319
|
+
return true;
|
|
320
|
+
});
|
|
321
|
+
const disconnect = vi.fn(() => {
|
|
322
|
+
return true;
|
|
323
|
+
});
|
|
324
|
+
// Complete the error mocks
|
|
325
|
+
const ForbiddenError = vi.fn((...params) => {
|
|
326
|
+
return new ForbiddenError$1(...params);
|
|
327
|
+
});
|
|
328
|
+
const GatewayTimeoutError = vi.fn((...params) => {
|
|
329
|
+
return new GatewayTimeoutError$1(...params);
|
|
330
|
+
});
|
|
331
|
+
const GoneError = vi.fn((...params) => {
|
|
332
|
+
return new GoneError$1(...params);
|
|
333
|
+
});
|
|
334
|
+
const IllogicalError = vi.fn((...params) => {
|
|
335
|
+
return new IllogicalError$1(...params);
|
|
336
|
+
});
|
|
337
|
+
const InternalError = vi.fn((...params) => {
|
|
338
|
+
return new InternalError$1(...params);
|
|
339
|
+
});
|
|
340
|
+
const MethodNotAllowedError = vi.fn((...params) => {
|
|
341
|
+
return new MethodNotAllowedError$1(...params);
|
|
342
|
+
});
|
|
343
|
+
const MultiError = vi.fn((...params) => {
|
|
344
|
+
return new MultiError$1(...params);
|
|
345
|
+
});
|
|
346
|
+
const NotFoundError = vi.fn((...params) => {
|
|
347
|
+
return new NotFoundError$1(...params);
|
|
348
|
+
});
|
|
349
|
+
const NotImplementedError = vi.fn((...params) => {
|
|
350
|
+
return new NotImplementedError$1(...params);
|
|
351
|
+
});
|
|
352
|
+
const ProjectError = vi.fn((...params) => {
|
|
353
|
+
return new ProjectError$1(...params);
|
|
354
|
+
});
|
|
355
|
+
const ProjectMultiError = vi.fn((...params) => {
|
|
356
|
+
return new ProjectMultiError$1(...params);
|
|
357
|
+
});
|
|
358
|
+
const RejectedError = vi.fn((...params) => {
|
|
359
|
+
return new RejectedError$1(...params);
|
|
360
|
+
});
|
|
361
|
+
const TeapotError = vi.fn((...params) => {
|
|
362
|
+
return new TeapotError$1(...params);
|
|
363
|
+
});
|
|
364
|
+
const UnauthorizedError = vi.fn((...params) => {
|
|
365
|
+
return new UnauthorizedError$1(...params);
|
|
366
|
+
});
|
|
367
|
+
const UnavailableError = vi.fn((...params) => {
|
|
368
|
+
return new UnavailableError$1(...params);
|
|
369
|
+
});
|
|
370
|
+
const UnhandledError = vi.fn((...params) => {
|
|
371
|
+
return new UnhandledError$1(...params);
|
|
372
|
+
});
|
|
373
|
+
const UnreachableCodeError = vi.fn((...params) => {
|
|
374
|
+
return new UnreachableCodeError$1(...params);
|
|
375
|
+
});
|
|
376
|
+
// @jaypie/lambda
|
|
377
|
+
const lambdaHandler = vi.fn((handler, props = {}) => {
|
|
378
|
+
// If handler is an object and options is a function, swap them
|
|
379
|
+
if (typeof handler === "object" && typeof props === "function") {
|
|
380
|
+
const temp = handler;
|
|
381
|
+
handler = props;
|
|
382
|
+
props = temp;
|
|
383
|
+
}
|
|
384
|
+
return async (event, context, ...extra) => {
|
|
385
|
+
return jaypieHandler(handler, props)(event, context, ...extra);
|
|
386
|
+
};
|
|
387
|
+
});
|
|
388
|
+
// Export default for convenience
|
|
389
|
+
var jaypie_mock = {
|
|
390
|
+
// AWS
|
|
391
|
+
getMessages,
|
|
392
|
+
getSecret,
|
|
393
|
+
sendBatchMessages,
|
|
394
|
+
sendMessage,
|
|
395
|
+
// Core
|
|
396
|
+
BadGatewayError,
|
|
397
|
+
BadRequestError,
|
|
398
|
+
ConfigurationError,
|
|
399
|
+
envBoolean,
|
|
400
|
+
ForbiddenError,
|
|
401
|
+
GatewayTimeoutError,
|
|
402
|
+
GoneError,
|
|
403
|
+
HTTP,
|
|
404
|
+
IllogicalError,
|
|
405
|
+
InternalError,
|
|
406
|
+
jaypieHandler,
|
|
407
|
+
MethodNotAllowedError,
|
|
408
|
+
MultiError,
|
|
409
|
+
NotFoundError,
|
|
410
|
+
NotImplementedError,
|
|
411
|
+
ProjectError,
|
|
412
|
+
ProjectMultiError,
|
|
413
|
+
RejectedError,
|
|
414
|
+
sleep,
|
|
415
|
+
TeapotError,
|
|
416
|
+
UnauthorizedError,
|
|
417
|
+
UnavailableError,
|
|
418
|
+
UnhandledError,
|
|
419
|
+
UnreachableCodeError,
|
|
420
|
+
uuid,
|
|
421
|
+
// Datadog
|
|
422
|
+
submitMetric,
|
|
423
|
+
submitMetricSet,
|
|
424
|
+
// Express
|
|
425
|
+
expressHandler,
|
|
426
|
+
// Lambda
|
|
427
|
+
lambdaHandler,
|
|
428
|
+
// Mongoose
|
|
429
|
+
connect,
|
|
430
|
+
connectFromSecretEnv,
|
|
431
|
+
disconnect,
|
|
432
|
+
};
|
|
433
|
+
|
|
434
|
+
export { BadGatewayError, BadRequestError, ConfigurationError, ForbiddenError, GatewayTimeoutError, GoneError, IllogicalError, InternalError, MethodNotAllowedError, MultiError, NotFoundError, NotImplementedError, ProjectError, ProjectMultiError, RejectedError, TeapotError, UnauthorizedError, UnavailableError, UnhandledError, UnreachableCodeError, connect, connectFromSecretEnv, jaypie_mock as default, disconnect, envBoolean, expressHandler, getMessages, getSecret, jaypieHandler, lambdaHandler, sendBatchMessages, sendMessage, sleep, submitMetric, submitMetricSet, uuid };
|
|
435
|
+
//# sourceMappingURL=jaypie.mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jaypie.mock.js","sources":["../src/mockLog.module.ts","../src/jaypie.mock.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Log } from \"@jaypie/core\";\nimport { vi } from \"vitest\";\nimport { LogMock } from \"./types/jaypie-testkit\";\n\nexport function mockLogFactory(): LogMock {\n // Create skeleton of mock objects\n const mock = {\n debug: vi.fn(),\n error: vi.fn(),\n fatal: vi.fn(),\n info: vi.fn(),\n init: vi.fn(),\n lib: vi.fn(),\n tag: vi.fn(),\n trace: vi.fn(),\n untag: vi.fn(),\n var: vi.fn(),\n warn: vi.fn(),\n with: vi.fn(),\n } as LogMock;\n\n // Fill out nested mocks\n mock.debug.var = mock.var;\n mock.error.var = mock.var;\n mock.fatal.var = mock.var;\n mock.info.var = mock.var;\n mock.trace.var = mock.var;\n mock.warn.var = mock.var;\n\n // Have modules return correct objects\n mock.init.mockReturnValue(null);\n mock.lib.mockReturnValue(mock);\n mock.with.mockReturnValue(mock);\n\n // Pin mocks to the module\n mock.mock = {\n debug: mock.debug,\n error: mock.error,\n fatal: mock.fatal,\n info: mock.info,\n init: mock.init,\n lib: mock.lib,\n tag: mock.tag,\n trace: mock.trace,\n untag: mock.untag,\n var: mock.var,\n warn: mock.warn,\n with: mock.with,\n };\n\n return mock;\n}\n\nconst LOG_METHOD_NAMES = [\n \"debug\",\n \"error\",\n \"fatal\",\n \"info\",\n \"init\",\n \"lib\",\n \"tag\",\n \"trace\",\n \"untag\",\n \"var\",\n \"warn\",\n \"with\",\n] as const;\n\nconst originalLogMethods = new WeakMap<Log, Partial<Log>>();\n\nexport function spyLog(log: Log): void {\n if (!originalLogMethods.has(log)) {\n const mockLog = mockLogFactory();\n const originalMethods: Partial<Log> = {};\n\n LOG_METHOD_NAMES.forEach((method) => {\n originalMethods[method] = log[method] as any;\n log[method] = mockLog[method] as any;\n });\n\n originalLogMethods.set(log, originalMethods);\n }\n}\n\nexport function restoreLog(log: Log): void {\n const originalMethods = originalLogMethods.get(log);\n if (originalMethods) {\n LOG_METHOD_NAMES.forEach((method) => {\n if (originalMethods[method]) {\n log[method] = originalMethods[method] as any;\n }\n });\n originalLogMethods.delete(log);\n }\n}\n","import { getMessages as originalGetMessages } from \"@jaypie/aws\";\nimport {\n force,\n Log,\n uuid as originalUuid,\n // Core utilities\n HTTP,\n JAYPIE,\n log,\n // Errors\n BadGatewayError as BadGatewayErrorOriginal,\n BadRequestError as BadRequestErrorOriginal,\n ConfigurationError as ConfigurationErrorOriginal,\n ForbiddenError as ForbiddenErrorOriginal,\n GatewayTimeoutError as GatewayTimeoutErrorOriginal,\n GoneError as GoneErrorOriginal,\n IllogicalError as IllogicalErrorOriginal,\n InternalError as InternalErrorOriginal,\n MethodNotAllowedError as MethodNotAllowedErrorOriginal,\n MultiError as MultiErrorOriginal,\n NotFoundError as NotFoundErrorOriginal,\n NotImplementedError as NotImplementedErrorOriginal,\n ProjectError as ProjectErrorOriginal,\n ProjectMultiError as ProjectMultiErrorOriginal,\n RejectedError as RejectedErrorOriginal,\n TeapotError as TeapotErrorOriginal,\n UnauthorizedError as UnauthorizedErrorOriginal,\n UnavailableError as UnavailableErrorOriginal,\n UnhandledError as UnhandledErrorOriginal,\n UnreachableCodeError as UnreachableCodeErrorOriginal,\n} from \"@jaypie/core\";\nimport { beforeAll, vi } from \"vitest\";\n\nimport {\n ExpressHandlerFunction,\n ExpressHandlerOptions,\n ExpressHandlerParameter,\n GenericArgs,\n JaypieHandlerFunction,\n JaypieHandlerOptions,\n JaypieHandlerParameter,\n JaypieLifecycleOption,\n WithJsonFunction,\n} from \"./types/jaypie-testkit\";\nimport type { SQSMessageResponse } from \"@jaypie/aws\";\nimport { spyLog } from \"./mockLog.module.js\";\nimport type { Response as ExpressResponse } from \"express\";\n\n//\n//\n// Setup\n//\n\nconst TAG = JAYPIE.LIB.TESTKIT;\n\n// Export all the modules from Jaypie packages:\nexport * from \"@jaypie/aws\";\nexport * from \"@jaypie/core\";\nexport * from \"@jaypie/express\";\nexport * from \"@jaypie/datadog\";\nexport * from \"@jaypie/lambda\";\nexport * from \"@jaypie/mongoose\";\n\n// Spy on log:\nbeforeAll(() => {\n spyLog(log as Log);\n});\n\n//\n//\n// Mock Functions\n//\n\n// @jaypie/aws\nexport const getMessages = vi.fn(\n (...params: Parameters<typeof originalGetMessages>) =>\n originalGetMessages(...params),\n);\n\nexport const getSecret = vi.fn((): string => {\n return `_MOCK_SECRET_[${TAG}]`;\n});\n\nexport const sendBatchMessages = vi.fn((): SQSMessageResponse => {\n return { value: `_MOCK_BATCH_MESSAGES_[${TAG}]` };\n});\n\nexport const sendMessage = vi.fn((): SQSMessageResponse => {\n return { value: `_MOCK_MESSAGE_[${TAG}]` };\n});\n\n// @jaypie/core Errors\nexport const BadGatewayError = vi.fn(\n (\n ...params: ConstructorParameters<typeof BadGatewayErrorOriginal>\n ): InstanceType<typeof BadGatewayErrorOriginal> => {\n return new BadGatewayErrorOriginal(...params);\n },\n);\n\nexport const BadRequestError = vi.fn(\n (\n ...params: ConstructorParameters<typeof BadRequestErrorOriginal>\n ): InstanceType<typeof BadRequestErrorOriginal> => {\n return new BadRequestErrorOriginal(...params);\n },\n);\n\nexport const ConfigurationError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ConfigurationErrorOriginal>\n ): InstanceType<typeof ConfigurationErrorOriginal> => {\n return new ConfigurationErrorOriginal(...params);\n },\n);\n\n// @jaypie/core Functions\nexport const envBoolean = vi.fn((): boolean => {\n return true;\n});\n\nexport const jaypieHandler = vi.fn(\n (\n handler: JaypieHandlerFunction,\n {\n setup = [] as JaypieLifecycleOption,\n teardown = [] as JaypieLifecycleOption,\n unavailable = force.boolean(process.env.PROJECT_UNAVAILABLE),\n validate = [] as JaypieLifecycleOption,\n }: JaypieHandlerOptions = {},\n ) => {\n return async (...args: GenericArgs) => {\n let result;\n let thrownError;\n if (unavailable) throw UnavailableError();\n validate = force.array(validate);\n for (const validator of validate) {\n if (typeof validator === \"function\") {\n const valid = await validator(...args);\n if (valid === false) {\n throw new BadRequestError();\n }\n }\n }\n try {\n setup = force.array(setup);\n for (const setupFunction of setup) {\n if (typeof setupFunction === \"function\") {\n await setupFunction(...args);\n }\n }\n // @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript\n result = handler(...args);\n } catch (error) {\n thrownError = error;\n }\n teardown = force.array(teardown);\n for (const teardownFunction of teardown) {\n if (typeof teardownFunction === \"function\") {\n try {\n await teardownFunction(...args);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n }\n if (thrownError) {\n throw thrownError;\n }\n return result;\n };\n },\n);\n\nexport const sleep = vi.fn((): boolean => {\n return true;\n});\n\nexport const uuid = vi.fn(originalUuid);\n\n// @jaypie/datadog\nexport const submitMetric = vi.fn((): boolean => {\n return true;\n});\n\nexport const submitMetricSet = vi.fn((): boolean => {\n return true;\n});\n\n// @jaypie/express\nexport const expressHandler = vi.fn(\n (\n handlerOrProps: ExpressHandlerParameter,\n propsOrHandler?: ExpressHandlerParameter,\n ) => {\n let handler: ExpressHandlerFunction;\n let props: ExpressHandlerOptions;\n\n if (\n typeof handlerOrProps === \"object\" &&\n typeof propsOrHandler === \"function\"\n ) {\n handler = propsOrHandler;\n props = handlerOrProps;\n } else if (typeof handlerOrProps === \"function\") {\n handler = handlerOrProps;\n props = (propsOrHandler || {}) as ExpressHandlerOptions;\n } else {\n throw BadRequestError(\"handler must be a function\");\n }\n\n // Add locals setup if needed\n if (\n props.locals &&\n typeof props.locals === \"object\" &&\n !Array.isArray(props.locals)\n ) {\n const keys = Object.keys(props.locals);\n if (!props.setup) props.setup = [];\n props.setup = force.array(props.setup);\n // @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript\n props.setup.unshift((req: { locals?: Record<string, unknown> }) => {\n if (!req || typeof req !== \"object\") {\n throw new BadRequestError(\"req must be an object\");\n }\n // Set req.locals if it doesn't exist\n if (!req.locals) req.locals = {};\n if (typeof req.locals !== \"object\" || Array.isArray(req.locals)) {\n throw new BadRequestError(\"req.locals must be an object\");\n }\n if (!req.locals._jaypie) req.locals._jaypie = {};\n });\n const localsSetup = async (\n localsReq: { locals: Record<string, unknown> },\n localsRes: unknown,\n ) => {\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (typeof props.locals![key] === \"function\") {\n localsReq.locals[key] = await props.locals;\n } else {\n localsReq.locals[key] = props.locals![key];\n }\n }\n };\n // @ts-expect-error TODO: cannot resolve; fix when JaypieHandler moves to TypeScript\n props.setup.push(localsSetup);\n }\n if (props.locals && typeof props.locals !== \"object\") {\n throw new BadRequestError(\"props.locals must be an object\");\n }\n if (props.locals && Array.isArray(props.locals)) {\n throw new BadRequestError(\"props.locals must be an object\");\n }\n if (props.locals === null) {\n throw new BadRequestError(\"props.locals must be an object\");\n }\n\n const jaypieFunction = jaypieHandler(handler, props);\n return async (req = {}, res = {}, ...extra: unknown[]) => {\n const status = HTTP.CODE.OK;\n let response;\n let supertestMode = false;\n\n if (\n res &&\n typeof res === \"object\" &&\n \"socket\" in res &&\n res.constructor.name === \"ServerResponse\"\n ) {\n // Use the response object in supertest mode\n supertestMode = true;\n }\n\n try {\n response = await jaypieFunction(req, res, ...extra);\n } catch (error) {\n // In the mock context, if status is a function we are in a \"supertest\"\n if (\n supertestMode &&\n typeof (res as ExpressResponse).status === \"function\"\n ) {\n // In theory jaypieFunction has handled all errors\n const errorStatus =\n (error as ProjectErrorOriginal).status ||\n HTTP.CODE.INTERNAL_SERVER_ERROR;\n let errorResponse;\n if (typeof (error as ProjectErrorOriginal).json === \"function\") {\n errorResponse = (error as ProjectErrorOriginal).json();\n } else {\n // This should never happen\n errorResponse = UnhandledError().json();\n }\n (res as ExpressResponse).status(errorStatus).json(errorResponse);\n return;\n } else {\n // else, res.status is not a function, throw the error\n throw error;\n }\n }\n\n if (\n supertestMode &&\n typeof (res as ExpressResponse).status === \"function\"\n ) {\n if (response) {\n if (typeof response === \"object\") {\n if (typeof (response as WithJsonFunction).json === \"function\") {\n (res as ExpressResponse).json(\n (response as WithJsonFunction).json(),\n );\n } else {\n (res as ExpressResponse).status(status).json(response);\n }\n } else if (typeof response === \"string\") {\n try {\n (res as ExpressResponse)\n .status(status)\n .json(JSON.parse(response));\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n (res as ExpressResponse).status(status).send(response);\n }\n } else if (response === true) {\n (res as ExpressResponse).status(HTTP.CODE.CREATED).send();\n } else {\n (res as ExpressResponse).status(status).send(response);\n }\n } else {\n (res as ExpressResponse).status(HTTP.CODE.NO_CONTENT).send();\n }\n } else {\n return response;\n }\n };\n },\n);\n\n// @jaypie/mongoose\nexport const connect = vi.fn((): boolean => {\n return true;\n});\n\nexport const connectFromSecretEnv = vi.fn((): boolean => {\n return true;\n});\n\nexport const disconnect = vi.fn((): boolean => {\n return true;\n});\n\n// Complete the error mocks\nexport const ForbiddenError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ForbiddenErrorOriginal>\n ): InstanceType<typeof ForbiddenErrorOriginal> => {\n return new ForbiddenErrorOriginal(...params);\n },\n);\n\nexport const GatewayTimeoutError = vi.fn(\n (\n ...params: ConstructorParameters<typeof GatewayTimeoutErrorOriginal>\n ): InstanceType<typeof GatewayTimeoutErrorOriginal> => {\n return new GatewayTimeoutErrorOriginal(...params);\n },\n);\n\nexport const GoneError = vi.fn(\n (\n ...params: ConstructorParameters<typeof GoneErrorOriginal>\n ): InstanceType<typeof GoneErrorOriginal> => {\n return new GoneErrorOriginal(...params);\n },\n);\n\nexport const IllogicalError = vi.fn(\n (\n ...params: ConstructorParameters<typeof IllogicalErrorOriginal>\n ): InstanceType<typeof IllogicalErrorOriginal> => {\n return new IllogicalErrorOriginal(...params);\n },\n);\n\nexport const InternalError = vi.fn(\n (\n ...params: ConstructorParameters<typeof InternalErrorOriginal>\n ): InstanceType<typeof InternalErrorOriginal> => {\n return new InternalErrorOriginal(...params);\n },\n);\n\nexport const MethodNotAllowedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof MethodNotAllowedErrorOriginal>\n ): InstanceType<typeof MethodNotAllowedErrorOriginal> => {\n return new MethodNotAllowedErrorOriginal(...params);\n },\n);\n\nexport const MultiError = vi.fn(\n (\n ...params: ConstructorParameters<typeof MultiErrorOriginal>\n ): InstanceType<typeof MultiErrorOriginal> => {\n return new MultiErrorOriginal(...params);\n },\n);\n\nexport const NotFoundError = vi.fn(\n (\n ...params: ConstructorParameters<typeof NotFoundErrorOriginal>\n ): InstanceType<typeof NotFoundErrorOriginal> => {\n return new NotFoundErrorOriginal(...params);\n },\n);\n\nexport const NotImplementedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof NotImplementedErrorOriginal>\n ): InstanceType<typeof NotImplementedErrorOriginal> => {\n return new NotImplementedErrorOriginal(...params);\n },\n);\n\nexport const ProjectError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ProjectErrorOriginal>\n ): InstanceType<typeof ProjectErrorOriginal> => {\n return new ProjectErrorOriginal(...params);\n },\n);\n\nexport const ProjectMultiError = vi.fn(\n (\n ...params: ConstructorParameters<typeof ProjectMultiErrorOriginal>\n ): InstanceType<typeof ProjectMultiErrorOriginal> => {\n return new ProjectMultiErrorOriginal(...params);\n },\n);\n\nexport const RejectedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof RejectedErrorOriginal>\n ): InstanceType<typeof RejectedErrorOriginal> => {\n return new RejectedErrorOriginal(...params);\n },\n);\n\nexport const TeapotError = vi.fn(\n (\n ...params: ConstructorParameters<typeof TeapotErrorOriginal>\n ): InstanceType<typeof TeapotErrorOriginal> => {\n return new TeapotErrorOriginal(...params);\n },\n);\n\nexport const UnauthorizedError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnauthorizedErrorOriginal>\n ): InstanceType<typeof UnauthorizedErrorOriginal> => {\n return new UnauthorizedErrorOriginal(...params);\n },\n);\n\nexport const UnavailableError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnavailableErrorOriginal>\n ): InstanceType<typeof UnavailableErrorOriginal> => {\n return new UnavailableErrorOriginal(...params);\n },\n);\n\nexport const UnhandledError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnhandledErrorOriginal>\n ): InstanceType<typeof UnhandledErrorOriginal> => {\n return new UnhandledErrorOriginal(...params);\n },\n);\n\nexport const UnreachableCodeError = vi.fn(\n (\n ...params: ConstructorParameters<typeof UnreachableCodeErrorOriginal>\n ): InstanceType<typeof UnreachableCodeErrorOriginal> => {\n return new UnreachableCodeErrorOriginal(...params);\n },\n);\n\n// @jaypie/lambda\nexport const lambdaHandler = vi.fn(\n (handler: JaypieHandlerParameter, props: JaypieHandlerParameter = {}) => {\n // If handler is an object and options is a function, swap them\n if (typeof handler === \"object\" && typeof props === \"function\") {\n const temp = handler;\n handler = props;\n props = temp;\n }\n return async (event: unknown, context: unknown, ...extra: unknown[]) => {\n return jaypieHandler(\n handler as JaypieHandlerFunction,\n props as JaypieHandlerOptions,\n )(event, context, ...extra);\n };\n },\n);\n\n// Export default for convenience\nexport default {\n // AWS\n getMessages,\n getSecret,\n sendBatchMessages,\n sendMessage,\n // Core\n BadGatewayError,\n BadRequestError,\n ConfigurationError,\n envBoolean,\n ForbiddenError,\n GatewayTimeoutError,\n GoneError,\n HTTP,\n IllogicalError,\n InternalError,\n jaypieHandler,\n MethodNotAllowedError,\n MultiError,\n NotFoundError,\n NotImplementedError,\n ProjectError,\n ProjectMultiError,\n RejectedError,\n sleep,\n TeapotError,\n UnauthorizedError,\n UnavailableError,\n UnhandledError,\n UnreachableCodeError,\n uuid,\n // Datadog\n submitMetric,\n submitMetricSet,\n // Express\n expressHandler,\n // Lambda\n lambdaHandler,\n // Mongoose\n connect,\n connectFromSecretEnv,\n disconnect,\n};\n"],"names":["originalGetMessages","BadGatewayErrorOriginal","BadRequestErrorOriginal","ConfigurationErrorOriginal","originalUuid","ForbiddenErrorOriginal","GatewayTimeoutErrorOriginal","GoneErrorOriginal","IllogicalErrorOriginal","InternalErrorOriginal","MethodNotAllowedErrorOriginal","MultiErrorOriginal","NotFoundErrorOriginal","NotImplementedErrorOriginal","ProjectErrorOriginal","ProjectMultiErrorOriginal","RejectedErrorOriginal","TeapotErrorOriginal","UnauthorizedErrorOriginal","UnavailableErrorOriginal","UnhandledErrorOriginal","UnreachableCodeErrorOriginal"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jaypie/testkit",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Finlayson Studio",
|
|
6
6
|
"type": "module",
|
|
@@ -29,7 +29,6 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@jaypie/core": "^1.1.0",
|
|
32
|
-
"@jaypie/eslint": "^1.1.6",
|
|
33
32
|
"jaypie": "^1.0.44",
|
|
34
33
|
"jest-json-schema": "^6.1.0",
|
|
35
34
|
"lodash.isequal": "^4.5.0",
|
|
@@ -48,5 +47,5 @@
|
|
|
48
47
|
"publishConfig": {
|
|
49
48
|
"access": "public"
|
|
50
49
|
},
|
|
51
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "84867070e2a262f9b878801c10b47267db7dc1aa"
|
|
52
51
|
}
|