Armazenar 'response params' para uso em outros testes (Supertest + Mocha)

Boa tarde pessoal !

Estou com uma dificuldade ao utilizar o Supertest + Mocha e gostaria da ajuda de vocês.

Problema: Armazenar o token recebido na resposta do método PUT da API para uso futuro, ou seja, para utilizá-lo em outros métodos que exigem este token.

Eu estou tentando resolver este problema via exports desta forma:

conf.js

const supertest = require('supertest')('http://localhost:8080');

it("Login", function (done) {
    supertest
        .put('/api/login')
        .send({
            userName: "xxx",
            password: "yyyy",
            rememberMe: true
        })
        .expect(200)
        .end(function (err, res) {
            var token = res.header["set-cookie"][0];
            token = token.split(";")[0];
            exports.token = token;
            if (err) throw err;
            done();
        });
});

spec.js

const supertest = require('supertest')('http://localhost:8080');
const token = require('../conf').token;

describe('Alarm', function () {

    it('GET /api/account-manager/alarm-status', function (done) {
        supertest
            .get('/api/account-manager/alarm-status')
            .set('Cookie', token)
            .expect(200, {
                status: '0'
            })
            .end(function (err, res) {
                if (err) throw err;
                done();
            });
    });

});

Contudo, como o .end do PUT returna uma Promise , ao realizar o require(’…/conf’).token eu estou recebendo undefined , ao invés do valor do token. “Acredito que por causa da Promise não ter sido resolvida.”

Alguém pode dar uma dica de como resolver?

Espero que eu tenha conseguido explicar a minha dificuldade.

Obs: Estou usando faz pouco o tempo o framework

Desde já agradeço.

Bom dia galera !

Acabei resolvendo de um jeito que eu não gosto muito. Para cada arquivo de spec eu acrescentei um before, armazenando o token em uma variável. E, assim, utilizando esta variável para os demais testes do arquivo spec.

Problema desta solução: Para cada arquivo spec do projeto, eu precisarei utilizar este método de autenticação para receber o token.

Alguém conhece alguma outra solução para este problema?

Show Leonardo, não tinha visto não. Vou dar uma olhada.

Obrigado

Log in to reply

Looks like your connection to Agile Testers was lost, please wait while we try to reconnect.