2016-07-15 35 views
0

Wie kann ich einen Datei-Upload mit einem gesendeten Token testen? Ich erhalte "0" anstelle einer Uploadbestätigung.Wie wird der Upload von Testdateien mit Supertest -und- ein Token gesendet?

Dies ist ein Test nicht bestanden:

var chai = require('chai'); 
var expect = chai.expect; 
var config = require("../config"); // contains call to supertest and token info 

    describe('Upload Endpoint', function(){ 

    it('Attach photos - should return 200 response & accepted text', function (done){ 
     this.timeout(15000); 
     setTimeout(done, 15000); 
     config.api.post('/customer/upload') 
       .set('Accept', 'application.json') 
       .send({"token": config.token}) 
       .field('vehicle_vin', "randomVIN") 
       .attach('file', '/Users/moi/Desktop/unit_test_extravaganza/hardwork.jpg') 

       .end(function(err, res) { 
        expect(res.body.ok).to.equal(true); 
        expect(res.body.result[0].web_link).to.exist; 
       done(); 
      }); 
    }); 
}); 

Dies ist ein Arbeits Test:

describe('Upload Endpoint - FL token ', function(){ 
    this.timeout(15000); 
    it('Press Send w/out attaching photos returns error message', function (done){ 
    config.api.post('/customer/upload') 
     .set('Accept', 'application.json') 
     .send({"token": config.token }) 
     .expect(200) 
     .end(function(err, res) { 
     expect(res.body.ok).to.equal(false); 
     done(); 
    }); 
}); 

sind Anregungen zu schätzen!

Antwort

0

Es scheint, als ob das Token-Feld beim Anhängen einer Datei überschrieben wird. Meine Abhilfe ist Token URL Abfrageparameter hinzuzufügen:

describe('Upload Endpoint - FL token ', function(){ 
    this.timeout(15000); 
    it('Press Send w/out attaching photos returns error message', function (done){ 
    config.api.post('/customer/upload/?token='+config.token) 
     .attach('file', '/Users/moi/Desktop/unit_test_extravaganza/hardwork.jpg') 
     .expect(200) 
     .end(function(err, res) { 
     expect(res.body.ok).to.equal(false); 
     done(); 
    }); 
}); 

Ihre Authentifizierungs-Middleware muss festgelegt werden, um die JWT von URL-Abfrageparameter zu extrahieren. Passport-JWT führt diese Extraktion auf meinem Server durch.