Upload a video to /videos/upload

This is an action, not a REST endpoint
This commit is contained in:
Chocobozzz 2017-09-07 21:46:44 +02:00
parent 0cee28c1b2
commit e95561cdf1
6 changed files with 49 additions and 28 deletions

View File

@ -95,7 +95,7 @@ export class VideoAddComponent extends FormReactive implements OnInit {
this.uploader = new FileUploader({ this.uploader = new FileUploader({
authToken: this.authService.getRequestHeaderValue(), authToken: this.authService.getRequestHeaderValue(),
queueLimit: 1, queueLimit: 1,
url: API_URL + '/api/v1/videos', url: API_URL + '/api/v1/videos/upload',
removeAfterUpload: true removeAfterUpload: true
}) })
@ -166,7 +166,7 @@ export class VideoAddComponent extends FormReactive implements OnInit {
} }
item.onError = (response: string, status: number) => { item.onError = (response: string, status: number) => {
// We need to handle manually these cases beceause we use the FileUpload component // We need to handle manually these cases because we use the FileUpload component
if (status === 400) { if (status === 400) {
this.error = response this.error = response
} else if (status === 401) { } else if (status === 401) {
@ -181,7 +181,7 @@ export class VideoAddComponent extends FormReactive implements OnInit {
} else if (status === 403) { } else if (status === 403) {
this.error = 'Your video quota is reached, you can\'t upload this video.' this.error = 'Your video quota is reached, you can\'t upload this video.'
} else { } else {
this.error = 'Unknow error' this.error = 'Unknown error'
console.error(this.error) console.error(this.error)
} }
} }

View File

@ -92,7 +92,7 @@ videosRouter.put('/:id',
videosUpdateValidator, videosUpdateValidator,
updateVideoRetryWrapper updateVideoRetryWrapper
) )
videosRouter.post('/', videosRouter.post('/upload',
authenticate, authenticate,
reqFiles, reqFiles,
videosAddValidator, videosAddValidator,

View File

@ -96,7 +96,7 @@ describe('Test videos API validator', function () {
it('Should fail with nothing', async function () { it('Should fail with nothing', async function () {
const fields = {} const fields = {}
const attaches = {} const attaches = {}
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail without name', async function () { it('Should fail without name', async function () {
@ -111,7 +111,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail with a long name', async function () { it('Should fail with a long name', async function () {
@ -127,7 +127,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail without a category', async function () { it('Should fail without a category', async function () {
@ -142,7 +142,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail with a bad category', async function () { it('Should fail with a bad category', async function () {
@ -158,7 +158,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail without a licence', async function () { it('Should fail without a licence', async function () {
@ -173,7 +173,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail with a bad licence', async function () { it('Should fail with a bad licence', async function () {
@ -189,7 +189,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail with a bad language', async function () { it('Should fail with a bad language', async function () {
@ -205,7 +205,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail without nsfw attribute', async function () { it('Should fail without nsfw attribute', async function () {
@ -220,7 +220,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail with a bad nsfw attribue', async function () { it('Should fail with a bad nsfw attribue', async function () {
@ -236,7 +236,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail without description', async function () { it('Should fail without description', async function () {
@ -251,7 +251,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail with a long description', async function () { it('Should fail with a long description', async function () {
@ -269,7 +269,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail with too many tags', async function () { it('Should fail with too many tags', async function () {
@ -285,7 +285,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail with a tag length too low', async function () { it('Should fail with a tag length too low', async function () {
@ -301,7 +301,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail with a tag length too big', async function () { it('Should fail with a tag length too big', async function () {
@ -317,7 +317,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail without an input file', async function () { it('Should fail without an input file', async function () {
@ -331,7 +331,7 @@ describe('Test videos API validator', function () {
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
const attaches = {} const attaches = {}
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail without an incorrect input file', async function () { it('Should fail without an incorrect input file', async function () {
@ -347,7 +347,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_short_fake.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short_fake.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail with a too big duration', async function () { it('Should fail with a too big duration', async function () {
@ -363,7 +363,7 @@ describe('Test videos API validator', function () {
const attaches = { const attaches = {
'videofile': join(__dirname, '..', 'fixtures', 'video_too_long.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_too_long.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) await makePostUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should succeed with the correct parameters', async function () { it('Should succeed with the correct parameters', async function () {
@ -382,13 +382,34 @@ describe('Test videos API validator', function () {
'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm') 'videofile': join(__dirname, '..', 'fixtures', 'video_short.webm')
} }
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches, statusCodeExpected: 204 }) await makePostUploadRequest({
url: server.url,
path: path + '/upload',
token: server.accessToken,
fields,
attaches,
statusCodeExpected: 204
})
attaches.videofile = join(__dirname, '..', 'fixtures', 'video_short.mp4') attaches.videofile = join(__dirname, '..', 'fixtures', 'video_short.mp4')
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches, statusCodeExpected: 204 }) await makePostUploadRequest({
url: server.url,
path: path + '/upload',
token: server.accessToken,
fields,
attaches,
statusCodeExpected: 204
})
attaches.videofile = join(__dirname, '..', 'fixtures', 'video_short.ogv') attaches.videofile = join(__dirname, '..', 'fixtures', 'video_short.ogv')
await makePostUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches, statusCodeExpected: 204 }) await makePostUploadRequest({
url: server.url,
path: path + '/upload',
token: server.accessToken,
fields,
attaches,
statusCodeExpected: 204
})
}) })
}) })

View File

@ -26,7 +26,7 @@ describe('Test reset password scripts', function () {
}) })
it('Should change the user password from CLI', async function () { it('Should change the user password from CLI', async function () {
this.timeout(20000) this.timeout(30000)
const env = getEnvCli(server) const env = getEnvCli(server)
await execCLI(`echo coucou | ${env} npm run reset-password -- -u user_1`) await execCLI(`echo coucou | ${env} npm run reset-password -- -u user_1`)

View File

@ -38,7 +38,7 @@ describe('Test update host scripts', function () {
}) })
it('Should update torrent hosts', async function () { it('Should update torrent hosts', async function () {
this.timeout(20000) this.timeout(30000)
killallServers([ server ]) killallServers([ server ])
server = await runServer(1) server = await runServer(1)

View File

@ -163,7 +163,7 @@ async function testVideoImage (url: string, imageName: string, imagePath: string
} }
function uploadVideo (url: string, accessToken: string, videoAttributesArg: VideoAttributes, specialStatus = 204) { function uploadVideo (url: string, accessToken: string, videoAttributesArg: VideoAttributes, specialStatus = 204) {
const path = '/api/v1/videos' const path = '/api/v1/videos/upload'
// Default attributes // Default attributes
let attributes = { let attributes = {