У меня возникла проблема при попытке выполнить некоторые тесты узла мокко / чай
Ниже приведен мой сценарий тестирования
it("Should NOT Allow user to get diary entries with an expired Token", done => {
const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmaXJzdE5hbWUiOiJmaXJzdE5hbWUiLCJsYXN0TmFtZSI6Imxhc3ROYW1lIiwiZW1haWwiOiJleGFtcGxlQGdtYWlsLmNvbSIsInJlbWluZGVyIjoib2ZmIiwiaWF0IjoxNTcxOTQ0MzY0LCJleHAiOjE1NzE5NDQzNzF9.bSzvx4wC86N29C_cv9_eMW6B4wnGZffrfoPtb9eGPd8";
chai
.request(app)
.get("/api/v1/entry")
.set("auth", token)
.end((err, res) => {
expect(res).to.have.status(403);
expect(res.body).to.have.property("message");
});
done();
});
Сначала он должен пройти через функцию, которая должначтобы проверить JWT, и я думаю, что это, где ошибка исходит от
, следующая функция
async function checkToken(req, res, next) {
const token = await req.headers.auth;
let InUserEmail;
if (typeof token !== "undefined") { await jwt.verify(token, process.env.SECRET, (err, result) => {
if (err) {
if (err.name === "TokenExpiredError") {
return res.status(403).send({
message: "TokenExpired"
});
}
} else {
InUserEmail = result.email;
const verified = jwt.verify(token, process.env.secret);
req.tokenData = verified;
}
});
const authUser = userModel.users.find(user => user.email === InUserEmail);
if (!authUser) {
return res.status(401).send({
message: "not authorized to do the task"
});
} next();
} else {
res.status(403).send({
message: "not authorized to do the task(forbidden)"
});
}}
и фактический контроллер (функция, которая обрабатывает получение или выборку данных) выглядит следующим образом
getAll(req, res) {
const myEntries = [];
for (let index = 0; index < entryModel.entries.length; index+=1) {
if (entryModel.entries[index].createdBy===req.tokenData.email) {
myEntries.push(entryModel.entries[index]);
}
}
return res.status(200).json({
message:"getting entries successful",
status:200,
data: {myEntries}
});
},
я не знаю, что делать сейчас, у меня нет выбора, если кто-то может помочь, пожалуйста, сделайте
заранее спасибо