1 /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
4 import * as chai from 'chai'
12 setAccessTokensToServers,
15 } from '@shared/extra-utils'
17 const expect = chai.expect
19 describe('Test logs', function () {
20 let server: ServerInfo
21 let logsCommand: LogsCommand
23 before(async function () {
26 server = await flushAndRunServer(1)
27 await setAccessTokensToServers([ server ])
29 logsCommand = server.logsCommand
32 describe('With the standard log file', function () {
34 it('Should get logs with a start date', async function () {
37 await uploadVideo(server.url, server.accessToken, { name: 'video 1' })
38 await waitJobs([ server ])
40 const now = new Date()
42 await uploadVideo(server.url, server.accessToken, { name: 'video 2' })
43 await waitJobs([ server ])
45 const body = await logsCommand.getLogs({ startDate: now })
46 const logsString = JSON.stringify(body)
48 expect(logsString.includes('video 1')).to.be.false
49 expect(logsString.includes('video 2')).to.be.true
52 it('Should get logs with an end date', async function () {
55 await uploadVideo(server.url, server.accessToken, { name: 'video 3' })
56 await waitJobs([ server ])
58 const now1 = new Date()
60 await uploadVideo(server.url, server.accessToken, { name: 'video 4' })
61 await waitJobs([ server ])
63 const now2 = new Date()
65 await uploadVideo(server.url, server.accessToken, { name: 'video 5' })
66 await waitJobs([ server ])
68 const body = await logsCommand.getLogs({ startDate: now1, endDate: now2 })
69 const logsString = JSON.stringify(body)
71 expect(logsString.includes('video 3')).to.be.false
72 expect(logsString.includes('video 4')).to.be.true
73 expect(logsString.includes('video 5')).to.be.false
76 it('Should get filter by level', async function () {
79 const now = new Date()
81 await uploadVideo(server.url, server.accessToken, { name: 'video 6' })
82 await waitJobs([ server ])
85 const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
86 const logsString = JSON.stringify(body)
88 expect(logsString.includes('video 6')).to.be.true
92 const body = await logsCommand.getLogs({ startDate: now, level: 'warn' })
93 const logsString = JSON.stringify(body)
95 expect(logsString.includes('video 6')).to.be.false
99 it('Should log ping requests', async function () {
102 const now = new Date()
104 await server.serversCommand.ping()
106 const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
107 const logsString = JSON.stringify(body)
109 expect(logsString.includes('/api/v1/ping')).to.be.true
112 it('Should not log ping requests', async function () {
115 await killallServers([ server ])
117 await reRunServer(server, { log: { log_ping_requests: false } })
119 const now = new Date()
121 await server.serversCommand.ping()
123 const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
124 const logsString = JSON.stringify(body)
126 expect(logsString.includes('/api/v1/ping')).to.be.false
130 describe('With the audit log', function () {
131 it('Should get logs with a start date', async function () {
134 await uploadVideo(server.url, server.accessToken, { name: 'video 7' })
135 await waitJobs([ server ])
137 const now = new Date()
139 await uploadVideo(server.url, server.accessToken, { name: 'video 8' })
140 await waitJobs([ server ])
142 const body = await logsCommand.getAuditLogs({ startDate: now })
143 const logsString = JSON.stringify(body)
145 expect(logsString.includes('video 7')).to.be.false
146 expect(logsString.includes('video 8')).to.be.true
148 expect(body).to.have.lengthOf(1)
152 const message = JSON.parse(item.message)
153 expect(message.domain).to.equal('videos')
154 expect(message.action).to.equal('create')
157 it('Should get logs with an end date', async function () {
160 await uploadVideo(server.url, server.accessToken, { name: 'video 9' })
161 await waitJobs([ server ])
163 const now1 = new Date()
165 await uploadVideo(server.url, server.accessToken, { name: 'video 10' })
166 await waitJobs([ server ])
168 const now2 = new Date()
170 await uploadVideo(server.url, server.accessToken, { name: 'video 11' })
171 await waitJobs([ server ])
173 const body = await logsCommand.getAuditLogs({ startDate: now1, endDate: now2 })
174 const logsString = JSON.stringify(body)
176 expect(logsString.includes('video 9')).to.be.false
177 expect(logsString.includes('video 10')).to.be.true
178 expect(logsString.includes('video 11')).to.be.false
182 after(async function () {
183 await cleanupTests([ server ])