X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fsearch%2Fsearch-playlists.ts;h=a357674c289c84cd2fdcef62f965483a5f44d135;hb=d102de1b38f2877463529c3b27bd35ffef4fd8bf;hp=ab17d55e9719d387dd9e316725b2bfdb2e90f4e7;hpb=cf21b2cbef61929177b9c09b5e017c3b7eb8535d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/search/search-playlists.ts b/server/tests/api/search/search-playlists.ts index ab17d55e9..a357674c2 100644 --- a/server/tests/api/search/search-playlists.ts +++ b/server/tests/api/search/search-playlists.ts @@ -1,83 +1,90 @@ /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ -import 'mocha' -import * as chai from 'chai' -import { VideoPlaylist, VideoPlaylistPrivacy } from '@shared/models' +import { expect } from 'chai' +import { VideoPlaylistPrivacy } from '@shared/models' import { - addVideoInPlaylist, - advancedVideoPlaylistSearch, cleanupTests, - createVideoPlaylist, - flushAndRunServer, - searchVideoPlaylists, - ServerInfo, + createSingleServer, + doubleFollow, + PeerTubeServer, + SearchCommand, setAccessTokensToServers, - setDefaultVideoChannel, - uploadVideoAndGetId -} from '../../../../shared/extra-utils' - -const expect = chai.expect + setDefaultAccountAvatar, + setDefaultChannelAvatar, + setDefaultVideoChannel +} from '@shared/server-commands' describe('Test playlists search', function () { - let server: ServerInfo = null + let server: PeerTubeServer + let remoteServer: PeerTubeServer + let command: SearchCommand + let playlistUUID: string + let playlistShortUUID: string before(async function () { - this.timeout(30000) + this.timeout(120000) - server = await flushAndRunServer(1) + const servers = await Promise.all([ + createSingleServer(1), + createSingleServer(2) + ]) + server = servers[0] + remoteServer = servers[1] - await setAccessTokensToServers([ server ]) - await setDefaultVideoChannel([ server ]) + await setAccessTokensToServers([ remoteServer, server ]) + await setDefaultVideoChannel([ remoteServer, server ]) + await setDefaultChannelAvatar([ remoteServer, server ]) + await setDefaultAccountAvatar([ remoteServer, server ]) - const videoId = (await uploadVideoAndGetId({ server: server, videoName: 'video' })).uuid + await servers[1].config.disableTranscoding() { + const videoId = (await server.videos.upload()).uuid + const attributes = { displayName: 'Dr. Kenzo Tenma hospital videos', privacy: VideoPlaylistPrivacy.PUBLIC, - videoChannelId: server.videoChannel.id + videoChannelId: server.store.channel.id } - const res = await createVideoPlaylist({ url: server.url, token: server.accessToken, playlistAttrs: attributes }) - - await addVideoInPlaylist({ - url: server.url, - token: server.accessToken, - playlistId: res.body.videoPlaylist.id, - elementAttrs: { videoId } - }) + const created = await server.playlists.create({ attributes }) + playlistUUID = created.uuid + playlistShortUUID = created.shortUUID + + await server.playlists.addElement({ playlistId: created.id, attributes: { videoId } }) } { + const videoId = (await remoteServer.videos.upload()).uuid + const attributes = { - displayName: 'Johan & Anna Libert musics', + displayName: 'Johan & Anna Libert music videos', privacy: VideoPlaylistPrivacy.PUBLIC, - videoChannelId: server.videoChannel.id + videoChannelId: remoteServer.store.channel.id } - const res = await createVideoPlaylist({ url: server.url, token: server.accessToken, playlistAttrs: attributes }) - - await addVideoInPlaylist({ - url: server.url, - token: server.accessToken, - playlistId: res.body.videoPlaylist.id, - elementAttrs: { videoId } - }) + const created = await remoteServer.playlists.create({ attributes }) + + await remoteServer.playlists.addElement({ playlistId: created.id, attributes: { videoId } }) } { const attributes = { displayName: 'Inspector Lunge playlist', privacy: VideoPlaylistPrivacy.PUBLIC, - videoChannelId: server.videoChannel.id + videoChannelId: server.store.channel.id } - await createVideoPlaylist({ url: server.url, token: server.accessToken, playlistAttrs: attributes }) + await server.playlists.create({ attributes }) } + + await doubleFollow(server, remoteServer) + + command = server.search }) it('Should make a simple search and not have results', async function () { - const res = await searchVideoPlaylists(server.url, 'abc') + const body = await command.searchPlaylists({ search: 'abc' }) - expect(res.body.total).to.equal(0) - expect(res.body.data).to.have.lengthOf(0) + expect(body.total).to.equal(0) + expect(body.data).to.have.lengthOf(0) }) it('Should make a search and have results', async function () { @@ -87,27 +94,72 @@ describe('Test playlists search', function () { start: 0, count: 1 } - const res = await advancedVideoPlaylistSearch(server.url, search) - expect(res.body.total).to.equal(1) - expect(res.body.data).to.have.lengthOf(1) + const body = await command.advancedPlaylistSearch({ search }) + expect(body.total).to.equal(1) + expect(body.data).to.have.lengthOf(1) - const playlist: VideoPlaylist = res.body.data[0] + const playlist = body.data[0] expect(playlist.displayName).to.equal('Dr. Kenzo Tenma hospital videos') expect(playlist.url).to.equal(server.url + '/video-playlists/' + playlist.uuid) } { const search = { - search: 'Anna Livert', + search: 'Anna Livert music', start: 0, count: 1 } - const res = await advancedVideoPlaylistSearch(server.url, search) - expect(res.body.total).to.equal(1) - expect(res.body.data).to.have.lengthOf(1) + const body = await command.advancedPlaylistSearch({ search }) + expect(body.total).to.equal(1) + expect(body.data).to.have.lengthOf(1) + + const playlist = body.data[0] + expect(playlist.displayName).to.equal('Johan & Anna Libert music videos') + } + }) + + it('Should filter by host', async function () { + { + const search = { search: 'tenma', host: server.host } + const body = await command.advancedPlaylistSearch({ search }) + expect(body.total).to.equal(1) + expect(body.data).to.have.lengthOf(1) + + const playlist = body.data[0] + expect(playlist.displayName).to.equal('Dr. Kenzo Tenma hospital videos') + } + + { + const search = { search: 'Anna', host: 'example.com' } + const body = await command.advancedPlaylistSearch({ search }) + expect(body.total).to.equal(0) + expect(body.data).to.have.lengthOf(0) + } + + { + const search = { search: 'video', host: remoteServer.host } + const body = await command.advancedPlaylistSearch({ search }) + expect(body.total).to.equal(1) + expect(body.data).to.have.lengthOf(1) + + const playlist = body.data[0] + expect(playlist.displayName).to.equal('Johan & Anna Libert music videos') + } + }) + + it('Should filter by UUIDs', async function () { + for (const uuid of [ playlistUUID, playlistShortUUID ]) { + const body = await command.advancedPlaylistSearch({ search: { uuids: [ uuid ] } }) + + expect(body.total).to.equal(1) + expect(body.data[0].displayName).to.equal('Dr. Kenzo Tenma hospital videos') + } + + { + const body = await command.advancedPlaylistSearch({ search: { uuids: [ 'dfd70b83-639f-4980-94af-304a56ab4b35' ] } }) - const playlist: VideoPlaylist = res.body.data[0] - expect(playlist.displayName).to.equal('Johan & Anna Libert musics') + expect(body.total).to.equal(0) + expect(body.data).to.have.lengthOf(0) } }) @@ -117,12 +169,12 @@ describe('Test playlists search', function () { start: 0, count: 1 } - const res = await advancedVideoPlaylistSearch(server.url, search) - expect(res.body.total).to.equal(0) - expect(res.body.data).to.have.lengthOf(0) + const body = await command.advancedPlaylistSearch({ search }) + expect(body.total).to.equal(0) + expect(body.data).to.have.lengthOf(0) }) after(async function () { - await cleanupTests([ server ]) + await cleanupTests([ server, remoteServer ]) }) })