тестирование аутентифицированной express конечной точки с суперагентом не работает? - PullRequest
1 голос
/ 07 мая 2020

Я тестирую свое приложение, однако я не мог понять, как протестировать аутентифицированные конечные точки с помощью супертеста, на основе документации, которую я написал, но она не работает. Может ли кто-нибудь помочь мне, как проверить аутентифицированные конечные точки: это мой код:

const request = require("supertest");
const app = require("../../server/app");

let testSession = null;
beforeEach(function () {
  testSession = request.agent(app);
});

test("Should add new blogs", async () => {
  await testSession
    .post("/api/v1/blogs")
    .send({
      title: "first test",
      location: "ny",
      position: "developer",

    })
    .expect(200);
});

вот результат: ожидалось 200 «ОК», получено 401 «Неавторизованные»

конечные точки работают, но вот контроллер и маршрут:

exports.createBlog = (req, res) => {
  //key comes from client
  //because if other user send the request I dont wanna lock the request for other one
  //we send the key with the save button in the controller menu
  const lockId = req.query.lockId;
  let blog;

  if (!lock.isBusy(lockId)) {
    lock
      .acquire(lockId, async () => {
        const blogData = req.body;
        blog = await new Blog(blogData);
        if (req.user) {
          blog.userId = req.user.sub;
          blog.author = req.user.name;
        }
        await blog.save();
      })
      .then(() =>
        res.status(200).json({ message: "Blog is saved!", blog: blog })
      )
      .catch((e) => res.status(422).json({ message: e.message }));
  } else {
    return res.status(422).json({ message: "Blog is saving" });
  }

router.post(
  "/",
  authService.checkJwt,
  authService.checkRole("siteOwner"),
  blogCtrl.createBlog
);
...