X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fcheck-params%2Fvideo-playlists.ts;h=ae5aa287fb9ac978fa496aa7a55add6e69b16340;hb=d7a25329f9e607894d29ab342b9cb66638b56dc0;hp=803e7afb9cfd8945e92ed3a1dd9031004683aae7;hpb=df0b219d36bf6852cdf2a7ad09ed4a41c6bccefa;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/check-params/video-playlists.ts b/server/tests/api/check-params/video-playlists.ts index 803e7afb9..ae5aa287f 100644 --- a/server/tests/api/check-params/video-playlists.ts +++ b/server/tests/api/check-params/video-playlists.ts @@ -3,29 +3,29 @@ import 'mocha' import { addVideoInPlaylist, + cleanupTests, createVideoPlaylist, deleteVideoPlaylist, - flushTests, + flushAndRunServer, generateUserAccessToken, getAccountPlaylistsListWithToken, getVideoPlaylist, immutableAssign, - killallServers, makeGetRequest, removeVideoFromPlaylist, reorderVideosPlaylist, - runServer, ServerInfo, setAccessTokensToServers, + setDefaultVideoChannel, updateVideoPlaylist, updateVideoPlaylistElement, uploadVideoAndGetId -} from '../../../../shared/utils' +} from '../../../../shared/extra-utils' import { checkBadCountPagination, checkBadSortPagination, checkBadStartPagination -} from '../../../../shared/utils/requests/check-api-params' +} from '../../../../shared/extra-utils/requests/check-api-params' import { VideoPlaylistPrivacy } from '../../../../shared/models/videos/playlist/video-playlist-privacy.model' import { VideoPlaylistType } from '../../../../shared/models/videos/playlist/video-playlist-type.model' @@ -33,20 +33,21 @@ describe('Test video playlists API validator', function () { let server: ServerInfo let userAccessToken: string let playlistUUID: string + let privatePlaylistUUID: string let watchLaterPlaylistId: number let videoId: number let videoId2: number + let playlistElementId: number // --------------------------------------------------------------- before(async function () { this.timeout(30000) - await flushTests() - - server = await runServer(1) + server = await flushAndRunServer(1) await setAccessTokensToServers([ server ]) + await setDefaultVideoChannel([ server ]) userAccessToken = await generateUserAccessToken(server, 'user1') videoId = (await uploadVideoAndGetId({ server, videoName: 'video 1' })).id @@ -63,11 +64,24 @@ describe('Test video playlists API validator', function () { token: server.accessToken, playlistAttrs: { displayName: 'super playlist', - privacy: VideoPlaylistPrivacy.PUBLIC + privacy: VideoPlaylistPrivacy.PUBLIC, + videoChannelId: server.videoChannel.id } }) playlistUUID = res.body.videoPlaylist.uuid } + + { + const res = await createVideoPlaylist({ + url: server.url, + token: server.accessToken, + playlistAttrs: { + displayName: 'private', + privacy: VideoPlaylistPrivacy.PRIVATE + } + }) + privatePlaylistUUID = res.body.videoPlaylist.uuid + } }) describe('When listing playlists', function () { @@ -119,18 +133,18 @@ describe('Test video playlists API validator', function () { }) describe('When listing videos of a playlist', function () { - const path = '/api/v1/video-playlists' + const path = '/api/v1/video-playlists/' it('Should fail with a bad start pagination', async function () { - await checkBadStartPagination(server.url, path, server.accessToken) + await checkBadStartPagination(server.url, path + playlistUUID + '/videos', server.accessToken) }) it('Should fail with a bad count pagination', async function () { - await checkBadCountPagination(server.url, path, server.accessToken) + await checkBadCountPagination(server.url, path + playlistUUID + '/videos', server.accessToken) }) - it('Should fail with a bad filter', async function () { - await checkBadSortPagination(server.url, path, server.accessToken) + it('Should success with the correct parameters', async function () { + await makeGetRequest({ url: server.url, path: path + playlistUUID + '/videos', statusCodeExpected: 200 }) }) }) @@ -172,7 +186,8 @@ describe('Test video playlists API validator', function () { playlistAttrs: Object.assign({ displayName: 'display name', privacy: VideoPlaylistPrivacy.UNLISTED, - thumbnailfile: 'thumbnail.jpg' + thumbnailfile: 'thumbnail.jpg', + videoChannelId: server.videoChannel.id }, playlistAttrs) }, wrapper) } @@ -191,7 +206,6 @@ describe('Test video playlists API validator', function () { const params = getBase({ displayName: undefined }) await createVideoPlaylist(params) - await updateVideoPlaylist(getUpdate(params, playlistUUID)) }) it('Should fail with an incorrect display name', async function () { @@ -229,6 +243,18 @@ describe('Test video playlists API validator', function () { await updateVideoPlaylist(getUpdate(params, playlistUUID)) }) + it('Should fail to set "public" a playlist not assigned to a channel', async function () { + const params = getBase({ privacy: VideoPlaylistPrivacy.PUBLIC, videoChannelId: undefined }) + const params2 = getBase({ privacy: VideoPlaylistPrivacy.PUBLIC, videoChannelId: 'null' }) + const params3 = getBase({ privacy: undefined, videoChannelId: 'null' }) + + await createVideoPlaylist(params) + await createVideoPlaylist(params2) + await updateVideoPlaylist(getUpdate(params, privatePlaylistUUID)) + await updateVideoPlaylist(getUpdate(params2, playlistUUID)) + await updateVideoPlaylist(getUpdate(params3, playlistUUID)) + }) + it('Should fail with an unknown playlist to update', async function () { await updateVideoPlaylist(getUpdate( getBase({}, { expectedStatus: 404 }), @@ -243,20 +269,9 @@ describe('Test video playlists API validator', function () { )) }) - it('Should fail to update to private a public/unlisted playlist', async function () { - const params = getBase({ privacy: VideoPlaylistPrivacy.PUBLIC }, { expectedStatus: 200 }) - - const res = await createVideoPlaylist(params) - const playlist = res.body.videoPlaylist - - const paramsUpdate = getBase({ privacy: VideoPlaylistPrivacy.PRIVATE }, { expectedStatus: 409 }) - - await updateVideoPlaylist(getUpdate(paramsUpdate, playlist.id)) - }) - it('Should fail to update the watch later playlist', async function () { await updateVideoPlaylist(getUpdate( - getBase({}, { expectedStatus: 409 }), + getBase({}, { expectedStatus: 400 }), watchLaterPlaylistId )) }) @@ -282,7 +297,7 @@ describe('Test video playlists API validator', function () { token: server.accessToken, playlistId: playlistUUID, elementAttrs: Object.assign({ - videoId: videoId, + videoId, startTimestamp: 2, stopTimestamp: 3 }, elementAttrs) @@ -330,7 +345,8 @@ describe('Test video playlists API validator', function () { it('Succeed with the correct params', async function () { const params = getBase({}, { expectedStatus: 200 }) - await addVideoInPlaylist(params) + const res = await addVideoInPlaylist(params) + playlistElementId = res.body.videoPlaylistElement.id }) it('Should fail if the video was already added in the playlist', async function () { @@ -348,7 +364,7 @@ describe('Test video playlists API validator', function () { startTimestamp: 1, stopTimestamp: 2 }, elementAttrs), - videoId: videoId, + playlistElementId, playlistId: playlistUUID, expectedStatus: 400 }, wrapper) @@ -376,14 +392,14 @@ describe('Test video playlists API validator', function () { } }) - it('Should fail with an unknown or incorrect video id', async function () { + it('Should fail with an unknown or incorrect playlistElement id', async function () { { - const params = getBase({}, { videoId: 'toto' }) + const params = getBase({}, { playlistElementId: 'toto' }) await updateVideoPlaylistElement(params) } { - const params = getBase({}, { videoId: 42, expectedStatus: 404 }) + const params = getBase({}, { playlistElementId: 42, expectedStatus: 404 }) await updateVideoPlaylistElement(params) } }) @@ -401,7 +417,7 @@ describe('Test video playlists API validator', function () { }) it('Should fail with an unknown element', async function () { - const params = getBase({}, { videoId: videoId2, expectedStatus: 404 }) + const params = getBase({}, { playlistElementId: 888, expectedStatus: 404 }) await updateVideoPlaylistElement(params) }) @@ -522,12 +538,58 @@ describe('Test video playlists API validator', function () { }) }) + describe('When checking exists in playlist endpoint', function () { + const path = '/api/v1/users/me/video-playlists/videos-exist' + + it('Should fail with an unauthenticated user', async function () { + await makeGetRequest({ + url: server.url, + path, + query: { videoIds: [ 1, 2 ] }, + statusCodeExpected: 401 + }) + }) + + it('Should fail with invalid video ids', async function () { + await makeGetRequest({ + url: server.url, + token: server.accessToken, + path, + query: { videoIds: 'toto' } + }) + + await makeGetRequest({ + url: server.url, + token: server.accessToken, + path, + query: { videoIds: [ 'toto' ] } + }) + + await makeGetRequest({ + url: server.url, + token: server.accessToken, + path, + query: { videoIds: [ 1, 'toto' ] } + }) + }) + + it('Should succeed with the correct params', async function () { + await makeGetRequest({ + url: server.url, + token: server.accessToken, + path, + query: { videoIds: [ 1, 2 ] }, + statusCodeExpected: 200 + }) + }) + }) + describe('When deleting an element in a playlist', function () { const getBase = (wrapper: any = {}) => { return Object.assign({ url: server.url, token: server.accessToken, - videoId: videoId, + playlistElementId, playlistId: playlistUUID, expectedStatus: 400 }, wrapper) @@ -557,18 +619,18 @@ describe('Test video playlists API validator', function () { it('Should fail with an unknown or incorrect video id', async function () { { - const params = getBase({ videoId: 'toto' }) + const params = getBase({ playlistElementId: 'toto' }) await removeVideoFromPlaylist(params) } { - const params = getBase({ videoId: 42, expectedStatus: 404 }) + const params = getBase({ playlistElementId: 42, expectedStatus: 404 }) await removeVideoFromPlaylist(params) } }) it('Should fail with an unknown element', async function () { - const params = getBase({ videoId: videoId2, expectedStatus: 404 }) + const params = getBase({ playlistElementId: 888, expectedStatus: 404 }) await removeVideoFromPlaylist(params) }) @@ -588,7 +650,7 @@ describe('Test video playlists API validator', function () { }) it('Should fail with the watch later playlist', async function () { - await deleteVideoPlaylist(server.url, server.accessToken, watchLaterPlaylistId, 409) + await deleteVideoPlaylist(server.url, server.accessToken, watchLaterPlaylistId, 400) }) it('Should succeed with the correct params', async function () { @@ -597,11 +659,6 @@ describe('Test video playlists API validator', function () { }) after(async function () { - killallServers([ server ]) - - // Keep the logs if the test failed - if (this['ok']) { - await flushTests() - } + await cleanupTests([ server ]) }) })