Browse Source

Added support to disable SSL server

If opts.certificate type is boolean and is false the SSL server wont be
created, this also ensure backward compatibility with previous versions where
certificate option is undefined

:100644 100644 30b40cc a759f78 M	src/index.js
:100644 100644 74550fc 601fe4c M	test/create-test-server.js
pull/34/head
Filippo Conti 6 years ago
parent
commit
569abd0828
  1. 42
      src/index.js
  2. 10
      test/create-test-server.js

42
src/index.js

@ -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));
};

10
test/create-test-server.js

@ -201,6 +201,16 @@ test('if opts.bodyParser is false body parsing middleware is disabled', async t
});
});
test('if opts.certificate is false server wont create ssl', async t => {
const server = await createTestServer({
certificate: false
});
t.true(typeof server.sslPort === 'undefined');
t.true(typeof server.sslUrl === 'undefined');
t.true(typeof server.caCert === 'undefined');
});
test('support returning body directly', async t => {
const server = await createTestServer();

Loading…
Cancel
Save