Open apoguy opened 6 years ago
Hi there,
Didn't you forget a done in your last 'it' ? Your output differs from what's written in your code also, make sure to double check.
Good luck !
Try starting app.js with npm start
|| yarn start
instead of a before hook.
If that doesn't work, you may want to try passing in the url of app to request.agent instead of using require.
(Instead of : var agent = request.agent(app);
, try: var agent = request.agent('127.0 0.1:YourPortHere');
Only solution was to use:
it('should respond with invalid token', async function() {
this.timeout(15000);
for(var i=0; i<=hitsPerFuzz; i++){
var url = `/miniDetokenize?token=${fuzzer.mutate.string('vX2Fet_z5sqy@Ss9')}`;
await agent
.get(url)
.then(resp => {
const $ = cheerio.load(resp.res.text);
expect($('h2').html()).to.be.equal('Invalid token format.');
})
.catch(err => {
throw err;
});
}
});
Making synchronous requests to avoid using up all the sockets. I don't know if supertest supports concurrency, but this is how I managed to do it.
I have a similar problem with multiple users supertest:
process.env.NODE_ENV = 'test'
require('module-alias/register')
const server = require('../server')
const mongoose = require('mongoose')
const supertest = require('supertest')
const credits = {
adm: {
username: 'adm',
password: 'pass'
},
mod: {
username: 'mod',
password: 'pass'
},
usr: {
username: 'usr',
password: 'pass'
}
}
let adm = supertest.agent(server)
let mod = supertest.agent(server)
let usr = supertest.agent(server)
before(function (done) {
mongoose.connection.on('open', done)
})
before(async function (done) {
await adm.post('/api/login').send(credits.adm).expect(200)
done()
})
before(async function (done) {
await mod.post('/api/login').send(credits.mod).expect(200)
done()
})
before(async function (done) {
await usr.post('/api/login').send(credits.usr).expect(200)
done()
})
describe('Lists', () => {
it('GET lists', async function (done) {
await adm.get('/api/lists')
.expect(200)
.expect(resp => {
if (!Object.keys(resp.data).length) throw new Error('Excess data')
})
done()
})
})
Here's an error:
Error: ECONNREFUSED: Connection refused
at Test.assert (D:\OSPanel\node\deps\node_modules\supertest\lib\test.js:165:15)
at assert (D:\OSPanel\node\deps\node_modules\supertest\lib\test.js:131:12)
at D:\OSPanel\node\deps\node_modules\supertest\lib\test.js:128:5
at Test.Request.callback (D:\OSPanel\node\deps\node_modules\superagent\lib\node\index.js:718:3)
at ClientRequest.req.once.err (D:\OSPanel\node\deps\node_modules\superagent\lib\node\index.js:646:10)
at Object.onceWrapper (events.js:255:19)
at ClientRequest.emit (events.js:160:13)
at Socket.socketErrorListener (_http_client.js:389:9)
at Socket.emit (events.js:160:13)
at emitErrorNT (internal/streams/destroy.js:64:8)
at process._tickCallback (internal/process/next_tick.js:152:19)
@Iworb To which host
is your server bound to? If it is different than localhost/127.0.0.1, then that is likely what is causing your issue.
See https://github.com/visionmedia/supertest/issues/488#issuecomment-413094562 for more details.
I had the same error message, my bug was an incorrect url, i forgot the '/' at the beginning of the url.
@sabyanna this was the answer for me.
Is it possible supertest to be the cause of the issue?
Error: ECONNREFUSED: Connection refused
var request = require('supertest');
var { expect } = require('chai');
var api = request('http://127.0.0.1:4000'); // <-- works
var api = request('http://localhost:4000'); // <-- does not work
describe('GET /home', () => {
it('returns 200 status code', async () => {
var res = await api
.get('/any')
.expect(200);
});
From terminal, both works:
$ curl http://localhost:4000/home
Welcome Home
$ curl http://127.0.0.1:4000/home
Welcome Home
Is it possible supertest to be the cause of the issue?
Error: ECONNREFUSED: Connection refused
Reproduce
- Mac OS 10.15.7
- node 18.3.0
- chai@4.3.6
- supertest@6.2.3
var request = require('supertest'); var { expect } = require('chai'); var api = request('http://127.0.0.1:4000'); // <-- works var api = request('http://localhost:4000'); // <-- does not work ... $ curl http://127.0.0.1:4000/home Welcome Home
What I found was that you have to import express app
and pass it to request(app)
like so, otherwise you'd get the ECONN problem. I'm not totally sure why this is but I hope this helps someone.
Also, don't forget to then return the result of the (likely await) in the test function or else the test suite will complain at you: either return the promise or have a done()
. Such were my meager findings.
So I'm writing some tests using Mocha, chai and supertest.
I'm facing a really weird behavior here on a test that should work just fine. Here's the test code:
For some weird reason, I am getting the following error:
Any idea what's causing this?