X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fsingle-pod.js;h=6d7ebdc9b515241ef24c0a44f261a218fee5c072;hb=6f0c39e2de400685b7baf8340b9e132f2659365a;hp=3125312caf614235910e357df18fd77d464a2414;hpb=b3d92510157f9066ea7fa82c303bea7a10eb55b6;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/single-pod.js b/server/tests/api/single-pod.js index 3125312ca..6d7ebdc9b 100644 --- a/server/tests/api/single-pod.js +++ b/server/tests/api/single-pod.js @@ -1,3 +1,5 @@ +/* eslint-disable no-unused-expressions */ + 'use strict' const chai = require('chai') @@ -42,6 +44,32 @@ describe('Test a single pod', function () { ], done) }) + it('Should list video categories', function (done) { + videosUtils.getVideoCategories(server.url, function (err, res) { + if (err) throw err + + const categories = res.body + expect(Object.keys(categories)).to.have.length.above(10) + + expect(categories[11]).to.equal('News') + + done() + }) + }) + + 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 @@ -55,12 +83,13 @@ describe('Test a single pod', function () { }) it('Should upload the video', function (done) { - this.timeout(5000) - const name = 'my super name' - const description = 'my super description' - const tags = [ 'tag1', 'tag2', 'tag3' ] - const file = 'video_short.webm' - videosUtils.uploadVideo(server.url, server.accessToken, name, description, tags, file, done) + const videoAttributes = { + name: 'my super name', + category: 2, + licence: 6, + tags: [ 'tag1', 'tag2', 'tag3' ] + } + videosUtils.uploadVideo(server.url, server.accessToken, videoAttributes, done) }) it('Should seed the uploaded video', function (done) { @@ -76,13 +105,18 @@ describe('Test a single pod', function () { const video = res.body.data[0] 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.podUrl).to.equal('localhost:9001') + expect(video.podHost).to.equal('localhost:9001') expect(video.magnetUri).to.exist expect(video.author).to.equal('root') expect(video.isLocal).to.be.true expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ]) - expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true + expect(miscsUtils.dateIsValid(video.createdAt)).to.be.true + expect(miscsUtils.dateIsValid(video.updatedAt)).to.be.true videosUtils.testVideoImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) { if (err) throw err @@ -110,13 +144,18 @@ describe('Test a single pod', function () { const video = res.body 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.podUrl).to.equal('localhost:9001') + expect(video.podHost).to.equal('localhost:9001') expect(video.magnetUri).to.exist expect(video.author).to.equal('root') expect(video.isLocal).to.be.true expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ]) - expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true + expect(miscsUtils.dateIsValid(video.createdAt)).to.be.true + expect(miscsUtils.dateIsValid(video.updatedAt)).to.be.true videosUtils.testVideoImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) { if (err) throw err @@ -127,34 +166,19 @@ describe('Test a single pod', function () { }) }) - it('Should search the video by name by default', function (done) { - videosUtils.searchVideo(server.url, 'my', function (err, res) { + it('Should have the views updated', function (done) { + videosUtils.getVideo(server.url, videoId, function (err, res) { if (err) throw err - expect(res.body.total).to.equal(1) - expect(res.body.data).to.be.an('array') - expect(res.body.data.length).to.equal(1) - - const video = res.body.data[0] - expect(video.name).to.equal('my super name') - expect(video.description).to.equal('my super description') - expect(video.podUrl).to.equal('localhost:9001') - expect(video.author).to.equal('root') - expect(video.isLocal).to.be.true - expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ]) - expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true - - videosUtils.testVideoImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) { - if (err) throw err - expect(test).to.equal(true) + const video = res.body + expect(video.views).to.equal(1) - done() - }) + done() }) }) - it('Should search the video by podUrl', function (done) { - videosUtils.searchVideo(server.url, '9001', 'podUrl', function (err, res) { + it('Should search the video by name by default', function (done) { + videosUtils.searchVideo(server.url, 'my', function (err, res) { if (err) throw err expect(res.body.total).to.equal(1) @@ -163,12 +187,17 @@ describe('Test a single pod', function () { const video = res.body.data[0] 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.podUrl).to.equal('localhost:9001') + expect(video.podHost).to.equal('localhost:9001') expect(video.author).to.equal('root') expect(video.isLocal).to.be.true expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ]) - expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true + expect(miscsUtils.dateIsValid(video.createdAt)).to.be.true + expect(miscsUtils.dateIsValid(video.updatedAt)).to.be.true videosUtils.testVideoImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) { if (err) throw err @@ -179,6 +208,34 @@ describe('Test a single pod', function () { }) }) + // Not implemented yet + // it('Should search the video by podHost', function (done) { + // videosUtils.searchVideo(server.url, '9001', 'host', function (err, res) { + // if (err) throw err + + // expect(res.body.total).to.equal(1) + // expect(res.body.data).to.be.an('array') + // expect(res.body.data.length).to.equal(1) + + // const video = res.body.data[0] + // expect(video.name).to.equal('my super name') + // expect(video.description).to.equal('my super description') + // expect(video.podHost).to.equal('localhost:9001') + // expect(video.author).to.equal('root') + // expect(video.isLocal).to.be.true + // expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ]) + // expect(miscsUtils.dateIsValid(video.createdAt)).to.be.true + // expect(miscsUtils.dateIsValid(video.updatedAt)).to.be.true + + // videosUtils.testVideoImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) { + // if (err) throw err + // expect(test).to.equal(true) + + // done() + // }) + // }) + // }) + it('Should search the video by tag', function (done) { videosUtils.searchVideo(server.url, 'tag1', 'tags', function (err, res) { if (err) throw err @@ -189,12 +246,17 @@ describe('Test a single pod', function () { const video = res.body.data[0] 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.podUrl).to.equal('localhost:9001') + expect(video.podHost).to.equal('localhost:9001') expect(video.author).to.equal('root') expect(video.isLocal).to.be.true expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ]) - expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true + expect(miscsUtils.dateIsValid(video.createdAt)).to.be.true + expect(miscsUtils.dateIsValid(video.updatedAt)).to.be.true videosUtils.testVideoImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) { if (err) throw err @@ -230,7 +292,7 @@ describe('Test a single pod', function () { }) it('Should not find a search by tag', function (done) { - videosUtils.searchVideo(server.url, 'tag', 'tags', function (err, res) { + videosUtils.searchVideo(server.url, 'hello', 'tags', function (err, res) { if (err) throw err expect(res.body.total).to.equal(0) @@ -245,12 +307,12 @@ describe('Test a single pod', function () { videosUtils.removeVideo(server.url, server.accessToken, videoId, function (err) { if (err) throw err - fs.readdir(pathUtils.join(__dirname, '../../../test1/videos/'), function (err, files) { + fs.readdir(pathUtils.join(__dirname, '..', '..', '..', 'test1/videos/'), function (err, files) { if (err) throw err expect(files.length).to.equal(0) - fs.readdir(pathUtils.join(__dirname, '../../../test1/thumbnails/'), function (err, files) { + fs.readdir(pathUtils.join(__dirname, '..', '..', '..', 'test1/thumbnails/'), function (err, files) { if (err) throw err expect(files.length).to.equal(0) @@ -280,11 +342,16 @@ describe('Test a single pod', function () { 'video_short1.webm', 'video_short2.webm', 'video_short3.webm' ] each(videos, function (video, callbackEach) { - const name = video + ' name' - const description = video + ' description' - const tags = [ 'tag1', 'tag2', 'tag3' ] + const videoAttributes = { + name: video + ' name', + description: video + ' description', + category: 2, + licence: 1, + tags: [ 'tag1', 'tag2', 'tag3' ], + fixture: video + } - videosUtils.uploadVideo(server.url, server.accessToken, name, description, tags, video, callbackEach) + videosUtils.uploadVideo(server.url, server.accessToken, videoAttributes, callbackEach) }, done) }) @@ -332,69 +399,69 @@ describe('Test a single pod', function () { }) it('Should list only the two first videos', function (done) { - videosUtils.getVideosListPagination(server.url, 0, 2, function (err, res) { + videosUtils.getVideosListPagination(server.url, 0, 2, 'name', function (err, res) { if (err) throw err const videos = res.body.data expect(res.body.total).to.equal(6) expect(videos.length).to.equal(2) - expect(videos[0].name === videosListBase[0].name) - expect(videos[1].name === videosListBase[1].name) + expect(videos[0].name).to.equal(videosListBase[0].name) + expect(videos[1].name).to.equal(videosListBase[1].name) done() }) }) it('Should list only the next three videos', function (done) { - videosUtils.getVideosListPagination(server.url, 2, 3, function (err, res) { + videosUtils.getVideosListPagination(server.url, 2, 3, 'name', function (err, res) { if (err) throw err const videos = res.body.data expect(res.body.total).to.equal(6) expect(videos.length).to.equal(3) - expect(videos[0].name === videosListBase[2].name) - expect(videos[1].name === videosListBase[3].name) - expect(videos[2].name === videosListBase[4].name) + expect(videos[0].name).to.equal(videosListBase[2].name) + expect(videos[1].name).to.equal(videosListBase[3].name) + expect(videos[2].name).to.equal(videosListBase[4].name) done() }) }) it('Should list the last video', function (done) { - videosUtils.getVideosListPagination(server.url, 5, 6, function (err, res) { + videosUtils.getVideosListPagination(server.url, 5, 6, 'name', function (err, res) { if (err) throw err const videos = res.body.data expect(res.body.total).to.equal(6) expect(videos.length).to.equal(1) - expect(videos[0].name === videosListBase[5].name) + expect(videos[0].name).to.equal(videosListBase[5].name) done() }) }) it('Should search the first video', function (done) { - videosUtils.searchVideoWithPagination(server.url, 'webm', 'name', 0, 1, function (err, res) { + videosUtils.searchVideoWithPagination(server.url, 'webm', 'name', 0, 1, 'name', function (err, res) { if (err) throw err const videos = res.body.data expect(res.body.total).to.equal(4) expect(videos.length).to.equal(1) - expect(videos[0].name === 'video_short.webm name') + expect(videos[0].name).to.equal('video_short1.webm name') done() }) }) it('Should search the last two videos', function (done) { - videosUtils.searchVideoWithPagination(server.url, 'webm', 'name', 2, 2, function (err, res) { + videosUtils.searchVideoWithPagination(server.url, 'webm', 'name', 2, 2, 'name', function (err, res) { if (err) throw err const videos = res.body.data expect(res.body.total).to.equal(4) expect(videos.length).to.equal(2) - expect(videos[0].name === 'video_short2.webm name') - expect(videos[1].name === 'video_short3.webm name') + expect(videos[0].name).to.equal('video_short3.webm name') + expect(videos[1].name).to.equal('video_short.webm name') done() }) @@ -424,31 +491,32 @@ describe('Test a single pod', function () { }) }) - it('Should search all the 9001 port videos', function (done) { - videosUtils.searchVideoWithPagination(server.url, '9001', 'podUrl', 0, 15, function (err, res) { - if (err) throw err + // Not implemented yet + // it('Should search all the 9001 port videos', function (done) { + // videosUtils.searchVideoWithPagination(server.url, '9001', 'host', 0, 15, function (err, res) { + // if (err) throw err - const videos = res.body.data - expect(res.body.total).to.equal(6) - expect(videos.length).to.equal(6) + // const videos = res.body.data + // expect(res.body.total).to.equal(6) + // expect(videos.length).to.equal(6) - done() - }) - }) + // done() + // }) + // }) - it('Should search all the localhost videos', function (done) { - videosUtils.searchVideoWithPagination(server.url, 'localhost', 'podUrl', 0, 15, function (err, res) { - if (err) throw err + // it('Should search all the localhost videos', function (done) { + // videosUtils.searchVideoWithPagination(server.url, 'localhost', 'host', 0, 15, function (err, res) { + // if (err) throw err - const videos = res.body.data - expect(res.body.total).to.equal(6) - expect(videos.length).to.equal(6) + // const videos = res.body.data + // expect(res.body.total).to.equal(6) + // expect(videos.length).to.equal(6) - done() - }) - }) + // done() + // }) + // }) - it('Should search the good magnetUri video', function (done) { + it('Should search the right magnetUri video', function (done) { const video = videosListBase[0] videosUtils.searchVideoWithPagination(server.url, encodeURIComponent(video.magnetUri), 'magnetUri', 0, 15, function (err, res) { if (err) throw err @@ -469,12 +537,12 @@ describe('Test a single pod', function () { const videos = res.body.data expect(res.body.total).to.equal(6) expect(videos.length).to.equal(6) - expect(videos[5].name === 'video_short.mp4 name') - expect(videos[4].name === 'video_short.ogv name') - expect(videos[3].name === 'video_short.webm name') - expect(videos[2].name === 'video_short1.webm name') - expect(videos[1].name === 'video_short2.webm name') - expect(videos[0].name === 'video_short3.webm name') + expect(videos[0].name).to.equal('video_short.webm name') + expect(videos[1].name).to.equal('video_short.ogv name') + expect(videos[2].name).to.equal('video_short.mp4 name') + expect(videos[3].name).to.equal('video_short3.webm name') + expect(videos[4].name).to.equal('video_short2.webm name') + expect(videos[5].name).to.equal('video_short1.webm name') done() }) @@ -488,15 +556,160 @@ describe('Test a single pod', function () { expect(res.body.total).to.equal(4) expect(videos.length).to.equal(4) - expect(videos[0].name === 'video_short.webm name') - expect(videos[1].name === 'video_short1.webm name') - expect(videos[2].name === 'video_short2.webm name') - expect(videos[3].name === 'video_short3.webm name') + expect(videos[0].name).to.equal('video_short1.webm name') + expect(videos[1].name).to.equal('video_short2.webm name') + expect(videos[2].name).to.equal('video_short3.webm name') + expect(videos[3].name).to.equal('video_short.webm name') + + videoId = videos[2].id done() }) }) + it('Should update a video', function (done) { + const attributes = { + name: 'my super video updated', + category: 4, + licence: 2, + description: 'my super description updated', + tags: [ 'tagup1', 'tagup2' ] + } + videosUtils.updateVideo(server.url, server.accessToken, videoId, attributes, done) + }) + + it('Should have the video updated', function (done) { + this.timeout(60000) + + videosUtils.getVideo(server.url, videoId, function (err, res) { + if (err) throw err + + const video = res.body + + 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') + expect(video.isLocal).to.be.true + expect(video.tags).to.deep.equal([ 'tagup1', 'tagup2' ]) + expect(miscsUtils.dateIsValid(video.createdAt)).to.be.true + expect(miscsUtils.dateIsValid(video.updatedAt)).to.be.true + + videosUtils.testVideoImage(server.url, 'video_short3.webm', video.thumbnailPath, function (err, test) { + if (err) throw err + expect(test).to.equal(true) + + webtorrent.add(video.magnetUri, function (torrent) { + expect(torrent.files).to.exist + expect(torrent.files.length).to.equal(1) + expect(torrent.files[0].path).to.exist.and.to.not.equal('') + + done() + }) + }) + }) + }) + + it('Should update only the tags of a video', function (done) { + const attributes = { + tags: [ 'tag1', 'tag2', 'supertag' ] + } + + videosUtils.updateVideo(server.url, server.accessToken, videoId, attributes, function (err) { + if (err) throw err + + videosUtils.getVideo(server.url, videoId, function (err, res) { + if (err) throw err + + const video = res.body + + 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') + expect(video.isLocal).to.be.true + expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'supertag' ]) + expect(miscsUtils.dateIsValid(video.createdAt)).to.be.true + expect(miscsUtils.dateIsValid(video.updatedAt)).to.be.true + + done() + }) + }) + }) + + it('Should update only the description of a video', function (done) { + const attributes = { + description: 'hello everybody' + } + + videosUtils.updateVideo(server.url, server.accessToken, videoId, attributes, function (err) { + if (err) throw err + + videosUtils.getVideo(server.url, videoId, function (err, res) { + if (err) throw err + + const video = res.body + + 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') + expect(video.isLocal).to.be.true + expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'supertag' ]) + expect(miscsUtils.dateIsValid(video.createdAt)).to.be.true + expect(miscsUtils.dateIsValid(video.updatedAt)).to.be.true + + done() + }) + }) + }) + + it('Should like a video', function (done) { + videosUtils.rateVideo(server.url, server.accessToken, videoId, 'like', function (err) { + if (err) throw err + + videosUtils.getVideo(server.url, videoId, function (err, res) { + if (err) throw err + + const video = res.body + + expect(video.likes).to.equal(1) + expect(video.dislikes).to.equal(0) + + done() + }) + }) + }) + + it('Should dislike the same video', function (done) { + videosUtils.rateVideo(server.url, server.accessToken, videoId, 'dislike', function (err) { + if (err) throw err + + videosUtils.getVideo(server.url, videoId, function (err, res) { + if (err) throw err + + const video = res.body + + expect(video.likes).to.equal(0) + expect(video.dislikes).to.equal(1) + + done() + }) + }) + }) + after(function (done) { process.kill(-server.app.pid)