From b1b4785c3e402737900eb3c79e127d1a7c5e2dc6 Mon Sep 17 00:00:00 2001 From: Derek Date: Tue, 16 Dec 2014 21:36:47 -0800 Subject: [PATCH] Adds test for /server resource --- README.mkd | 14 +++++++++++++ index.js | 6 +++--- package.json | 11 ++++++---- tests/fixtures/mock-thoth-index.js | 10 ++++++++++ tests/fixtures/server-response.json | 18 +++++++++++++++++ tests/integration/server-get.js | 31 +++++++++++++++++++++++++++++ 6 files changed, 83 insertions(+), 7 deletions(-) create mode 100644 tests/fixtures/mock-thoth-index.js create mode 100644 tests/fixtures/server-response.json create mode 100644 tests/integration/server-get.js diff --git a/README.mkd b/README.mkd index 97e7289..8b84f6a 100644 --- a/README.mkd +++ b/README.mkd @@ -25,7 +25,21 @@ npm install npm start // starts api web server ``` +Tests +======================= + +Integration tests run a mock `thoth-index` server on port `3002`. +You'll need to run `thoth-api` w/ `THOTH_PORT=3002`. + +```sh +THOTH_PORT=3002 node index.js +``` +While the `thoth-api` server is up run: + +``` +npm test +``` Contributing ======================= diff --git a/index.js b/index.js index b2c9721..3edb5b9 100644 --- a/index.js +++ b/index.js @@ -48,18 +48,18 @@ var routeBase = [ */ var serverRoute = util.format(routeBase, 'server', ':server'); app.get(serverRoute, function (req, res) { - serversDispatcher.dispatchServer(req, res) + serversDispatcher.dispatchServer(req, res); }); app.get(serverRoute + '/:page', function (req, res) { - serversDispatcher.dispatchServer(req, res) + serversDispatcher.dispatchServer(req, res); }); /** * Pools */ app.get(util.format(routeBase, 'pool', ':pool'), function (req, res) { - poolsDispatcher.dispatchPool(req, res) + poolsDispatcher.dispatchPool(req, res); }); /** diff --git a/package.json b/package.json index e0d8bb0..73c7c3e 100644 --- a/package.json +++ b/package.json @@ -13,17 +13,20 @@ "node" ], "scripts": { - "start": "node index.js" + "start": "node index.js", + "test": "npm run test-integration", + "test-integration": "tap tests/integration/*.js" }, "dependencies": { "express": ">=3.0.6", - "socket.io": "~1.1.0", "nodemon": "=1.0.17", - "chai": "=1.9.1" + "socket.io": "~1.1.0" }, "author": "Damiano Braga", "license": "BSD", "devDependencies": { - "socket.io": "~1.1.0" + "request": "^2.51.0", + "send-data": "^3.3.3", + "tap": "^0.4.13" } } diff --git a/tests/fixtures/mock-thoth-index.js b/tests/fixtures/mock-thoth-index.js new file mode 100644 index 0000000..81d5207 --- /dev/null +++ b/tests/fixtures/mock-thoth-index.js @@ -0,0 +1,10 @@ +var http = require('http'); +var sendJson = require('send-data/json'); + +module.exports = function (resource) { + var indexResponse = require('./' + resource + '-response.json'); + + return http.createServer(function (req, res) { + sendJson(req, res, indexResponse); + }).listen(process.env.MOCK_THOTH || 3002); +}; diff --git a/tests/fixtures/server-response.json b/tests/fixtures/server-response.json new file mode 100644 index 0000000..6371225 --- /dev/null +++ b/tests/fixtures/server-response.json @@ -0,0 +1,18 @@ +{ + "response": { + "numFound": 2, + "start": 0, + "docs": [ + { + "date_dt": "2014-11-28T23:19:53.318Z", + "params_s": "{q=*:*rows=3}", + "qtime_i": 823 + }, + { + "date_dt": "2014-11-28T23:32:40.779Z", + "params_s": "{q=*:*&rows=15}", + "qtime_i": 811 + } + ] + } +} diff --git a/tests/integration/server-get.js b/tests/integration/server-get.js new file mode 100644 index 0000000..0c72ed8 --- /dev/null +++ b/tests/integration/server-get.js @@ -0,0 +1,31 @@ +var test = require('tap').test; +var request = require('request'); + +var thothIndex = require('../fixtures/mock-thoth-index')('server'); + +test('/server resource', function (t) { + var url = [ + 'http://localhost:3001/api/', + 'server/demo-host/', + 'core/collection1/', + 'port/8900/', + 'start/NOW-1HOUR/', + 'end/NOW/', + 'list/slowqueries/1' + ].join(''); + + request(url, function (err, res, body) { + if (err) { + t.fail(err); + thothIndex.close(); + return t.end(); + } + + var payload = JSON.parse(body); + + t.equal(res.statusCode, 200, 'return ok'); + t.ok(typeof payload.response, 'flatten thoth-index response'); + thothIndex.close(); + t.end(); + }); +});