'Get and store token globally for tests in SuperTest

I use Jest + SuperTest to test API. I would like to get the token and store it globally (using agent() method. It works fine when I have hardcoded token and use agent() to set it globally like this:

const supertest = require("supertest");
const baseUrl = "https://gorest.co.in/public/v1";

const request = supertest
  .agent(baseUrl)
  .set(
    "Authorization",
    ">>>here comes hardcoded token value<<<"
  );
describe("Posts endpoint", () => {
  it.only("should be able to create a post", async () => {
    const resp = await request.get("/users");
    const user_id = resp.body.data[0].id;

    const response = await request.post("/posts").send({
      title: "foo",
      body: "bar",
      user_id: user_id,
    });
    expect(response.statusCode).toBe(201);
  });
});

but I don't know how to get the token from auth endpoint and pass it there instead of this hardcoded one. Here is the function of getting token in beforeAll().

let token = "";

beforeAll(async () => {
  const response = await request(baseUrl).post("/auth").send({
      username: "[email protected]",
      password: "password",
    });
  token = response.body.access_token;
});

Does anyone have any idea how to handle that with SuperTest?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source