All API tests in parallel
[oweals/peertube.git] / server / tests / api / server / logs.ts
1 /* tslint:disable:no-unused-expression */
2
3 import * as chai from 'chai'
4 import 'mocha'
5 import {
6   flushTests,
7   killallServers,
8   flushAndRunServer,
9   ServerInfo,
10   setAccessTokensToServers,
11   cleanupTests
12 } from '../../../../shared/extra-utils/index'
13 import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
14 import { uploadVideo } from '../../../../shared/extra-utils/videos/videos'
15 import { getLogs } from '../../../../shared/extra-utils/logs/logs'
16
17 const expect = chai.expect
18
19 describe('Test logs', function () {
20   let server: ServerInfo
21
22   before(async function () {
23     this.timeout(30000)
24
25     server = await flushAndRunServer(1)
26     await setAccessTokensToServers([ server ])
27   })
28
29   it('Should get logs with a start date', async function () {
30     this.timeout(10000)
31
32     await uploadVideo(server.url, server.accessToken, { name: 'video 1' })
33     await waitJobs([ server ])
34
35     const now = new Date()
36
37     await uploadVideo(server.url, server.accessToken, { name: 'video 2' })
38     await waitJobs([ server ])
39
40     const res = await getLogs(server.url, server.accessToken, now)
41     const logsString = JSON.stringify(res.body)
42
43     expect(logsString.includes('video 1')).to.be.false
44     expect(logsString.includes('video 2')).to.be.true
45   })
46
47   it('Should get logs with an end date', async function () {
48     this.timeout(20000)
49
50     await uploadVideo(server.url, server.accessToken, { name: 'video 3' })
51     await waitJobs([ server ])
52
53     const now1 = new Date()
54
55     await uploadVideo(server.url, server.accessToken, { name: 'video 4' })
56     await waitJobs([ server ])
57
58     const now2 = new Date()
59
60     await uploadVideo(server.url, server.accessToken, { name: 'video 5' })
61     await waitJobs([ server ])
62
63     const res = await getLogs(server.url, server.accessToken, now1, now2)
64     const logsString = JSON.stringify(res.body)
65
66     expect(logsString.includes('video 3')).to.be.false
67     expect(logsString.includes('video 4')).to.be.true
68     expect(logsString.includes('video 5')).to.be.false
69   })
70
71   it('Should get filter by level', async function () {
72     this.timeout(10000)
73
74     const now = new Date()
75
76     await uploadVideo(server.url, server.accessToken, { name: 'video 6' })
77     await waitJobs([ server ])
78
79     {
80       const res = await getLogs(server.url, server.accessToken, now, undefined, 'info')
81       const logsString = JSON.stringify(res.body)
82
83       expect(logsString.includes('video 6')).to.be.true
84     }
85
86     {
87       const res = await getLogs(server.url, server.accessToken, now, undefined, 'warn')
88       const logsString = JSON.stringify(res.body)
89
90       expect(logsString.includes('video 6')).to.be.false
91     }
92   })
93
94   after(async function () {
95     await cleanupTests([ server ])
96   })
97 })