Server: add licence video attribute
This commit is contained in:
parent
2897488928
commit
6f0c39e2de
14 changed files with 209 additions and 3 deletions
|
@ -295,6 +295,7 @@ function addRemoteVideo (videoToCreateData, fromPod, finalCallback) {
|
|||
extname: videoToCreateData.extname,
|
||||
infoHash: videoToCreateData.infoHash,
|
||||
category: videoToCreateData.category,
|
||||
licence: videoToCreateData.licence,
|
||||
description: videoToCreateData.description,
|
||||
authorId: author.id,
|
||||
duration: videoToCreateData.duration,
|
||||
|
@ -392,6 +393,7 @@ function updateRemoteVideo (videoAttributesToUpdate, fromPod, finalCallback) {
|
|||
|
||||
videoInstance.set('name', videoAttributesToUpdate.name)
|
||||
videoInstance.set('category', videoAttributesToUpdate.category)
|
||||
videoInstance.set('licence', videoAttributesToUpdate.licence)
|
||||
videoInstance.set('description', videoAttributesToUpdate.description)
|
||||
videoInstance.set('infoHash', videoAttributesToUpdate.infoHash)
|
||||
videoInstance.set('duration', videoAttributesToUpdate.duration)
|
||||
|
|
|
@ -46,6 +46,7 @@ const storage = multer.diskStorage({
|
|||
const reqFiles = multer({ storage: storage }).fields([{ name: 'videofile', maxCount: 1 }])
|
||||
|
||||
router.get('/categories', listVideoCategories)
|
||||
router.get('/licences', listVideoLicences)
|
||||
|
||||
router.get('/abuse',
|
||||
oAuth.authenticate,
|
||||
|
@ -116,6 +117,10 @@ function listVideoCategories (req, res, next) {
|
|||
res.json(constants.VIDEO_CATEGORIES)
|
||||
}
|
||||
|
||||
function listVideoLicences (req, res, next) {
|
||||
res.json(constants.VIDEO_LICENCES)
|
||||
}
|
||||
|
||||
function rateVideoRetryWrapper (req, res, next) {
|
||||
const options = {
|
||||
arguments: [ req, res ],
|
||||
|
@ -307,6 +312,7 @@ function addVideo (req, res, videoFile, finalCallback) {
|
|||
remoteId: null,
|
||||
extname: path.extname(videoFile.filename),
|
||||
category: videoInfos.category,
|
||||
licence: videoInfos.licence,
|
||||
description: videoInfos.description,
|
||||
duration: videoFile.duration,
|
||||
authorId: author.id
|
||||
|
@ -421,6 +427,7 @@ function updateVideo (req, res, finalCallback) {
|
|||
|
||||
if (videoInfosToUpdate.name) videoInstance.set('name', videoInfosToUpdate.name)
|
||||
if (videoInfosToUpdate.category) videoInstance.set('category', videoInfosToUpdate.category)
|
||||
if (videoInfosToUpdate.licence) videoInstance.set('licence', videoInfosToUpdate.licence)
|
||||
if (videoInfosToUpdate.description) videoInstance.set('description', videoInfosToUpdate.description)
|
||||
|
||||
videoInstance.save(options).asCallback(function (err) {
|
||||
|
|
|
@ -86,6 +86,7 @@ function isCommonVideoAttributesValid (video) {
|
|||
return videosValidators.isVideoDateValid(video.createdAt) &&
|
||||
videosValidators.isVideoDateValid(video.updatedAt) &&
|
||||
videosValidators.isVideoCategoryValid(video.category) &&
|
||||
videosValidators.isVideoLicenceValid(video.licence) &&
|
||||
videosValidators.isVideoDescriptionValid(video.description) &&
|
||||
videosValidators.isVideoDurationValid(video.duration) &&
|
||||
videosValidators.isVideoInfoHashValid(video.infoHash) &&
|
||||
|
|
|
@ -14,6 +14,7 @@ const videosValidators = {
|
|||
isVideoAuthorValid,
|
||||
isVideoDateValid,
|
||||
isVideoCategoryValid,
|
||||
isVideoLicenceValid,
|
||||
isVideoDescriptionValid,
|
||||
isVideoDurationValid,
|
||||
isVideoInfoHashValid,
|
||||
|
@ -45,6 +46,10 @@ function isVideoCategoryValid (value) {
|
|||
return constants.VIDEO_CATEGORIES[value] !== undefined
|
||||
}
|
||||
|
||||
function isVideoLicenceValid (value) {
|
||||
return constants.VIDEO_LICENCES[value] !== undefined
|
||||
}
|
||||
|
||||
function isVideoDescriptionValid (value) {
|
||||
return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.DESCRIPTION)
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ const path = require('path')
|
|||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
const LAST_MIGRATION_VERSION = 30
|
||||
const LAST_MIGRATION_VERSION = 35
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -124,6 +124,17 @@ const VIDEO_CATEGORIES = {
|
|||
18: 'Food'
|
||||
}
|
||||
|
||||
// See https://creativecommons.org/licenses/?lang=en
|
||||
const VIDEO_LICENCES = {
|
||||
1: 'Attribution',
|
||||
2: 'Attribution - Share Alike',
|
||||
3: 'Attribution - No Derivatives',
|
||||
4: 'Attribution - Non Commercial',
|
||||
5: 'Attribution - Non Commercial - Share Alike',
|
||||
6: 'Attribution - Non Commercial - No Derivatives',
|
||||
7: 'Public Domain Dedication'
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
// Score a pod has when we create it as a friend
|
||||
|
@ -280,6 +291,7 @@ module.exports = {
|
|||
THUMBNAILS_SIZE,
|
||||
USER_ROLES,
|
||||
VIDEO_CATEGORIES,
|
||||
VIDEO_LICENCES,
|
||||
VIDEO_RATE_TYPES
|
||||
}
|
||||
|
||||
|
|
34
server/initializers/migrations/0035-video-licence.js
Normal file
34
server/initializers/migrations/0035-video-licence.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
'use strict'
|
||||
|
||||
const waterfall = require('async/waterfall')
|
||||
|
||||
// utils = { transaction, queryInterface, sequelize, Sequelize }
|
||||
exports.up = function (utils, finalCallback) {
|
||||
const q = utils.queryInterface
|
||||
const Sequelize = utils.Sequelize
|
||||
|
||||
const data = {
|
||||
type: Sequelize.INTEGER,
|
||||
allowNull: false,
|
||||
defaultValue: 0
|
||||
}
|
||||
|
||||
waterfall([
|
||||
|
||||
function addLicenceColumn (callback) {
|
||||
q.addColumn('Videos', 'licence', data, { transaction: utils.transaction }).asCallback(function (err) {
|
||||
return callback(err)
|
||||
})
|
||||
},
|
||||
|
||||
function nullOnDefault (callback) {
|
||||
data.defaultValue = null
|
||||
|
||||
q.changeColumn('Videos', 'licence', data, { transaction: utils.transaction }).asCallback(callback)
|
||||
}
|
||||
], finalCallback)
|
||||
}
|
||||
|
||||
exports.down = function (options, callback) {
|
||||
throw new Error('Not implemented.')
|
||||
}
|
|
@ -22,6 +22,7 @@ function videosAdd (req, res, next) {
|
|||
req.checkBody('videofile', 'Should have a valid file').isVideoFile(req.files)
|
||||
req.checkBody('name', 'Should have a valid name').isVideoNameValid()
|
||||
req.checkBody('category', 'Should have a valid category').isVideoCategoryValid()
|
||||
req.checkBody('licence', 'Should have a valid licence').isVideoLicenceValid()
|
||||
req.checkBody('description', 'Should have a valid description').isVideoDescriptionValid()
|
||||
req.checkBody('tags', 'Should have correct tags').optional().isVideoTagsValid()
|
||||
|
||||
|
@ -49,6 +50,7 @@ function videosUpdate (req, res, next) {
|
|||
req.checkParams('id', 'Should have a valid id').notEmpty().isUUID(4)
|
||||
req.checkBody('name', 'Should have a valid name').optional().isVideoNameValid()
|
||||
req.checkBody('category', 'Should have a valid category').optional().isVideoCategoryValid()
|
||||
req.checkBody('licence', 'Should have a valid licence').optional().isVideoLicenceValid()
|
||||
req.checkBody('description', 'Should have a valid description').optional().isVideoDescriptionValid()
|
||||
req.checkBody('tags', 'Should have correct tags').optional().isVideoTagsValid()
|
||||
|
||||
|
|
|
@ -61,6 +61,16 @@ module.exports = function (sequelize, DataTypes) {
|
|||
}
|
||||
}
|
||||
},
|
||||
licence: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
validate: {
|
||||
licenceValid: function (value) {
|
||||
const res = customVideosValidators.isVideoLicenceValid(value)
|
||||
if (res === false) throw new Error('Video licence is not valid.')
|
||||
}
|
||||
}
|
||||
},
|
||||
description: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
|
@ -374,11 +384,17 @@ function toFormatedJSON () {
|
|||
let categoryLabel = constants.VIDEO_CATEGORIES[this.category]
|
||||
if (!categoryLabel) categoryLabel = 'Misc'
|
||||
|
||||
// Maybe our pod is not up to date and there are new licences since our version
|
||||
let licenceLabel = constants.VIDEO_LICENCES[this.licence]
|
||||
if (!licenceLabel) licenceLabel = 'Unknown'
|
||||
|
||||
const json = {
|
||||
id: this.id,
|
||||
name: this.name,
|
||||
category: this.category,
|
||||
categoryLabel,
|
||||
licence: this.licence,
|
||||
licenceLabel,
|
||||
description: this.description,
|
||||
podHost,
|
||||
isLocal: this.isOwned(),
|
||||
|
@ -411,6 +427,7 @@ function toAddRemoteJSON (callback) {
|
|||
const remoteVideo = {
|
||||
name: self.name,
|
||||
category: self.category,
|
||||
licence: self.licence,
|
||||
description: self.description,
|
||||
infoHash: self.infoHash,
|
||||
remoteId: self.id,
|
||||
|
@ -434,6 +451,7 @@ function toUpdateRemoteJSON (callback) {
|
|||
const json = {
|
||||
name: this.name,
|
||||
category: this.category,
|
||||
licence: this.licence,
|
||||
description: this.description,
|
||||
infoHash: this.infoHash,
|
||||
remoteId: this.id,
|
||||
|
|
|
@ -113,6 +113,7 @@ describe('Test videos API validator', function () {
|
|||
it('Should fail without name', function (done) {
|
||||
const data = {
|
||||
category: 5,
|
||||
licence: 1,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -126,6 +127,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'My very very very very very very very very very very very very very very very very long name',
|
||||
category: 5,
|
||||
licence: 1,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -138,6 +140,7 @@ describe('Test videos API validator', function () {
|
|||
it('Should fail without a category', function (done) {
|
||||
const data = {
|
||||
name: 'my super name',
|
||||
licence: 1,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -151,6 +154,34 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 125,
|
||||
licence: 1,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
const attach = {
|
||||
'videofile': pathUtils.join(__dirname, '..', 'fixtures', 'video_short.webm')
|
||||
}
|
||||
requestsUtils.makePostUploadRequest(server.url, path, server.accessToken, data, attach, done)
|
||||
})
|
||||
|
||||
it('Should fail without a licence', function (done) {
|
||||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
const attach = {
|
||||
'videofile': pathUtils.join(__dirname, '..', 'fixtures', 'video_short.webm')
|
||||
}
|
||||
requestsUtils.makePostUploadRequest(server.url, path, server.accessToken, data, attach, done)
|
||||
})
|
||||
|
||||
it('Should fail with a bad licence', function (done) {
|
||||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 125,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -164,6 +195,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 1,
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
const attach = {
|
||||
|
@ -176,6 +208,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 1,
|
||||
description: 'my super description which is very very very very very very very very very very very very very very' +
|
||||
'very very very very very very very very very very very very very very very very very very very very very' +
|
||||
'very very very very very very very very very very very very very very very long',
|
||||
|
@ -191,6 +224,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 1,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2', 'tag3', 'tag4' ]
|
||||
}
|
||||
|
@ -204,6 +238,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 1,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 't' ]
|
||||
}
|
||||
|
@ -217,6 +252,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 1,
|
||||
description: 'my super description',
|
||||
tags: [ 'mysupertagtoolong', 'tag1' ]
|
||||
}
|
||||
|
@ -230,6 +266,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 1,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -241,6 +278,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 1,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -254,6 +292,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 1,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -267,6 +306,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 1,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -304,6 +344,7 @@ describe('Test videos API validator', function () {
|
|||
it('Should fail without a valid uuid', function (done) {
|
||||
const data = {
|
||||
category: 5,
|
||||
licence: 2,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -313,6 +354,7 @@ describe('Test videos API validator', function () {
|
|||
it('Should fail with an unknown id', function (done) {
|
||||
const data = {
|
||||
category: 5,
|
||||
licence: 2,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -323,6 +365,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'My very very very very very very very very very very very very very very very very long name',
|
||||
category: 5,
|
||||
licence: 2,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -333,6 +376,18 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 128,
|
||||
licence: 2,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
requestsUtils.makePutBodyRequest(server.url, path + videoId, server.accessToken, data, done)
|
||||
})
|
||||
|
||||
it('Should fail with a bad licence', function (done) {
|
||||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 128,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2' ]
|
||||
}
|
||||
|
@ -343,6 +398,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 2,
|
||||
description: 'my super description which is very very very very very very very very very very very very very very' +
|
||||
'very very very very very very very very very very very very very very very very very very very very very' +
|
||||
'very very very very very very very very very very very very very very very long',
|
||||
|
@ -355,6 +411,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 2,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 'tag2', 'tag3', 'tag4' ]
|
||||
}
|
||||
|
@ -365,6 +422,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 2,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag1', 't' ]
|
||||
}
|
||||
|
@ -375,6 +433,7 @@ describe('Test videos API validator', function () {
|
|||
const data = {
|
||||
name: 'my super name',
|
||||
category: 5,
|
||||
licence: 2,
|
||||
description: 'my super description',
|
||||
tags: [ 'mysupertagtoolong', 'tag1' ]
|
||||
}
|
||||
|
|
|
@ -82,6 +82,8 @@ describe('Test multiple pods', function () {
|
|||
function (next) {
|
||||
const videoAttributes = {
|
||||
name: 'my super name for pod 1',
|
||||
category: 5,
|
||||
licence: 4,
|
||||
description: 'my super description for pod 1',
|
||||
tags: [ 'tag1p1', 'tag2p1' ],
|
||||
fixture: 'video_short1.webm'
|
||||
|
@ -108,6 +110,8 @@ describe('Test multiple pods', function () {
|
|||
expect(video.name).to.equal('my super name for pod 1')
|
||||
expect(video.category).to.equal(5)
|
||||
expect(video.categoryLabel).to.equal('Sports')
|
||||
expect(video.licence).to.equal(4)
|
||||
expect(video.licenceLabel).to.equal('Attribution - Non Commercial')
|
||||
expect(video.description).to.equal('my super description for pod 1')
|
||||
expect(video.podHost).to.equal('localhost:9001')
|
||||
expect(video.magnetUri).to.exist
|
||||
|
@ -150,6 +154,7 @@ describe('Test multiple pods', function () {
|
|||
const videoAttributes = {
|
||||
name: 'my super name for pod 2',
|
||||
category: 4,
|
||||
licence: 3,
|
||||
description: 'my super description for pod 2',
|
||||
tags: [ 'tag1p2', 'tag2p2', 'tag3p2' ],
|
||||
fixture: 'video_short2.webm'
|
||||
|
@ -176,6 +181,8 @@ describe('Test multiple pods', function () {
|
|||
expect(video.name).to.equal('my super name for pod 2')
|
||||
expect(video.category).to.equal(4)
|
||||
expect(video.categoryLabel).to.equal('Art')
|
||||
expect(video.licence).to.equal(3)
|
||||
expect(video.licenceLabel).to.equal('Attribution - No Derivatives')
|
||||
expect(video.description).to.equal('my super description for pod 2')
|
||||
expect(video.podHost).to.equal('localhost:9002')
|
||||
expect(video.magnetUri).to.exist
|
||||
|
@ -218,6 +225,7 @@ describe('Test multiple pods', function () {
|
|||
const videoAttributes = {
|
||||
name: 'my super name for pod 3',
|
||||
category: 6,
|
||||
licence: 5,
|
||||
description: 'my super description for pod 3',
|
||||
tags: [ 'tag1p3' ],
|
||||
fixture: 'video_short3.webm'
|
||||
|
@ -228,6 +236,7 @@ describe('Test multiple pods', function () {
|
|||
const videoAttributes = {
|
||||
name: 'my super name for pod 3-2',
|
||||
category: 7,
|
||||
licence: 6,
|
||||
description: 'my super description for pod 3-2',
|
||||
tags: [ 'tag2p3', 'tag3p3', 'tag4p3' ],
|
||||
fixture: 'video_short.webm'
|
||||
|
@ -264,6 +273,8 @@ describe('Test multiple pods', function () {
|
|||
expect(video1.name).to.equal('my super name for pod 3')
|
||||
expect(video1.category).to.equal(6)
|
||||
expect(video1.categoryLabel).to.equal('Travels')
|
||||
expect(video1.licence).to.equal(5)
|
||||
expect(video1.licenceLabel).to.equal('Attribution - Non Commercial - Share Alike')
|
||||
expect(video1.description).to.equal('my super description for pod 3')
|
||||
expect(video1.podHost).to.equal('localhost:9003')
|
||||
expect(video1.magnetUri).to.exist
|
||||
|
@ -276,6 +287,8 @@ describe('Test multiple pods', function () {
|
|||
expect(video2.name).to.equal('my super name for pod 3-2')
|
||||
expect(video2.category).to.equal(7)
|
||||
expect(video2.categoryLabel).to.equal('Gaming')
|
||||
expect(video2.licence).to.equal(6)
|
||||
expect(video2.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
||||
expect(video2.description).to.equal('my super description for pod 3-2')
|
||||
expect(video2.podHost).to.equal('localhost:9003')
|
||||
expect(video2.magnetUri).to.exist
|
||||
|
@ -624,6 +637,7 @@ describe('Test multiple pods', function () {
|
|||
const attributes = {
|
||||
name: 'my super video updated',
|
||||
category: 10,
|
||||
licence: 7,
|
||||
description: 'my super description updated',
|
||||
tags: [ 'tagup1', 'tagup2' ]
|
||||
}
|
||||
|
@ -652,6 +666,8 @@ describe('Test multiple pods', function () {
|
|||
expect(!!videoUpdated).to.be.true
|
||||
expect(videoUpdated.category).to.equal(10)
|
||||
expect(videoUpdated.categoryLabel).to.equal('Entertainment')
|
||||
expect(videoUpdated.licence).to.equal(7)
|
||||
expect(videoUpdated.licenceLabel).to.equal('Public Domain Dedication')
|
||||
expect(videoUpdated.description).to.equal('my super description updated')
|
||||
expect(videoUpdated.tags).to.deep.equal([ 'tagup1', 'tagup2' ])
|
||||
expect(miscsUtils.dateIsValid(videoUpdated.updatedAt, 20000)).to.be.true
|
||||
|
|
|
@ -57,6 +57,19 @@ describe('Test a single pod', function () {
|
|||
})
|
||||
})
|
||||
|
||||
it('Should list video licences', function (done) {
|
||||
videosUtils.getVideoLicences(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const licences = res.body
|
||||
expect(Object.keys(licences)).to.have.length.above(5)
|
||||
|
||||
expect(licences[3]).to.equal('Attribution - No Derivatives')
|
||||
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
it('Should not have videos', function (done) {
|
||||
videosUtils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
@ -73,6 +86,7 @@ describe('Test a single pod', function () {
|
|||
const videoAttributes = {
|
||||
name: 'my super name',
|
||||
category: 2,
|
||||
licence: 6,
|
||||
tags: [ 'tag1', 'tag2', 'tag3' ]
|
||||
}
|
||||
videosUtils.uploadVideo(server.url, server.accessToken, videoAttributes, done)
|
||||
|
@ -93,6 +107,8 @@ describe('Test a single pod', function () {
|
|||
expect(video.name).to.equal('my super name')
|
||||
expect(video.category).to.equal(2)
|
||||
expect(video.categoryLabel).to.equal('Films')
|
||||
expect(video.licence).to.equal(6)
|
||||
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
||||
expect(video.description).to.equal('my super description')
|
||||
expect(video.podHost).to.equal('localhost:9001')
|
||||
expect(video.magnetUri).to.exist
|
||||
|
@ -130,6 +146,8 @@ describe('Test a single pod', function () {
|
|||
expect(video.name).to.equal('my super name')
|
||||
expect(video.category).to.equal(2)
|
||||
expect(video.categoryLabel).to.equal('Films')
|
||||
expect(video.licence).to.equal(6)
|
||||
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
||||
expect(video.description).to.equal('my super description')
|
||||
expect(video.podHost).to.equal('localhost:9001')
|
||||
expect(video.magnetUri).to.exist
|
||||
|
@ -171,6 +189,8 @@ describe('Test a single pod', function () {
|
|||
expect(video.name).to.equal('my super name')
|
||||
expect(video.category).to.equal(2)
|
||||
expect(video.categoryLabel).to.equal('Films')
|
||||
expect(video.licence).to.equal(6)
|
||||
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
||||
expect(video.description).to.equal('my super description')
|
||||
expect(video.podHost).to.equal('localhost:9001')
|
||||
expect(video.author).to.equal('root')
|
||||
|
@ -228,6 +248,8 @@ describe('Test a single pod', function () {
|
|||
expect(video.name).to.equal('my super name')
|
||||
expect(video.category).to.equal(2)
|
||||
expect(video.categoryLabel).to.equal('Films')
|
||||
expect(video.licence).to.equal(6)
|
||||
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
||||
expect(video.description).to.equal('my super description')
|
||||
expect(video.podHost).to.equal('localhost:9001')
|
||||
expect(video.author).to.equal('root')
|
||||
|
@ -324,6 +346,7 @@ describe('Test a single pod', function () {
|
|||
name: video + ' name',
|
||||
description: video + ' description',
|
||||
category: 2,
|
||||
licence: 1,
|
||||
tags: [ 'tag1', 'tag2', 'tag3' ],
|
||||
fixture: video
|
||||
}
|
||||
|
@ -548,6 +571,7 @@ describe('Test a single pod', function () {
|
|||
const attributes = {
|
||||
name: 'my super video updated',
|
||||
category: 4,
|
||||
licence: 2,
|
||||
description: 'my super description updated',
|
||||
tags: [ 'tagup1', 'tagup2' ]
|
||||
}
|
||||
|
@ -565,6 +589,8 @@ describe('Test a single pod', function () {
|
|||
expect(video.name).to.equal('my super video updated')
|
||||
expect(video.category).to.equal(4)
|
||||
expect(video.categoryLabel).to.equal('Art')
|
||||
expect(video.licence).to.equal(2)
|
||||
expect(video.licenceLabel).to.equal('Attribution - Share Alike')
|
||||
expect(video.description).to.equal('my super description updated')
|
||||
expect(video.podHost).to.equal('localhost:9001')
|
||||
expect(video.author).to.equal('root')
|
||||
|
@ -604,6 +630,8 @@ describe('Test a single pod', function () {
|
|||
expect(video.name).to.equal('my super video updated')
|
||||
expect(video.category).to.equal(4)
|
||||
expect(video.categoryLabel).to.equal('Art')
|
||||
expect(video.licence).to.equal(2)
|
||||
expect(video.licenceLabel).to.equal('Attribution - Share Alike')
|
||||
expect(video.description).to.equal('my super description updated')
|
||||
expect(video.podHost).to.equal('localhost:9001')
|
||||
expect(video.author).to.equal('root')
|
||||
|
@ -633,6 +661,8 @@ describe('Test a single pod', function () {
|
|||
expect(video.name).to.equal('my super video updated')
|
||||
expect(video.category).to.equal(4)
|
||||
expect(video.categoryLabel).to.equal('Art')
|
||||
expect(video.licence).to.equal(2)
|
||||
expect(video.licenceLabel).to.equal('Attribution - Share Alike')
|
||||
expect(video.description).to.equal('hello everybody')
|
||||
expect(video.podHost).to.equal('localhost:9001')
|
||||
expect(video.author).to.equal('root')
|
||||
|
|
|
@ -205,6 +205,7 @@ function upload (servers, numServer, callback) {
|
|||
const videoAttributes = {
|
||||
name: Date.now() + ' name',
|
||||
category: 4,
|
||||
licence: 2,
|
||||
description: Date.now() + ' description',
|
||||
tags: [ Date.now().toString().substring(0, 5) + 't1', Date.now().toString().substring(0, 5) + 't2' ],
|
||||
fixture: 'video_short1.webm'
|
||||
|
|
|
@ -9,7 +9,8 @@ program
|
|||
.option('-u, --url <url>', 'Server url')
|
||||
.option('-a, --access-token <token>', 'Access token')
|
||||
.option('-n, --name <name>', 'Video name')
|
||||
.option('-d, --category <category number>', 'Category number')
|
||||
.option('-c, --category <category number>', 'Category number')
|
||||
.option('-l, --licence <licence number>', 'Licence number')
|
||||
.option('-d, --description <description>', 'Video description')
|
||||
.option('-t, --tags <tags>', 'Video tags', list)
|
||||
.option('-f, --file <file>', 'Video absolute file path')
|
||||
|
@ -20,6 +21,7 @@ if (
|
|||
!program.accessToken ||
|
||||
!program.name ||
|
||||
!program.category ||
|
||||
!program.licence ||
|
||||
!program.description ||
|
||||
!program.tags ||
|
||||
!Array.isArray(program.tags) ||
|
||||
|
@ -37,6 +39,7 @@ fs.access(program.file, fs.F_OK, function (err) {
|
|||
program.accessToken,
|
||||
program.name,
|
||||
program.category,
|
||||
program.licence,
|
||||
program.description,
|
||||
program.tags,
|
||||
program.file
|
||||
|
@ -49,12 +52,13 @@ function list (val) {
|
|||
return val.split(',')
|
||||
}
|
||||
|
||||
function upload (url, accessToken, name, category, description, tags, fixture) {
|
||||
function upload (url, accessToken, name, category, licence, description, tags, fixture) {
|
||||
console.log('Uploading %s video...', program.name)
|
||||
|
||||
const videoAttributes = {
|
||||
name,
|
||||
category,
|
||||
licence,
|
||||
description,
|
||||
tags,
|
||||
fixture
|
||||
|
|
|
@ -6,6 +6,7 @@ const request = require('supertest')
|
|||
|
||||
const videosUtils = {
|
||||
getVideoCategories,
|
||||
getVideoLicences,
|
||||
getAllVideosListBy,
|
||||
getVideo,
|
||||
getVideosList,
|
||||
|
@ -34,6 +35,17 @@ function getVideoCategories (url, end) {
|
|||
.end(end)
|
||||
}
|
||||
|
||||
function getVideoLicences (url, end) {
|
||||
const path = '/api/v1/videos/licences'
|
||||
|
||||
request(url)
|
||||
.get(path)
|
||||
.set('Accept', 'application/json')
|
||||
.expect(200)
|
||||
.expect('Content-Type', /json/)
|
||||
.end(end)
|
||||
}
|
||||
|
||||
function getAllVideosListBy (url, end) {
|
||||
const path = '/api/v1/videos'
|
||||
|
||||
|
@ -205,6 +217,7 @@ function uploadVideo (url, accessToken, videoAttributesArg, specialStatus, end)
|
|||
let attributes = {
|
||||
name: 'my super video',
|
||||
category: 5,
|
||||
licence: 4,
|
||||
description: 'my super description',
|
||||
tags: [ 'tag' ],
|
||||
fixture: 'video_short.webm'
|
||||
|
@ -217,6 +230,7 @@ function uploadVideo (url, accessToken, videoAttributesArg, specialStatus, end)
|
|||
.set('Authorization', 'Bearer ' + accessToken)
|
||||
.field('name', attributes.name)
|
||||
.field('category', attributes.category)
|
||||
.field('licence', attributes.licence)
|
||||
.field('description', attributes.description)
|
||||
|
||||
for (let i = 0; i < attributes.tags.length; i++) {
|
||||
|
@ -250,6 +264,7 @@ function updateVideo (url, accessToken, id, attributes, specialStatus, end) {
|
|||
|
||||
if (attributes.name) req.field('name', attributes.name)
|
||||
if (attributes.category) req.field('category', attributes.category)
|
||||
if (attributes.licence) req.field('licence', attributes.licence)
|
||||
if (attributes.description) req.field('description', attributes.description)
|
||||
|
||||
if (attributes.tags) {
|
||||
|
|
Loading…
Reference in a new issue