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