Browse Source

Support returning body without wrapping it in a function (#15)

pull/16/head
Kevin Mårtensson 7 years ago
committed by Luke Childs
parent
commit
5788767aa7
  1. 1
      README.md
  2. 4
      src/index.js
  3. 15
      test/create-test-server.js

1
README.md

@ -39,6 +39,7 @@ createTestServer().then(server => {
}); });
// You can return a body directly too // You can return a body directly too
server.get('/foo', 'foo');
server.get('/foo', () => 'foo'); server.get('/foo', () => 'foo');
// server.url + '/foo' and server.sslUrl + '/foo' will respond with 'bar' // server.url + '/foo' and server.sslUrl + '/foo' will respond with 'bar'

4
src/index.js

@ -13,7 +13,9 @@ const createTestServer = opts => createCert(opts && opts.certificate)
const server = http.createServer(app); const server = http.createServer(app);
const sslServer = https.createServer(keys, app); const sslServer = https.createServer(keys, app);
const send = fn => (req, res) => { const send = fn => (req, res) => {
new Promise(resolve => resolve(fn(req, res))).then(val => { const cb = typeof fn === 'function' ? fn(req, res) : fn;
new Promise(resolve => resolve(cb)).then(val => {
if (val) { if (val) {
res.send(val); res.send(val);
} }

15
test/create-test-server.js

@ -106,3 +106,18 @@ test('support returning body directly', async t => {
t.deepEqual(bodyJson, { foo: 'bar' }); t.deepEqual(bodyJson, { foo: 'bar' });
t.deepEqual(bodyAsync, 'bar'); t.deepEqual(bodyAsync, 'bar');
}); });
test('support returning body directly without wrapping in function', async t => {
const server = await createTestServer();
server.get('/foo', 'bar');
server.get('/bar', ({ foo: 'bar' }));
server.get('/async', Promise.resolve('bar'));
const bodyString = (await got(server.url + '/foo')).body;
const bodyJson = (await got(server.url + '/bar', { json: true })).body;
const bodyAsync = (await got(server.url + '/async')).body;
t.deepEqual(bodyString, 'bar');
t.deepEqual(bodyJson, { foo: 'bar' });
t.deepEqual(bodyAsync, 'bar');
});

Loading…
Cancel
Save