Невозможно установить заголовки после их отправки клиенту (модульное тестирование mocha / chai) - PullRequest
0 голосов
/ 25 октября 2019

У меня возникла проблема при попытке выполнить некоторые тесты узла мокко / чай

Ниже приведен мой сценарий тестирования

    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}
        });
  },

я не знаю, что делать сейчас, у меня нет выбора, если кто-то может помочь, пожалуйста, сделайте

заранее спасибо

...