1 /* tslint:disable:no-unused-expression */
3 import * as chai from 'chai'
5 import { VideoAbuse } from '../../../../shared/models/videos'
7 flushAndRunMultipleServers,
13 setAccessTokensToServers,
15 } from '../../utils/index'
16 import { doubleFollow } from '../../utils/server/follows'
17 import { waitJobs } from '../../utils/server/jobs'
19 const expect = chai.expect
21 describe('Test video abuses', function () {
22 let servers: ServerInfo[] = []
24 before(async function () {
28 servers = await flushAndRunMultipleServers(2)
30 // Get the access tokens
31 await setAccessTokensToServers(servers)
33 // Server 1 and server 2 follow each other
34 await doubleFollow(servers[0], servers[1])
36 // Upload some videos on each servers
37 const video1Attributes = {
38 name: 'my super name for server 1',
39 description: 'my super description for server 1'
41 await uploadVideo(servers[0].url, servers[0].accessToken, video1Attributes)
43 const video2Attributes = {
44 name: 'my super name for server 2',
45 description: 'my super description for server 2'
47 await uploadVideo(servers[1].url, servers[1].accessToken, video2Attributes)
49 // Wait videos propagation, server 2 has transcoding enabled
50 await waitJobs(servers)
52 const res = await getVideosList(servers[0].url)
53 const videos = res.body.data
55 expect(videos.length).to.equal(2)
57 servers[0].video = videos.find(video => video.name === 'my super name for server 1')
58 servers[1].video = videos.find(video => video.name === 'my super name for server 2')
61 it('Should not have video abuses', async function () {
62 const res = await getVideoAbusesList(servers[0].url, servers[0].accessToken)
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)
69 it('Should report abuse on a local video', async function () {
72 const reason = 'my super bad reason'
73 await reportVideoAbuse(servers[0].url, servers[0].accessToken, servers[0].video.id, reason)
75 // We wait requests propagation, even if the server 1 is not supposed to make a request to server 2
76 await waitJobs(servers)
79 it('Should have 1 video abuses on server 1 and 0 on server 2', async function () {
80 const res1 = await getVideoAbusesList(servers[0].url, servers[0].accessToken)
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)
86 const abuse: VideoAbuse = res1.body.data[0]
87 expect(abuse.reason).to.equal('my super bad reason')
88 expect(abuse.reporterAccount.name).to.equal('root')
89 expect(abuse.reporterAccount.host).to.equal('localhost:9001')
90 expect(abuse.video.id).to.equal(servers[0].video.id)
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)
98 it('Should report abuse on a remote video', async function () {
101 const reason = 'my super bad reason 2'
102 await reportVideoAbuse(servers[0].url, servers[0].accessToken, servers[1].video.id, reason)
104 // We wait requests propagation
105 await waitJobs(servers)
108 it('Should have 2 video abuse on server 1 and 1 on server 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)
114 const abuse1: VideoAbuse = res1.body.data[0]
115 expect(abuse1.reason).to.equal('my super bad reason')
116 expect(abuse1.reporterAccount.name).to.equal('root')
117 expect(abuse1.reporterAccount.host).to.equal('localhost:9001')
118 expect(abuse1.video.id).to.equal(servers[0].video.id)
120 const abuse2: VideoAbuse = res1.body.data[1]
121 expect(abuse2.reason).to.equal('my super bad reason 2')
122 expect(abuse2.reporterAccount.name).to.equal('root')
123 expect(abuse2.reporterAccount.host).to.equal('localhost:9001')
124 expect(abuse2.video.id).to.equal(servers[1].video.id)
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)
131 const abuse3: VideoAbuse = res2.body.data[0]
132 expect(abuse3.reason).to.equal('my super bad reason 2')
133 expect(abuse3.reporterAccount.name).to.equal('root')
134 expect(abuse3.reporterAccount.host).to.equal('localhost:9001')
137 after(async function () {
138 killallServers(servers)