/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
-import 'mocha'
import { expect } from 'chai'
-import { omit } from 'lodash'
-import { buildAbsoluteFixturePath } from '@shared/core-utils'
+import { buildAbsoluteFixturePath, omit } from '@shared/core-utils'
import { HttpStatusCode, LiveVideoLatencyMode, VideoCreateResult, VideoPrivacy } from '@shared/models'
import {
cleanupTests,
const username = 'user1'
const password = 'my super password'
- await server.users.create({ username: username, password: password })
+ await server.users.create({ username, password })
userAccessToken = await server.login.getAccessToken({ username, password })
{
})
it('Should fail without a channel', async function () {
- const fields = omit(baseCorrectParams, 'channelId')
+ const fields = omit(baseCorrectParams, [ 'channelId' ])
await makePostBodyRequest({ url: server.url, path, token: server.accessToken, fields })
})
})
})
+ describe('When getting live sessions', function () {
+
+ it('Should fail with a bad access token', async function () {
+ await command.listSessions({ token: 'toto', videoId: video.id, expectedStatus: HttpStatusCode.UNAUTHORIZED_401 })
+ })
+
+ it('Should fail without token', async function () {
+ await command.listSessions({ token: null, videoId: video.id, expectedStatus: HttpStatusCode.UNAUTHORIZED_401 })
+ })
+
+ it('Should fail with the token of another user', async function () {
+ await command.listSessions({ token: userAccessToken, videoId: video.id, expectedStatus: HttpStatusCode.FORBIDDEN_403 })
+ })
+
+ it('Should fail with a bad video id', async function () {
+ await command.listSessions({ videoId: 'toto', expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
+ })
+
+ it('Should fail with an unknown video id', async function () {
+ await command.listSessions({ videoId: 454555, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
+ })
+
+ it('Should fail with a non live video', async function () {
+ await command.listSessions({ videoId: videoIdNotLive, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
+ })
+
+ it('Should succeed with the correct params', async function () {
+ await command.listSessions({ videoId: video.id })
+ })
+ })
+
+ describe('When getting live session of a replay', function () {
+
+ it('Should fail with a bad video id', async function () {
+ await command.getReplaySession({ videoId: 'toto', expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
+ })
+
+ it('Should fail with an unknown video id', async function () {
+ await command.getReplaySession({ videoId: 454555, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
+ })
+
+ it('Should fail with a non replay video', async function () {
+ await command.getReplaySession({ videoId: videoIdNotLive, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
+ })
+ })
+
describe('When updating live information', async function () {
it('Should fail without access token', async function () {
await stopFfmpeg(ffmpegCommand)
})
+ it('Should fail to change live privacy if it has already started', async function () {
+ this.timeout(40000)
+
+ const live = await command.get({ videoId: video.id })
+
+ const ffmpegCommand = sendRTMPStream({ rtmpBaseUrl: live.rtmpUrl, streamKey: live.streamKey })
+
+ await command.waitUntilPublished({ videoId: video.id })
+ await server.videos.update({
+ id: video.id,
+ attributes: { privacy: VideoPrivacy.PUBLIC },
+ expectedStatus: HttpStatusCode.BAD_REQUEST_400
+ })
+
+ await stopFfmpeg(ffmpegCommand)
+ })
+
it('Should fail to stream twice in the save live', async function () {
this.timeout(40000)