]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tests/api/server/logs.ts
Handle oembed with params in URL
[github/Chocobozzz/PeerTube.git] / server / tests / api / server / logs.ts
CommitLineData
a1587156 1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
fd8710b8 2
fd8710b8 3import 'mocha'
c9c43612
C
4import * as chai from 'chai'
5import {
6 cleanupTests,
254d3579 7 createSingleServer,
c9c43612 8 killallServers,
a92ddacb 9 LogsCommand,
254d3579 10 PeerTubeServer,
a92ddacb 11 setAccessTokensToServers,
a92ddacb
C
12 waitJobs
13} from '@shared/extra-utils'
fd8710b8
C
14
15const expect = chai.expect
16
17describe('Test logs', function () {
254d3579 18 let server: PeerTubeServer
a92ddacb 19 let logsCommand: LogsCommand
fd8710b8
C
20
21 before(async function () {
22 this.timeout(30000)
23
254d3579 24 server = await createSingleServer(1)
fd8710b8 25 await setAccessTokensToServers([ server ])
a92ddacb 26
89d241a7 27 logsCommand = server.logs
fd8710b8
C
28 })
29
566c125d 30 describe('With the standard log file', function () {
78d62f4d 31
566c125d 32 it('Should get logs with a start date', async function () {
ff9112ad 33 this.timeout(20000)
fd8710b8 34
89d241a7 35 await server.videos.upload({ attributes: { name: 'video 1' } })
566c125d 36 await waitJobs([ server ])
fd8710b8 37
566c125d 38 const now = new Date()
fd8710b8 39
89d241a7 40 await server.videos.upload({ attributes: { name: 'video 2' } })
566c125d 41 await waitJobs([ server ])
fd8710b8 42
a92ddacb
C
43 const body = await logsCommand.getLogs({ startDate: now })
44 const logsString = JSON.stringify(body)
fd8710b8 45
566c125d
C
46 expect(logsString.includes('video 1')).to.be.false
47 expect(logsString.includes('video 2')).to.be.true
48 })
49
50 it('Should get logs with an end date', async function () {
ff9112ad 51 this.timeout(30000)
566c125d 52
89d241a7 53 await server.videos.upload({ attributes: { name: 'video 3' } })
566c125d
C
54 await waitJobs([ server ])
55
56 const now1 = new Date()
57
89d241a7 58 await server.videos.upload({ attributes: { name: 'video 4' } })
566c125d
C
59 await waitJobs([ server ])
60
61 const now2 = new Date()
62
89d241a7 63 await server.videos.upload({ attributes: { name: 'video 5' } })
566c125d
C
64 await waitJobs([ server ])
65
a92ddacb
C
66 const body = await logsCommand.getLogs({ startDate: now1, endDate: now2 })
67 const logsString = JSON.stringify(body)
fd8710b8 68
566c125d
C
69 expect(logsString.includes('video 3')).to.be.false
70 expect(logsString.includes('video 4')).to.be.true
71 expect(logsString.includes('video 5')).to.be.false
72 })
fd8710b8 73
566c125d 74 it('Should get filter by level', async function () {
ff9112ad 75 this.timeout(20000)
fd8710b8 76
566c125d 77 const now = new Date()
fd8710b8 78
89d241a7 79 await server.videos.upload({ attributes: { name: 'video 6' } })
566c125d 80 await waitJobs([ server ])
fd8710b8 81
566c125d 82 {
a92ddacb
C
83 const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
84 const logsString = JSON.stringify(body)
fd8710b8 85
566c125d
C
86 expect(logsString.includes('video 6')).to.be.true
87 }
fd8710b8 88
566c125d 89 {
a92ddacb
C
90 const body = await logsCommand.getLogs({ startDate: now, level: 'warn' })
91 const logsString = JSON.stringify(body)
fd8710b8 92
566c125d
C
93 expect(logsString.includes('video 6')).to.be.false
94 }
95 })
78d62f4d
C
96
97 it('Should log ping requests', async function () {
ff9112ad
C
98 this.timeout(10000)
99
78d62f4d
C
100 const now = new Date()
101
89d241a7 102 await server.servers.ping()
78d62f4d 103
a92ddacb
C
104 const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
105 const logsString = JSON.stringify(body)
78d62f4d
C
106
107 expect(logsString.includes('/api/v1/ping')).to.be.true
108 })
109
110 it('Should not log ping requests', async function () {
111 this.timeout(30000)
112
9293139f 113 await killallServers([ server ])
78d62f4d 114
254d3579 115 await server.run({ log: { log_ping_requests: false } })
78d62f4d
C
116
117 const now = new Date()
118
89d241a7 119 await server.servers.ping()
78d62f4d 120
a92ddacb
C
121 const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
122 const logsString = JSON.stringify(body)
78d62f4d
C
123
124 expect(logsString.includes('/api/v1/ping')).to.be.false
125 })
fd8710b8
C
126 })
127
566c125d
C
128 describe('With the audit log', function () {
129 it('Should get logs with a start date', async function () {
ff9112ad 130 this.timeout(20000)
fd8710b8 131
89d241a7 132 await server.videos.upload({ attributes: { name: 'video 7' } })
566c125d 133 await waitJobs([ server ])
fd8710b8 134
566c125d 135 const now = new Date()
fd8710b8 136
89d241a7 137 await server.videos.upload({ attributes: { name: 'video 8' } })
566c125d
C
138 await waitJobs([ server ])
139
a92ddacb
C
140 const body = await logsCommand.getAuditLogs({ startDate: now })
141 const logsString = JSON.stringify(body)
fd8710b8 142
566c125d
C
143 expect(logsString.includes('video 7')).to.be.false
144 expect(logsString.includes('video 8')).to.be.true
145
a92ddacb 146 expect(body).to.have.lengthOf(1)
566c125d 147
a92ddacb 148 const item = body[0]
566c125d
C
149
150 const message = JSON.parse(item.message)
151 expect(message.domain).to.equal('videos')
152 expect(message.action).to.equal('create')
153 })
154
155 it('Should get logs with an end date', async function () {
ff9112ad 156 this.timeout(30000)
566c125d 157
89d241a7 158 await server.videos.upload({ attributes: { name: 'video 9' } })
566c125d
C
159 await waitJobs([ server ])
160
161 const now1 = new Date()
162
89d241a7 163 await server.videos.upload({ attributes: { name: 'video 10' } })
566c125d
C
164 await waitJobs([ server ])
165
166 const now2 = new Date()
167
89d241a7 168 await server.videos.upload({ attributes: { name: 'video 11' } })
566c125d 169 await waitJobs([ server ])
fd8710b8 170
a92ddacb
C
171 const body = await logsCommand.getAuditLogs({ startDate: now1, endDate: now2 })
172 const logsString = JSON.stringify(body)
fd8710b8 173
566c125d
C
174 expect(logsString.includes('video 9')).to.be.false
175 expect(logsString.includes('video 10')).to.be.true
176 expect(logsString.includes('video 11')).to.be.false
177 })
fd8710b8
C
178 })
179
7c3b7976
C
180 after(async function () {
181 await cleanupTests([ server ])
fd8710b8
C
182 })
183})