Introduce logs command

This commit is contained in:
Chocobozzz 2021-07-06 10:34:29 +02:00
parent f59545d97a
commit a92ddacb38
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
7 changed files with 74 additions and 56 deletions

View File

@ -6,25 +6,28 @@ import {
cleanupTests, cleanupTests,
flushAndRunServer, flushAndRunServer,
killallServers, killallServers,
LogsCommand,
makePingRequest, makePingRequest,
reRunServer, reRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers setAccessTokensToServers,
} from '../../../../shared/extra-utils/index' uploadVideo,
import { getAuditLogs, getLogs } from '../../../../shared/extra-utils/logs/logs' waitJobs
import { waitJobs } from '../../../../shared/extra-utils/server/jobs' } from '@shared/extra-utils'
import { uploadVideo } from '../../../../shared/extra-utils/videos/videos'
const expect = chai.expect const expect = chai.expect
describe('Test logs', function () { describe('Test logs', function () {
let server: ServerInfo let server: ServerInfo
let logsCommand: LogsCommand
before(async function () { before(async function () {
this.timeout(30000) this.timeout(30000)
server = await flushAndRunServer(1) server = await flushAndRunServer(1)
await setAccessTokensToServers([ server ]) await setAccessTokensToServers([ server ])
logsCommand = server.logsCommand
}) })
describe('With the standard log file', function () { describe('With the standard log file', function () {
@ -40,8 +43,8 @@ describe('Test logs', function () {
await uploadVideo(server.url, server.accessToken, { name: 'video 2' }) await uploadVideo(server.url, server.accessToken, { name: 'video 2' })
await waitJobs([ server ]) await waitJobs([ server ])
const res = await getLogs(server.url, server.accessToken, now) const body = await logsCommand.getLogs({ startDate: now })
const logsString = JSON.stringify(res.body) const logsString = JSON.stringify(body)
expect(logsString.includes('video 1')).to.be.false expect(logsString.includes('video 1')).to.be.false
expect(logsString.includes('video 2')).to.be.true expect(logsString.includes('video 2')).to.be.true
@ -63,8 +66,8 @@ describe('Test logs', function () {
await uploadVideo(server.url, server.accessToken, { name: 'video 5' }) await uploadVideo(server.url, server.accessToken, { name: 'video 5' })
await waitJobs([ server ]) await waitJobs([ server ])
const res = await getLogs(server.url, server.accessToken, now1, now2) const body = await logsCommand.getLogs({ startDate: now1, endDate: now2 })
const logsString = JSON.stringify(res.body) const logsString = JSON.stringify(body)
expect(logsString.includes('video 3')).to.be.false expect(logsString.includes('video 3')).to.be.false
expect(logsString.includes('video 4')).to.be.true expect(logsString.includes('video 4')).to.be.true
@ -80,15 +83,15 @@ describe('Test logs', function () {
await waitJobs([ server ]) await waitJobs([ server ])
{ {
const res = await getLogs(server.url, server.accessToken, now, undefined, 'info') const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
const logsString = JSON.stringify(res.body) const logsString = JSON.stringify(body)
expect(logsString.includes('video 6')).to.be.true expect(logsString.includes('video 6')).to.be.true
} }
{ {
const res = await getLogs(server.url, server.accessToken, now, undefined, 'warn') const body = await logsCommand.getLogs({ startDate: now, level: 'warn' })
const logsString = JSON.stringify(res.body) const logsString = JSON.stringify(body)
expect(logsString.includes('video 6')).to.be.false expect(logsString.includes('video 6')).to.be.false
} }
@ -101,8 +104,8 @@ describe('Test logs', function () {
await makePingRequest(server) await makePingRequest(server)
const res = await getLogs(server.url, server.accessToken, now, undefined, 'info') const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
const logsString = JSON.stringify(res.body) const logsString = JSON.stringify(body)
expect(logsString.includes('/api/v1/ping')).to.be.true expect(logsString.includes('/api/v1/ping')).to.be.true
}) })
@ -118,8 +121,8 @@ describe('Test logs', function () {
await makePingRequest(server) await makePingRequest(server)
const res = await getLogs(server.url, server.accessToken, now, undefined, 'info') const body = await logsCommand.getLogs({ startDate: now, level: 'info' })
const logsString = JSON.stringify(res.body) const logsString = JSON.stringify(body)
expect(logsString.includes('/api/v1/ping')).to.be.false expect(logsString.includes('/api/v1/ping')).to.be.false
}) })
@ -137,15 +140,15 @@ describe('Test logs', function () {
await uploadVideo(server.url, server.accessToken, { name: 'video 8' }) await uploadVideo(server.url, server.accessToken, { name: 'video 8' })
await waitJobs([ server ]) await waitJobs([ server ])
const res = await getAuditLogs(server.url, server.accessToken, now) const body = await logsCommand.getAuditLogs({ startDate: now })
const logsString = JSON.stringify(res.body) const logsString = JSON.stringify(body)
expect(logsString.includes('video 7')).to.be.false expect(logsString.includes('video 7')).to.be.false
expect(logsString.includes('video 8')).to.be.true expect(logsString.includes('video 8')).to.be.true
expect(res.body).to.have.lengthOf(1) expect(body).to.have.lengthOf(1)
const item = res.body[0] const item = body[0]
const message = JSON.parse(item.message) const message = JSON.parse(item.message)
expect(message.domain).to.equal('videos') expect(message.domain).to.equal('videos')
@ -168,8 +171,8 @@ describe('Test logs', function () {
await uploadVideo(server.url, server.accessToken, { name: 'video 11' }) await uploadVideo(server.url, server.accessToken, { name: 'video 11' })
await waitJobs([ server ]) await waitJobs([ server ])
const res = await getAuditLogs(server.url, server.accessToken, now1, now2) const body = await logsCommand.getAuditLogs({ startDate: now1, endDate: now2 })
const logsString = JSON.stringify(res.body) const logsString = JSON.stringify(body)
expect(logsString.includes('video 9')).to.be.false expect(logsString.includes('video 9')).to.be.false
expect(logsString.includes('video 10')).to.be.true expect(logsString.includes('video 10')).to.be.true

View File

@ -6,6 +6,8 @@ export * from './custom-pages'
export * from './feeds' export * from './feeds'
export * from './logs'
export * from './mock-servers/mock-instances-index' export * from './mock-servers/mock-instances-index'
export * from './miscs/email' export * from './miscs/email'

View File

@ -0,0 +1 @@
export * from './logs-command'

View File

@ -0,0 +1,41 @@
import { HttpStatusCode } from '../../core-utils/miscs/http-error-codes'
import { LogLevel } from '../../models/server/log-level.type'
import { AbstractCommand, OverrideCommandOptions } from '../shared'
export class LogsCommand extends AbstractCommand {
getLogs (options: OverrideCommandOptions & {
startDate: Date
endDate?: Date
level?: LogLevel
}) {
const { startDate, endDate, level } = options
const path = '/api/v1/server/logs'
return this.getRequestBody({
...options,
path,
query: { startDate, endDate, level },
defaultExpectedStatus: HttpStatusCode.OK_200
})
}
getAuditLogs (options: OverrideCommandOptions & {
startDate: Date
endDate?: Date
}) {
const { startDate, endDate } = options
const path = '/api/v1/server/audit-logs'
return this.getRequestBody({
...options,
path,
query: { startDate, endDate },
defaultExpectedStatus: HttpStatusCode.OK_200
})
}
}

View File

@ -1,32 +0,0 @@
import { makeGetRequest } from '../requests/requests'
import { LogLevel } from '../../models/server/log-level.type'
import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
function getLogs (url: string, accessToken: string, startDate: Date, endDate?: Date, level?: LogLevel) {
const path = '/api/v1/server/logs'
return makeGetRequest({
url,
path,
token: accessToken,
query: { startDate, endDate, level },
statusCodeExpected: HttpStatusCode.OK_200
})
}
function getAuditLogs (url: string, accessToken: string, startDate: Date, endDate?: Date) {
const path = '/api/v1/server/audit-logs'
return makeGetRequest({
url,
path,
token: accessToken,
query: { startDate, endDate },
statusCodeExpected: HttpStatusCode.OK_200
})
}
export {
getLogs,
getAuditLogs
}

View File

@ -10,6 +10,7 @@ import { BulkCommand } from '../bulk'
import { CLICommand } from '../cli' import { CLICommand } from '../cli'
import { CustomPagesCommand } from '../custom-pages' import { CustomPagesCommand } from '../custom-pages'
import { FeedCommand } from '../feeds' import { FeedCommand } from '../feeds'
import { LogsCommand } from '../logs'
import { buildServerDirectory, getFileSize, isGithubCI, root, wait } from '../miscs/miscs' import { buildServerDirectory, getFileSize, isGithubCI, root, wait } from '../miscs/miscs'
import { makeGetRequest } from '../requests/requests' import { makeGetRequest } from '../requests/requests'
@ -69,6 +70,7 @@ interface ServerInfo {
cliCommand?: CLICommand cliCommand?: CLICommand
customPageCommand?: CustomPagesCommand customPageCommand?: CustomPagesCommand
feedCommand?: FeedCommand feedCommand?: FeedCommand
logsCommand?: LogsCommand
} }
function parallelTests () { function parallelTests () {
@ -278,6 +280,7 @@ async function runServer (server: ServerInfo, configOverrideArg?: any, args = []
server.cliCommand = new CLICommand(server) server.cliCommand = new CLICommand(server)
server.customPageCommand = new CustomPagesCommand(server) server.customPageCommand = new CustomPagesCommand(server)
server.feedCommand = new FeedCommand(server) server.feedCommand = new FeedCommand(server)
server.logsCommand = new LogsCommand(server)
res(server) res(server)
}) })

View File

@ -13,7 +13,7 @@ interface CommonCommandOptions extends OverrideCommandOptions {
} }
interface GetCommandOptions extends CommonCommandOptions { interface GetCommandOptions extends CommonCommandOptions {
query?: { [ id: string ]: string } query?: { [ id: string ]: any }
contentType?: string contentType?: string
accept?: string accept?: string
} }