]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tests/api/live/live.ts
Added "total views" in the my channels list (#5007)
[github/Chocobozzz/PeerTube.git] / server / tests / api / live / live.ts
index b8c4c1e293390899e53ca4e88a5906bf16a4881f..c497f7840afec94f2e1cda43ea04952c7515e919 100644 (file)
@@ -590,13 +590,19 @@ describe('Test live', function () {
   describe('After a server restart', function () {
     let liveVideoId: string
     let liveVideoReplayId: string
+    let permanentLiveVideoReplayId: string
 
-    async function createLiveWrapper (saveReplay: boolean) {
-      const liveAttributes = {
+    let permanentLiveReplayName: string
+
+    let beforeServerRestart: Date
+
+    async function createLiveWrapper (options: { saveReplay: boolean, permanent: boolean }) {
+      const liveAttributes: LiveVideoCreate = {
         name: 'live video',
         channelId: servers[0].store.channel.id,
         privacy: VideoPrivacy.PUBLIC,
-        saveReplay
+        saveReplay: options.saveReplay,
+        permanentLive: options.permanent
       }
 
       const { uuid } = await commands[0].create({ fields: liveAttributes })
@@ -604,40 +610,64 @@ describe('Test live', function () {
     }
 
     before(async function () {
-      this.timeout(120000)
+      this.timeout(160000)
 
-      liveVideoId = await createLiveWrapper(false)
-      liveVideoReplayId = await createLiveWrapper(true)
+      liveVideoId = await createLiveWrapper({ saveReplay: false, permanent: false })
+      liveVideoReplayId = await createLiveWrapper({ saveReplay: true, permanent: false })
+      permanentLiveVideoReplayId = await createLiveWrapper({ saveReplay: true, permanent: true })
 
       await Promise.all([
         commands[0].sendRTMPStreamInVideo({ videoId: liveVideoId }),
+        commands[0].sendRTMPStreamInVideo({ videoId: permanentLiveVideoReplayId }),
         commands[0].sendRTMPStreamInVideo({ videoId: liveVideoReplayId })
       ])
 
       await Promise.all([
         commands[0].waitUntilPublished({ videoId: liveVideoId }),
+        commands[0].waitUntilPublished({ videoId: permanentLiveVideoReplayId }),
         commands[0].waitUntilPublished({ videoId: liveVideoReplayId })
       ])
 
       await commands[0].waitUntilSegmentGeneration({ videoUUID: liveVideoId, resolution: 0, segment: 2 })
       await commands[0].waitUntilSegmentGeneration({ videoUUID: liveVideoReplayId, resolution: 0, segment: 2 })
+      await commands[0].waitUntilSegmentGeneration({ videoUUID: permanentLiveVideoReplayId, resolution: 0, segment: 2 })
+
+      {
+        const video = await servers[0].videos.get({ id: permanentLiveVideoReplayId })
+        permanentLiveReplayName = video.name + ' - ' + new Date(video.publishedAt).toLocaleString()
+      }
 
       await killallServers([ servers[0] ])
+
+      beforeServerRestart = new Date()
       await servers[0].run()
 
       await wait(5000)
+      await waitJobs(servers)
     })
 
     it('Should cleanup lives', async function () {
       this.timeout(60000)
 
       await commands[0].waitUntilEnded({ videoId: liveVideoId })
+      await commands[0].waitUntilWaiting({ videoId: permanentLiveVideoReplayId })
     })
 
-    it('Should save a live replay', async function () {
-      this.timeout(120000)
+    it('Should save a non permanent live replay', async function () {
+      this.timeout(240000)
 
       await commands[0].waitUntilPublished({ videoId: liveVideoReplayId })
+
+      const session = await commands[0].getReplaySession({ videoId: liveVideoReplayId })
+      expect(session.endDate).to.exist
+      expect(new Date(session.endDate)).to.be.above(beforeServerRestart)
+    })
+
+    it('Should have saved a permanent live replay', async function () {
+      this.timeout(120000)
+
+      const { data } = await servers[0].videos.listMyVideos({ sort: '-publishedAt' })
+      expect(data.find(v => v.name === permanentLiveReplayName)).to.exist
     })
   })