From b64c950a1cb37da880fc14e8535f438c78b5b7f7 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 12 Mar 2018 11:06:15 +0100 Subject: Update videos api list for account --- server/models/video/video.ts | 32 +++++++------ server/tests/api/server/follows.ts | 6 ++- server/tests/api/server/handle-down.ts | 6 ++- server/tests/api/users/users.ts | 4 +- server/tests/api/videos/multiple-servers.ts | 73 ++++++++++++++++++++++------- server/tests/api/videos/services.ts | 4 +- server/tests/api/videos/single-server.ts | 42 ++++------------- server/tests/utils/server/servers.ts | 4 +- server/tests/utils/videos/videos.ts | 16 ++++--- 9 files changed, 107 insertions(+), 80 deletions(-) (limited to 'server') diff --git a/server/models/video/video.ts b/server/models/video/video.ts index 1b9d68073..0e5dd0d2f 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -40,7 +40,8 @@ import { isVideoLanguageValid, isVideoLicenceValid, isVideoNameValid, - isVideoPrivacyValid, isVideoSupportValid + isVideoPrivacyValid, + isVideoSupportValid } from '../../helpers/custom-validators/videos' import { generateImageFromVideoFile, getVideoFileResolution, transcode } from '../../helpers/ffmpeg-utils' import { logger } from '../../helpers/logger' @@ -125,13 +126,18 @@ enum ScopeNames { required: true, include: [ { - attributes: [ 'serverId' ], + attributes: [ 'preferredUsername', 'url', 'serverId' ], model: ActorModel.unscoped(), required: true, include: [ { attributes: [ 'host' ], - model: ServerModel.unscoped() + model: ServerModel.unscoped(), + required: false + }, + { + model: AvatarModel.unscoped(), + required: false } ] } @@ -872,14 +878,7 @@ export class VideoModel extends Model { } toFormattedJSON (): Video { - let serverHost - - if (this.VideoChannel.Account.Actor.Server) { - serverHost = this.VideoChannel.Account.Actor.Server.host - } else { - // It means it's our video - serverHost = CONFIG.WEBSERVER.HOST - } + const formattedAccount = this.VideoChannel.Account.toFormattedJSON() return { id: this.id, @@ -893,9 +892,7 @@ export class VideoModel extends Model { languageLabel: this.getLanguageLabel(), nsfw: this.nsfw, description: this.getTruncatedDescription(), - serverHost, isLocal: this.isOwned(), - accountName: this.VideoChannel.Account.name, duration: this.duration, views: this.views, likes: this.likes, @@ -904,7 +901,14 @@ export class VideoModel extends Model { previewPath: this.getPreviewPath(), embedPath: this.getEmbedPath(), createdAt: this.createdAt, - updatedAt: this.updatedAt + updatedAt: this.updatedAt, + account: { + name: formattedAccount.name, + displayName: formattedAccount.displayName, + url: formattedAccount.url, + host: formattedAccount.host, + avatar: formattedAccount.avatar + } } } diff --git a/server/tests/api/server/follows.ts b/server/tests/api/server/follows.ts index 19b843861..010b488d8 100644 --- a/server/tests/api/server/follows.ts +++ b/server/tests/api/server/follows.ts @@ -281,8 +281,10 @@ describe('Test follows', function () { nsfw: true, description: 'my super description', support: 'my super support text', - host: 'localhost:9003', - account: 'root', + account: { + name: 'root', + host: 'localhost:9003' + }, isLocal, commentsEnabled: true, duration: 5, diff --git a/server/tests/api/server/handle-down.ts b/server/tests/api/server/handle-down.ts index 84153b097..f5ff3e9e5 100644 --- a/server/tests/api/server/handle-down.ts +++ b/server/tests/api/server/handle-down.ts @@ -53,8 +53,10 @@ describe('Test handle downs', function () { nsfw: true, description: 'my super description for server 1', support: 'my super support text for server 1', - host: 'localhost:9001', - account: 'root', + account: { + name: 'root', + host: 'localhost:9001' + }, isLocal: false, duration: 10, tags: [ 'tag1p1', 'tag2p1' ], diff --git a/server/tests/api/users/users.ts b/server/tests/api/users/users.ts index c650a74f5..b6ab4f660 100644 --- a/server/tests/api/users/users.ts +++ b/server/tests/api/users/users.ts @@ -94,7 +94,7 @@ describe('Test users', function () { const res = await getVideosList(server.url) const video = res.body.data[ 0 ] - expect(video.accountName).to.equal('root') + expect(video.account.name).to.equal('root') videoId = video.id }) @@ -432,7 +432,7 @@ describe('Test users', function () { expect(res.body.total).to.equal(1) const video = res.body.data[ 0 ] - expect(video.accountName).to.equal('root') + expect(video.account.name).to.equal('root') }) it('Should register a new user', async function () { diff --git a/server/tests/api/videos/multiple-servers.ts b/server/tests/api/videos/multiple-servers.ts index 27c4c30b8..3f6b82c50 100644 --- a/server/tests/api/videos/multiple-servers.ts +++ b/server/tests/api/videos/multiple-servers.ts @@ -8,13 +8,35 @@ import { VideoPrivacy } from '../../../../shared/models/videos' import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' import { - addVideoChannel, checkVideoFilesWereRemoved, completeVideoCheck, createUser, dateIsValid, doubleFollow, flushAndRunMultipleServers, - flushTests, getVideo, - getVideoChannelsList, getVideosList, killallServers, rateVideo, removeVideo, ServerInfo, setAccessTokensToServers, testImage, - updateVideo, uploadVideo, userLogin, viewVideo, wait, webtorrentAdd + addVideoChannel, + checkVideoFilesWereRemoved, + completeVideoCheck, + createUser, + dateIsValid, + doubleFollow, + flushAndRunMultipleServers, + flushTests, + getVideo, + getVideoChannelsList, + getVideosList, + killallServers, + rateVideo, + removeVideo, + ServerInfo, + setAccessTokensToServers, + testImage, + updateVideo, + uploadVideo, + userLogin, + viewVideo, + wait, + webtorrentAdd } from '../../utils' import { - addVideoCommentReply, addVideoCommentThread, deleteVideoComment, getVideoCommentThreads, + addVideoCommentReply, + addVideoCommentThread, + deleteVideoComment, + getVideoCommentThreads, getVideoThreadComments } from '../../utils/videos/video-comments' @@ -90,8 +112,10 @@ describe('Test multiple servers', function () { nsfw: true, description: 'my super description for server 1', support: 'my super support text for server 1', - host: 'localhost:9001', - account: 'root', + account: { + name: 'root', + host: 'localhost:9001' + }, isLocal, duration: 10, tags: [ 'tag1p1', 'tag2p1' ], @@ -160,8 +184,10 @@ describe('Test multiple servers', function () { nsfw: true, description: 'my super description for server 2', support: 'my super support text for server 2', - host: 'localhost:9002', - account: 'user1', + account: { + name: 'user1', + host: 'localhost:9002' + }, isLocal, commentsEnabled: true, duration: 5, @@ -264,8 +290,10 @@ describe('Test multiple servers', function () { nsfw: true, description: 'my super description for server 3', support: 'my super support text for server 3', - host: 'localhost:9003', - account: 'root', + account: { + name: 'root', + host: 'localhost:9003' + }, isLocal, duration: 5, commentsEnabled: true, @@ -294,8 +322,10 @@ describe('Test multiple servers', function () { nsfw: false, description: 'my super description for server 3-2', support: 'my super support text for server 3-2', - host: 'localhost:9003', - account: 'root', + account: { + name: 'root', + host: 'localhost:9003' + }, commentsEnabled: true, isLocal, duration: 5, @@ -570,8 +600,10 @@ describe('Test multiple servers', function () { nsfw: true, description: 'my super description updated', support: 'my super support text updated', - host: 'localhost:9003', - account: 'root', + account: { + name: 'root', + host: 'localhost:9003' + }, isLocal, duration: 5, commentsEnabled: true, @@ -648,7 +680,10 @@ describe('Test multiple servers', function () { expect(baseVideo.licence).to.equal(video.licence) expect(baseVideo.category).to.equal(video.category) expect(baseVideo.nsfw).to.equal(video.nsfw) - expect(baseVideo.accountName).to.equal(video.accountName) + expect(baseVideo.account.name).to.equal(video.account.name) + expect(baseVideo.account.displayName).to.equal(video.account.displayName) + expect(baseVideo.account.url).to.equal(video.account.url) + expect(baseVideo.account.host).to.equal(video.account.host) expect(baseVideo.tags).to.deep.equal(video.tags) } }) @@ -859,8 +894,10 @@ describe('Test multiple servers', function () { nsfw: false, description: null, support: null, - host: 'localhost:9002', - account: 'root', + account: { + name: 'root', + host: 'localhost:9002' + }, isLocal, duration: 5, commentsEnabled: true, diff --git a/server/tests/api/videos/services.ts b/server/tests/api/videos/services.ts index e456184cf..45b4a1a81 100644 --- a/server/tests/api/videos/services.ts +++ b/server/tests/api/videos/services.ts @@ -38,7 +38,7 @@ describe('Test services', function () { expect(res.body.html).to.equal(expectedHtml) expect(res.body.title).to.equal(server.video.name) - expect(res.body.author_name).to.equal(server.video.accountName) + expect(res.body.author_name).to.equal(server.video.account.name) expect(res.body.width).to.equal(560) expect(res.body.height).to.equal(315) expect(res.body.thumbnail_url).to.equal(expectedThumbnailUrl) @@ -58,7 +58,7 @@ describe('Test services', function () { expect(res.body.html).to.equal(expectedHtml) expect(res.body.title).to.equal(server.video.name) - expect(res.body.author_name).to.equal(server.video.accountName) + expect(res.body.author_name).to.equal(server.video.account.name) expect(res.body.height).to.equal(50) expect(res.body.width).to.equal(50) expect(res.body).to.not.have.property('thumbnail_url') diff --git a/server/tests/api/videos/single-server.ts b/server/tests/api/videos/single-server.ts index cf2721838..7c4bdf8bc 100644 --- a/server/tests/api/videos/single-server.ts +++ b/server/tests/api/videos/single-server.ts @@ -27,8 +27,10 @@ describe('Test a single server', function () { nsfw: true, description: 'my super description', support: 'my super support text', - host: 'localhost:9001', - account: 'root', + account: { + name: 'root', + host: 'localhost:9001' + }, isLocal: true, duration: 5, tags: [ 'tag1', 'tag2', 'tag3' ], @@ -56,8 +58,10 @@ describe('Test a single server', function () { nsfw: false, description: 'my super description updated', support: 'my super support text updated', - host: 'localhost:9001', - account: 'root', + account: { + name: 'root', + host: 'localhost:9001' + }, isLocal: true, tags: [ 'tagup1', 'tagup2' ], privacy: VideoPrivacy.PUBLIC, @@ -204,32 +208,6 @@ describe('Test a single server', function () { await completeVideoCheck(server.url, video, getCheckAttributes) }) - // Not implemented yet - // it('Should search the video by serverHost', async function () { - // const res = await videosUtils.searchVideo(server.url, '9001', 'host') - - // 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.serverHost).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(dateIsValid(video.createdAt)).to.be.true - // expect(dateIsValid(video.updatedAt)).to.be.true - - // const test = await testVideoImage(server.url, 'video_short.webm', video.thumbnailPath) - // expect(test).to.equal(true) - - // done() - // }) - // }) - // }) - // Not implemented yet // it('Should search the video by tag', async function () { // const res = await searchVideo(server.url, 'tag1') @@ -248,8 +226,8 @@ describe('Test a single server', function () { // expect(video.languageLabel).to.equal('Mandarin') // expect(video.nsfw).to.be.ok // expect(video.description).to.equal('my super description') - // expect(video.serverHost).to.equal('localhost:9001') - // expect(video.accountName).to.equal('root') + // expect(video.account.name).to.equal('root') + // expect(video.account.host).to.equal('localhost:9001') // expect(video.isLocal).to.be.true // expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ]) // expect(dateIsValid(video.createdAt)).to.be.true diff --git a/server/tests/utils/server/servers.ts b/server/tests/utils/server/servers.ts index 878efe91a..8373c73ab 100644 --- a/server/tests/utils/server/servers.ts +++ b/server/tests/utils/server/servers.ts @@ -24,7 +24,9 @@ interface ServerInfo { id: number uuid: string name: string - accountName: string + account: { + name: string + } } remoteVideo?: { diff --git a/server/tests/utils/videos/videos.ts b/server/tests/utils/videos/videos.ts index a06078d40..4b57f24b5 100644 --- a/server/tests/utils/videos/videos.ts +++ b/server/tests/utils/videos/videos.ts @@ -368,8 +368,10 @@ async function completeVideoCheck ( commentsEnabled: boolean description: string support: string - host: string - account: string + account: { + name: string + host: string + } isLocal: boolean, tags: string[], privacy: number, @@ -402,8 +404,8 @@ async function completeVideoCheck ( expect(video.languageLabel).to.equal(VIDEO_LANGUAGES[attributes.language] || 'Unknown') expect(video.nsfw).to.equal(attributes.nsfw) expect(video.description).to.equal(attributes.description) - expect(video.serverHost).to.equal(attributes.host) - expect(video.accountName).to.equal(attributes.account) + expect(video.account.host).to.equal(attributes.account.host) + expect(video.account.name).to.equal(attributes.account.name) expect(video.likes).to.equal(attributes.likes) expect(video.dislikes).to.equal(attributes.dislikes) expect(video.isLocal).to.equal(attributes.isLocal) @@ -433,12 +435,12 @@ async function completeVideoCheck ( let extension = extname(attributes.fixture) // Transcoding enabled on server 2, extension will always be .mp4 - if (attributes.host === 'localhost:9002') extension = '.mp4' + if (attributes.account.host === 'localhost:9002') extension = '.mp4' const magnetUri = file.magnetUri expect(file.magnetUri).to.have.lengthOf.above(2) - expect(file.torrentUrl).to.equal(`http://${attributes.host}/static/torrents/${videoDetails.uuid}-${file.resolution}.torrent`) - expect(file.fileUrl).to.equal(`http://${attributes.host}/static/webseed/${videoDetails.uuid}-${file.resolution}${extension}`) + expect(file.torrentUrl).to.equal(`http://${attributes.account.host}/static/torrents/${videoDetails.uuid}-${file.resolution}.torrent`) + expect(file.fileUrl).to.equal(`http://${attributes.account.host}/static/webseed/${videoDetails.uuid}-${file.resolution}${extension}`) expect(file.resolution).to.equal(attributeFile.resolution) expect(file.resolutionLabel).to.equal(attributeFile.resolution + 'p') -- cgit v1.2.3