Browse Source

Merge 569abd0828 into 2357c501af

pull/34/merge
Filippo Conti 6 years ago
committed by GitHub
parent
commit
cf47ee7e6b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  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 = (opts = {}) => {
if (opts.certificate === false) {
return createServer(null, opts);
}
module.exports = createTestServer;
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