From 28f7d2020fe3ffbe5ba8a0083386f616b0186a91 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 15 Aug 2016 18:44:30 +0200 Subject: Server: test filenames with hyphens --- server/tests/api/friends-advanced.js | 284 +++++++++++++++++++++++++++++++++++ 1 file changed, 284 insertions(+) create mode 100644 server/tests/api/friends-advanced.js (limited to 'server/tests/api/friends-advanced.js') diff --git a/server/tests/api/friends-advanced.js b/server/tests/api/friends-advanced.js new file mode 100644 index 000000000..0d24481ef --- /dev/null +++ b/server/tests/api/friends-advanced.js @@ -0,0 +1,284 @@ +'use strict' + +const chai = require('chai') +const each = require('async/each') +const expect = chai.expect +const series = require('async/series') + +const loginUtils = require('../utils/login') +const podsUtils = require('../utils/pods') +const serversUtils = require('../utils/servers') +const videosUtils = require('../utils/videos') + +describe('Test advanced friends', function () { + let servers = [] + + function makeFriends (podNumber, callback) { + const server = servers[podNumber - 1] + return podsUtils.makeFriends(server.url, server.accessToken, callback) + } + + function quitFriends (podNumber, callback) { + const server = servers[podNumber - 1] + return podsUtils.quitFriends(server.url, server.accessToken, callback) + } + + function getFriendsList (podNumber, end) { + const server = servers[podNumber - 1] + return podsUtils.getFriendsList(server.url, end) + } + + function uploadVideo (podNumber, callback) { + const name = 'my super video' + const description = 'my super description' + const tags = [ 'tag1', 'tag2' ] + const fixture = 'video_short.webm' + const server = servers[podNumber - 1] + + return videosUtils.uploadVideo(server.url, server.accessToken, name, description, tags, fixture, callback) + } + + function getVideos (podNumber, callback) { + return videosUtils.getVideosList(servers[podNumber - 1].url, callback) + } + + // --------------------------------------------------------------- + + before(function (done) { + this.timeout(30000) + serversUtils.flushAndRunMultipleServers(6, 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() + }) + }, done) + }) + }) + + it('Should make friends with two pod each in a different group', function (done) { + this.timeout(20000) + + series([ + // Pod 3 makes friend with the first one + function (next) { + makeFriends(3, next) + }, + // Pod 4 makes friend with the second one + function (next) { + makeFriends(4, next) + }, + // Now if the fifth wants to make friends with the third et the first + function (next) { + makeFriends(5, next) + }, + function (next) { + setTimeout(next, 11000) + }], + function (err) { + if (err) throw err + + // It should have 0 friends + getFriendsList(5, function (err, res) { + if (err) throw err + + expect(res.body.length).to.equal(0) + + done() + }) + } + ) + }) + + it('Should quit all friends', function (done) { + this.timeout(10000) + + series([ + function (next) { + quitFriends(1, next) + }, + function (next) { + quitFriends(2, next) + }], + function (err) { + if (err) throw err + + each([ 1, 2, 3, 4, 5, 6 ], function (i, callback) { + getFriendsList(i, function (err, res) { + if (err) throw err + + expect(res.body.length).to.equal(0) + + callback() + }) + }, done) + } + ) + }) + + it('Should make friends with the pods 1, 2, 3', function (done) { + this.timeout(150000) + + series([ + // Pods 1, 2, 3 and 4 become friends + function (next) { + makeFriends(2, next) + }, + function (next) { + makeFriends(1, next) + }, + function (next) { + makeFriends(4, next) + }, + // Check the pods 1, 2, 3 and 4 are friends + function (next) { + each([ 1, 2, 3, 4 ], function (i, callback) { + getFriendsList(i, function (err, res) { + if (err) throw err + + expect(res.body.length).to.equal(3) + + callback() + }) + }, next) + }, + // Kill pod 4 + function (next) { + servers[3].app.kill() + next() + }, + // Expulse pod 4 from pod 1 and 2 + function (next) { + uploadVideo(1, next) + }, + function (next) { + uploadVideo(2, next) + }, + function (next) { + setTimeout(next, 11000) + }, + function (next) { + uploadVideo(1, next) + }, + function (next) { + uploadVideo(2, next) + }, + function (next) { + setTimeout(next, 11000) + }, + // Rerun server 4 + function (next) { + serversUtils.runServer(4, function (server) { + servers[3].app = server.app + next() + }) + }, + function (next) { + getFriendsList(4, function (err, res) { + if (err) throw err + + // Pod 4 didn't know pod 1 and 2 removed it + expect(res.body.length).to.equal(3) + next() + }) + }, + // Pod 6 ask pod 1, 2 and 3 + function (next) { + makeFriends(6, next) + }, + function (next) { + setTimeout(next, 11000) + }], + function (err) { + if (err) throw err + + getFriendsList(6, function (err, res) { + if (err) throw err + + // Pod 4 should not be our friend + const result = res.body + expect(result.length).to.equal(3) + for (const pod of result) { + expect(pod.url).not.equal(servers[3].url) + } + + done() + }) + } + ) + }) + + it('Should pod 1 quit friends', function (done) { + this.timeout(25000) + + series([ + // Upload a video on server 3 for aditionnal tests + function (next) { + uploadVideo(3, next) + }, + function (next) { + setTimeout(next, 15000) + }, + function (next) { + quitFriends(1, next) + }, + // Remove pod 1 from pod 2 + function (next) { + getVideos(1, function (err, res) { + if (err) throw err + + const videos = res.body.data + expect(videos).to.be.an('array') + expect(videos.length).to.equal(2) + + next() + }) + }], + function (err) { + if (err) throw err + + getVideos(2, function (err, res) { + if (err) throw err + + const videos = res.body.data + expect(videos).to.be.an('array') + expect(videos.length).to.equal(3) + done() + }) + } + ) + }) + + it('Should make friends between pod 1 and 2 and exchange their videos', function (done) { + this.timeout(20000) + makeFriends(1, function () { + setTimeout(function () { + getVideos(1, function (err, res) { + if (err) throw err + + const videos = res.body.data + expect(videos).to.be.an('array') + expect(videos.length).to.equal(5) + + done() + }) + }, 11000) + }) + }) + + after(function (done) { + servers.forEach(function (server) { + process.kill(-server.app.pid) + }) + + if (this.ok) { + serversUtils.flushTests(done) + } else { + done() + } + }) +}) -- cgit v1.2.3