forked from svrjs/svrjs
69 lines
2.3 KiB
JavaScript
69 lines
2.3 KiB
JavaScript
|
const middleware = require("../../src/middleware/webRootPostfixes.js");
|
||
|
const createRegex = require("../../src/utils/createRegex.js");
|
||
|
const ipMatch = require("../../src/utils/ipMatch.js");
|
||
|
const sanitizeURL = require("../../src/utils/urlSanitizer.js");
|
||
|
const parseURL = require("../../src/utils/urlParser.js");
|
||
|
|
||
|
jest.mock("../../src/utils/createRegex.js");
|
||
|
jest.mock("../../src/utils/ipMatch.js");
|
||
|
jest.mock("../../src/utils/urlSanitizer.js");
|
||
|
jest.mock("../../src/utils/urlParser.js");
|
||
|
|
||
|
describe("Web root postfixes middleware", () => {
|
||
|
let req, res, logFacilities, config, next;
|
||
|
|
||
|
beforeEach(() => {
|
||
|
req = {
|
||
|
isProxy: false,
|
||
|
url: "/test",
|
||
|
parsedURL: { pathname: "/test" },
|
||
|
headers: { host: "test.com" },
|
||
|
socket: { localAddress: "127.0.0.1" },
|
||
|
};
|
||
|
res = { error: jest.fn() };
|
||
|
logFacilities = { resmessage: jest.fn(), errmessage: jest.fn() };
|
||
|
config = {
|
||
|
allowPostfixDoubleSlashes: true,
|
||
|
wwwrootPostfixPrefixesVHost: [],
|
||
|
wwwrootPostfixesVHost: [
|
||
|
{ host: "test.com", ip: "127.0.0.1", postfix: "postfix" },
|
||
|
],
|
||
|
};
|
||
|
next = jest.fn();
|
||
|
|
||
|
createRegex.mockReturnValue(new RegExp());
|
||
|
ipMatch.mockReturnValue(true);
|
||
|
sanitizeURL.mockImplementation((url) => url);
|
||
|
parseURL.mockImplementation((url) => ({ pathname: url }));
|
||
|
});
|
||
|
|
||
|
test("should add web root postfix", () => {
|
||
|
middleware(req, res, logFacilities, config, next);
|
||
|
expect(req.url).toBe("/postfix/test");
|
||
|
expect(logFacilities.resmessage).toHaveBeenCalledWith(
|
||
|
"Added web root postfix: /test => /postfix/test",
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test("should not add web root postfix if req.isProxy is true", () => {
|
||
|
req.isProxy = true;
|
||
|
middleware(req, res, logFacilities, config, next);
|
||
|
expect(req.url).toBe("/test");
|
||
|
expect(logFacilities.resmessage).not.toHaveBeenCalled();
|
||
|
});
|
||
|
|
||
|
test("should not add web root postfix if no matching config is found", () => {
|
||
|
config.wwwrootPostfixesVHost = [
|
||
|
{ host: "example.com", ip: "127.0.0.1", postfix: "postfix" },
|
||
|
];
|
||
|
middleware(req, res, logFacilities, config, next);
|
||
|
expect(req.url).toBe("/test");
|
||
|
expect(logFacilities.resmessage).not.toHaveBeenCalled();
|
||
|
});
|
||
|
|
||
|
test("should call next function", () => {
|
||
|
middleware(req, res, logFacilities, config, next);
|
||
|
expect(next).toHaveBeenCalled();
|
||
|
});
|
||
|
});
|