From 14e2014acc1362cfbb770c051a7254b156cd8efb Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 11 Dec 2018 14:52:50 +0100 Subject: Support additional video extensions --- server/tests/api/check-params/config.ts | 1 + server/tests/api/check-params/videos.ts | 7 ++++++- server/tests/api/server/config.ts | 30 ++++++++++++++++++++++++++-- server/tests/api/videos/video-transcoder.ts | 31 +++++++++++++++++++++++++++-- 4 files changed, 64 insertions(+), 5 deletions(-) (limited to 'server/tests/api') diff --git a/server/tests/api/check-params/config.ts b/server/tests/api/check-params/config.ts index ffae380c1..b7bf41b58 100644 --- a/server/tests/api/check-params/config.ts +++ b/server/tests/api/check-params/config.ts @@ -54,6 +54,7 @@ describe('Test config API validators', function () { }, transcoding: { enabled: true, + allowAdditionalExtensions: true, threads: 1, resolutions: { '240p': false, diff --git a/server/tests/api/check-params/videos.ts b/server/tests/api/check-params/videos.ts index d94eccf8e..f26b91435 100644 --- a/server/tests/api/check-params/videos.ts +++ b/server/tests/api/check-params/videos.ts @@ -320,10 +320,15 @@ describe('Test videos API validator', function () { it('Should fail without an incorrect input file', async function () { const fields = baseCorrectParams - const attaches = { + let attaches = { 'videofile': join(__dirname, '..', '..', 'fixtures', 'video_short_fake.webm') } await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches }) + + attaches = { + 'videofile': join(__dirname, '..', '..', 'fixtures', 'video_short.mkv') + } + await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches }) }) it('Should fail with an incorrect thumbnail file', async function () { diff --git a/server/tests/api/server/config.ts b/server/tests/api/server/config.ts index c5c360a17..4c163d47d 100644 --- a/server/tests/api/server/config.ts +++ b/server/tests/api/server/config.ts @@ -17,6 +17,7 @@ import { setAccessTokensToServers, updateCustomConfig } from '../../../../shared/utils' +import { ServerConfig } from '../../../../shared/models' const expect = chai.expect @@ -43,6 +44,7 @@ function checkInitialConfig (data: CustomConfig) { expect(data.user.videoQuota).to.equal(5242880) expect(data.user.videoQuotaDaily).to.equal(-1) expect(data.transcoding.enabled).to.be.false + expect(data.transcoding.allowAdditionalExtensions).to.be.false expect(data.transcoding.threads).to.equal(2) expect(data.transcoding.resolutions['240p']).to.be.true expect(data.transcoding.resolutions['360p']).to.be.true @@ -74,6 +76,7 @@ function checkUpdatedConfig (data: CustomConfig) { expect(data.user.videoQuotaDaily).to.equal(318742) expect(data.transcoding.enabled).to.be.true expect(data.transcoding.threads).to.equal(1) + expect(data.transcoding.allowAdditionalExtensions).to.be.true expect(data.transcoding.resolutions['240p']).to.be.false expect(data.transcoding.resolutions['360p']).to.be.true expect(data.transcoding.resolutions['480p']).to.be.true @@ -96,7 +99,7 @@ describe('Test config', function () { it('Should have a correct config on a server with registration enabled', async function () { const res = await getConfig(server.url) - const data = res.body + const data: ServerConfig = res.body expect(data.signup.allowed).to.be.true }) @@ -111,11 +114,21 @@ describe('Test config', function () { ]) const res = await getConfig(server.url) - const data = res.body + const data: ServerConfig = res.body expect(data.signup.allowed).to.be.false }) + it('Should have the correct video allowed extensions', async function () { + const res = await getConfig(server.url) + const data: ServerConfig = res.body + + expect(data.video.file.extensions).to.have.lengthOf(3) + expect(data.video.file.extensions).to.contain('.mp4') + expect(data.video.file.extensions).to.contain('.webm') + expect(data.video.file.extensions).to.contain('.ogv') + }) + it('Should get the customized configuration', async function () { const res = await getCustomConfig(server.url, server.accessToken) const data = res.body as CustomConfig @@ -165,6 +178,7 @@ describe('Test config', function () { }, transcoding: { enabled: true, + allowAdditionalExtensions: true, threads: 1, resolutions: { '240p': false, @@ -193,6 +207,18 @@ describe('Test config', function () { checkUpdatedConfig(data) }) + it('Should have the correct updated video allowed extensions', async function () { + const res = await getConfig(server.url) + const data: ServerConfig = res.body + + expect(data.video.file.extensions).to.have.length.above(3) + expect(data.video.file.extensions).to.contain('.mp4') + expect(data.video.file.extensions).to.contain('.webm') + expect(data.video.file.extensions).to.contain('.ogv') + expect(data.video.file.extensions).to.contain('.flv') + expect(data.video.file.extensions).to.contain('.mkv') + }) + it('Should have the configuration updated after a restart', async function () { this.timeout(10000) diff --git a/server/tests/api/videos/video-transcoder.ts b/server/tests/api/videos/video-transcoder.ts index 68cf00194..eefd32ef8 100644 --- a/server/tests/api/videos/video-transcoder.ts +++ b/server/tests/api/videos/video-transcoder.ts @@ -20,9 +20,8 @@ import { uploadVideo, webtorrentAdd } from '../../../../shared/utils' -import { join } from 'path' +import { extname, join } from 'path' import { waitJobs } from '../../../../shared/utils/server/jobs' -import { pathExists } from 'fs-extra' import { VIDEO_TRANSCODING_FPS } from '../../../../server/initializers/constants' const expect = chai.expect @@ -322,6 +321,34 @@ describe('Test video transcoding', function () { } }) + it('Should accept and transcode additional extensions', async function () { + this.timeout(300000) + + for (const fixture of [ 'video_short.mkv', 'video_short.avi' ]) { + const videoAttributes = { + name: fixture, + fixture + } + + await uploadVideo(servers[ 1 ].url, servers[ 1 ].accessToken, videoAttributes) + + await waitJobs(servers) + + for (const server of servers) { + const res = await getVideosList(server.url) + + const video = res.body.data.find(v => v.name === videoAttributes.name) + const res2 = await getVideo(server.url, video.id) + const videoDetails = res2.body + + expect(videoDetails.files).to.have.lengthOf(4) + + const magnetUri = videoDetails.files[ 0 ].magnetUri + expect(magnetUri).to.contain('.mp4') + } + } + }) + after(async function () { killallServers(servers) }) -- cgit v1.2.3