Implement contact form on server side
[oweals/peertube.git] / server / tests / api / check-params / redundancy.ts
1 /* tslint:disable:no-unused-expression */
2
3 import 'mocha'
4
5 import {
6   createUser,
7   doubleFollow,
8   flushAndRunMultipleServers,
9   flushTests,
10   killallServers,
11   makePutBodyRequest,
12   ServerInfo,
13   setAccessTokensToServers,
14   userLogin
15 } from '../../../../shared/utils'
16
17 describe('Test server redundancy API validators', function () {
18   let servers: ServerInfo[]
19   let userAccessToken = null
20
21   // ---------------------------------------------------------------
22
23   before(async function () {
24     this.timeout(30000)
25
26     await flushTests()
27     servers = await flushAndRunMultipleServers(2)
28
29     await setAccessTokensToServers(servers)
30     await doubleFollow(servers[0], servers[1])
31
32     const user = {
33       username: 'user1',
34       password: 'password'
35     }
36
37     await createUser(servers[0].url, servers[0].accessToken, user.username, user.password)
38     userAccessToken = await userLogin(servers[0], user)
39   })
40
41   describe('When updating redundancy', function () {
42     const path = '/api/v1/server/redundancy'
43
44     it('Should fail with an invalid token', async function () {
45       await makePutBodyRequest({
46         url: servers[0].url,
47         path: path + '/localhost:9002',
48         fields: { redundancyAllowed: true },
49         token: 'fake_token',
50         statusCodeExpected: 401
51       })
52     })
53
54     it('Should fail if the user is not an administrator', async function () {
55       await makePutBodyRequest({
56         url: servers[0].url,
57         path: path + '/localhost:9002',
58         fields: { redundancyAllowed: true },
59         token: userAccessToken,
60         statusCodeExpected: 403
61       })
62     })
63
64     it('Should fail if we do not follow this server', async function () {
65       await makePutBodyRequest({
66         url: servers[0].url,
67         path: path + '/example.com',
68         fields: { redundancyAllowed: true },
69         token: servers[0].accessToken,
70         statusCodeExpected: 404
71       })
72     })
73
74     it('Should fail without de redundancyAllowed param', async function () {
75       await makePutBodyRequest({
76         url: servers[0].url,
77         path: path + '/localhost:9002',
78         fields: { blabla: true },
79         token: servers[0].accessToken,
80         statusCodeExpected: 400
81       })
82     })
83
84     it('Should succeed with the correct parameters', async function () {
85       await makePutBodyRequest({
86         url: servers[0].url,
87         path: path + '/localhost:9002',
88         fields: { redundancyAllowed: true },
89         token: servers[0].accessToken,
90         statusCodeExpected: 204
91       })
92     })
93   })
94
95   after(async function () {
96     killallServers(servers)
97
98     // Keep the logs if the test failed
99     if (this['ok']) {
100       await flushTests()
101     }
102   })
103 })