|
|
@ -7,12 +7,14 @@ const pify = require('pify'); |
|
|
|
const createCert = require('create-cert'); |
|
|
|
const bodyParser = require('body-parser'); |
|
|
|
|
|
|
|
const createTestServer = (opts = {}) => createCert(opts.certificate) |
|
|
|
.then(keys => { |
|
|
|
const createServer = (keys, opts) => { |
|
|
|
const server = express(); |
|
|
|
server.http = http.createServer(server); |
|
|
|
|
|
|
|
if (keys) { |
|
|
|
server.https = https.createServer(keys, server); |
|
|
|
server.caCert = keys.caCert; |
|
|
|
} |
|
|
|
|
|
|
|
server.set('etag', false); |
|
|
|
|
|
|
@ -42,29 +44,49 @@ const createTestServer = (opts = {}) => createCert(opts.certificate) |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
server.listen = () => Promise.all([ |
|
|
|
server.listen = () => { |
|
|
|
const promises = [ |
|
|
|
pify(server.http.listen.bind(server.http))().then(() => { |
|
|
|
server.port = server.http.address().port; |
|
|
|
server.url = `http://localhost:${server.port}`; |
|
|
|
}), |
|
|
|
}) |
|
|
|
]; |
|
|
|
if (server.https) { |
|
|
|
promises.push( |
|
|
|
pify(server.https.listen.bind(server.https))().then(() => { |
|
|
|
server.sslPort = server.https.address().port; |
|
|
|
server.sslUrl = `https://localhost:${server.sslPort}`; |
|
|
|
}) |
|
|
|
]); |
|
|
|
); |
|
|
|
} |
|
|
|
return Promise.all(promises); |
|
|
|
}; |
|
|
|
|
|
|
|
server.close = () => Promise.all([ |
|
|
|
server.close = () => { |
|
|
|
const promises = [ |
|
|
|
pify(server.http.close.bind(server.http))().then(() => { |
|
|
|
server.port = undefined; |
|
|
|
server.url = undefined; |
|
|
|
}), |
|
|
|
}) |
|
|
|
]; |
|
|
|
if (server.https) { |
|
|
|
promises.push( |
|
|
|
pify(server.https.close.bind(server.https))().then(() => { |
|
|
|
server.sslPort = undefined; |
|
|
|
server.sslUrl = undefined; |
|
|
|
}) |
|
|
|
]); |
|
|
|
); |
|
|
|
} |
|
|
|
return Promise.all(promises); |
|
|
|
}; |
|
|
|
|
|
|
|
return server.listen().then(() => server); |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
module.exports = createTestServer; |
|
|
|
module.exports = (opts = {}) => { |
|
|
|
if (opts.certificate === false) { |
|
|
|
return createServer(null, opts); |
|
|
|
} |
|
|
|
|
|
|
|
return createCert(opts.certificate).then(keys => createServer(keys, opts)); |
|
|
|
}; |
|
|
|