Супер-тест узла с Mocha: ошибка Uncaught: прочитайте ECONNRESET - PullRequest
0 голосов
/ 24 мая 2018

Я начинаю писать некоторые тесты для приложения, используя Мокко , Чай и супертест

Я тестирую фаззингнекоторые формы, чтобы проверить правильный ответ.

Прямо сейчас весь мой тест выглядит следующим образом:

const app_config = require('../config/mainConfigs');
const request = require('supertest');
const nock = require('nock');
const expect = require('chai').expect;
const fuzzer = require('fuzzer');

process.env.TEST = true;
var app = require('../app/app');
var appRequest = request(app);

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';


//Run request tests
describe('Request Tests', () => {


    before((done) => {
        //load app
        app.start().then(() => {
            done();
        });
    });

    describe('basic page request', () => {

        it('should respond with 200 respond code', () => {

            appRequest.get('/login')
            .expect(200)
            .expect('Content-Type', 'text/html; charset=utf-8')
            .end((err, res) => {
                if (err) throw err;
            });

        });

    });

    describe('Fuzz Test', () => {

        describe('fuzzing login page with 1000 username/password permutations', () => {

            fuzzer.seed(0);

            it('should respond with 403 / invalid csrf token', async () => {

                for(var i=0; i <= 1000; i++){

                    appRequest.post('/login')
                    .send({
                        username: fuzzer.mutate.string('fuzzfromhere'),
                        password: fuzzer.mutate.string('fuzzfromhere')
                    })
                    .expect((code) => {
                        if (code != 403 && code != 429) throw code;
                    })
                    .end((err, res) => {
                        if (err) throw err;
                    });

                }

            });


        });

        describe('fuzzing tokenizer page with 1000 random values', () => {

            it('should respond with invalid number', () => {
                // touch env to skip login and rate limiter
                process.env.TEST = 'skipLogin,skipRateLimiter';
                //get csrf to validate queries
                appRequest.get('/tokenize')
                .expect((response) => {
                    //test
                    console.log(`expect resp: ${response}`);
                })
                .end((err, res) => {
                    if (err) throw err;
                    console.error(`expect error: ${err}`);
                });
            });

        });

    });

    //Tests completed, end server
    after((done) => {

        app.end().then(() => {
            delete process.env.TEST;
            done();
        }).catch((err) => {
            throw err;
        });

    });

});

Если вы заметили, есть 3 теста, сначала он загружает страницу входа (просто чтобы убедиться, что сервер отвечает), во-вторых, он размывает страницу входа, и в-третьих, он размывает другую форму.Но по какой-то причине этот третий тест не может быть выполнен.Я получаю следующую ошибку:

Uncaught Ошибка: ECONNREFUSED: соединение отказано в Test.assert (node_modules \ supertest \ lib \ test.js: 165: 15) в assert (node_modules \ supertest \ lib \)test.js: 131: 12) в C: \ Users ... \ src \ node_modules \ supertest \ lib \ test.js: 128: 5 в Test.Request.callback (node_modules \ supertest \ node_modules \ superagent \ lib \ node\ index.js: 718: 3) в ClientRequest.req.once.err (node_modules \ supertest \ node_modules \ superagent \ lib \ node \ index.js: 646: 10) в TLSSocket.socketErrorListener (_http_client.js: 387: 9) в emitErrorNT (внутренний / streams / destroy.js: 64: 8) в _combinedTickCallback (внутренний / process / next_tick.js: 138: 11) в process._tickCallback (внутренний / process / next_tick.js: 180: 9)

Я уже использую «решение», представленное здесь , без изменений.

Есть идеи, что может быть причиной этого?

...