]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tests/api/friendsBasic.js
Remove livereload module (role of webpack now)
[github/Chocobozzz/PeerTube.git] / server / tests / api / friendsBasic.js
CommitLineData
9f10b292 1'use strict'
8c308c2b 2
f0f5567b
C
3const async = require('async')
4const chai = require('chai')
5const expect = chai.expect
8c308c2b 6
f0f5567b 7const utils = require('./utils')
8c308c2b 8
9f10b292 9describe('Test basic friends', function () {
0c1cbbfe 10 let servers = []
ee66c593 11
b3b92647
C
12 function makeFriends (podNumber, callback) {
13 const server = servers[podNumber - 1]
14 return utils.makeFriends(server.url, server.accessToken, callback)
15 }
16
bc503c2a 17 function testMadeFriends (servers, serverToTest, callback) {
f0f5567b 18 const friends = []
0c1cbbfe 19 for (let i = 0; i < servers.length; i++) {
bc503c2a 20 if (servers[i].url === serverToTest.url) continue
0c1cbbfe 21 friends.push(servers[i].url)
9f10b292
C
22 }
23
bc503c2a 24 utils.getFriendsList(serverToTest.url, function (err, res) {
9f10b292
C
25 if (err) throw err
26
f0f5567b 27 const result = res.body
9f10b292
C
28 expect(result).to.be.an('array')
29 expect(result.length).to.equal(2)
528a9efa
C
30
31 const resultUrls = [ result[0].url, result[1].url ]
bc503c2a 32 expect(resultUrls[0]).to.not.equal(resultUrls[1])
45239549 33
bc503c2a
C
34 const errorString = 'Friends url do not correspond for ' + serverToTest.url
35 expect(friends).to.contain(resultUrls[0], errorString)
36 expect(friends).to.contain(resultUrls[1], errorString)
9f10b292
C
37 callback()
38 })
39 }
40
41 // ---------------------------------------------------------------
42
43 before(function (done) {
44 this.timeout(20000)
bc503c2a
C
45 utils.flushAndRunMultipleServers(3, function (serversRun, urlsRun) {
46 servers = serversRun
b3b92647
C
47
48 async.each(servers, function (server, callbackEach) {
49 utils.loginAndGetAccessToken(server, function (err, accessToken) {
50 if (err) return callbackEach(err)
51
52 server.accessToken = accessToken
53 callbackEach()
54 })
55 }, done)
9f10b292
C
56 })
57 })
58
59 it('Should not have friends', function (done) {
0c1cbbfe
C
60 async.each(servers, function (server, callback) {
61 utils.getFriendsList(server.url, function (err, res) {
45239549
C
62 if (err) throw err
63
f0f5567b 64 const result = res.body
45239549 65 expect(result).to.be.an('array')
9f10b292 66 expect(result.length).to.equal(0)
45239549
C
67 callback()
68 })
9f10b292
C
69 }, done)
70 })
45239549 71
9f10b292
C
72 it('Should make friends', function (done) {
73 this.timeout(10000)
74
9f10b292
C
75 async.series([
76 // The second pod make friend with the third
77 function (next) {
b3b92647 78 makeFriends(2, next)
9f10b292
C
79 },
80 // Wait for the request between pods
81 function (next) {
82 setTimeout(next, 1000)
83 },
84 // The second pod should have the third as a friend
85 function (next) {
0c1cbbfe 86 utils.getFriendsList(servers[1].url, function (err, res) {
9f10b292 87 if (err) throw err
8c308c2b 88
f0f5567b 89 const result = res.body
9f10b292
C
90 expect(result).to.be.an('array')
91 expect(result.length).to.equal(1)
0c1cbbfe 92 expect(result[0].url).to.be.equal(servers[2].url)
8c308c2b 93
9f10b292
C
94 next()
95 })
96 },
97 // Same here, the third pod should have the second pod as a friend
98 function (next) {
0c1cbbfe 99 utils.getFriendsList(servers[2].url, function (err, res) {
8c308c2b
C
100 if (err) throw err
101
f0f5567b 102 const result = res.body
8c308c2b 103 expect(result).to.be.an('array')
9f10b292 104 expect(result.length).to.equal(1)
0c1cbbfe 105 expect(result[0].url).to.be.equal(servers[1].url)
9f10b292
C
106
107 next()
8c308c2b 108 })
9f10b292
C
109 },
110 // Finally the first pod make friend with the second pod
111 function (next) {
b3b92647 112 makeFriends(1, next)
9f10b292
C
113 },
114 // Wait for the request between pods
115 function (next) {
116 setTimeout(next, 1000)
117 }
118 ],
119 // Now each pod should be friend with the other ones
120 function (err) {
121 if (err) throw err
0c1cbbfe
C
122 async.each(servers, function (server, callback) {
123 testMadeFriends(servers, server, callback)
ee66c593 124 }, done)
8c308c2b 125 })
9f10b292 126 })
8c308c2b 127
9f10b292 128 it('Should not be allowed to make friend again', function (done) {
b3b92647
C
129 const server = servers[1]
130 utils.makeFriends(server.url, server.accessToken, 409, done)
9f10b292 131 })
8c308c2b 132
9f10b292
C
133 it('Should quit friends of pod 2', function (done) {
134 async.series([
135 // Pod 1 quit friends
136 function (next) {
b3b92647
C
137 const server = servers[1]
138 utils.quitFriends(server.url, server.accessToken, next)
9f10b292
C
139 },
140 // Pod 1 should not have friends anymore
141 function (next) {
0c1cbbfe 142 utils.getFriendsList(servers[1].url, function (err, res) {
9f10b292 143 if (err) throw err
8c308c2b 144
f0f5567b 145 const result = res.body
9f10b292
C
146 expect(result).to.be.an('array')
147 expect(result.length).to.equal(0)
148
149 next()
150 })
151 },
152 // Other pods shouldn't have pod 1 too
153 function (next) {
0c1cbbfe 154 async.each([ servers[0].url, servers[2].url ], function (url, callback) {
9f10b292 155 utils.getFriendsList(url, function (err, res) {
ee66c593
C
156 if (err) throw err
157
f0f5567b 158 const result = res.body
ee66c593
C
159 expect(result).to.be.an('array')
160 expect(result.length).to.equal(1)
0c1cbbfe 161 expect(result[0].url).not.to.be.equal(servers[1].url)
9f10b292 162 callback()
ee66c593 163 })
9f10b292
C
164 }, next)
165 }
166 ], done)
167 })
45239549 168
9f10b292 169 it('Should allow pod 2 to make friend again', function (done) {
b3b92647
C
170 const server = servers[1]
171 utils.makeFriends(server.url, server.accessToken, function () {
0c1cbbfe
C
172 async.each(servers, function (server, callback) {
173 testMadeFriends(servers, server, callback)
9f10b292 174 }, done)
45239549 175 })
9f10b292 176 })
45239549 177
9f10b292 178 after(function (done) {
0c1cbbfe
C
179 servers.forEach(function (server) {
180 process.kill(-server.app.pid)
45239549 181 })
8c308c2b 182
9f10b292
C
183 if (this.ok) {
184 utils.flushTests(done)
185 } else {
186 done()
187 }
8c308c2b 188 })
9f10b292 189})