Introduce logs command
This commit is contained in:
parent
f59545d97a
commit
a92ddacb38
|
@ -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
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
export * from './logs-command'
|
|
@ -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
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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
|
|
||||||
}
|
|
|
@ -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)
|
||||||
})
|
})
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue