Server: add nsfw attribute

pull/61/head
Chocobozzz 2017-03-28 21:19:46 +02:00
parent d07137b90b
commit 31b59b4774
14 changed files with 154 additions and 2 deletions

View File

@ -296,6 +296,7 @@ function addRemoteVideo (videoToCreateData, fromPod, finalCallback) {
infoHash: videoToCreateData.infoHash, infoHash: videoToCreateData.infoHash,
category: videoToCreateData.category, category: videoToCreateData.category,
licence: videoToCreateData.licence, licence: videoToCreateData.licence,
nsfw: videoToCreateData.nsfw,
description: videoToCreateData.description, description: videoToCreateData.description,
authorId: author.id, authorId: author.id,
duration: videoToCreateData.duration, duration: videoToCreateData.duration,
@ -394,6 +395,7 @@ function updateRemoteVideo (videoAttributesToUpdate, fromPod, finalCallback) {
videoInstance.set('name', videoAttributesToUpdate.name) videoInstance.set('name', videoAttributesToUpdate.name)
videoInstance.set('category', videoAttributesToUpdate.category) videoInstance.set('category', videoAttributesToUpdate.category)
videoInstance.set('licence', videoAttributesToUpdate.licence) videoInstance.set('licence', videoAttributesToUpdate.licence)
videoInstance.set('nsfw', videoAttributesToUpdate.nsfw)
videoInstance.set('description', videoAttributesToUpdate.description) videoInstance.set('description', videoAttributesToUpdate.description)
videoInstance.set('infoHash', videoAttributesToUpdate.infoHash) videoInstance.set('infoHash', videoAttributesToUpdate.infoHash)
videoInstance.set('duration', videoAttributesToUpdate.duration) videoInstance.set('duration', videoAttributesToUpdate.duration)

View File

@ -313,6 +313,7 @@ function addVideo (req, res, videoFile, finalCallback) {
extname: path.extname(videoFile.filename), extname: path.extname(videoFile.filename),
category: videoInfos.category, category: videoInfos.category,
licence: videoInfos.licence, licence: videoInfos.licence,
nsfw: videoInfos.nsfw,
description: videoInfos.description, description: videoInfos.description,
duration: videoFile.duration, duration: videoFile.duration,
authorId: author.id authorId: author.id
@ -428,6 +429,7 @@ function updateVideo (req, res, finalCallback) {
if (videoInfosToUpdate.name) videoInstance.set('name', videoInfosToUpdate.name) if (videoInfosToUpdate.name) videoInstance.set('name', videoInfosToUpdate.name)
if (videoInfosToUpdate.category) videoInstance.set('category', videoInfosToUpdate.category) if (videoInfosToUpdate.category) videoInstance.set('category', videoInfosToUpdate.category)
if (videoInfosToUpdate.licence) videoInstance.set('licence', videoInfosToUpdate.licence) if (videoInfosToUpdate.licence) videoInstance.set('licence', videoInfosToUpdate.licence)
if (videoInfosToUpdate.nsfw) videoInstance.set('nsfw', videoInfosToUpdate.nsfw)
if (videoInfosToUpdate.description) videoInstance.set('description', videoInfosToUpdate.description) if (videoInfosToUpdate.description) videoInstance.set('description', videoInfosToUpdate.description)
videoInstance.save(options).asCallback(function (err) { videoInstance.save(options).asCallback(function (err) {

View File

@ -87,6 +87,7 @@ function isCommonVideoAttributesValid (video) {
videosValidators.isVideoDateValid(video.updatedAt) && videosValidators.isVideoDateValid(video.updatedAt) &&
videosValidators.isVideoCategoryValid(video.category) && videosValidators.isVideoCategoryValid(video.category) &&
videosValidators.isVideoLicenceValid(video.licence) && videosValidators.isVideoLicenceValid(video.licence) &&
videosValidators.isVideoNSFWValid(video.nsfw) &&
videosValidators.isVideoDescriptionValid(video.description) && videosValidators.isVideoDescriptionValid(video.description) &&
videosValidators.isVideoDurationValid(video.duration) && videosValidators.isVideoDurationValid(video.duration) &&
videosValidators.isVideoInfoHashValid(video.infoHash) && videosValidators.isVideoInfoHashValid(video.infoHash) &&

View File

@ -15,6 +15,7 @@ const videosValidators = {
isVideoDateValid, isVideoDateValid,
isVideoCategoryValid, isVideoCategoryValid,
isVideoLicenceValid, isVideoLicenceValid,
isVideoNSFWValid,
isVideoDescriptionValid, isVideoDescriptionValid,
isVideoDurationValid, isVideoDurationValid,
isVideoInfoHashValid, isVideoInfoHashValid,
@ -50,6 +51,10 @@ function isVideoLicenceValid (value) {
return constants.VIDEO_LICENCES[value] !== undefined return constants.VIDEO_LICENCES[value] !== undefined
} }
function isVideoNSFWValid (value) {
return validator.isBoolean(value)
}
function isVideoDescriptionValid (value) { function isVideoDescriptionValid (value) {
return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.DESCRIPTION) return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.DESCRIPTION)
} }

View File

@ -5,7 +5,7 @@ const path = require('path')
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
const LAST_MIGRATION_VERSION = 35 const LAST_MIGRATION_VERSION = 40
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------

View 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.BOOLEAN,
allowNull: false,
defaultValue: false
}
waterfall([
function addNSFWColumn (callback) {
q.addColumn('Videos', 'nsfw', data, { transaction: utils.transaction }).asCallback(function (err) {
return callback(err)
})
},
function nullOnDefault (callback) {
data.defaultValue = null
q.changeColumn('Videos', 'nsfw', data, { transaction: utils.transaction }).asCallback(callback)
}
], finalCallback)
}
exports.down = function (options, callback) {
throw new Error('Not implemented.')
}

View File

@ -23,6 +23,7 @@ function videosAdd (req, res, next) {
req.checkBody('name', 'Should have a valid name').isVideoNameValid() req.checkBody('name', 'Should have a valid name').isVideoNameValid()
req.checkBody('category', 'Should have a valid category').isVideoCategoryValid() req.checkBody('category', 'Should have a valid category').isVideoCategoryValid()
req.checkBody('licence', 'Should have a valid licence').isVideoLicenceValid() req.checkBody('licence', 'Should have a valid licence').isVideoLicenceValid()
req.checkBody('nsfw', 'Should have a valid NSFW attribute').isVideoNSFWValid()
req.checkBody('description', 'Should have a valid description').isVideoDescriptionValid() req.checkBody('description', 'Should have a valid description').isVideoDescriptionValid()
req.checkBody('tags', 'Should have correct tags').optional().isVideoTagsValid() req.checkBody('tags', 'Should have correct tags').optional().isVideoTagsValid()
@ -51,6 +52,7 @@ function videosUpdate (req, res, next) {
req.checkBody('name', 'Should have a valid name').optional().isVideoNameValid() req.checkBody('name', 'Should have a valid name').optional().isVideoNameValid()
req.checkBody('category', 'Should have a valid category').optional().isVideoCategoryValid() req.checkBody('category', 'Should have a valid category').optional().isVideoCategoryValid()
req.checkBody('licence', 'Should have a valid licence').optional().isVideoLicenceValid() req.checkBody('licence', 'Should have a valid licence').optional().isVideoLicenceValid()
req.checkBody('nsfw', 'Should have a valid NSFW attribute').optional().isVideoNSFWValid()
req.checkBody('description', 'Should have a valid description').optional().isVideoDescriptionValid() req.checkBody('description', 'Should have a valid description').optional().isVideoDescriptionValid()
req.checkBody('tags', 'Should have correct tags').optional().isVideoTagsValid() req.checkBody('tags', 'Should have correct tags').optional().isVideoTagsValid()

View File

@ -71,6 +71,16 @@ module.exports = function (sequelize, DataTypes) {
} }
} }
}, },
nsfw: {
type: DataTypes.BOOLEAN,
allowNull: false,
validate: {
nsfwValid: function (value) {
const res = customVideosValidators.isVideoNSFWValid(value)
if (res === false) throw new Error('Video nsfw attribute is not valid.')
}
}
},
description: { description: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false,
@ -395,6 +405,7 @@ function toFormatedJSON () {
categoryLabel, categoryLabel,
licence: this.licence, licence: this.licence,
licenceLabel, licenceLabel,
nsfw: this.nsfw,
description: this.description, description: this.description,
podHost, podHost,
isLocal: this.isOwned(), isLocal: this.isOwned(),
@ -428,6 +439,7 @@ function toAddRemoteJSON (callback) {
name: self.name, name: self.name,
category: self.category, category: self.category,
licence: self.licence, licence: self.licence,
nsfw: self.nsfw,
description: self.description, description: self.description,
infoHash: self.infoHash, infoHash: self.infoHash,
remoteId: self.id, remoteId: self.id,
@ -452,6 +464,7 @@ function toUpdateRemoteJSON (callback) {
name: this.name, name: this.name,
category: this.category, category: this.category,
licence: this.licence, licence: this.licence,
nsfw: this.nsfw,
description: this.description, description: this.description,
infoHash: this.infoHash, infoHash: this.infoHash,
remoteId: this.id, remoteId: this.id,

View File

@ -114,6 +114,7 @@ describe('Test videos API validator', function () {
const data = { const data = {
category: 5, category: 5,
licence: 1, licence: 1,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -128,6 +129,7 @@ describe('Test videos API validator', function () {
name: 'My very very very very very very very very very very very very very very very very long name', name: 'My very very very very very very very very very very very very very very very very long name',
category: 5, category: 5,
licence: 1, licence: 1,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -141,6 +143,7 @@ describe('Test videos API validator', function () {
const data = { const data = {
name: 'my super name', name: 'my super name',
licence: 1, licence: 1,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -155,6 +158,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 125, category: 125,
licence: 1, licence: 1,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -168,6 +172,7 @@ describe('Test videos API validator', function () {
const data = { const data = {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -182,6 +187,36 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 125, licence: 125,
nsfw: false,
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 nsfw attribute', function (done) {
const data = {
name: 'my super name',
category: 5,
licence: 4,
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 nsfw attribue', function (done) {
const data = {
name: 'my super name',
category: 5,
licence: 4,
nsfw: 2,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -196,6 +231,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 1, licence: 1,
nsfw: false,
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
const attach = { const attach = {
@ -209,6 +245,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 1, licence: 1,
nsfw: false,
description: 'my super description which is very very very very very very very very very very very very very very' + 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 very very very very very very' +
'very very very very very very very very very very very very very very very long', 'very very very very very very very very very very very very very very very long',
@ -225,6 +262,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 1, licence: 1,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2', 'tag3', 'tag4' ] tags: [ 'tag1', 'tag2', 'tag3', 'tag4' ]
} }
@ -239,6 +277,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 1, licence: 1,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 't' ] tags: [ 'tag1', 't' ]
} }
@ -253,6 +292,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 1, licence: 1,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'mysupertagtoolong', 'tag1' ] tags: [ 'mysupertagtoolong', 'tag1' ]
} }
@ -267,6 +307,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 1, licence: 1,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -279,6 +320,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 1, licence: 1,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -293,6 +335,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 1, licence: 1,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -307,6 +350,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 1, licence: 1,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -345,6 +389,7 @@ describe('Test videos API validator', function () {
const data = { const data = {
category: 5, category: 5,
licence: 2, licence: 2,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -355,6 +400,7 @@ describe('Test videos API validator', function () {
const data = { const data = {
category: 5, category: 5,
licence: 2, licence: 2,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -366,6 +412,7 @@ describe('Test videos API validator', function () {
name: 'My very very very very very very very very very very very very very very very very long name', name: 'My very very very very very very very very very very very very very very very very long name',
category: 5, category: 5,
licence: 2, licence: 2,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -377,6 +424,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 128, category: 128,
licence: 2, licence: 2,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -388,6 +436,19 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 128, licence: 128,
nsfw: false,
description: 'my super description',
tags: [ 'tag1', 'tag2' ]
}
requestsUtils.makePutBodyRequest(server.url, path + videoId, server.accessToken, data, done)
})
it('Should fail with a bad nsfw attribute', function (done) {
const data = {
name: 'my super name',
category: 5,
licence: 5,
nsfw: -4,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2' ] tags: [ 'tag1', 'tag2' ]
} }
@ -399,6 +460,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 2, licence: 2,
nsfw: false,
description: 'my super description which is very very very very very very very very very very very very very very' + 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 very very very very very very' +
'very very very very very very very very very very very very very very very long', 'very very very very very very very very very very very very very very very long',
@ -412,6 +474,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 2, licence: 2,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 'tag2', 'tag3', 'tag4' ] tags: [ 'tag1', 'tag2', 'tag3', 'tag4' ]
} }
@ -423,6 +486,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 2, licence: 2,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'tag1', 't' ] tags: [ 'tag1', 't' ]
} }
@ -434,6 +498,7 @@ describe('Test videos API validator', function () {
name: 'my super name', name: 'my super name',
category: 5, category: 5,
licence: 2, licence: 2,
nsfw: false,
description: 'my super description', description: 'my super description',
tags: [ 'mysupertagtoolong', 'tag1' ] tags: [ 'mysupertagtoolong', 'tag1' ]
} }

View File

@ -84,6 +84,7 @@ describe('Test multiple pods', function () {
name: 'my super name for pod 1', name: 'my super name for pod 1',
category: 5, category: 5,
licence: 4, licence: 4,
nsfw: true,
description: 'my super description for pod 1', description: 'my super description for pod 1',
tags: [ 'tag1p1', 'tag2p1' ], tags: [ 'tag1p1', 'tag2p1' ],
fixture: 'video_short1.webm' fixture: 'video_short1.webm'
@ -112,6 +113,7 @@ describe('Test multiple pods', function () {
expect(video.categoryLabel).to.equal('Sports') expect(video.categoryLabel).to.equal('Sports')
expect(video.licence).to.equal(4) expect(video.licence).to.equal(4)
expect(video.licenceLabel).to.equal('Attribution - Non Commercial') expect(video.licenceLabel).to.equal('Attribution - Non Commercial')
expect(video.nsfw).to.be.truthy
expect(video.description).to.equal('my super description for pod 1') expect(video.description).to.equal('my super description for pod 1')
expect(video.podHost).to.equal('localhost:9001') expect(video.podHost).to.equal('localhost:9001')
expect(video.magnetUri).to.exist expect(video.magnetUri).to.exist
@ -155,6 +157,7 @@ describe('Test multiple pods', function () {
name: 'my super name for pod 2', name: 'my super name for pod 2',
category: 4, category: 4,
licence: 3, licence: 3,
nsfw: true,
description: 'my super description for pod 2', description: 'my super description for pod 2',
tags: [ 'tag1p2', 'tag2p2', 'tag3p2' ], tags: [ 'tag1p2', 'tag2p2', 'tag3p2' ],
fixture: 'video_short2.webm' fixture: 'video_short2.webm'
@ -183,6 +186,7 @@ describe('Test multiple pods', function () {
expect(video.categoryLabel).to.equal('Art') expect(video.categoryLabel).to.equal('Art')
expect(video.licence).to.equal(3) expect(video.licence).to.equal(3)
expect(video.licenceLabel).to.equal('Attribution - No Derivatives') expect(video.licenceLabel).to.equal('Attribution - No Derivatives')
expect(video.nsfw).to.be.falsy
expect(video.description).to.equal('my super description for pod 2') expect(video.description).to.equal('my super description for pod 2')
expect(video.podHost).to.equal('localhost:9002') expect(video.podHost).to.equal('localhost:9002')
expect(video.magnetUri).to.exist expect(video.magnetUri).to.exist
@ -226,6 +230,7 @@ describe('Test multiple pods', function () {
name: 'my super name for pod 3', name: 'my super name for pod 3',
category: 6, category: 6,
licence: 5, licence: 5,
nsfw: true,
description: 'my super description for pod 3', description: 'my super description for pod 3',
tags: [ 'tag1p3' ], tags: [ 'tag1p3' ],
fixture: 'video_short3.webm' fixture: 'video_short3.webm'
@ -237,6 +242,7 @@ describe('Test multiple pods', function () {
name: 'my super name for pod 3-2', name: 'my super name for pod 3-2',
category: 7, category: 7,
licence: 6, licence: 6,
nsfw: false,
description: 'my super description for pod 3-2', description: 'my super description for pod 3-2',
tags: [ 'tag2p3', 'tag3p3', 'tag4p3' ], tags: [ 'tag2p3', 'tag3p3', 'tag4p3' ],
fixture: 'video_short.webm' fixture: 'video_short.webm'
@ -275,6 +281,7 @@ describe('Test multiple pods', function () {
expect(video1.categoryLabel).to.equal('Travels') expect(video1.categoryLabel).to.equal('Travels')
expect(video1.licence).to.equal(5) expect(video1.licence).to.equal(5)
expect(video1.licenceLabel).to.equal('Attribution - Non Commercial - Share Alike') expect(video1.licenceLabel).to.equal('Attribution - Non Commercial - Share Alike')
expect(video1.nsfw).to.be.truthy
expect(video1.description).to.equal('my super description for pod 3') expect(video1.description).to.equal('my super description for pod 3')
expect(video1.podHost).to.equal('localhost:9003') expect(video1.podHost).to.equal('localhost:9003')
expect(video1.magnetUri).to.exist expect(video1.magnetUri).to.exist
@ -289,6 +296,7 @@ describe('Test multiple pods', function () {
expect(video2.categoryLabel).to.equal('Gaming') expect(video2.categoryLabel).to.equal('Gaming')
expect(video2.licence).to.equal(6) expect(video2.licence).to.equal(6)
expect(video2.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives') expect(video2.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
expect(video2.nsfw).to.be.falsy
expect(video2.description).to.equal('my super description for pod 3-2') expect(video2.description).to.equal('my super description for pod 3-2')
expect(video2.podHost).to.equal('localhost:9003') expect(video2.podHost).to.equal('localhost:9003')
expect(video2.magnetUri).to.exist expect(video2.magnetUri).to.exist
@ -638,6 +646,7 @@ describe('Test multiple pods', function () {
name: 'my super video updated', name: 'my super video updated',
category: 10, category: 10,
licence: 7, licence: 7,
nsfw: true,
description: 'my super description updated', description: 'my super description updated',
tags: [ 'tagup1', 'tagup2' ] tags: [ 'tagup1', 'tagup2' ]
} }
@ -668,6 +677,7 @@ describe('Test multiple pods', function () {
expect(videoUpdated.categoryLabel).to.equal('Entertainment') expect(videoUpdated.categoryLabel).to.equal('Entertainment')
expect(videoUpdated.licence).to.equal(7) expect(videoUpdated.licence).to.equal(7)
expect(videoUpdated.licenceLabel).to.equal('Public Domain Dedication') expect(videoUpdated.licenceLabel).to.equal('Public Domain Dedication')
expect(videoUpdated.nsfw).to.be.truthy
expect(videoUpdated.description).to.equal('my super description updated') expect(videoUpdated.description).to.equal('my super description updated')
expect(videoUpdated.tags).to.deep.equal([ 'tagup1', 'tagup2' ]) expect(videoUpdated.tags).to.deep.equal([ 'tagup1', 'tagup2' ])
expect(miscsUtils.dateIsValid(videoUpdated.updatedAt, 20000)).to.be.true expect(miscsUtils.dateIsValid(videoUpdated.updatedAt, 20000)).to.be.true

View File

@ -86,6 +86,7 @@ describe('Test a single pod', function () {
const videoAttributes = { const videoAttributes = {
name: 'my super name', name: 'my super name',
category: 2, category: 2,
nsfw: true,
licence: 6, licence: 6,
tags: [ 'tag1', 'tag2', 'tag3' ] tags: [ 'tag1', 'tag2', 'tag3' ]
} }
@ -109,6 +110,7 @@ describe('Test a single pod', function () {
expect(video.categoryLabel).to.equal('Films') expect(video.categoryLabel).to.equal('Films')
expect(video.licence).to.equal(6) expect(video.licence).to.equal(6)
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives') expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
expect(video.nsfw).to.be.truthy
expect(video.description).to.equal('my super description') expect(video.description).to.equal('my super description')
expect(video.podHost).to.equal('localhost:9001') expect(video.podHost).to.equal('localhost:9001')
expect(video.magnetUri).to.exist expect(video.magnetUri).to.exist
@ -148,6 +150,7 @@ describe('Test a single pod', function () {
expect(video.categoryLabel).to.equal('Films') expect(video.categoryLabel).to.equal('Films')
expect(video.licence).to.equal(6) expect(video.licence).to.equal(6)
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives') expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
expect(video.nsfw).to.be.truthy
expect(video.description).to.equal('my super description') expect(video.description).to.equal('my super description')
expect(video.podHost).to.equal('localhost:9001') expect(video.podHost).to.equal('localhost:9001')
expect(video.magnetUri).to.exist expect(video.magnetUri).to.exist
@ -191,6 +194,7 @@ describe('Test a single pod', function () {
expect(video.categoryLabel).to.equal('Films') expect(video.categoryLabel).to.equal('Films')
expect(video.licence).to.equal(6) expect(video.licence).to.equal(6)
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives') expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
expect(video.nsfw).to.be.truthy
expect(video.description).to.equal('my super description') expect(video.description).to.equal('my super description')
expect(video.podHost).to.equal('localhost:9001') expect(video.podHost).to.equal('localhost:9001')
expect(video.author).to.equal('root') expect(video.author).to.equal('root')
@ -250,6 +254,7 @@ describe('Test a single pod', function () {
expect(video.categoryLabel).to.equal('Films') expect(video.categoryLabel).to.equal('Films')
expect(video.licence).to.equal(6) expect(video.licence).to.equal(6)
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives') expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
expect(video.nsfw).to.be.truthy
expect(video.description).to.equal('my super description') expect(video.description).to.equal('my super description')
expect(video.podHost).to.equal('localhost:9001') expect(video.podHost).to.equal('localhost:9001')
expect(video.author).to.equal('root') expect(video.author).to.equal('root')
@ -347,6 +352,7 @@ describe('Test a single pod', function () {
description: video + ' description', description: video + ' description',
category: 2, category: 2,
licence: 1, licence: 1,
nsfw: true,
tags: [ 'tag1', 'tag2', 'tag3' ], tags: [ 'tag1', 'tag2', 'tag3' ],
fixture: video fixture: video
} }
@ -572,6 +578,7 @@ describe('Test a single pod', function () {
name: 'my super video updated', name: 'my super video updated',
category: 4, category: 4,
licence: 2, licence: 2,
nsfw: false,
description: 'my super description updated', description: 'my super description updated',
tags: [ 'tagup1', 'tagup2' ] tags: [ 'tagup1', 'tagup2' ]
} }
@ -591,6 +598,7 @@ describe('Test a single pod', function () {
expect(video.categoryLabel).to.equal('Art') expect(video.categoryLabel).to.equal('Art')
expect(video.licence).to.equal(2) expect(video.licence).to.equal(2)
expect(video.licenceLabel).to.equal('Attribution - Share Alike') expect(video.licenceLabel).to.equal('Attribution - Share Alike')
expect(video.nsfw).to.be.truthy
expect(video.description).to.equal('my super description updated') expect(video.description).to.equal('my super description updated')
expect(video.podHost).to.equal('localhost:9001') expect(video.podHost).to.equal('localhost:9001')
expect(video.author).to.equal('root') expect(video.author).to.equal('root')
@ -632,6 +640,7 @@ describe('Test a single pod', function () {
expect(video.categoryLabel).to.equal('Art') expect(video.categoryLabel).to.equal('Art')
expect(video.licence).to.equal(2) expect(video.licence).to.equal(2)
expect(video.licenceLabel).to.equal('Attribution - Share Alike') expect(video.licenceLabel).to.equal('Attribution - Share Alike')
expect(video.nsfw).to.be.truthy
expect(video.description).to.equal('my super description updated') expect(video.description).to.equal('my super description updated')
expect(video.podHost).to.equal('localhost:9001') expect(video.podHost).to.equal('localhost:9001')
expect(video.author).to.equal('root') expect(video.author).to.equal('root')
@ -663,6 +672,7 @@ describe('Test a single pod', function () {
expect(video.categoryLabel).to.equal('Art') expect(video.categoryLabel).to.equal('Art')
expect(video.licence).to.equal(2) expect(video.licence).to.equal(2)
expect(video.licenceLabel).to.equal('Attribution - Share Alike') expect(video.licenceLabel).to.equal('Attribution - Share Alike')
expect(video.nsfw).to.be.truthy
expect(video.description).to.equal('hello everybody') expect(video.description).to.equal('hello everybody')
expect(video.podHost).to.equal('localhost:9001') expect(video.podHost).to.equal('localhost:9001')
expect(video.author).to.equal('root') expect(video.author).to.equal('root')

View File

@ -205,6 +205,7 @@ function upload (servers, numServer, callback) {
const videoAttributes = { const videoAttributes = {
name: Date.now() + ' name', name: Date.now() + ' name',
category: 4, category: 4,
nsfw: false,
licence: 2, licence: 2,
description: Date.now() + ' description', description: Date.now() + ' description',
tags: [ Date.now().toString().substring(0, 5) + 't1', Date.now().toString().substring(0, 5) + 't2' ], tags: [ Date.now().toString().substring(0, 5) + 't1', Date.now().toString().substring(0, 5) + 't2' ],

View File

@ -9,6 +9,7 @@ program
.option('-u, --url <url>', 'Server url') .option('-u, --url <url>', 'Server url')
.option('-a, --access-token <token>', 'Access token') .option('-a, --access-token <token>', 'Access token')
.option('-n, --name <name>', 'Video name') .option('-n, --name <name>', 'Video name')
.option('-x, --nsfw', 'Video is Not Safe For Work')
.option('-c, --category <category number>', 'Category number') .option('-c, --category <category number>', 'Category number')
.option('-l, --licence <licence number>', 'Licence number') .option('-l, --licence <licence number>', 'Licence number')
.option('-d, --description <description>', 'Video description') .option('-d, --description <description>', 'Video description')
@ -22,6 +23,7 @@ if (
!program.name || !program.name ||
!program.category || !program.category ||
!program.licence || !program.licence ||
!program.nsfw ||
!program.description || !program.description ||
!program.tags || !program.tags ||
!Array.isArray(program.tags) || !Array.isArray(program.tags) ||
@ -40,6 +42,7 @@ fs.access(program.file, fs.F_OK, function (err) {
program.name, program.name,
program.category, program.category,
program.licence, program.licence,
program.nsfw,
program.description, program.description,
program.tags, program.tags,
program.file program.file
@ -52,13 +55,14 @@ function list (val) {
return val.split(',') return val.split(',')
} }
function upload (url, accessToken, name, category, licence, description, tags, fixture) { function upload (url, accessToken, name, category, licence, nsfw, description, tags, fixture) {
console.log('Uploading %s video...', program.name) console.log('Uploading %s video...', program.name)
const videoAttributes = { const videoAttributes = {
name, name,
category, category,
licence, licence,
nsfw,
description, description,
tags, tags,
fixture fixture

View File

@ -218,6 +218,7 @@ function uploadVideo (url, accessToken, videoAttributesArg, specialStatus, end)
name: 'my super video', name: 'my super video',
category: 5, category: 5,
licence: 4, licence: 4,
nsfw: true,
description: 'my super description', description: 'my super description',
tags: [ 'tag' ], tags: [ 'tag' ],
fixture: 'video_short.webm' fixture: 'video_short.webm'
@ -231,6 +232,7 @@ function uploadVideo (url, accessToken, videoAttributesArg, specialStatus, end)
.field('name', attributes.name) .field('name', attributes.name)
.field('category', attributes.category) .field('category', attributes.category)
.field('licence', attributes.licence) .field('licence', attributes.licence)
.field('nsfw', attributes.nsfw)
.field('description', attributes.description) .field('description', attributes.description)
for (let i = 0; i < attributes.tags.length; i++) { for (let i = 0; i < attributes.tags.length; i++) {
@ -265,6 +267,7 @@ function updateVideo (url, accessToken, id, attributes, specialStatus, end) {
if (attributes.name) req.field('name', attributes.name) if (attributes.name) req.field('name', attributes.name)
if (attributes.category) req.field('category', attributes.category) if (attributes.category) req.field('category', attributes.category)
if (attributes.licence) req.field('licence', attributes.licence) if (attributes.licence) req.field('licence', attributes.licence)
if (attributes.nsfw) req.field('nsfw', attributes.nsfw)
if (attributes.description) req.field('description', attributes.description) if (attributes.description) req.field('description', attributes.description)
if (attributes.tags) { if (attributes.tags) {