Merge branch 'api-insert-delete-test' of https://github.com/jpcunningh/cgm-remote-monitor into 201812_needs_testing

This commit is contained in:
PieterGit
2019-01-01 11:19:03 +01:00
3 changed files with 237 additions and 29 deletions
+97
View File
@@ -0,0 +1,97 @@
'use strict';
var _ = require('lodash');
var request = require('supertest');
var should = require('should');
var language = require('../lib/language')();
describe('Devicestatus API', function ( ) {
this.timeout(10000);
var self = this;
var api = require('../lib/api/');
beforeEach(function (done) {
process.env.API_SECRET = 'this is my long pass phrase';
self.env = require('../env')();
self.env.settings.authDefaultRoles = 'readable';
self.env.settings.enable = ['careportal', 'api'];
this.wares = require('../lib/middleware/')(self.env);
self.app = require('express')();
self.app.enable('api');
require('../lib/server/bootevent')(self.env, language).boot(function booted(ctx) {
self.ctx = ctx;
self.ctx.ddata = require('../lib/data/ddata')();
self.app.use('/api', api(self.env, ctx));
done();
});
});
after(function () {
// delete process.env.API_SECRET;
});
it('post a devicestatus, query, delete, verify gone', function (done) {
// insert a devicestatus - needs to be unique from example data
console.log('Inserting devicestatus entry');
request(self.app)
.post('/api/devicestatus/')
.set('api-secret', self.env.api_secret || '')
.send({
device: 'xdripjs://rigName'
, xdripjs: {
state: 6
, stateString: 'OK'
, txStatus: 0
, txStatusString: 'OK'
}
, created_at: '2018-12-16T01:00:52Z'
})
.expect(200)
.end(function (err) {
if (err) {
done(err);
} else {
// make sure devicestatus was inserted successfully
console.log('Ensuring devicestatus entry was inserted successfully');
request(self.app)
.get('/api/devicestatus/')
.query('find[created_at][$gte]=2018-12-16')
.set('api-secret', self.env.api_secret || '')
.expect(200)
.expect(function (response) {
response.body[0].xdripjs.state.should.equal(6);
})
.end(function (err) {
if (err) {
done(err);
} else {
// delete the treatment
console.log('Deleting test treatment entry');
request(self.app)
.delete('/api/devicestatus/')
.query('find[created_at][$gte]=2018-12-16')
.set('api-secret', self.env.api_secret || '')
.expect(200)
.end(function (err) {
if (err) {
done(err);
} else {
// make sure it was deleted
console.log('Testing if devicestatus was deleted');
request(self.app)
.get('/api/devicestatus/')
.query('find[created_at][$lte]=2018-12-16')
.set('api-secret', self.env.api_secret || '')
.expect(200)
.expect(function (response) {
response.body.length.should.equal(0);
})
.end(done);
}
});
}
});
}
});
});
});
+85 -29
View File
@@ -8,19 +8,19 @@ require('should');
describe('Entries REST api', function ( ) {
var entries = require('../lib/api/entries/');
var self = this;
this.timeout(10000);
before(function (done) {
var env = require('../env')( );
env.settings.authDefaultRoles = 'readable';
this.wares = require('../lib/middleware/')(env);
this.archive = null;
this.app = require('express')( );
this.app.enable('api');
var self = this;
bootevent(env, language).boot(function booted (ctx) {
self.env = require('../env')( );
self.env.settings.authDefaultRoles = 'readable';
self.wares = require('../lib/middleware/')(self.env);
self.archive = null;
self.app = require('express')( );
self.app.enable('api');
bootevent(self.env, language).boot(function booted (ctx) {
self.app.use('/', entries(self.app, self.wares, ctx));
self.archive = require('../lib/server/entries')(env, ctx);
self.archive = require('../lib/server/entries')(self.env, ctx);
var creating = load('json');
creating.push({type: 'sgv', sgv: 100, date: Date.now()});
@@ -31,15 +31,15 @@ describe('Entries REST api', function ( ) {
beforeEach(function (done) {
var creating = load('json');
creating.push({type: 'sgv', sgv: 100, date: Date.now()});
this.archive.create(creating, done);
self.archive.create(creating, done);
});
afterEach(function (done) {
this.archive( ).remove({ }, done);
self.archive( ).remove({ }, done);
});
after(function (done) {
this.archive( ).remove({ }, done);
self.archive( ).remove({ }, done);
});
// keep this test pinned at or near the top in order to validate all
@@ -48,7 +48,7 @@ describe('Entries REST api', function ( ) {
// function callback logic in entries.js.
it('gets requested number of entries', function (done) {
var count = 30;
request(this.app)
request(self.app)
.get('/entries.json?find[dateString][$gte]=2014-07-19&count=' + count)
.expect(200)
.end(function (err, res) {
@@ -59,7 +59,7 @@ describe('Entries REST api', function ( ) {
it('gets default number of entries', function (done) {
var defaultCount = 10;
request(this.app)
request(self.app)
.get('/entries/sgv.json?find[dateString][$gte]=2014-07-19&find[dateString][$lte]=2014-07-20')
.expect(200)
.end(function (err, res) {
@@ -70,7 +70,7 @@ describe('Entries REST api', function ( ) {
it('gets entries in right order', function (done) {
var defaultCount = 10;
request(this.app)
request(self.app)
.get('/entries/sgv.json?find[dateString][$gte]=2014-07-19&find[dateString][$lte]=2014-07-20')
.expect(200)
.end(function (err, res) {
@@ -88,7 +88,7 @@ describe('Entries REST api', function ( ) {
it('/echo/ api shows query', function (done) {
request(this.app)
request(self.app)
.get('/echo/entries/sgv.json?find[dateString][$gte]=2014-07-19&find[dateString][$lte]=2014-07-20')
.expect(200)
.end(function (err, res) {
@@ -102,7 +102,7 @@ describe('Entries REST api', function ( ) {
});
it('/slice/ can slice time', function (done) {
var app = this.app;
var app = self.app;
request(app)
.get('/slice/entries/dateString/sgv/2014-07.json?count=20')
.expect(200)
@@ -114,7 +114,7 @@ describe('Entries REST api', function ( ) {
it('/times/echo can describe query', function (done) {
var app = this.app;
var app = self.app;
request(app)
.get('/times/echo/2014-07/.*T{00..05}:.json?count=20&find[sgv][$gte]=160')
.expect(200)
@@ -127,7 +127,7 @@ describe('Entries REST api', function ( ) {
});
it('/slice/ can slice with multiple prefix', function (done) {
var app = this.app;
var app = self.app;
request(app)
.get('/slice/entries/dateString/sgv/2014-07-{17..20}.json?count=20')
.expect(200)
@@ -138,7 +138,7 @@ describe('Entries REST api', function ( ) {
});
it('/slice/ can slice time with prefix and no results', function (done) {
var app = this.app;
var app = self.app;
request(app)
.get('/slice/entries/dateString/sgv/1999-07.json?count=20&find[sgv][$lte]=401')
.expect(200)
@@ -149,7 +149,7 @@ describe('Entries REST api', function ( ) {
});
it('/times/ can get modal times', function (done) {
var app = this.app;
var app = self.app;
request(app)
.get('/times/2014-07-/{0..30}T.json?')
.expect(200)
@@ -160,7 +160,7 @@ describe('Entries REST api', function ( ) {
});
it('/times/ can get modal minutes and times', function (done) {
var app = this.app;
var app = self.app;
request(app)
.get('/times/20{14..15}-07/T{09..10}.json?')
.expect(200)
@@ -170,7 +170,7 @@ describe('Entries REST api', function ( ) {
});
});
it('/times/ can get multiple prefixen and modal minutes and times', function (done) {
var app = this.app;
var app = self.app;
request(app)
.get('/times/20{14..15}/T.*:{00..60}.json?')
.expect(200)
@@ -181,7 +181,7 @@ describe('Entries REST api', function ( ) {
});
it('/entries/current.json', function (done) {
request(this.app)
request(self.app)
.get('/entries/current.json')
.expect(200)
.end(function (err, res) {
@@ -192,8 +192,8 @@ describe('Entries REST api', function ( ) {
});
it('/entries/:id', function (done) {
var app = this.app;
this.archive.list({count: 1}, function(err, records) {
var app = self.app;
self.archive.list({count: 1}, function(err, records) {
var currentId = records.pop()._id.toString();
request(app)
.get('/entries/'+currentId+'.json')
@@ -207,7 +207,7 @@ describe('Entries REST api', function ( ) {
});
it('/entries/:model', function (done) {
var app = this.app;
var app = self.app;
request(app)
.get('/entries/sgv/.json?count=10&find[dateString][$gte]=2014')
.expect(200)
@@ -218,7 +218,7 @@ describe('Entries REST api', function ( ) {
});
it('disallow POST by readable /entries/preview', function (done) {
request(this.app)
request(self.app)
.post('/entries/preview.json')
.send(load('json'))
.expect(401)
@@ -229,7 +229,7 @@ describe('Entries REST api', function ( ) {
});
it('disallow deletes unauthorized', function (done) {
var app = this.app;
var app = self.app;
request(app)
.delete('/entries/sgv?find[dateString][$gte]=2014-07-19&find[dateString][$lte]=2014-07-20')
@@ -249,4 +249,60 @@ describe('Entries REST api', function ( ) {
});
});
it('post an entry, query, delete, verify gone', function (done) {
// insert a glucose entry - needs to be unique from example data
console.log('Inserting glucose entry')
request(self.app)
.post('/entries/')
.set('api-secret', self.env.api_secret || '')
.send({
"type": "sgv", "sgv": "199", "dateString": "2014-07-20T00:44:15.000-07:00"
, "date": 1405791855000, "device": "dexcom", "direction": "NOT COMPUTABLE"
})
.expect(200)
.end(function (err) {
if (err) {
done(err);
} else {
// make sure treatment was inserted successfully
console.log('Ensuring glucose entry was inserted successfully');
request(self.app)
.get('/entries.json?find[dateString][$gte]=2014-07-20&count=100')
.set('api-secret', self.env.api_secret || '')
.expect(200)
.expect(function (response) {
response.body[0].sgv.should.equal('199');
})
.end(function (err) {
if (err) {
done(err);
} else {
// delete the glucose entry
console.log('Deleting test glucose entry');
request(self.app)
.delete('/entries.json?find[dateString][$gte]=2014-07-20&count=100')
.set('api-secret', self.env.api_secret || '')
.expect(200)
.end(function (err) {
if (err) {
done(err);
} else {
// make sure it was deleted
console.log('Testing if glucose entry was deleted');
request(self.app)
.get('/entries.json?find[dateString][$gte]=2014-07-20&count=100')
.set('api-secret', self.env.api_secret || '')
.expect(200)
.expect(function (response) {
response.body.length.should.equal(0);
})
.end(done);
}
});
}
});
}
});
});
});
+55
View File
@@ -125,4 +125,59 @@ describe('Treatment API', function ( ) {
});
});
});
it('post a treatment, query, delete, verify gone', function (done) {
// insert a treatment - needs to be unique from example data
console.log('Inserting treatment entry');
request(self.app)
.post('/api/treatments/')
.set('api-secret', self.env.api_secret || '')
.send({eventType: 'Meal Bolus', carbs: '99', insulin: '2.00', preBolus: '15', glucose: 100, glucoseType: 'Finger', units: 'mg/dl'})
.expect(200)
.end(function (err) {
if (err) {
done(err);
} else {
// make sure treatment was inserted successfully
console.log('Ensuring treatment entry was inserted successfully');
request(self.app)
.get('/api/treatments/')
.query('find[carbs]=99')
.set('api-secret', self.env.api_secret || '')
.expect(200)
.expect(function (response) {
response.body[0].carbs.should.equal(99);
})
.end(function (err) {
if (err) {
done(err);
} else {
// delete the treatment
console.log('Deleting test treatment entry');
request(self.app)
.delete('/api/treatments/')
.query('find[carbs]=99')
.set('api-secret', self.env.api_secret || '')
.expect(200)
.end(function (err) {
if (err) {
done(err);
} else {
// make sure it was deleted
console.log('Testing if entry was deleted');
request(self.app)
.get('/api/treatments/')
.query('find[carbs]=99')
.set('api-secret', self.env.api_secret || '')
.expect(200)
.expect(function (response) {
response.body.length.should.equal(0);
})
.end(done);
}
});
}
});
}
});
});
});