From 290a124aefd6dd0e435449905a9c4934f60a7935 Mon Sep 17 00:00:00 2001 From: svelovla Date: Mon, 20 Oct 2014 15:12:30 +0200 Subject: [PATCH] #8 mocked api respons --- unleash-server/lib/api.js | 44 +++++++++++++++++++++++++++--- unleash-server/lib/featuresMock.js | 23 ++++++++++++++++ unleash-server/test/api.js | 12 -------- unleash-server/test/apiSpec.js | 29 ++++++++++++++++++++ 4 files changed, 92 insertions(+), 16 deletions(-) create mode 100644 unleash-server/lib/featuresMock.js delete mode 100644 unleash-server/test/api.js create mode 100644 unleash-server/test/apiSpec.js diff --git a/unleash-server/lib/api.js b/unleash-server/lib/api.js index 336643d8cd..533d5acb7d 100644 --- a/unleash-server/lib/api.js +++ b/unleash-server/lib/api.js @@ -1,5 +1,41 @@ -module.exports = function (app) { - app.get('/features', function (req, res) { - res.send('some nice json features here!'); +var featuresMock = require('./featuresMock'); + +function getFeature(name) { + var featureFound; + featuresMock.forEach(function (feature) { + if (feature.name === name) { + featureFound = feature; + } }); -}; \ No newline at end of file + return featureFound; +} + +module.exports = function (app) { + + app.get('/features', function (req, res) { + res.json(featuresMock); + }); + + app.get('/features/:id', function (req, res) { + var feature = getFeature(req.params.id); + + if (feature) { + res.json(feature); + } else { + res.json(404, {error: 'Could not find feature'}); + } + }); + + app.post('/features', function (req, res) { + var newFeature = req.body; + + if (!getFeature(newFeature.name)) { + featuresMock.push(newFeature); + res.status(201).end(); + } else { + res.status(500).end(); + } + }); + +}; + diff --git a/unleash-server/lib/featuresMock.js b/unleash-server/lib/featuresMock.js new file mode 100644 index 0000000000..4efc04143c --- /dev/null +++ b/unleash-server/lib/featuresMock.js @@ -0,0 +1,23 @@ +module.exports = [ + { + "name": "featureX", + "status": "on", + "strategy": "default" + }, + { + "name": "featureY", + "status": "off", + "strategy": "baz", + "parameters": { + "foo": "bar" + } + }, + { + "name": "featureZ", + "status": "on", + "strategy": "baz", + "parameters": { + "foo": "rab" + } + } +]; \ No newline at end of file diff --git a/unleash-server/test/api.js b/unleash-server/test/api.js deleted file mode 100644 index 013479eb47..0000000000 --- a/unleash-server/test/api.js +++ /dev/null @@ -1,12 +0,0 @@ -var assert = require('assert'); - -describe('The api', function () { - beforeEach(function () { - // - }); - - it('returns all toggles', function (done) { - done(); - assert(true); - }); -}); \ No newline at end of file diff --git a/unleash-server/test/apiSpec.js b/unleash-server/test/apiSpec.js new file mode 100644 index 0000000000..0d1fd47229 --- /dev/null +++ b/unleash-server/test/apiSpec.js @@ -0,0 +1,29 @@ +var request = require('supertest'); + +request = request('http://localhost:4242'); + +describe('The api', function () { + var server; + + before(function () { + server = require('../server'); + }); + + after(function () { + server.server.close(); + }); + + it('returns three mocked feature toggles', function (done) { + request + .get('/features') + .expect(200, done); + }); + + it('creates new feature toggle', function (done) { + request + .post('/features') + .send({name: 'featureAss', 'status': 'off'}) + .set('Content-Type', 'application/json') + .expect(201, done); + }); +}); \ No newline at end of file