I am trying to mock the .unless function of express-jwt and currently have this mock setup to compare a JWT with an admin and non admin. This worked perfect until we added .unless and I am not sure the best way to approach the issue.
jest.mock("express-jwt", () => {
return options => {
return (req, res, next) => {
receivedToken = req.headers.authorization.substring(7);
req.user = { preferred_username: "tester" };
next();
};
};
});
That is the mock. I have tried moving that into a const and adding: mockFun.unless = jest.fn() but to no avail.
Thanks
Edit:
One of the things I tried is below:
jest.mock("express-jwt", () => {
const mockFunc = () => {
return (req, res, next) => {
receivedToken = req.headers.authorization.substring(7);
req.user = { preferred_username: "tester" };
next();
};
};
mockFunc.unless = jest.fn();
return mockFunc
});
Advertisement
Answer
unless is supposed to be a method on a function that jwt() returns while currently it’s a method on jwt itself.
Should be:
jest.mock("express-jwt", () => {
const mockFunc = jest.fn((req, res, next) => {
...
});
mockFunc.unless = jest.fn((req, res, next) => {
...
});
return jest.fn(() => mockFunc);
});