forked from svrjs/svrjs
55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
|
const middleware = require("../../src/middleware/defaultHandlerChecks.js");
|
||
|
const httpMocks = require("node-mocks-http");
|
||
|
|
||
|
describe("Default handler checks middleware", () => {
|
||
|
let req, res, logFacilities, config, next;
|
||
|
|
||
|
beforeEach(() => {
|
||
|
req = httpMocks.createRequest();
|
||
|
res = httpMocks.createResponse();
|
||
|
logFacilities = {
|
||
|
errmessage: jest.fn()
|
||
|
};
|
||
|
config = {
|
||
|
getCustomHeaders: jest.fn(() => ({})),
|
||
|
generateServerString: jest.fn(() => "Server String")
|
||
|
};
|
||
|
next = jest.fn();
|
||
|
});
|
||
|
|
||
|
test("should return 501 and log error message if req.isProxy is true", () => {
|
||
|
req.isProxy = true;
|
||
|
middleware(req, res, logFacilities, config, next);
|
||
|
expect(res._getStatusCode()).toBe(501);
|
||
|
expect(logFacilities.errmessage).toHaveBeenCalledWith(
|
||
|
expect.stringContaining("doesn't support proxy without proxy mod.")
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test("should return 204 if req.method is OPTIONS", () => {
|
||
|
req.method = "OPTIONS";
|
||
|
middleware(req, res, logFacilities, config, next);
|
||
|
expect(res._getStatusCode()).toBe(204);
|
||
|
expect(res._getHeaders()).toHaveProperty(
|
||
|
"allow",
|
||
|
"GET, POST, HEAD, OPTIONS"
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test("should call res.error with 405 and log error message if req.method is not GET, POST, or HEAD", () => {
|
||
|
req.method = "PUT";
|
||
|
res.error = jest.fn();
|
||
|
middleware(req, res, logFacilities, config, next);
|
||
|
expect(res.error).toHaveBeenCalledWith(405);
|
||
|
expect(logFacilities.errmessage).toHaveBeenCalledWith(
|
||
|
expect.stringContaining("Invaild method: PUT")
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test("should call next if req.method is GET, POST, or HEAD and req.isProxy is false", () => {
|
||
|
req.method = "GET";
|
||
|
middleware(req, res, logFacilities, config, next);
|
||
|
expect(next).toHaveBeenCalled();
|
||
|
});
|
||
|
});
|