Как отправить аутентификацию с запросом с супертестом

Я пытаюсь проверить аутентифицированный маршрут.

Это мой код:

let request = require('supertest');
var superagent = require('superagent');
var agent = superagent.agent();
var theAccount = {
  name: '*********',
  role: 'admin',
  id: '115039452833383267752'
};
request = request('http://localhost:3000');

describe('Live-score', () => {

  before(function (done) {
    request
      .post('/api/login')
      .send(theAccount)
      .end(function (err, res) {
        if (err) {
          throw err;
        }
        agent.saveCookies(res);
        done();
      });
  });

  it('Should work', (done) => {
    agent.attachCookies(req);
    request
      .get('/api/live-score')
      .send(agent)
      .set('Accept', 'text/html')
      .expect('Content-Type', 'application/json; charset=utf-8')
      .expect(200, done);

  });

Однако я получаю следующую ошибку:

TypeError: agent.saveCookies не является функцией

Я использую стратегию Google Passport.


person stijn.aerts    schedule 20.06.2016    source источник


Ответы (1)


В одном месте, где я видел подобный код, агент был объявлен в блоке before.

Вы можете попробовать:

before(function (done) {
    agent = superagent.agent();
    request
      .post('/api/login')
      .send(theAccount)
      .end(function (err, res) {
        if (err) {
          throw err;
        }
        agent.saveCookies(res);
        done();
      });
  });

Ссылка: https://github.com/visionmedia/superagent/issues/352

person Machtyn    schedule 21.06.2016