]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tests/api/search/search-videos.ts
shared/ typescript types dir server-commands
[github/Chocobozzz/PeerTube.git] / server / tests / api / search / search-videos.ts
index 96576674264bf58244bbe6a73a994752866872f8..bf2375ffa4235366a55814db0f19154b999b1bc8 100644 (file)
@@ -5,31 +5,39 @@ import * as chai from 'chai'
 import {
   cleanupTests,
   createSingleServer,
+  doubleFollow,
   PeerTubeServer,
   SearchCommand,
   setAccessTokensToServers,
   setDefaultVideoChannel,
   stopFfmpeg,
   wait
-} from '@shared/extra-utils'
+} from '@shared/server-commands'
 import { VideoPrivacy } from '@shared/models'
 
 const expect = chai.expect
 
 describe('Test videos search', function () {
-  let server: PeerTubeServer = null
+  let server: PeerTubeServer
+  let remoteServer: PeerTubeServer
   let startDate: string
   let videoUUID: string
+  let videoShortUUID: string
 
   let command: SearchCommand
 
   before(async function () {
-    this.timeout(60000)
+    this.timeout(240000)
 
-    server = await createSingleServer(1)
+    const servers = await Promise.all([
+      createSingleServer(1),
+      createSingleServer(2)
+    ])
+    server = servers[0]
+    remoteServer = servers[1]
 
-    await setAccessTokensToServers([ server ])
-    await setDefaultVideoChannel([ server ])
+    await setAccessTokensToServers([ server, remoteServer ])
+    await setDefaultVideoChannel([ server, remoteServer ])
 
     {
       const attributes1 = {
@@ -47,8 +55,9 @@ describe('Test videos search', function () {
 
       {
         const attributes3 = { ...attributes1, name: attributes1.name + ' - 3', language: undefined }
-        const { id, uuid } = await server.videos.upload({ attributes: attributes3 })
+        const { id, uuid, shortUUID } = await server.videos.upload({ attributes: attributes3 })
         videoUUID = uuid
+        videoShortUUID = shortUUID
 
         await server.captions.add({
           language: 'en',
@@ -131,6 +140,13 @@ describe('Test videos search', function () {
       await server.videos.upload({ attributes: { ...attributes1, category: 2 } })
     }
 
+    {
+      await remoteServer.videos.upload({ attributes: { name: 'remote video 1' } })
+      await remoteServer.videos.upload({ attributes: { name: 'remote video 2' } })
+    }
+
+    await doubleFollow(server, remoteServer)
+
     command = server.search
   })
 
@@ -469,8 +485,46 @@ describe('Test videos search', function () {
     expect(body.data[0].name).to.equal('1111 2222 3333 - 3')
   })
 
+  it('Should filter by UUIDs', async function () {
+    for (const uuid of [ videoUUID, videoShortUUID ]) {
+      const body = await command.advancedVideoSearch({ search: { uuids: [ uuid ] } })
+
+      expect(body.total).to.equal(1)
+      expect(body.data[0].name).to.equal('1111 2222 3333 - 3')
+    }
+
+    {
+      const body = await command.advancedVideoSearch({ search: { uuids: [ 'dfd70b83-639f-4980-94af-304a56ab4b35' ] } })
+
+      expect(body.total).to.equal(0)
+      expect(body.data).to.have.lengthOf(0)
+    }
+  })
+
+  it('Should search by host', async function () {
+    {
+      const body = await command.advancedVideoSearch({ search: { search: '6666 7777 8888', host: server.host } })
+      expect(body.total).to.equal(1)
+      expect(body.data[0].name).to.equal('6666 7777 8888')
+    }
+
+    {
+      const body = await command.advancedVideoSearch({ search: { search: '1111', host: 'example.com' } })
+      expect(body.total).to.equal(0)
+      expect(body.data).to.have.lengthOf(0)
+    }
+
+    {
+      const body = await command.advancedVideoSearch({ search: { search: 'remote', host: remoteServer.host } })
+      expect(body.total).to.equal(2)
+      expect(body.data).to.have.lengthOf(2)
+      expect(body.data[0].name).to.equal('remote video 1')
+      expect(body.data[1].name).to.equal('remote video 2')
+    }
+  })
+
   it('Should search by live', async function () {
-    this.timeout(30000)
+    this.timeout(60000)
 
     {
       const newConfig = {