X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fserver%2Ffollows.ts;h=9e5aa00c75f1323129991f28c65efb13ce0f6225;hb=693c6586cb896a84ff0f897b1c242bcf7bdcbaee;hp=60dbe2e6db07510d1bfd9b13392297c9d87a34ef;hpb=c883db6d038a8510205f5f13ef46fb5a1c9e8288;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/server/follows.ts b/server/tests/api/server/follows.ts index 60dbe2e6d..9e5aa00c7 100644 --- a/server/tests/api/server/follows.ts +++ b/server/tests/api/server/follows.ts @@ -1,37 +1,35 @@ -/* tslint:disable:no-unused-expression */ +/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ -import * as chai from 'chai' import 'mocha' -import { Video, VideoPrivacy } from '../../../../shared/models/videos' -import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' -import { cleanupTests, completeVideoCheck, deleteVideoComment } from '../../../../shared/extra-utils' +import * as chai from 'chai' import { + addVideoCommentReply, + addVideoCommentThread, + cleanupTests, + completeVideoCheck, + createUser, + createVideoCaption, + dateIsValid, + deleteVideoComment, + expectAccountFollows, flushAndRunMultipleServers, - getVideosList, - ServerInfo, - setAccessTokensToServers, - uploadVideo -} from '../../../../shared/extra-utils/index' -import { dateIsValid } from '../../../../shared/extra-utils/miscs/miscs' -import { follow, getFollowersListPaginationAndSort, getFollowingListPaginationAndSort, - unfollow -} from '../../../../shared/extra-utils/server/follows' -import { expectAccountFollows } from '../../../../shared/extra-utils/users/accounts' -import { userLogin } from '../../../../shared/extra-utils/users/login' -import { createUser } from '../../../../shared/extra-utils/users/users' -import { - addVideoCommentReply, - addVideoCommentThread, getVideoCommentThreads, - getVideoThreadComments -} from '../../../../shared/extra-utils/videos/video-comments' -import { rateVideo } from '../../../../shared/extra-utils/videos/videos' -import { waitJobs } from '../../../../shared/extra-utils/server/jobs' -import { createVideoCaption, listVideoCaptions, testCaptionFile } from '../../../../shared/extra-utils/videos/video-captions' -import { VideoCaption } from '../../../../shared/models/videos/caption/video-caption.model' + getVideosList, + getVideoThreadComments, + listVideoCaptions, + rateVideo, + ServerInfo, + setAccessTokensToServers, + testCaptionFile, + unfollow, + uploadVideo, + userLogin, + waitJobs +} from '@shared/extra-utils' +import { Video, VideoCaption, VideoComment, VideoCommentThreadTree, VideoPrivacy } from '@shared/models' const expect = chai.expect @@ -78,14 +76,14 @@ describe('Test follows', function () { }) it('Should have 2 followings on server 1', async function () { - let res = await getFollowingListPaginationAndSort({ url: servers[ 0 ].url, start: 0, count: 1, sort: 'createdAt' }) + let res = await getFollowingListPaginationAndSort({ url: servers[0].url, start: 0, count: 1, sort: 'createdAt' }) let follows = res.body.data expect(res.body.total).to.equal(2) expect(follows).to.be.an('array') expect(follows.length).to.equal(1) - res = await getFollowingListPaginationAndSort({ url: servers[ 0 ].url, start: 1, count: 1, sort: 'createdAt' }) + res = await getFollowingListPaginationAndSort({ url: servers[0].url, start: 1, count: 1, sort: 'createdAt' }) follows = follows.concat(res.body.data) const server2Follow = follows.find(f => f.following.host === 'localhost:' + servers[1].port) @@ -101,7 +99,7 @@ describe('Test follows', function () { const sort = 'createdAt' const start = 0 const count = 1 - const url = servers[ 0 ].url + const url = servers[0].url { const search = ':' + servers[1].port @@ -112,7 +110,7 @@ describe('Test follows', function () { expect(res.body.total).to.equal(1) expect(follows.length).to.equal(1) - expect(follows[ 0 ].following.host).to.equal('localhost:' + servers[ 1 ].port) + expect(follows[0].following.host).to.equal('localhost:' + servers[1].port) } { @@ -170,9 +168,9 @@ describe('Test follows', function () { it('Should have 1 followers on server 2 and 3', async function () { for (const server of [ servers[1], servers[2] ]) { - let res = await getFollowersListPaginationAndSort({ url: server.url, start: 0, count: 1, sort: 'createdAt' }) + const res = await getFollowersListPaginationAndSort({ url: server.url, start: 0, count: 1, sort: 'createdAt' }) - let follows = res.body.data + const follows = res.body.data expect(res.body.total).to.equal(1) expect(follows).to.be.an('array') expect(follows.length).to.equal(1) @@ -181,7 +179,7 @@ describe('Test follows', function () { }) it('Should search/filter followers on server 2', async function () { - const url = servers[ 2 ].url + const url = servers[2].url const start = 0 const count = 5 const sort = 'createdAt' @@ -195,7 +193,7 @@ describe('Test follows', function () { expect(res.body.total).to.equal(1) expect(follows.length).to.equal(1) - expect(follows[ 0 ].following.host).to.equal('localhost:' + servers[ 2 ].port) + expect(follows[0].following.host).to.equal('localhost:' + servers[2].port) } { @@ -241,7 +239,7 @@ describe('Test follows', function () { }) it('Should have 0 followers on server 1', async function () { - const res = await getFollowersListPaginationAndSort({ url: servers[ 0 ].url, start: 0, count: 5, sort: 'createdAt' }) + const res = await getFollowersListPaginationAndSort({ url: servers[0].url, start: 0, count: 5, sort: 'createdAt' }) const follows = res.body.data expect(res.body.total).to.equal(0) @@ -271,8 +269,8 @@ describe('Test follows', function () { }) it('Should not follow server 3 on server 1 anymore', async function () { - const res = await getFollowingListPaginationAndSort({ url: servers[ 0 ].url, start: 0, count: 2, sort: 'createdAt' }) - let follows = res.body.data + const res = await getFollowingListPaginationAndSort({ url: servers[0].url, start: 0, count: 2, sort: 'createdAt' }) + const follows = res.body.data expect(res.body.total).to.equal(1) expect(follows).to.be.an('array') @@ -282,9 +280,9 @@ describe('Test follows', function () { }) it('Should not have server 1 as follower on server 3 anymore', async function () { - const res = await getFollowersListPaginationAndSort({ url: servers[ 2 ].url, start: 0, count: 1, sort: 'createdAt' }) + const res = await getFollowersListPaginationAndSort({ url: servers[2].url, start: 0, count: 1, sort: 'createdAt' }) - let follows = res.body.data + const follows = res.body.data expect(res.body.total).to.equal(0) expect(follows).to.be.an('array') expect(follows.length).to.equal(0) @@ -302,7 +300,7 @@ describe('Test follows', function () { }) it('Should upload a video on server 2 and 3 and propagate only the video of server 2', async function () { - this.timeout(35000) + this.timeout(60000) await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'server2' }) await uploadVideo(servers[2].url, servers[2].accessToken, { name: 'server3' }) @@ -326,7 +324,7 @@ describe('Test follows', function () { let video4: Video before(async function () { - this.timeout(20000) + this.timeout(50000) const video4Attributes = { name: 'server3-4', @@ -336,59 +334,59 @@ describe('Test follows', function () { tags: [ 'tag1', 'tag2', 'tag3' ] } - await uploadVideo(servers[ 2 ].url, servers[ 2 ].accessToken, { name: 'server3-2' }) - await uploadVideo(servers[ 2 ].url, servers[ 2 ].accessToken, { name: 'server3-3' }) - await uploadVideo(servers[ 2 ].url, servers[ 2 ].accessToken, video4Attributes) - await uploadVideo(servers[ 2 ].url, servers[ 2 ].accessToken, { name: 'server3-5' }) - await uploadVideo(servers[ 2 ].url, servers[ 2 ].accessToken, { name: 'server3-6' }) + await uploadVideo(servers[2].url, servers[2].accessToken, { name: 'server3-2' }) + await uploadVideo(servers[2].url, servers[2].accessToken, { name: 'server3-3' }) + await uploadVideo(servers[2].url, servers[2].accessToken, video4Attributes) + await uploadVideo(servers[2].url, servers[2].accessToken, { name: 'server3-5' }) + await uploadVideo(servers[2].url, servers[2].accessToken, { name: 'server3-6' }) { const user = { username: 'captain', password: 'password' } - await createUser({ url: servers[ 2 ].url, accessToken: servers[ 2 ].accessToken, username: user.username, password: user.password }) - const userAccessToken = await userLogin(servers[ 2 ], user) + await createUser({ url: servers[2].url, accessToken: servers[2].accessToken, username: user.username, password: user.password }) + const userAccessToken = await userLogin(servers[2], user) - const resVideos = await getVideosList(servers[ 2 ].url) + const resVideos = await getVideosList(servers[2].url) video4 = resVideos.body.data.find(v => v.name === 'server3-4') { - await rateVideo(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, 'like') - await rateVideo(servers[ 2 ].url, userAccessToken, video4.id, 'dislike') + await rateVideo(servers[2].url, servers[2].accessToken, video4.id, 'like') + await rateVideo(servers[2].url, userAccessToken, video4.id, 'dislike') } { { const text = 'my super first comment' - const res = await addVideoCommentThread(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, text) + const res = await addVideoCommentThread(servers[2].url, servers[2].accessToken, video4.id, text) const threadId = res.body.comment.id const text1 = 'my super answer to thread 1' - const childCommentRes = await addVideoCommentReply(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, threadId, text1) + const childCommentRes = await addVideoCommentReply(servers[2].url, servers[2].accessToken, video4.id, threadId, text1) const childCommentId = childCommentRes.body.comment.id const text2 = 'my super answer to answer of thread 1' - await addVideoCommentReply(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, childCommentId, text2) + await addVideoCommentReply(servers[2].url, servers[2].accessToken, video4.id, childCommentId, text2) const text3 = 'my second answer to thread 1' - await addVideoCommentReply(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, threadId, text3) + await addVideoCommentReply(servers[2].url, servers[2].accessToken, video4.id, threadId, text3) } { const text = 'will be deleted' - const res = await addVideoCommentThread(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, text) + const res = await addVideoCommentThread(servers[2].url, servers[2].accessToken, video4.id, text) const threadId = res.body.comment.id const text1 = 'answer to deleted' - await addVideoCommentReply(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, threadId, text1) + await addVideoCommentReply(servers[2].url, servers[2].accessToken, video4.id, threadId, text1) const text2 = 'will also be deleted' - const childCommentRes = await addVideoCommentReply(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, threadId, text2) + const childCommentRes = await addVideoCommentReply(servers[2].url, servers[2].accessToken, video4.id, threadId, text2) const childCommentId = childCommentRes.body.comment.id const text3 = 'my second answer to deleted' - await addVideoCommentReply(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, childCommentId, text3) + await addVideoCommentReply(servers[2].url, servers[2].accessToken, video4.id, childCommentId, text3) - await deleteVideoComment(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, threadId) - await deleteVideoComment(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, childCommentId) + await deleteVideoComment(servers[2].url, servers[2].accessToken, video4.id, threadId) + await deleteVideoComment(servers[2].url, servers[2].accessToken, video4.id, childCommentId) } } @@ -406,7 +404,7 @@ describe('Test follows', function () { await waitJobs(servers) // Server 1 follows server 3 - await follow(servers[ 0 ].url, [ servers[ 2 ].url ], servers[ 0 ].accessToken) + await follow(servers[0].url, [ servers[2].url ], servers[0].accessToken) await waitJobs(servers) }) @@ -419,12 +417,12 @@ describe('Test follows', function () { await expectAccountFollows(servers[1].url, 'peertube@localhost:' + servers[0].port, 0, 1) await expectAccountFollows(servers[1].url, 'peertube@localhost:' + servers[1].port, 1, 0) - await expectAccountFollows(servers[2].url, 'peertube@localhost:' + servers[0].port, 0, 2) + await expectAccountFollows(servers[2].url, 'peertube@localhost:' + servers[0].port, 0, 1) await expectAccountFollows(servers[2].url, 'peertube@localhost:' + servers[2].port, 1, 0) }) it('Should have propagated videos', async function () { - const res = await getVideosList(servers[ 0 ].url) + const res = await getVideosList(servers[0].url) expect(res.body.total).to.equal(7) const video2 = res.body.data.find(v => v.name === 'server3-2') @@ -470,7 +468,7 @@ describe('Test follows', function () { } ] } - await completeVideoCheck(servers[ 0 ].url, video4, checkAttributes) + await completeVideoCheck(servers[0].url, video4, checkAttributes) }) it('Should have propagated comments', async function () { @@ -481,34 +479,34 @@ describe('Test follows', function () { expect(res1.body.data).to.have.lengthOf(2) { - const comment: VideoComment = res1.body.data[ 0 ] + const comment: VideoComment = res1.body.data[0] expect(comment.inReplyToCommentId).to.be.null expect(comment.text).equal('my super first comment') expect(comment.videoId).to.equal(video4.id) expect(comment.id).to.equal(comment.threadId) expect(comment.account.name).to.equal('root') - expect(comment.account.host).to.equal('localhost:' + servers[ 2 ].port) + expect(comment.account.host).to.equal('localhost:' + servers[2].port) expect(comment.totalReplies).to.equal(3) expect(dateIsValid(comment.createdAt as string)).to.be.true expect(dateIsValid(comment.updatedAt as string)).to.be.true const threadId = comment.threadId - const res2 = await getVideoThreadComments(servers[ 0 ].url, video4.id, threadId) + const res2 = await getVideoThreadComments(servers[0].url, video4.id, threadId) const tree: VideoCommentThreadTree = res2.body expect(tree.comment.text).equal('my super first comment') expect(tree.children).to.have.lengthOf(2) - const firstChild = tree.children[ 0 ] + const firstChild = tree.children[0] expect(firstChild.comment.text).to.equal('my super answer to thread 1') expect(firstChild.children).to.have.lengthOf(1) - const childOfFirstChild = firstChild.children[ 0 ] + const childOfFirstChild = firstChild.children[0] expect(childOfFirstChild.comment.text).to.equal('my super answer to answer of thread 1') expect(childOfFirstChild.children).to.have.lengthOf(0) - const secondChild = tree.children[ 1 ] + const secondChild = tree.children[1] expect(secondChild.comment.text).to.equal('my second answer to thread 1') expect(secondChild.children).to.have.lengthOf(0) } @@ -521,7 +519,7 @@ describe('Test follows', function () { expect(deletedComment.text).to.equal('') expect(deletedComment.inReplyToCommentId).to.be.null expect(deletedComment.account).to.be.null - expect(deletedComment.totalReplies).to.equal(3) + expect(deletedComment.totalReplies).to.equal(2) expect(dateIsValid(deletedComment.deletedAt as string)).to.be.true const res2 = await getVideoThreadComments(servers[0].url, video4.id, deletedComment.threadId) @@ -558,7 +556,7 @@ describe('Test follows', function () { const caption1: VideoCaption = res.body.data[0] expect(caption1.language.id).to.equal('ar') expect(caption1.language.label).to.equal('Arabic') - expect(caption1.captionPath).to.equal('/static/video-captions/' + video4.uuid + '-ar.vtt') + expect(caption1.captionPath).to.match(new RegExp('^/lazy-static/video-captions/.+-ar.vtt$')) await testCaptionFile(servers[0].url, caption1.captionPath, 'Subtitle good 2.') }) @@ -569,7 +567,7 @@ describe('Test follows', function () { await waitJobs(servers) - let res = await getVideosList(servers[ 0 ].url) + const res = await getVideosList(servers[0].url) expect(res.body.total).to.equal(1) })