Как передать параметры JSON и авторизацию с помощью библиотеки superagent в Mocha framework?

Я пытаюсь сделать тестирование API. Для этого я создал код для запуска POST API, а затем для генерации результатов тестирования. Для этого я использую Мокко.JS Testing framework и хотите использовать библиотеку SuperAgent для запуска API и получения ответа.

Here is the code:

var assert = require("assert");
var superagent = require("superagent");
var should = require("should");
var expect = require('expect');
var chai = require('chai');
var chaiHttp = require('chai-http');
var request=require('request');

describe('creating an Incident', function() {

    it('should pass the parameters needed for creating an Incident', function(done) {

superagent
      .post('http://localhost:9001/incident/create' )
       .send({user: 'user123',password: 'pass123'}) //authorization details

      .set('Accept', 'application/json')  //headers
      .set('Content-Type', 'application/json')  //headers

      .send({ Name:'MyIncident', orderId:'12340508'}) //JSON parameters to be passed for creating an incident.

      .end(function(err, res) {

        expect(200,done); //Status code
             if (err) {
               throw err;
                     }
              else {
               res.should.have.status(400);
               done(); 
                  }
         });
    });

});

Теперь проблема в том, во время выполнения этого кода в командной строке, я получаю эту ошибку. Пожалуйста, посмотрите.

Командная Строка Показывает Ошибку

Пожалуйста, предложите изменения, которые мне нужно сделать в этой программе.
Спасибо заранее 🙂

1 ответ

  1. Это зависит от того, как вы реализовали аутентификацию в коде на стороне сервера. Я реализовал нечто похожее с помощью passport и его локальной стратегии, которая требует постоянного сеанса входа в систему.
    Для тестирования я использую supertest и supertest-session, чтобы создать допустимый пользовательский сеанс в крюке перед. Пример из документации supertest-session:

    var session = require('supertest-session');
    var myApp = require('../../path/to/app');
    
    var testSession = null;
    
    beforeEach(function () {
        testSession = session(myApp);
    });
    
    it('should fail accessing a restricted page', function (done) {
        testSession.get('/restricted')
            .expect(401)
            .end(done)
    });
    
    it('should sign in', function (done) {
        testSession.post('/signin')
            .send({ username: 'foo', password: 'password' })
            .expect(200)
            .end(done);
    });
    
    it('should get a restricted page', function (done) {
        testSession.get('/restricted')
            .expect(200)
            .end(done)
    });