Я начинаю писать некоторые тесты для приложения, используя Мокко , Чай и супертест
Я тестирую фаззингнекоторые формы, чтобы проверить правильный ответ.
Прямо сейчас весь мой тест выглядит следующим образом:
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)
Я уже использую «решение», представленное здесь , без изменений.
Есть идеи, что может быть причиной этого?