+ describe('My live replay is published', function () {
+
+ let baseParams: CheckerBaseParams
+
+ before(() => {
+ baseParams = {
+ server: servers[1],
+ emails,
+ socketNotifications: adminNotificationsServer2,
+ token: servers[1].accessToken
+ }
+ })
+
+ it('Should send a notification is a live replay of a non permanent live is published', async function () {
+ this.timeout(120000)
+
+ const { shortUUID } = await servers[1].live.create({
+ fields: {
+ name: 'non permanent live',
+ privacy: VideoPrivacy.PUBLIC,
+ channelId: servers[1].store.channel.id,
+ saveReplay: true,
+ permanentLive: false
+ }
+ })
+
+ const ffmpegCommand = await servers[1].live.sendRTMPStreamInVideo({ videoId: shortUUID })
+
+ await waitJobs(servers)
+ await servers[1].live.waitUntilPublished({ videoId: shortUUID })
+
+ await stopFfmpeg(ffmpegCommand)
+ await servers[1].live.waitUntilReplacedByReplay({ videoId: shortUUID })
+
+ await waitJobs(servers)
+ await checkVideoIsPublished({ ...baseParams, videoName: 'non permanent live', shortUUID, checkType: 'presence' })
+ })
+
+ it('Should send a notification is a live replay of a permanent live is published', async function () {
+ this.timeout(120000)
+
+ const { shortUUID } = await servers[1].live.create({
+ fields: {
+ name: 'permanent live',
+ privacy: VideoPrivacy.PUBLIC,
+ channelId: servers[1].store.channel.id,
+ saveReplay: true,
+ permanentLive: true
+ }
+ })
+
+ const ffmpegCommand = await servers[1].live.sendRTMPStreamInVideo({ videoId: shortUUID })
+
+ await waitJobs(servers)
+ await servers[1].live.waitUntilPublished({ videoId: shortUUID })
+
+ const liveDetails = await servers[1].videos.get({ id: shortUUID })
+
+ await stopFfmpeg(ffmpegCommand)
+
+ await servers[1].live.waitUntilWaiting({ videoId: shortUUID })
+ await waitJobs(servers)
+
+ const video = await findExternalSavedVideo(servers[1], liveDetails)
+ expect(video).to.exist
+
+ await checkVideoIsPublished({ ...baseParams, videoName: video.name, shortUUID: video.shortUUID, checkType: 'presence' })
+ })
+ })
+
+ describe('Video studio', function () {
+ let baseParams: CheckerBaseParams
+
+ before(() => {
+ baseParams = {
+ server: servers[1],
+ emails,
+ socketNotifications: adminNotificationsServer2,
+ token: servers[1].accessToken
+ }
+ })
+
+ it('Should send a notification after studio edition', async function () {
+ this.timeout(240000)
+
+ const { name, shortUUID, id } = await uploadRandomVideoOnServers(servers, 2, { waitTranscoding: true })
+
+ await waitJobs(servers)
+ await checkVideoIsPublished({ ...baseParams, videoName: name, shortUUID, checkType: 'presence' })
+
+ const tasks: VideoStudioTask[] = [
+ {
+ name: 'cut',
+ options: {
+ start: 0,
+ end: 1
+ }
+ }
+ ]
+ await servers[1].videoStudio.createEditionTasks({ videoId: id, tasks })
+ await waitJobs(servers)
+
+ await checkVideoStudioEditionIsFinished({ ...baseParams, videoName: name, shortUUID, checkType: 'presence' })
+ })
+ })
+