import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
import {
- addVideoChannel, completeVideoCheck, createUser, dateIsValid, doubleFollow, flushAndRunMultipleServers, flushTests, getVideo,
- getVideoChannelsList, getVideosList, killallServers, rateVideo, removeVideo, ServerInfo, setAccessTokensToServers, testVideoImage,
- updateVideo, uploadVideo, userLogin, viewVideo, wait, webtorrentAdd
+ addVideoChannel,
+ checkVideoFilesWereRemoved,
+ completeVideoCheck,
+ createUser,
+ dateIsValid,
+ doubleFollow,
+ flushAndRunMultipleServers,
+ flushTests, getLocalVideos,
+ getVideo,
+ getVideoChannelsList,
+ getVideosList,
+ killallServers,
+ rateVideo,
+ removeVideo,
+ ServerInfo,
+ setAccessTokensToServers,
+ testImage,
+ updateVideo,
+ uploadVideo,
+ userLogin,
+ viewVideo,
+ wait,
+ webtorrentAdd
} from '../../utils'
import {
- addVideoCommentReply, addVideoCommentThread, getVideoCommentThreads,
+ addVideoCommentReply,
+ addVideoCommentThread,
+ deleteVideoComment,
+ getVideoCommentThreads,
getVideoThreadComments
} from '../../utils/videos/video-comments'
language: 9,
nsfw: true,
description: 'my super description for server 1',
+ support: 'my super support text for server 1',
tags: [ 'tag1p1', 'tag2p1' ],
channelId: videoChannelId,
fixture: 'video_short1.webm'
language: 9,
nsfw: true,
description: 'my super description for server 1',
- host: 'localhost:9001',
- account: 'root',
+ support: 'my super support text for server 1',
+ account: {
+ name: 'root',
+ host: 'localhost:9001'
+ },
isLocal,
duration: 10,
tags: [ 'tag1p1', 'tag2p1' ],
language: 11,
nsfw: true,
description: 'my super description for server 2',
+ support: 'my super support text for server 2',
tags: [ 'tag1p2', 'tag2p2', 'tag3p2' ],
- fixture: 'video_short2.webm'
+ fixture: 'video_short2.webm',
+ thumbnailfile: 'thumbnail.jpg',
+ previewfile: 'preview.jpg'
}
await uploadVideo(servers[1].url, userAccessToken, videoAttributes)
language: 11,
nsfw: true,
description: 'my super description for server 2',
- host: 'localhost:9002',
- account: 'user1',
+ support: 'my super support text for server 2',
+ account: {
+ name: 'user1',
+ host: 'localhost:9002'
+ },
isLocal,
commentsEnabled: true,
duration: 5,
resolution: 720,
size: 710000
}
- ]
+ ],
+ thumbnailfile: 'thumbnail',
+ previewfile: 'preview'
}
const res = await getVideosList(server.url)
language: 11,
nsfw: true,
description: 'my super description for server 3',
+ support: 'my super support text for server 3',
tags: [ 'tag1p3' ],
fixture: 'video_short3.webm'
}
language: 12,
nsfw: false,
description: 'my super description for server 3-2',
+ support: 'my super support text for server 3-2',
tags: [ 'tag2p3', 'tag3p3', 'tag4p3' ],
fixture: 'video_short.webm'
}
language: 11,
nsfw: true,
description: 'my super description for server 3',
- host: 'localhost:9003',
- account: 'root',
+ support: 'my super support text for server 3',
+ account: {
+ name: 'root',
+ host: 'localhost:9003'
+ },
isLocal,
duration: 5,
commentsEnabled: true,
language: 12,
nsfw: false,
description: 'my super description for server 3-2',
- host: 'localhost:9003',
- account: 'root',
+ support: 'my super support text for server 3-2',
+ account: {
+ name: 'root',
+ host: 'localhost:9003'
+ },
commentsEnabled: true,
isLocal,
duration: 5,
})
})
+ describe('It should list local videos', function () {
+ it('Should list only local videos on server 1', async function () {
+ const { body } = await getLocalVideos(servers[0].url)
+
+ expect(body.total).to.equal(1)
+ expect(body.data).to.be.an('array')
+ expect(body.data.length).to.equal(1)
+ expect(body.data[0].name).to.equal('my super name for server 1')
+ })
+
+ it('Should list only local videos on server 2', async function () {
+ const { body } = await getLocalVideos(servers[1].url)
+
+ expect(body.total).to.equal(1)
+ expect(body.data).to.be.an('array')
+ expect(body.data.length).to.equal(1)
+ expect(body.data[0].name).to.equal('my super name for server 2')
+ })
+
+ it('Should list only local videos on server 3', async function () {
+ const { body } = await getLocalVideos(servers[2].url)
+
+ expect(body.total).to.equal(2)
+ expect(body.data).to.be.an('array')
+ expect(body.data.length).to.equal(2)
+ expect(body.data[0].name).to.equal('my super name for server 3')
+ expect(body.data[1].name).to.equal('my super name for server 3-2')
+ })
+ })
+
describe('Should seed the uploaded video', function () {
it('Should add the file 1 by asking server 3', async function () {
this.timeout(10000)
})
it('Should view multiple videos on owned servers', async function () {
- this.timeout(10000)
+ this.timeout(15000)
const tasks: Promise<any>[] = []
- tasks.push(viewVideo(servers[2].url, localVideosServer3[0]))
- tasks.push(viewVideo(servers[2].url, localVideosServer3[0]))
- tasks.push(viewVideo(servers[2].url, localVideosServer3[0]))
- tasks.push(viewVideo(servers[2].url, localVideosServer3[1]))
+ await viewVideo(servers[2].url, localVideosServer3[0])
+ await viewVideo(servers[2].url, localVideosServer3[0])
+ await viewVideo(servers[2].url, localVideosServer3[0])
+ await viewVideo(servers[2].url, localVideosServer3[1])
await Promise.all(tasks)
+ await wait(1500)
+
+ await viewVideo(servers[2].url, localVideosServer3[0])
+
+ await wait(1500)
+
+ await viewVideo(servers[2].url, localVideosServer3[0])
await wait(5000)
it('Should like and dislikes videos on different services', async function () {
this.timeout(20000)
- const tasks: Promise<any>[] = []
- tasks.push(rateVideo(servers[0].url, servers[0].accessToken, remoteVideosServer1[0], 'like'))
- tasks.push(rateVideo(servers[0].url, servers[0].accessToken, remoteVideosServer1[0], 'dislike'))
- tasks.push(rateVideo(servers[0].url, servers[0].accessToken, remoteVideosServer1[0], 'like'))
- tasks.push(rateVideo(servers[2].url, servers[2].accessToken, localVideosServer3[1], 'like'))
- tasks.push(rateVideo(servers[2].url, servers[2].accessToken, localVideosServer3[1], 'dislike'))
- tasks.push(rateVideo(servers[2].url, servers[2].accessToken, remoteVideosServer3[1], 'dislike'))
- tasks.push(rateVideo(servers[2].url, servers[2].accessToken, remoteVideosServer3[0], 'like'))
-
- await Promise.all(tasks)
+ await rateVideo(servers[0].url, servers[0].accessToken, remoteVideosServer1[0], 'like')
+ await wait(200)
+ await rateVideo(servers[0].url, servers[0].accessToken, remoteVideosServer1[0], 'dislike')
+ await wait(200)
+ await rateVideo(servers[0].url, servers[0].accessToken, remoteVideosServer1[0], 'like')
+ await rateVideo(servers[2].url, servers[2].accessToken, localVideosServer3[1], 'like')
+ await wait(200)
+ await rateVideo(servers[2].url, servers[2].accessToken, localVideosServer3[1], 'dislike')
+ await rateVideo(servers[2].url, servers[2].accessToken, remoteVideosServer3[1], 'dislike')
+ await wait(200)
+ await rateVideo(servers[2].url, servers[2].accessToken, remoteVideosServer3[0], 'like')
await wait(10000)
language: 13,
nsfw: true,
description: 'my super description updated',
- tags: [ 'tag_up_1', 'tag_up_2' ]
+ support: 'my super support text updated',
+ tags: [ 'tag_up_1', 'tag_up_2' ],
+ thumbnailfile: 'thumbnail.jpg',
+ previewfile: 'preview.jpg'
}
await updateVideo(servers[2].url, servers[2].accessToken, toRemove[0].id, attributes)
language: 13,
nsfw: true,
description: 'my super description updated',
- host: 'localhost:9003',
- account: 'root',
+ support: 'my super support text updated',
+ account: {
+ name: 'root',
+ host: 'localhost:9003'
+ },
isLocal,
duration: 5,
commentsEnabled: true,
resolution: 720,
size: 292677
}
- ]
+ ],
+ thumbnailfile: 'thumbnail',
+ previewfile: 'preview'
}
await completeVideoCheck(server.url, videoUpdated, checkAttributes)
}
await wait(5000)
})
+ it('Should not have files of videos 3 and 3-2 on each server', async function () {
+ for (const server of servers) {
+ await checkVideoFilesWereRemoved(toRemove[0].uuid, server.serverNumber)
+ await checkVideoFilesWereRemoved(toRemove[1].uuid, server.serverNumber)
+ }
+ })
+
it('Should have videos 1 and 3 on each server', async function () {
for (const server of servers) {
const res = await getVideosList(server.url)
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)
}
})
const res = await getVideo(server.url, videoUUID)
const video = res.body
- const test = await testVideoImage(server.url, 'video_short1-preview.webm', video.previewPath)
- expect(test).to.equal(true)
+ await testImage(server.url, 'video_short1-preview.webm', video.previewPath)
}
})
})
}
})
+ it('Should delete the thread comments', async function () {
+ this.timeout(10000)
+
+ const res1 = await getVideoCommentThreads(servers[0].url, videoUUID, 0, 5)
+ const threadId = res1.body.data.find(c => c.text === 'my super first comment').id
+ await deleteVideoComment(servers[0].url, servers[0].accessToken, videoUUID, threadId)
+
+ await wait(5000)
+ })
+
+ it('Should have the thread comments deleted on other servers too', async function () {
+ for (const server of servers) {
+ const res = await getVideoCommentThreads(server.url, videoUUID, 0, 5)
+
+ expect(res.body.total).to.equal(1)
+ expect(res.body.data).to.be.an('array')
+ expect(res.body.data).to.have.lengthOf(1)
+
+ {
+ const comment: VideoComment = res.body.data[0]
+ expect(comment).to.not.be.undefined
+ expect(comment.inReplyToCommentId).to.be.null
+ expect(comment.account.name).to.equal('root')
+ expect(comment.account.host).to.equal('localhost:9003')
+ expect(comment.totalReplies).to.equal(0)
+ expect(dateIsValid(comment.createdAt as string)).to.be.true
+ expect(dateIsValid(comment.updatedAt as string)).to.be.true
+ }
+ }
+ })
+
it('Should disable comments', async function () {
this.timeout(20000)
language: null,
nsfw: false,
description: null,
- host: 'localhost:9002',
- account: 'root',
+ support: null,
+ account: {
+ name: 'root',
+ host: 'localhost:9002'
+ },
isLocal,
duration: 5,
commentsEnabled: true,