Skip to content

Commit

Permalink
added e2e for metrics api
Browse files Browse the repository at this point in the history
  • Loading branch information
ivaosthu committed Nov 11, 2016
1 parent 0eeba44 commit f4e2bf5
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 10 deletions.
64 changes: 64 additions & 0 deletions test/e2e/metrics-api.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
'use strict';

const specHelper = require('./util/test-helper');
const assert = require('assert');
let request;

describe('The metrics api', () => {
beforeEach(done => {
specHelper.setupApp().then((app) => {
request = app.request;
done();
});
});

it('should register client', (done) => {
request
.post('/api/client/register')
.send({
appName: 'demo',
instanceId: 'test',
strategies: ['default'],
started: Date.now(),
interval: 10
})
.expect(202, done);
});

it('should accept client metrics', (done) => {
request
.post('/api/client/metrics')
.send({
appName: 'demo',
instanceId: '1',
bucket: {
start: Date.now(),
stop: Date.now(),
toggles: {}
}
})
.expect(202, done)
});

it('should get client strategies', done => {
request
.get('/api/client/strategies')
.expect('Content-Type', /json/)
.end((err, res) => {
assert(res.status, 200);
assert(res.body.length === 1, `expected 1 registerd client, got ${res.body}`);
done();
});;
});

it('should get client instances', done => {
request
.get('/api/client/instances')
.expect('Content-Type', /json/)
.end((err, res) => {
assert(res.status, 200);
assert(res.body.length === 1, `expected 1 registerd client, got ${res.body}`);
done();
});;
});
});
45 changes: 35 additions & 10 deletions test/e2e/util/test-helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,30 @@ function createStrategies (stores) {
].map(strategy => stores.strategyStore._createStrategy(strategy));
}

function createClientStrategy (stores) {
return [
{
appName: 'demo-sed',
instanceId: 'test-1',
strategies: ['default'],
started: Date.now(),
interval: 10
},
].map(client => stores.clientStrategyStore.insert(client));
}

function createClientInstance (stores) {
return [
{
appName: 'demo-seed',
instanceId: 'test-1',
strategies: ['default'],
started: Date.now(),
interval: 10
},
].map(client => stores.clientInstanceStore.insert(client));
}

function createFeatures (stores) {
return [
{
Expand Down Expand Up @@ -100,20 +124,21 @@ function createFeatures (stores) {
].map(feature => stores.featureToggleStore._createFeature(feature));
}

function destroyStrategies (stores) {
return stores.db('strategies').del();
}

function destroyFeatures (stores) {
return stores.db('features').del();
}

function resetDatabase (stores) {
return Promise.all([destroyStrategies(stores), destroyFeatures(stores)]);
return Promise.all([
stores.db('strategies').del(),
stores.db('features').del(),
stores.db('client_strategies').del(),
stores.db('client_instances').del()
]);
}

function setupDatabase (stores) {
return Promise.all(createStrategies(stores).concat(createFeatures(stores)))
return Promise.all(
createStrategies(stores)
.concat(createFeatures(stores)
.concat(createClientInstance(stores))
.concat(createClientStrategy(stores))))
}

module.exports = {
Expand Down

0 comments on commit f4e2bf5

Please sign in to comment.