-/* 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'
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 = {
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,
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, {
const query = {
search: '9999',
categoryOneOf: [ 1 ],
- tagsOneOf: [ 'aaaa', 'ffff' ]
+ tagsOneOf: [ 'aAaa', 'ffff' ]
}
const res1 = await advancedVideosSearch(server.url, query)
expect(res1.body.total).to.equal(2)
const query = {
search: '9999',
categoryOneOf: [ 1 ],
- tagsAllOf: [ 'cccc' ]
+ tagsAllOf: [ 'CCcc' ]
}
const res1 = await advancedVideosSearch(server.url, query)
expect(res1.body.total).to.equal(2)
- const res2 = await advancedVideosSearch(server.url, immutableAssign(query, { tagsAllOf: [ 'blabla' ] }))
+ const res2 = await advancedVideosSearch(server.url, immutableAssign(query, { tagsAllOf: [ 'blAbla' ] }))
expect(res2.body.total).to.equal(0)
- const res3 = await advancedVideosSearch(server.url, immutableAssign(query, { tagsAllOf: [ 'bbbb', 'cccc' ] }))
+ const res3 = await advancedVideosSearch(server.url, immutableAssign(query, { tagsAllOf: [ 'bbbb', 'CCCC' ] }))
expect(res3.body.total).to.equal(1)
})
{
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')
}
{
}
})
+ 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 ])
})