Browse Source

Use new ports when closed and re-listening

pull/2/head
Luke Childs 7 years ago
parent
commit
0d717181f4
  1. 39
      src/index.js

39
src/index.js

@ -7,31 +7,38 @@ const getPort = require('get-port');
const pify = require('pify');
const createCert = require('create-cert');
const createTestServer = opts => Promise.all([
getPort(),
getPort(),
createCert(opts && opts.certificate)
])
.then(results => {
const port = results[0];
const sslPort = results[1];
const cert = results[2];
const createTestServer = opts => createCert(opts && opts.certificate)
.then(cert => {
const app = express();
app.caCert = cert.caKeys.cert;
app.url = `http://localhost:${port}`;
app.sslUrl = `https://localhost:${sslPort}`;
Object.defineProperty(app, 'url', {
get: () => typeof app.port === 'undefined' ? undefined : `http://localhost:${app.port}`
});
Object.defineProperty(app, 'sslUrl', {
get: () => typeof app.sslPort === 'undefined' ? undefined : `https://localhost:${app.sslPort}`
});
const server = http.createServer(app);
const sslServer = https.createServer(cert.keys, app);
app.listen = () => Promise.all([
pify(server.listen.bind(server))(port),
pify(sslServer.listen.bind(sslServer))(sslPort)
getPort().then(port => {
app.port = port;
return pify(server.listen.bind(server))(port);
}),
getPort().then(sslPort => {
app.sslPort = sslPort;
return pify(sslServer.listen.bind(sslServer))(sslPort);
})
]);
app.close = () => Promise.all([
pify(server.close.bind(server))(),
pify(sslServer.close.bind(sslServer))()
pify(server.close.bind(server))().then(() => {
app.port = undefined;
}),
pify(sslServer.close.bind(sslServer))().then(() => {
app.sslPort = undefined;
})
]);
return app.listen().then(() => app);

Loading…
Cancel
Save