]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tests/api/search/search-videos.ts
Refactor live manager
[github/Chocobozzz/PeerTube.git] / server / tests / api / search / search-videos.ts
index a3e05156b189dc4d3efd825595f180da0e33d535..5b8907961d4c8f1e2dfcfbccc5de67ce8646d84c 100644 (file)
@@ -1,17 +1,24 @@
-/* tslint:disable:no-unused-expression */
+/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
 
-import * as chai from 'chai'
 import 'mocha'
+import * as chai from 'chai'
+import { VideoPrivacy } from '@shared/models'
 import {
   advancedVideosSearch,
   cleanupTests,
+  createLive,
   flushAndRunServer,
   immutableAssign,
   searchVideo,
+  sendRTMPStreamInVideo,
   ServerInfo,
   setAccessTokensToServers,
+  setDefaultVideoChannel,
+  stopFfmpeg,
+  updateCustomSubConfig,
   uploadVideo,
-  wait
+  wait,
+  waitUntilLivePublished
 } from '../../../../shared/extra-utils'
 import { createVideoCaption } from '../../../../shared/extra-utils/videos/video-captions'
 
@@ -20,13 +27,15 @@ const expect = chai.expect
 describe('Test videos search', function () {
   let server: ServerInfo = null
   let startDate: string
+  let videoUUID: string
 
   before(async function () {
-    this.timeout(30000)
+    this.timeout(60000)
 
     server = await flushAndRunServer(1)
 
     await setAccessTokensToServers([ server ])
+    await setDefaultVideoChannel([ server ])
 
     {
       const attributes1 = {
@@ -46,6 +55,7 @@ describe('Test videos search', function () {
         const attributes3 = immutableAssign(attributes1, { name: attributes1.name + ' - 3', language: undefined })
         const res = await uploadVideo(server.url, server.accessToken, attributes3)
         const videoId = res.body.video.id
+        videoUUID = res.body.video.uuid
 
         await createVideoCaption({
           url: server.url,
@@ -76,7 +86,7 @@ describe('Test videos search', function () {
       const attributes5 = immutableAssign(attributes1, { name: attributes1.name + ' - 5', licence: 2, language: undefined })
       await uploadVideo(server.url, server.accessToken, attributes5)
 
-      const attributes6 = immutableAssign(attributes1, { name: attributes1.name + ' - 6', tags: [ 't1', 't2 '] })
+      const attributes6 = immutableAssign(attributes1, { name: attributes1.name + ' - 6', tags: [ 't1', 't2] })
       await uploadVideo(server.url, server.accessToken, attributes6)
 
       const attributes7 = immutableAssign(attributes1, {
@@ -267,16 +277,16 @@ describe('Test videos search', function () {
     {
       const res = await advancedVideosSearch(server.url, query)
       expect(res.body.total).to.equal(2)
-      expect(res.body.data[ 0 ].name).to.equal('1111 2222 3333 - 3')
-      expect(res.body.data[ 1 ].name).to.equal('1111 2222 3333 - 4')
+      expect(res.body.data[0].name).to.equal('1111 2222 3333 - 3')
+      expect(res.body.data[1].name).to.equal('1111 2222 3333 - 4')
     }
 
     {
       const res = await advancedVideosSearch(server.url, immutableAssign(query, { languageOneOf: [ 'pl', 'en', '_unknown' ] }))
       expect(res.body.total).to.equal(3)
-      expect(res.body.data[ 0 ].name).to.equal('1111 2222 3333 - 3')
-      expect(res.body.data[ 1 ].name).to.equal('1111 2222 3333 - 4')
-      expect(res.body.data[ 2 ].name).to.equal('1111 2222 3333 - 5')
+      expect(res.body.data[0].name).to.equal('1111 2222 3333 - 3')
+      expect(res.body.data[1].name).to.equal('1111 2222 3333 - 4')
+      expect(res.body.data[2].name).to.equal('1111 2222 3333 - 5')
     }
 
     {
@@ -439,6 +449,51 @@ describe('Test videos search', function () {
     }
   })
 
+  it('Should search by UUID', async function () {
+    const search = videoUUID
+    const res = await advancedVideosSearch(server.url, { search })
+
+    expect(res.body.total).to.equal(1)
+    expect(res.body.data[0].name).to.equal('1111 2222 3333 - 3')
+  })
+
+  it('Should search by live', async function () {
+    this.timeout(30000)
+
+    {
+      const options = {
+        search: {
+          searchIndex: { enabled: false }
+        },
+        live: { enabled: true }
+      }
+      await updateCustomSubConfig(server.url, server.accessToken, options)
+    }
+
+    {
+      const res = await advancedVideosSearch(server.url, { isLive: true })
+
+      expect(res.body.total).to.equal(0)
+      expect(res.body.data).to.have.lengthOf(0)
+    }
+
+    {
+      const liveOptions = { name: 'live', privacy: VideoPrivacy.PUBLIC, channelId: server.videoChannel.id }
+      const resLive = await createLive(server.url, server.accessToken, liveOptions)
+      const liveVideoId = resLive.body.video.uuid
+
+      const command = await sendRTMPStreamInVideo(server.url, server.accessToken, liveVideoId)
+      await waitUntilLivePublished(server.url, server.accessToken, liveVideoId)
+
+      const res = await advancedVideosSearch(server.url, { isLive: true })
+
+      expect(res.body.total).to.equal(1)
+      expect(res.body.data[0].name).to.equal('live')
+
+      await stopFfmpeg(command)
+    }
+  })
+
   after(async function () {
     await cleanupTests([ server ])
   })