-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathmockHandler.ts
More file actions
39 lines (33 loc) · 1.34 KB
/
mockHandler.ts
File metadata and controls
39 lines (33 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { Request } from "express";
import { MockServerResponse, RequestMethod } from "../../types";
import MockProcessor from "./mockProcessor";
import MockSelector from "./mockSelector";
import { getServerMockResponse } from "../utils/mockServerResponseHelper";
import { HttpStatusCode } from "../../enums/mockServerResponse";
import { RQ_PASSWORD } from "../../constants/queryParams";
class MockServerHandler {
static handleEndpoint = async (req: Request): Promise<MockServerResponse> => {
let endpoint = req.path;
const method = req.method as RequestMethod;
const queryParams = req.query || {};
const kwargs = {
queryParams: queryParams
}
const mockData = await MockSelector.selectMock(endpoint, method, kwargs);
if(mockData) {
// console.debug("[Debug] Mock Selected with data", mockData);
const mockResponse: MockServerResponse = await MockProcessor.process(
mockData,
req,
queryParams[RQ_PASSWORD] as string,
);
return {
...mockResponse,
metadata: { mockId: mockData.id },
}
}
console.debug("[Debug] No Mock Selected");
return getServerMockResponse(HttpStatusCode.NOT_FOUND);
}
}
export default MockServerHandler;