UNPKG

@arisan/data-api

Version:

The Universal Database API Gateway for CLIO's Modules

126 lines (104 loc) 4.69 kB
'use strict'; 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