2014-03-26 12 views
11

Ich brauche eine API diente über HTTPS mit mocha und super test zu testen (das Zertifikat nicht abgelaufen)NodeJS HTTPS API-Tests mit Mokka und Super-Test - „DEPTH_ZERO_SELF_SIGNED_CERT“

Dies ist ein Kern des Servers ist:

... 
var app = express(); 
var _options = { 
    key: fs.readFileSync('my-key.pem');, 
    cert: fs.readFileSync('my-cert.pem') 
}; 

// Start HTTPS server 
https.createServer(_options, app).listen(app.get('port'), app.get('ip'), function() { 

// ok or not logs 

}); 

und dies ist der Weg

app.get('/hello',function (req, res) { 
    res.json(200); 
}); 

getestet werden ich versuche, mit t zu testen sein Code in test/test.js

var supertest = require('supertest'), 
     api = supertest('https://localhost:3000'); 

describe('Hello test', function() { 

     it('hello', function (done) { 

     api.get('/hello') 
       .expect(200) 
       .end(function (err, res) { 
             if (err) { 
                done(err); 
             } else { 
                done(); 
       } 
     }); 
    }); 
}); 

aber der Test FAILs mit dem folgenden Fehler:

enter Error: DEPTH_ZERO_SELF_SIGNED_CERT 
    at SecurePair.<anonymous> (tls.js:1349:32) 
    at SecurePair.EventEmitter.emit (events.js:92:17) 
    at SecurePair.maybeInitFinished (tls.js:962:10) 
    at CleartextStream.read [as _read] (tls.js:463:15) 
    at CleartextStream.Readable.read (_stream_readable.js:320:10) 
    at EncryptedStream.write [as _write] (tls.js:366:25) 
    at doWrite (_stream_writable.js:219:10) 
    at writeOrBuffer (_stream_writable.js:209:5) 
    at EncryptedStream.Writable.write (_stream_writable.js:180:11) 
    at write (_stream_readable.js:573:24) 
    at flow (_stream_readable.js:582:7) 
    at Socket.pipeOnReadable (_stream_readable.js:614:5) 
    at Socket.EventEmitter.emit (events.js:92:17) 
    at emitReadable_ (_stream_readable.js:408:10) 
    at emitReadable (_stream_readable.js:404:5) 
    at readableAddChunk (_stream_readable.js:165:9) 
    at Socket.Readable.push (_stream_readable.js:127:10) 
    at TCP.onread (net.js:526:21) 

Während Ebene HTTP mit dem Test PASSING

Antwort

11

nur für alle andere, die ich fragen ist auch, was zu tun . thison Spitze Ihrer test.js hinzufügen und Sie werden fein:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; 
+0

Wenn diese Tests für viel zu tun, empfehle ich 'NODE_TLS_REJECT_UNAUTHORIZED = 0 'in der Make-Datei hinzufügen, so wird es für alle Tests eingestellt werden. So etwas wie 'NODE_ENV = test NODE_TLS_REJECT_UNAUTHORIZED = 0 ./node_modules/.bin/mocha --recursive --timeout 5000 --reporter spec" ./**/ modules/*/test/**/*. Js "' – diosney