From a92ddacb38a4a17e117ca9ed41680a03580fb81d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 6 Jul 2021 10:34:29 +0200 Subject: [PATCH] Introduce logs command --- server/tests/api/server/logs.ts | 49 ++++++++++--------- shared/extra-utils/index.ts | 2 + shared/extra-utils/logs/index.ts | 1 + shared/extra-utils/logs/logs-command.ts | 41 ++++++++++++++++ shared/extra-utils/logs/logs.ts | 32 ------------ shared/extra-utils/server/servers.ts | 3 ++ shared/extra-utils/shared/abstract-command.ts | 2 +- 7 files changed, 74 insertions(+), 56 deletions(-) create mode 100644 shared/extra-utils/logs/index.ts create mode 100644 shared/extra-utils/logs/logs-command.ts delete mode 100644 shared/extra-utils/logs/logs.ts diff --git a/server/tests/api/server/logs.ts b/server/tests/api/server/logs.ts index bc398ea73..ab83a329f 100644 --- a/server/tests/api/server/logs.ts +++ b/server/tests/api/server/logs.ts @@ -6,25 +6,28 @@ import { cleanupTests, flushAndRunServer, killallServers, + LogsCommand, makePingRequest, reRunServer, ServerInfo, - setAccessTokensToServers -} from '../../../../shared/extra-utils/index' -import { getAuditLogs, getLogs } from '../../../../shared/extra-utils/logs/logs' -import { waitJobs } from '../../../../shared/extra-utils/server/jobs' -import { uploadVideo } from '../../../../shared/extra-utils/videos/videos' + setAccessTokensToServers, + uploadVideo, + waitJobs +} from '@shared/extra-utils' const expect = chai.expect describe('Test logs', function () { let server: ServerInfo + let logsCommand: LogsCommand before(async function () { this.timeout(30000) server = await flushAndRunServer(1) await setAccessTokensToServers([ server ]) + + logsCommand = server.logsCommand }) 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 waitJobs([ server ]) - const res = await getLogs(server.url, server.accessToken, now) - const logsString = JSON.stringify(res.body) + const body = await logsCommand.getLogs({ startDate: now }) + const logsString = JSON.stringify(body) expect(logsString.includes('video 1')).to.be.false 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 waitJobs([ server ]) - const res = await getLogs(server.url, server.accessToken, now1, now2) - const logsString = JSON.stringify(res.body) + const body = await logsCommand.getLogs({ startDate: now1, endDate: now2 }) + const logsString = JSON.stringify(body) expect(logsString.includes('video 3')).to.be.false expect(logsString.includes('video 4')).to.be.true @@ -80,15 +83,15 @@ describe('Test logs', function () { await waitJobs([ server ]) { - const res = await getLogs(server.url, server.accessToken, now, undefined, 'info') - const logsString = JSON.stringify(res.body) + const body = await logsCommand.getLogs({ startDate: now, level: 'info' }) + const logsString = JSON.stringify(body) expect(logsString.includes('video 6')).to.be.true } { - const res = await getLogs(server.url, server.accessToken, now, undefined, 'warn') - const logsString = JSON.stringify(res.body) + const body = await logsCommand.getLogs({ startDate: now, level: 'warn' }) + const logsString = JSON.stringify(body) expect(logsString.includes('video 6')).to.be.false } @@ -101,8 +104,8 @@ describe('Test logs', function () { await makePingRequest(server) - const res = await getLogs(server.url, server.accessToken, now, undefined, 'info') - const logsString = JSON.stringify(res.body) + const body = await logsCommand.getLogs({ startDate: now, level: 'info' }) + const logsString = JSON.stringify(body) expect(logsString.includes('/api/v1/ping')).to.be.true }) @@ -118,8 +121,8 @@ describe('Test logs', function () { await makePingRequest(server) - const res = await getLogs(server.url, server.accessToken, now, undefined, 'info') - const logsString = JSON.stringify(res.body) + const body = await logsCommand.getLogs({ startDate: now, level: 'info' }) + const logsString = JSON.stringify(body) 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 waitJobs([ server ]) - const res = await getAuditLogs(server.url, server.accessToken, now) - const logsString = JSON.stringify(res.body) + const body = await logsCommand.getAuditLogs({ startDate: now }) + const logsString = JSON.stringify(body) expect(logsString.includes('video 7')).to.be.false 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) expect(message.domain).to.equal('videos') @@ -168,8 +171,8 @@ describe('Test logs', function () { await uploadVideo(server.url, server.accessToken, { name: 'video 11' }) await waitJobs([ server ]) - const res = await getAuditLogs(server.url, server.accessToken, now1, now2) - const logsString = JSON.stringify(res.body) + const body = await logsCommand.getAuditLogs({ startDate: now1, endDate: now2 }) + const logsString = JSON.stringify(body) expect(logsString.includes('video 9')).to.be.false expect(logsString.includes('video 10')).to.be.true diff --git a/shared/extra-utils/index.ts b/shared/extra-utils/index.ts index c4f0afdc4..a3d3970af 100644 --- a/shared/extra-utils/index.ts +++ b/shared/extra-utils/index.ts @@ -6,6 +6,8 @@ export * from './custom-pages' export * from './feeds' +export * from './logs' + export * from './mock-servers/mock-instances-index' export * from './miscs/email' diff --git a/shared/extra-utils/logs/index.ts b/shared/extra-utils/logs/index.ts new file mode 100644 index 000000000..69452d7f0 --- /dev/null +++ b/shared/extra-utils/logs/index.ts @@ -0,0 +1 @@ +export * from './logs-command' diff --git a/shared/extra-utils/logs/logs-command.ts b/shared/extra-utils/logs/logs-command.ts new file mode 100644 index 000000000..f7594734d --- /dev/null +++ b/shared/extra-utils/logs/logs-command.ts @@ -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 + }) + } + +} diff --git a/shared/extra-utils/logs/logs.ts b/shared/extra-utils/logs/logs.ts deleted file mode 100644 index 8d741276c..000000000 --- a/shared/extra-utils/logs/logs.ts +++ /dev/null @@ -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 -} diff --git a/shared/extra-utils/server/servers.ts b/shared/extra-utils/server/servers.ts index b64c9eec6..4343eab93 100644 --- a/shared/extra-utils/server/servers.ts +++ b/shared/extra-utils/server/servers.ts @@ -10,6 +10,7 @@ import { BulkCommand } from '../bulk' import { CLICommand } from '../cli' import { CustomPagesCommand } from '../custom-pages' import { FeedCommand } from '../feeds' +import { LogsCommand } from '../logs' import { buildServerDirectory, getFileSize, isGithubCI, root, wait } from '../miscs/miscs' import { makeGetRequest } from '../requests/requests' @@ -69,6 +70,7 @@ interface ServerInfo { cliCommand?: CLICommand customPageCommand?: CustomPagesCommand feedCommand?: FeedCommand + logsCommand?: LogsCommand } function parallelTests () { @@ -278,6 +280,7 @@ async function runServer (server: ServerInfo, configOverrideArg?: any, args = [] server.cliCommand = new CLICommand(server) server.customPageCommand = new CustomPagesCommand(server) server.feedCommand = new FeedCommand(server) + server.logsCommand = new LogsCommand(server) res(server) }) diff --git a/shared/extra-utils/shared/abstract-command.ts b/shared/extra-utils/shared/abstract-command.ts index 7f812daa8..a57222216 100644 --- a/shared/extra-utils/shared/abstract-command.ts +++ b/shared/extra-utils/shared/abstract-command.ts @@ -13,7 +13,7 @@ interface CommonCommandOptions extends OverrideCommandOptions { } interface GetCommandOptions extends CommonCommandOptions { - query?: { [ id: string ]: string } + query?: { [ id: string ]: any } contentType?: string accept?: string }