Con Supertest, ¿puedo crear una request alternativa con algunos encabezados establecidos de manera pnetworkingeterminada?

Estoy usando Supertest con Mocha para probar una API desarrollada con Node JS.

Y quiero hacer un lót de diferentes testings en la API. Con casi todos tengo que volver a establecer los encabezados de Autorización y Tipo de contenido (porque la API los requiere para esta testing).

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 tinetworking .send({ email: "a@b.nl" }) .expect('Content-Type', /json/) .expect(500) .expect(anErrorCode('50086')) .end(done); }); 

¿Puedo crear una request alternativa con esos encabezados establecidos de manera pnetworkingeterminada?

Si recuerdo correctamente en el superagente uno puede pasar un hash para establecer

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

avísame si no funciona con supertest.

Puede usar una rutina común para build sus encabezados "pnetworkingeterminados" como un object y pasarlos a la request:

 //# file:config.js var config = { authorization: { "Authorization":"authvalue" } } // Content-Type left out because supertest will use Content-Type json when you use the appropriate method module.exports = config; 

Y ahora en tu test.js:

 //# file:test.js var request = require("supertest"); var config = require("./config"); request = request(config.baseUrl) var commonHeaders = { "authorization":"TokenValueASDF" }; describe("testing", function() { it.should('present authorization header to server', function(done) { request.get('/someurl') .set(commonHeaders) .set({"X-TestSpecificHeader":"Value"}) .expect(200,done) //if not authorized you'd get 401 }) }) 

Además, si necesita que su aplicación obtenga ese valor de token en el time de ejecución (lo más probable) consulte este artículo para usar un valor de token solicitado que se genera para las testings: https://jaketrent.com/post/authenticated-supertest-tests /

Puede aplicar el package superagent-defaults siguiente manera:

installation

 npm install --save-dev supertest superagent-defaults 

uso

 var defaults = require('superagent-defaults'); var supertest = require('supertest'); var request = defaults(supertest(app)); // or url // set the default headers request.set(commonHeaders); // use as usually 

versión

  • supertest v3.0.0
  • valores por defecto de superagente v0.1.14