]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tests/api/check-params/logs.ts
Cleanup tests imports
[github/Chocobozzz/PeerTube.git] / server / tests / api / check-params / logs.ts
CommitLineData
a1587156 1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
fd8710b8 2
42b40636 3import { expect } from 'chai'
c0e8b12e 4import { HttpStatusCode } from '@shared/models'
42b40636 5import { cleanupTests, createSingleServer, makeGetRequest, PeerTubeServer, setAccessTokensToServers } from '@shared/server-commands'
fd8710b8
C
6
7describe('Test logs API validators', function () {
8 const path = '/api/v1/server/logs'
254d3579 9 let server: PeerTubeServer
fd8710b8
C
10 let userAccessToken = ''
11
12 // ---------------------------------------------------------------
13
14 before(async function () {
15 this.timeout(120000)
16
254d3579 17 server = await createSingleServer(1)
fd8710b8
C
18
19 await setAccessTokensToServers([ server ])
20
21 const user = {
22 username: 'user1',
23 password: 'my super password'
24 }
89d241a7
C
25 await server.users.create({ username: user.username, password: user.password })
26 userAccessToken = await server.login.getAccessToken(user)
fd8710b8
C
27 })
28
29 describe('When getting logs', function () {
30
31 it('Should fail with a non authenticated user', async function () {
32 await makeGetRequest({
33 url: server.url,
34 path,
c0e8b12e 35 expectedStatus: HttpStatusCode.UNAUTHORIZED_401
fd8710b8
C
36 })
37 })
38
39 it('Should fail with a non admin user', async function () {
40 await makeGetRequest({
41 url: server.url,
42 path,
43 token: userAccessToken,
c0e8b12e 44 expectedStatus: HttpStatusCode.FORBIDDEN_403
fd8710b8
C
45 })
46 })
47
48 it('Should fail with a missing startDate query', async function () {
49 await makeGetRequest({
50 url: server.url,
51 path,
52 token: server.accessToken,
c0e8b12e 53 expectedStatus: HttpStatusCode.BAD_REQUEST_400
fd8710b8
C
54 })
55 })
56
57 it('Should fail with a bad startDate query', async function () {
58 await makeGetRequest({
59 url: server.url,
60 path,
61 token: server.accessToken,
62 query: { startDate: 'toto' },
c0e8b12e 63 expectedStatus: HttpStatusCode.BAD_REQUEST_400
fd8710b8
C
64 })
65 })
66
67 it('Should fail with a bad endDate query', async function () {
68 await makeGetRequest({
69 url: server.url,
70 path,
71 token: server.accessToken,
72 query: { startDate: new Date().toISOString(), endDate: 'toto' },
c0e8b12e 73 expectedStatus: HttpStatusCode.BAD_REQUEST_400
fd8710b8
C
74 })
75 })
76
77 it('Should fail with a bad level parameter', async function () {
78 await makeGetRequest({
79 url: server.url,
80 path,
81 token: server.accessToken,
82 query: { startDate: new Date().toISOString(), level: 'toto' },
c0e8b12e 83 expectedStatus: HttpStatusCode.BAD_REQUEST_400
fd8710b8
C
84 })
85 })
86
87 it('Should succeed with the correct params', async function () {
88 await makeGetRequest({
89 url: server.url,
90 path,
91 token: server.accessToken,
92 query: { startDate: new Date().toISOString() },
c0e8b12e 93 expectedStatus: HttpStatusCode.OK_200
fd8710b8
C
94 })
95 })
96 })
97
42b40636
C
98 describe('When creating client logs', function () {
99 const base = {
100 level: 'warn' as 'warn',
101 message: 'my super message',
102 url: 'https://example.com/toto'
103 }
104 const expectedStatus = HttpStatusCode.BAD_REQUEST_400
105
106 it('Should fail with an invalid level', async function () {
107 await server.logs.createLogClient({ payload: { ...base, level: '' as any }, expectedStatus })
108 await server.logs.createLogClient({ payload: { ...base, level: undefined }, expectedStatus })
109 await server.logs.createLogClient({ payload: { ...base, level: 'toto' as any }, expectedStatus })
110 })
111
112 it('Should fail with an invalid message', async function () {
113 await server.logs.createLogClient({ payload: { ...base, message: undefined }, expectedStatus })
114 await server.logs.createLogClient({ payload: { ...base, message: '' }, expectedStatus })
115 await server.logs.createLogClient({ payload: { ...base, message: 'm'.repeat(2500) }, expectedStatus })
116 })
117
118 it('Should fail with an invalid url', async function () {
119 await server.logs.createLogClient({ payload: { ...base, url: undefined }, expectedStatus })
120 await server.logs.createLogClient({ payload: { ...base, url: 'toto' }, expectedStatus })
121 })
122
123 it('Should fail with an invalid stackTrace', async function () {
e2b2c726 124 await server.logs.createLogClient({ payload: { ...base, stackTrace: 's'.repeat(20000) }, expectedStatus })
42b40636
C
125 })
126
127 it('Should fail with an invalid userAgent', async function () {
128 await server.logs.createLogClient({ payload: { ...base, userAgent: 's'.repeat(500) }, expectedStatus })
129 })
130
131 it('Should fail with an invalid meta', async function () {
132 await server.logs.createLogClient({ payload: { ...base, meta: 's'.repeat(10000) }, expectedStatus })
133 })
134
135 it('Should succeed with the correct params', async function () {
136 await server.logs.createLogClient({ payload: { ...base, stackTrace: 'stackTrace', meta: '{toto}', userAgent: 'userAgent' } })
137 })
138
139 it('Should rate limit log creation', async function () {
140 let fail = false
141
142 for (let i = 0; i < 10; i++) {
143 try {
144 await server.logs.createLogClient({ token: null, payload: base })
145 } catch {
146 fail = true
147 }
148 }
149
150 expect(fail).to.be.true
151 })
152 })
153
7c3b7976
C
154 after(async function () {
155 await cleanupTests([ server ])
fd8710b8
C
156 })
157})