Skip to content

Commit 806acd0

Browse files
committed
added pathPrefix support
1 parent f10359a commit 806acd0

File tree

4 files changed

+30
-14
lines changed

4 files changed

+30
-14
lines changed

build/core/index.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
1515
exports.handleMockEndpoint = void 0;
1616
const mockProcessor_1 = __importDefault(require("./mockProcessor"));
1717
const mockSelector_1 = __importDefault(require("./mockSelector"));
18-
const handleMockEndpoint = (req) => __awaiter(void 0, void 0, void 0, function* () {
18+
const handleMockEndpoint = (req, pathPrefix) => __awaiter(void 0, void 0, void 0, function* () {
19+
let endpoint = req.path;
20+
// Stripping URL prefix
21+
if (endpoint.indexOf(pathPrefix) === 0) {
22+
endpoint = endpoint.slice(pathPrefix.length);
23+
}
1924
// Stripping front slash. Eg: /users/123/ -> users/123/
20-
let endpoint = req.path.slice(1);
25+
endpoint = endpoint.slice(1);
2126
// Stripping end slash. Eg: users/123/ -> users/123
2227
if (endpoint.slice(-1) === "/") {
2328
endpoint = endpoint.slice(0, -1);

build/main.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,23 @@ exports.startMockServer = exports.setupMockServer = void 0;
1616
const express_1 = __importDefault(require("express"));
1717
const core_1 = require("./core");
1818
const storageService_1 = __importDefault(require("./services/storageService"));
19-
const setupMockServer = (configFetcher) => {
19+
const setupMockServer = (configFetcher, pathPrefix = "") => {
2020
initStorageService(configFetcher);
2121
const app = (0, express_1.default)();
22-
app.all(/\/(.+)/, (req, res) => __awaiter(void 0, void 0, void 0, function* () {
22+
// pathPrefix to handle /mockv2 prefix in cloud functions
23+
const regex = new RegExp(`${pathPrefix}\/(.+)`);
24+
app.all(regex, (req, res) => __awaiter(void 0, void 0, void 0, function* () {
2325
console.log(req.path);
2426
console.log(req.query);
25-
const mockResponse = yield (0, core_1.handleMockEndpoint)(req);
27+
const mockResponse = yield (0, core_1.handleMockEndpoint)(req, pathPrefix);
2628
console.debug("[Debug] Final Mock Response", mockResponse);
2729
return res.status(mockResponse.statusCode).set(mockResponse.headers).end(mockResponse.body);
2830
}));
2931
return app;
3032
};
3133
exports.setupMockServer = setupMockServer;
3234
const startMockServer = (configFetcher) => {
33-
const app = (0, exports.setupMockServer)(configFetcher);
35+
const app = (0, exports.setupMockServer)(configFetcher, "");
3436
const port = 3000;
3537
app.listen(port, () => {
3638
console.log(`Mock Server Listening on port ${port}`);

src/core/index.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,16 @@ import { MockServerResponse, RequestMethod } from "../types";
22
import MockProcessor from "./mockProcessor";
33
import MockSelector from "./mockSelector";
44

5-
export const handleMockEndpoint = async (req: any): Promise<MockServerResponse> => {
5+
export const handleMockEndpoint = async (req: any, pathPrefix: string): Promise<MockServerResponse> => {
6+
let endpoint = req.path;
7+
8+
// Stripping URL prefix
9+
if(endpoint.indexOf(pathPrefix) === 0) {
10+
endpoint = endpoint.slice(pathPrefix.length);
11+
}
12+
613
// Stripping front slash. Eg: /users/123/ -> users/123/
7-
let endpoint = req.path.slice(1);
14+
endpoint = endpoint.slice(1);
815

916
// Stripping end slash. Eg: users/123/ -> users/123
1017
if(endpoint.slice(-1) === "/") {

src/main.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
import express from "express";
22
import { handleMockEndpoint } from "./core";
3-
import MockSelector from "./core/mockSelector";
43
import IConfigFetcher from "./interfaces/configFetcherInterface";
54
import storageService from "./services/storageService";
6-
import { MockServerResponse, Mode, RequestMethod } from "./types";
5+
import { MockServerResponse } from "./types";
76

8-
export const setupMockServer = (configFetcher: IConfigFetcher): any => {
7+
export const setupMockServer = (configFetcher: IConfigFetcher, pathPrefix = ""): any => {
98
initStorageService(configFetcher);
109

1110
const app = express();
12-
app.all(/\/(.+)/, async (req, res) => {
11+
12+
// pathPrefix to handle /mockv2 prefix in cloud functions
13+
const regex = new RegExp(`${pathPrefix}\/(.+)`);
14+
app.all(regex, async (req, res) => {
1315
console.log(req.path);
1416
console.log(req.query);
15-
const mockResponse: MockServerResponse = await handleMockEndpoint(req);
17+
const mockResponse: MockServerResponse = await handleMockEndpoint(req, pathPrefix);
1618
console.debug("[Debug] Final Mock Response", mockResponse);
1719
return res.status(mockResponse.statusCode).set(mockResponse.headers).end(mockResponse.body);
1820
});
@@ -22,7 +24,7 @@ export const setupMockServer = (configFetcher: IConfigFetcher): any => {
2224

2325

2426
export const startMockServer = (configFetcher: IConfigFetcher) => {
25-
const app = setupMockServer(configFetcher);
27+
const app = setupMockServer(configFetcher, "");
2628
const port = 3000;
2729
app.listen(port, () => {
2830
console.log(`Mock Server Listening on port ${port}`);

0 commit comments

Comments
 (0)