1 /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
4 import * as chai from 'chai'
13 setAccessTokensToServers,
16 } from '@shared/extra-utils'
18 const expect = chai.expect
20 describe('Test logs', function () {
21 let server: ServerInfo
22 let logsCommand: LogsCommand
24 before(async function () {
27 server = await flushAndRunServer(1)
28 await setAccessTokensToServers([ server ])
30 logsCommand = server.logsCommand
33 describe('With the standard log file', function () {
35 it('Should get logs with a start date', async function () {
38 await uploadVideo(server.url, server.accessToken, { name: 'video 1' })
39 await waitJobs([ server ])
41 const now = new Date()
43 await uploadVideo(server.url, server.accessToken, { name: 'video 2' })
44 await waitJobs([ server ])
46 const body = await logsCommand.getLogs({ startDate: now })
47 const logsString = JSON.stringify(body)
49 expect(logsString.includes('video 1')).to.be.false
50 expect(logsString.includes('video 2')).to.be.true
53 it('Should get logs with an end date', async function () {
56 await uploadVideo(server.url, server.accessToken, { name: 'video 3' })
57 await waitJobs([ server ])
59 const now1 = new Date()
61 await uploadVideo(server.url, server.accessToken, { name: 'video 4' })
62 await waitJobs([ server ])
64 const now2 = new Date()
66 await uploadVideo(server.url, server.accessToken, { name: 'video 5' })
67 await waitJobs([ server ])
69 const body = await logsCommand.getLogs({ startDate: now1, endDate: now2 })
70 const logsString = JSON.stringify(body)
72 expect(logsString.includes('video 3')).to.be.false
73 expect(logsString.includes('video 4')).to.be.true
74 expect(logsString.includes('video 5')).to.be.false
77 it('Should get filter by level', async function () {
80 const now = new Date()
82 await uploadVideo(server.url, server.accessToken, { name: 'video 6' })
83 await waitJobs([ server ])
86 const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
87 const logsString = JSON.stringify(body)
89 expect(logsString.includes('video 6')).to.be.true
93 const body = await logsCommand.getLogs({ startDate: now, level: 'warn' })
94 const logsString = JSON.stringify(body)
96 expect(logsString.includes('video 6')).to.be.false
100 it('Should log ping requests', async function () {
103 const now = new Date()
105 await makePingRequest(server)
107 const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
108 const logsString = JSON.stringify(body)
110 expect(logsString.includes('/api/v1/ping')).to.be.true
113 it('Should not log ping requests', async function () {
116 killallServers([ server ])
118 await reRunServer(server, { log: { log_ping_requests: false } })
120 const now = new Date()
122 await makePingRequest(server)
124 const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
125 const logsString = JSON.stringify(body)
127 expect(logsString.includes('/api/v1/ping')).to.be.false
131 describe('With the audit log', function () {
132 it('Should get logs with a start date', async function () {
135 await uploadVideo(server.url, server.accessToken, { name: 'video 7' })
136 await waitJobs([ server ])
138 const now = new Date()
140 await uploadVideo(server.url, server.accessToken, { name: 'video 8' })
141 await waitJobs([ server ])
143 const body = await logsCommand.getAuditLogs({ startDate: now })
144 const logsString = JSON.stringify(body)
146 expect(logsString.includes('video 7')).to.be.false
147 expect(logsString.includes('video 8')).to.be.true
149 expect(body).to.have.lengthOf(1)
153 const message = JSON.parse(item.message)
154 expect(message.domain).to.equal('videos')
155 expect(message.action).to.equal('create')
158 it('Should get logs with an end date', async function () {
161 await uploadVideo(server.url, server.accessToken, { name: 'video 9' })
162 await waitJobs([ server ])
164 const now1 = new Date()
166 await uploadVideo(server.url, server.accessToken, { name: 'video 10' })
167 await waitJobs([ server ])
169 const now2 = new Date()
171 await uploadVideo(server.url, server.accessToken, { name: 'video 11' })
172 await waitJobs([ server ])
174 const body = await logsCommand.getAuditLogs({ startDate: now1, endDate: now2 })
175 const logsString = JSON.stringify(body)
177 expect(logsString.includes('video 9')).to.be.false
178 expect(logsString.includes('video 10')).to.be.true
179 expect(logsString.includes('video 11')).to.be.false
183 after(async function () {
184 await cleanupTests([ server ])