]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/tests/api/check-params/video-abuses.js
Add video category support
[github/Chocobozzz/PeerTube.git] / server / tests / api / check-params / video-abuses.js
1 /* eslint-disable no-unused-expressions */
2
3 'use strict'
4
5 const request = require('supertest')
6 const series = require('async/series')
7
8 const loginUtils = require('../../utils/login')
9 const requestsUtils = require('../../utils/requests')
10 const serversUtils = require('../../utils/servers')
11 const usersUtils = require('../../utils/users')
12 const videosUtils = require('../../utils/videos')
13
14 describe('Test video abuses API validators', function () {
15 let server = null
16 let userAccessToken = null
17
18 // ---------------------------------------------------------------
19
20 before(function (done) {
21 this.timeout(20000)
22
23 series([
24 function (next) {
25 serversUtils.flushTests(next)
26 },
27 function (next) {
28 serversUtils.runServer(1, function (server1) {
29 server = server1
30
31 next()
32 })
33 },
34 function (next) {
35 loginUtils.loginAndGetAccessToken(server, function (err, token) {
36 if (err) throw err
37 server.accessToken = token
38
39 next()
40 })
41 },
42 function (next) {
43 const username = 'user1'
44 const password = 'my super password'
45
46 usersUtils.createUser(server.url, server.accessToken, username, password, next)
47 },
48 function (next) {
49 const user = {
50 username: 'user1',
51 password: 'my super password'
52 }
53
54 loginUtils.getUserAccessToken(server, user, function (err, accessToken) {
55 if (err) throw err
56
57 userAccessToken = accessToken
58
59 next()
60 })
61 },
62 // Upload some videos on each pods
63 function (next) {
64 const name = 'my super name for pod'
65 const category = 2
66 const description = 'my super description for pod'
67 const tags = [ 'tag' ]
68 const file = 'video_short2.webm'
69 videosUtils.uploadVideo(server.url, server.accessToken, name, category, description, tags, file, next)
70 },
71 function (next) {
72 videosUtils.getVideosList(server.url, function (err, res) {
73 if (err) throw err
74
75 const videos = res.body.data
76 server.video = videos[0]
77
78 next()
79 })
80 }
81 ], done)
82 })
83
84 describe('When listing video abuses', function () {
85 const path = '/api/v1/videos/abuse'
86
87 it('Should fail with a bad start pagination', function (done) {
88 request(server.url)
89 .get(path)
90 .query({ start: 'hello' })
91 .set('Authorization', 'Bearer ' + server.accessToken)
92 .set('Accept', 'application/json')
93 .expect(400, done)
94 })
95
96 it('Should fail with a bad count pagination', function (done) {
97 request(server.url)
98 .get(path)
99 .query({ count: 'hello' })
100 .set('Accept', 'application/json')
101 .set('Authorization', 'Bearer ' + server.accessToken)
102 .expect(400, done)
103 })
104
105 it('Should fail with an incorrect sort', function (done) {
106 request(server.url)
107 .get(path)
108 .query({ sort: 'hello' })
109 .set('Accept', 'application/json')
110 .set('Authorization', 'Bearer ' + server.accessToken)
111 .expect(400, done)
112 })
113
114 it('Should fail with a non authenticated user', function (done) {
115 request(server.url)
116 .get(path)
117 .query({ sort: 'hello' })
118 .set('Accept', 'application/json')
119 .expect(401, done)
120 })
121
122 it('Should fail with a non admin user', function (done) {
123 request(server.url)
124 .get(path)
125 .query({ sort: 'hello' })
126 .set('Accept', 'application/json')
127 .set('Authorization', 'Bearer ' + userAccessToken)
128 .expect(403, done)
129 })
130 })
131
132 describe('When reporting a video abuse', function () {
133 const basePath = '/api/v1/videos/'
134
135 it('Should fail with nothing', function (done) {
136 const path = basePath + server.video + '/abuse'
137 const data = {}
138 requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done)
139 })
140
141 it('Should fail with a wrong video', function (done) {
142 const wrongPath = '/api/v1/videos/blabla/abuse'
143 const data = {}
144 requestsUtils.makePostBodyRequest(server.url, wrongPath, server.accessToken, data, done)
145 })
146
147 it('Should fail with a non authenticated user', function (done) {
148 const data = {}
149 const path = basePath + server.video + '/abuse'
150 requestsUtils.makePostBodyRequest(server.url, path, 'hello', data, done, 401)
151 })
152
153 it('Should fail with a reason too short', function (done) {
154 const data = {
155 reason: 'h'
156 }
157 const path = basePath + server.video + '/abuse'
158 requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done)
159 })
160
161 it('Should fail with a reason too big', function (done) {
162 const data = {
163 reason: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' +
164 '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' +
165 '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' +
166 '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'
167 }
168 const path = basePath + server.video + '/abuse'
169 requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done)
170 })
171 })
172
173 after(function (done) {
174 process.kill(-server.app.pid)
175
176 // Keep the logs if the test failed
177 if (this.ok) {
178 serversUtils.flushTests(done)
179 } else {
180 done()
181 }
182 })
183 })