aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/tests/api/video-abuse.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/tests/api/video-abuse.ts')
-rw-r--r--server/tests/api/video-abuse.ts145
1 files changed, 145 insertions, 0 deletions
diff --git a/server/tests/api/video-abuse.ts b/server/tests/api/video-abuse.ts
new file mode 100644
index 000000000..f2a2c322a
--- /dev/null
+++ b/server/tests/api/video-abuse.ts
@@ -0,0 +1,145 @@
1/* tslint:disable:no-unused-expression */
2
3import 'mocha'
4import * as chai from 'chai'
5const expect = chai.expect
6
7import {
8 ServerInfo,
9 flushAndRunMultipleServers,
10 uploadVideo,
11 makeFriends,
12 getVideosList,
13 wait,
14 setAccessTokensToServers,
15 getVideoAbusesList,
16 reportVideoAbuse,
17 killallServers,
18 flushTests
19} from '../utils'
20
21describe('Test video abuses', function () {
22 let servers: ServerInfo[] = []
23
24 before(async function () {
25 this.timeout(100000)
26
27 // Run servers
28 servers = await flushAndRunMultipleServers(2)
29
30 // Get the access tokens
31 await setAccessTokensToServers(servers)
32
33 // Pod 1 makes friend with pod 2
34 await makeFriends(servers[0].url, servers[0].accessToken)
35
36 // Upload some videos on each pods
37 const video1Attributes = {
38 name: 'my super name for pod 1',
39 description: 'my super description for pod 1'
40 }
41 await uploadVideo(servers[0].url, servers[0].accessToken, video1Attributes)
42
43 const video2Attributes = {
44 name: 'my super name for pod 2',
45 description: 'my super description for pod 2'
46 }
47 await uploadVideo(servers[1].url, servers[1].accessToken, video2Attributes)
48
49 // Wait videos propagation
50 await wait(22000)
51
52 const res = await getVideosList(servers[0].url)
53 const videos = res.body.data
54
55 expect(videos.length).to.equal(2)
56
57 servers[0].video = videos.find(video => video.name === 'my super name for pod 1')
58 servers[1].video = videos.find(video => video.name === 'my super name for pod 2')
59 })
60
61 it('Should not have video abuses', async function () {
62 const res = await getVideoAbusesList(servers[0].url, servers[0].accessToken)
63
64 expect(res.body.total).to.equal(0)
65 expect(res.body.data).to.be.an('array')
66 expect(res.body.data.length).to.equal(0)
67 })
68
69 it('Should report abuse on a local video', async function () {
70 this.timeout(15000)
71
72 const reason = 'my super bad reason'
73 await reportVideoAbuse(servers[0].url, servers[0].accessToken, servers[0].video.id, reason)
74
75 // We wait requests propagation, even if the pod 1 is not supposed to make a request to pod 2
76 await wait(11000)
77 })
78
79 it('Should have 1 video abuses on pod 1 and 0 on pod 2', async function () {
80 const res1 = await getVideoAbusesList(servers[0].url, servers[0].accessToken)
81
82 expect(res1.body.total).to.equal(1)
83 expect(res1.body.data).to.be.an('array')
84 expect(res1.body.data.length).to.equal(1)
85
86 const abuse = res1.body.data[0]
87 expect(abuse.reason).to.equal('my super bad reason')
88 expect(abuse.reporterUsername).to.equal('root')
89 expect(abuse.reporterPodHost).to.equal('localhost:9001')
90 expect(abuse.videoId).to.equal(servers[0].video.id)
91
92 const res2 = await getVideoAbusesList(servers[1].url, servers[1].accessToken)
93 expect(res2.body.total).to.equal(0)
94 expect(res2.body.data).to.be.an('array')
95 expect(res2.body.data.length).to.equal(0)
96 })
97
98 it('Should report abuse on a remote video', async function () {
99 this.timeout(15000)
100
101 const reason = 'my super bad reason 2'
102 await reportVideoAbuse(servers[0].url, servers[0].accessToken, servers[1].video.id, reason)
103
104 // We wait requests propagation
105 await wait(11000)
106 })
107
108 it('Should have 2 video abuse on pod 1 and 1 on pod 2', async function () {
109 const res1 = await getVideoAbusesList(servers[0].url, servers[0].accessToken)
110 expect(res1.body.total).to.equal(2)
111 expect(res1.body.data).to.be.an('array')
112 expect(res1.body.data.length).to.equal(2)
113
114 const abuse1 = res1.body.data[0]
115 expect(abuse1.reason).to.equal('my super bad reason')
116 expect(abuse1.reporterUsername).to.equal('root')
117 expect(abuse1.reporterPodHost).to.equal('localhost:9001')
118 expect(abuse1.videoId).to.equal(servers[0].video.id)
119
120 const abuse2 = res1.body.data[1]
121 expect(abuse2.reason).to.equal('my super bad reason 2')
122 expect(abuse2.reporterUsername).to.equal('root')
123 expect(abuse2.reporterPodHost).to.equal('localhost:9001')
124 expect(abuse2.videoId).to.equal(servers[1].video.id)
125
126 const res2 = await getVideoAbusesList(servers[1].url, servers[1].accessToken)
127 expect(res2.body.total).to.equal(1)
128 expect(res2.body.data).to.be.an('array')
129 expect(res2.body.data.length).to.equal(1)
130
131 const abuse3 = res2.body.data[0]
132 expect(abuse3.reason).to.equal('my super bad reason 2')
133 expect(abuse3.reporterUsername).to.equal('root')
134 expect(abuse3.reporterPodHost).to.equal('localhost:9001')
135 })
136
137 after(async function () {
138 killallServers(servers)
139
140 // Keep the logs if the test failed
141 if (this['ok']) {
142 await flushTests()
143 }
144 })
145})