With Supertest, can I create an alternative request with some headers set by default?

Christiaan Westerbeek picture Christiaan Westerbeek · May 18, 2014 · Viewed 23.4k times · Source

I am using Supertest with Mocha to test an API developed with Node JS.

And I want to do a lót of different tests on the API. With almost all of them I have to set Authorization and Content-Type headers again (because the API requires them for this test).

it('Creation without an email address should fail and return error code 50040', function(done) {
  request
    .post('/mpl/entities')
    .set('Authorization', 'Token 1234567890') //set header for this test
    .set('Content-Type',  'application/json') //set header for this test
    .send({
      firstname: "test"
    })
    .expect('Content-Type', /json/)
    .expect(500)
    .expect(anErrorCode('50040'))
    .end(done);
});

it('Creation with a duplicate email address should fail and return error code 50086', function(done) {
  request
    .post('/mpl/entities')
    .set('Authorization', 'Token 1234567890') //<-- again
    .set('Content-Type',  'application/json') //<-- again, I'm getting tired
    .send({
      email: "[email protected]"
    })
    .expect('Content-Type', /json/)
    .expect(500)
    .expect(anErrorCode('50086'))
    .end(done);
});

Can I create an alternative request with those headers set by default?

Answer

mpm picture mpm · May 18, 2014

If i remember correctly in superagent one can pass a hash to set

agent.set({key:value,key2:value2})

let me know if it doesnt work with supertest.