Fix tests
[oweals/peertube.git] / server / tests / plugins / action-hooks.ts
1 /* tslint:disable:no-unused-expression */
2
3 import * as chai from 'chai'
4 import 'mocha'
5 import {
6   cleanupTests,
7   flushAndRunMultipleServers,
8   flushAndRunServer, killallServers, reRunServer,
9   ServerInfo,
10   waitUntilLog
11 } from '../../../shared/extra-utils/server/servers'
12 import {
13   addVideoCommentReply,
14   addVideoCommentThread, deleteVideoComment,
15   getPluginTestPath,
16   installPlugin, removeVideo,
17   setAccessTokensToServers,
18   updateVideo,
19   uploadVideo,
20   viewVideo
21 } from '../../../shared/extra-utils'
22
23 const expect = chai.expect
24
25 describe('Test plugin action hooks', function () {
26   let servers: ServerInfo[]
27   let videoUUID: string
28   let threadId: number
29
30   function checkHook (hook: string) {
31     return waitUntilLog(servers[0], 'Run hook ' + hook)
32   }
33
34   before(async function () {
35     this.timeout(30000)
36
37     servers = await flushAndRunMultipleServers(2)
38     await setAccessTokensToServers(servers)
39
40     await installPlugin({
41       url: servers[0].url,
42       accessToken: servers[0].accessToken,
43       path: getPluginTestPath()
44     })
45
46     killallServers([ servers[0] ])
47
48     await reRunServer(servers[0])
49   })
50
51   it('Should run action:application.listening', async function () {
52     await checkHook('action:application.listening')
53   })
54
55   it('Should run action:api.video.uploaded', async function () {
56     const res = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video' })
57     videoUUID = res.body.video.uuid
58
59     await checkHook('action:api.video.uploaded')
60   })
61
62   it('Should run action:api.video.updated', async function () {
63     await updateVideo(servers[0].url, servers[0].accessToken, videoUUID, { name: 'video updated' })
64
65     await checkHook('action:api.video.updated')
66   })
67
68   it('Should run action:api.video.viewed', async function () {
69     await viewVideo(servers[0].url, videoUUID)
70
71     await checkHook('action:api.video.viewed')
72   })
73
74   it('Should run action:api.video-thread.created', async function () {
75     const res = await addVideoCommentThread(servers[0].url, servers[0].accessToken, videoUUID, 'thread')
76     threadId = res.body.comment.id
77
78     await checkHook('action:api.video-thread.created')
79   })
80
81   it('Should run action:api.video-comment-reply.created', async function () {
82     await addVideoCommentReply(servers[0].url, servers[0].accessToken, videoUUID, threadId, 'reply')
83
84     await checkHook('action:api.video-comment-reply.created')
85   })
86
87   it('Should run action:api.video-comment.deleted', async function () {
88     await deleteVideoComment(servers[0].url, servers[0].accessToken, videoUUID, threadId)
89
90     await checkHook('action:api.video-comment.deleted')
91   })
92
93   it('Should run action:api.video.deleted', async function () {
94     await removeVideo(servers[0].url, servers[0].accessToken, videoUUID)
95
96     await checkHook('action:api.video.deleted')
97   })
98
99   after(async function () {
100     await cleanupTests(servers)
101   })
102 })