@arisan/data-api
Version:
The Universal Database API Gateway for CLIO's Modules
126 lines (104 loc) • 4.69 kB
JavaScript
;
var _chai = require('chai');
var _powMongodbFixtures = require('pow-mongodb-fixtures');
var _mongodbUri = require('mongodb-uri');
var _mongodbUri2 = _interopRequireDefault(_mongodbUri);
var _DataAPI = require('../DataAPI');
var _DataAPI2 = _interopRequireDefault(_DataAPI);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const request = require('supertest');
//endregion
//region 2. Project Libraries
/* eslint-disable import/newline-after-import, import/first */
//region 1. Platform Libraries
//endregion
describe('Route .../video-info', () => {
const mongo = _mongodbUri2.default.parse(process.env.CLIO_MONGO_URL);
const fixtures = (0, _powMongodbFixtures.connect)(mongo.database, {
host: mongo.hosts[0].host,
port: mongo.hosts[0].port,
user: mongo.username,
pass: mongo.password
});
const dataAPI = new _DataAPI2.default();
const id = '123456789a123456789b1234';
const indexWithoutVideoInfo = 0;
const indexWithVideoInfo = 1;
const dummyVideoInfoDB = {
camera_id: (0, _powMongodbFixtures.createObjectId)(id),
stream_index: 1,
video_index: 1,
start_time: new Date(1482375835000),
end_time: new Date(1482375845000),
bucket_name: 'bucket-name',
object_name: 'object/name',
size: 52428800
};
const dummyVideoInfo2REST = {
index: 2,
startTime: 2482375835000,
endTime: 2482375845000,
bucketName: 'bucket-name',
objectName: 'object/name',
size: 5242880
};
const dummyVideoInfoWithoutSize = {
index: 2,
startTime: 2482375835000,
endTime: 2482375845000,
bucketName: 'bucket-name',
objectName: 'object/name'
};
const dummyVideoInfoWithSizeAsSring = {
index: 2,
startTime: 2482375835000,
endTime: 2482375845000,
bucketName: 'bucket-name',
objectName: 'object/name',
size: '5242880'
};
before(function before(done) {
this.timeout(5000);
fixtures.clearAndLoad({
archive_videos: [dummyVideoInfoDB]
}, err => {
if (err) {
throw new Error(err.message);
}
dataAPI.initialize({
environment: 'unit-test',
heartbeatInterval: 10,
logLevel: 'DEBUG',
mongoUrl: process.env.CLIO_MONGO_URL,
port: 15925
});
dataAPI.start(done);
});
});
it('PUT video info should succeed', done => {
request(dataAPI.expressApp).put(`/cameras/${id}/streams/${indexWithVideoInfo}/video-info`).send(dummyVideoInfo2REST).expect(200).end( /** @type function */done);
});
it('PUT video info without size field should fail', done => {
request(dataAPI.expressApp).put(`/cameras/${id}/streams/${indexWithVideoInfo}/video-info`).send(dummyVideoInfoWithoutSize).expect(400).end( /** @type function */done);
});
it('PUT should fail when size is not a integer', done => {
request(dataAPI.expressApp).put(`/cameras/${id}/streams/${indexWithVideoInfo}/video-info`).send(dummyVideoInfoWithSizeAsSring).expect(400).end( /** @type function */done);
});
it('PUT empty body should fail', done => {
request(dataAPI.expressApp).put(`/cameras/${id}/streams/${indexWithVideoInfo}/video-info`).expect(400).end( /** @type function */done);
});
it('GET empty video info array should succeed', done => {
request(dataAPI.expressApp).get(`/cameras/${id}/streams/${indexWithoutVideoInfo}/video-info/-1`).expect(200).expect(res => _chai.assert.deepEqual({ index: 0 }, res.body)).end( /** @type function */done);
});
it('GET last video info should succeed', done => {
request(dataAPI.expressApp).get(`/cameras/${id}/streams/${indexWithVideoInfo}/video-info/-1`).expect(200).expect(res => _chai.assert.deepEqual(dummyVideoInfo2REST, res.body)).end( /** @type function */done);
});
it('PUT second video info status should succeed', done => {
request(dataAPI.expressApp).put(`/cameras/${id}/streams/${indexWithVideoInfo}/video-info/2/status`).set('Content-Type', 'text/plain').send('uploaded').expect(200).end(done);
});
it('GET last video info status should succeed', done => {
request(dataAPI.expressApp).get(`/cameras/${id}/streams/${indexWithVideoInfo}/video-info/-1`).expect(200).expect(res => _chai.assert.equal(res.body.status, 'uploaded')).end(done);
});
after(done => dataAPI.stop(done));
});
//# sourceMappingURL=mountVideoInfo.spec.js.map