From 192a31e1fcb5a280ba6f220d78810ed736fe4b23 Mon Sep 17 00:00:00 2001 From: orthagonal Date: Fri, 22 Jun 2018 17:28:59 +0000 Subject: [PATCH] fix query --- index.js | 2 ++ tests/test.csv.js | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/index.js b/index.js index dff87f7..4e6bb3d 100644 --- a/index.js +++ b/index.js @@ -2,8 +2,10 @@ const json2csv = require('json2csv'); const register = (server, pluginOptions) => { server.ext('onRequest', (request, h) => { if (request.path.endsWith('.csv')) { + const query = request.query; request.headers.accept = 'text/csv'; request.setUrl(request.path.replace('.csv', '')); + request.query = query; } return h.continue; }); diff --git a/tests/test.csv.js b/tests/test.csv.js index ac81645..fe32d17 100644 --- a/tests/test.csv.js +++ b/tests/test.csv.js @@ -154,3 +154,44 @@ tap.test('will not interfere with non-200 results', async(t) => { await server.stop(); t.end(); }); + +tap.test('will forward query params to the underlying route', async(t) => { + const server = await new Hapi.Server({ port: 8080 }); + server.route({ + method: 'get', + path: '/path1', + config: { + plugins: { + 'hapi-transform-csv': { + } + } + }, + handler(request, h) { + t.equal(request.query.test, '1', 'query param forwarded'); + return [ + { + car: 'Audi', + price: 40000, + color: 'blue' + }, { + car: 'BMW', + price: 35000, + color: 'black' + }, { + car: 'Porsche', + price: 60000, + color: 'green' + } + ]; + } + }); + await server.register(plugin, {}); + await server.start(); + const csvResponse = await server.inject({ + method: 'get', + url: '/path1.csv?test=1' + }); + t.equal(csvResponse.statusCode, 200, 'returns HTTP OK'); + await server.stop(); + t.end(); +});