From d3cd34be2fd03ea79145dfa8eb16e82d2e23191b Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 19 Sep 2016 21:33:46 +0200 Subject: Server: add requests stats endpoint --- server/tests/api/check-params.js | 21 ++++++- server/tests/api/requests.js | 128 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 server/tests/api/requests.js (limited to 'server/tests') diff --git a/server/tests/api/check-params.js b/server/tests/api/check-params.js index f060b2ad4..a696bc171 100644 --- a/server/tests/api/check-params.js +++ b/server/tests/api/check-params.js @@ -13,6 +13,7 @@ const usersUtils = require('../utils/users') describe('Test parameters validator', function () { let server = null + let userAccessToken = null // --------------------------------------------------------------- @@ -496,7 +497,6 @@ describe('Test parameters validator', function () { describe('Of the users API', function () { const path = '/api/v1/users/' let userId = null - let userAccessToken = null describe('When listing users', function () { it('Should fail with a bad start pagination', function (done) { @@ -721,6 +721,25 @@ describe('Test parameters validator', function () { }) }) + describe('Of the requests API', function () { + const path = '/api/v1/requests/stats' + + it('Should fail with an non authenticated user', function (done) { + request(server.url) + .get(path) + .set('Accept', 'application/json') + .expect(401, done) + }) + + it('Should fail with a non admin user', function (done) { + request(server.url) + .get(path) + .set('Authorization', 'Bearer ' + userAccessToken) + .set('Accept', 'application/json') + .expect(403, done) + }) + }) + after(function (done) { process.kill(-server.app.pid) diff --git a/server/tests/api/requests.js b/server/tests/api/requests.js new file mode 100644 index 000000000..af36f6e34 --- /dev/null +++ b/server/tests/api/requests.js @@ -0,0 +1,128 @@ +'use strict' + +const chai = require('chai') +const each = require('async/each') +const expect = chai.expect +const request = require('supertest') + +const loginUtils = require('../utils/login') +const podsUtils = require('../utils/pods') +const serversUtils = require('../utils/servers') +const videosUtils = require('../utils/videos') + +describe('Test requests stats', function () { + const path = '/api/v1/requests/stats' + let servers = [] + + function uploadVideo (server, callback) { + const name = 'my super video' + const description = 'my super description' + const tags = [ 'tag1', 'tag2' ] + const fixture = 'video_short.webm' + + videosUtils.uploadVideo(server.url, server.accessToken, name, description, tags, fixture, callback) + } + + function getRequestsStats (server, callback) { + request(server.url) + .get(path) + .set('Accept', 'application/json') + .set('Authorization', 'Bearer ' + server.accessToken) + .expect(200) + .end(callback) + } + + // --------------------------------------------------------------- + + before(function (done) { + this.timeout(20000) + serversUtils.flushAndRunMultipleServers(2, function (serversRun, urlsRun) { + servers = serversRun + + each(servers, function (server, callbackEach) { + loginUtils.loginAndGetAccessToken(server, function (err, accessToken) { + if (err) return callbackEach(err) + + server.accessToken = accessToken + callbackEach() + }) + }, function (err) { + if (err) throw err + + const server1 = servers[0] + podsUtils.makeFriends(server1.url, server1.accessToken, done) + }) + }) + }) + + it('Should have a correct timer', function (done) { + const server = servers[0] + + getRequestsStats(server, function (err, res) { + if (err) throw err + + const body = res.body + expect(body.remainingMilliSeconds).to.be.at.least(0) + expect(body.remainingMilliSeconds).to.be.at.most(10000) + + done() + }) + }) + + it('Should have the correct request', function (done) { + this.timeout(15000) + + const server = servers[0] + // Ensure the requests of pod 1 won't be made + servers[1].app.kill() + + uploadVideo(server, function (err) { + if (err) throw err + + getRequestsStats(server, function (err, res) { + if (err) throw err + + const body = res.body + expect(body.requests).to.have.lengthOf(1) + + const request = body.requests[0] + expect(request.to).to.have.lengthOf(1) + expect(request.request.type).to.equal('add') + + // Wait one cycle + setTimeout(done, 10000) + }) + }) + }) + + it('Should have the correct requests', function (done) { + const server = servers[0] + + uploadVideo(server, function (err) { + if (err) throw err + + getRequestsStats(server, function (err, res) { + if (err) throw err + + const body = res.body + expect(body.requests).to.have.lengthOf(2) + + const request = body.requests[1] + expect(request.to).to.have.lengthOf(1) + expect(request.request.type).to.equal('add') + + done() + }) + }) + }) + + after(function (done) { + process.kill(-servers[0].app.pid) + + if (this.ok) { + serversUtils.flushTests(done) + } else { + done() + } + }) +}) -- cgit v1.2.3