X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fserver%2Ffollows.ts;h=e80e93e7f5b33e8a5ced35831f1d977334b0bc42;hb=8d4273463fb19d503b1aa0a32dc289f292ed614e;hp=311631aae6baa3cfdb2284ef31c5fc3f58bdac2a;hpb=b1f5b93e4f1a9ae9015463c9a4946722ed87ec2e;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/server/follows.ts b/server/tests/api/server/follows.ts index 311631aae..e80e93e7f 100644 --- a/server/tests/api/server/follows.ts +++ b/server/tests/api/server/follows.ts @@ -5,20 +5,29 @@ import 'mocha' import { Video, VideoPrivacy } from '../../../../shared/models/videos' import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' import { completeVideoCheck } from '../../utils' - import { - flushAndRunMultipleServers, flushTests, getVideosList, killallServers, ServerInfo, setAccessTokensToServers, uploadVideo, - wait + flushAndRunMultipleServers, + getVideosList, + killallServers, + ServerInfo, + setAccessTokensToServers, + uploadVideo } from '../../utils/index' -import { dateIsValid, webtorrentAdd } from '../../utils/miscs/miscs' +import { dateIsValid } from '../../utils/miscs/miscs' import { follow, getFollowersListPaginationAndSort, getFollowingListPaginationAndSort, unfollow } from '../../utils/server/follows' +import { expectAccountFollows } from '../../utils/users/accounts' import { userLogin } from '../../utils/users/login' import { createUser } from '../../utils/users/users' import { - addVideoCommentReply, addVideoCommentThread, getVideoCommentThreads, + addVideoCommentReply, + addVideoCommentThread, + getVideoCommentThreads, getVideoThreadComments } from '../../utils/videos/video-comments' -import { getVideo, rateVideo, testVideoImage } from '../../utils/videos/videos' +import { rateVideo } from '../../utils/videos/videos' +import { waitJobs } from '../../utils/server/jobs' +import { createVideoCaption, listVideoCaptions, testCaptionFile } from '../../utils/videos/video-captions' +import { VideoCaption } from '../../../../shared/models/videos/caption/video-caption.model' const expect = chai.expect @@ -26,7 +35,7 @@ describe('Test follows', function () { let servers: ServerInfo[] = [] before(async function () { - this.timeout(20000) + this.timeout(30000) servers = await flushAndRunMultipleServers(3) @@ -57,11 +66,11 @@ describe('Test follows', function () { }) it('Should have server 1 following server 2 and 3', async function () { - this.timeout(10000) + this.timeout(30000) await follow(servers[0].url, [ servers[1].url, servers[2].url ], servers[0].accessToken) - await wait(7000) + await waitJobs(servers) }) it('Should have 2 followings on server 1', async function () { @@ -84,7 +93,26 @@ describe('Test follows', function () { expect(server3Follow.state).to.equal('accepted') }) - it('Should have 0 followings on server 1 and 2', async function () { + it('Should search followings on server 1', async function () { + { + const res = await getFollowingListPaginationAndSort(servers[ 0 ].url, 0, 1, 'createdAt', ':9002') + const follows = res.body.data + + expect(res.body.total).to.equal(1) + expect(follows.length).to.equal(1) + expect(follows[ 0 ].following.host).to.equal('localhost:9002') + } + + { + const res = await getFollowingListPaginationAndSort(servers[ 0 ].url, 0, 1, 'createdAt', 'bla') + const follows = res.body.data + + expect(res.body.total).to.equal(0) + expect(follows.length).to.equal(0) + } + }) + + it('Should have 0 followings on server 2 and 3', async function () { for (const server of [ servers[1], servers[2] ]) { const res = await getFollowingListPaginationAndSort(server.url, 0, 5, 'createdAt') const follows = res.body.data @@ -107,6 +135,25 @@ describe('Test follows', function () { } }) + it('Should search followers on server 2', async function () { + { + const res = await getFollowersListPaginationAndSort(servers[ 2 ].url, 0, 5, 'createdAt', '9001') + const follows = res.body.data + + expect(res.body.total).to.equal(1) + expect(follows.length).to.equal(1) + expect(follows[ 0 ].following.host).to.equal('localhost:9003') + } + + { + const res = await getFollowersListPaginationAndSort(servers[ 2 ].url, 0, 5, 'createdAt', 'bla') + const follows = res.body.data + + expect(res.body.total).to.equal(0) + expect(follows.length).to.equal(0) + } + }) + it('Should have 0 followers on server 1', async function () { const res = await getFollowersListPaginationAndSort(servers[0].url, 0, 5, 'createdAt') const follows = res.body.data @@ -116,12 +163,25 @@ describe('Test follows', function () { expect(follows.length).to.equal(0) }) + it('Should have the correct follows counts', async function () { + await expectAccountFollows(servers[0].url, 'peertube@localhost:9001', 0, 2) + await expectAccountFollows(servers[0].url, 'peertube@localhost:9002', 1, 0) + await expectAccountFollows(servers[0].url, 'peertube@localhost:9003', 1, 0) + + // Server 2 and 3 does not know server 1 follow another server (there was not a refresh) + await expectAccountFollows(servers[1].url, 'peertube@localhost:9001', 0, 1) + await expectAccountFollows(servers[1].url, 'peertube@localhost:9002', 1, 0) + + await expectAccountFollows(servers[2].url, 'peertube@localhost:9001', 0, 1) + await expectAccountFollows(servers[2].url, 'peertube@localhost:9003', 1, 0) + }) + it('Should unfollow server 3 on server 1', async function () { this.timeout(5000) await unfollow(servers[0].url, servers[0].accessToken, servers[2]) - await wait(3000) + await waitJobs(servers) }) it('Should not follow server 3 on server 1 anymore', async function () { @@ -144,13 +204,24 @@ describe('Test follows', function () { expect(follows.length).to.equal(0) }) - it('Should upload a video on server 2 ans 3 and propagate only the video of server 2', async function () { - this.timeout(10000) + it('Should have the correct follows counts 2', async function () { + await expectAccountFollows(servers[0].url, 'peertube@localhost:9001', 0, 1) + await expectAccountFollows(servers[0].url, 'peertube@localhost:9002', 1, 0) + + await expectAccountFollows(servers[1].url, 'peertube@localhost:9001', 0, 1) + await expectAccountFollows(servers[1].url, 'peertube@localhost:9002', 1, 0) + + await expectAccountFollows(servers[2].url, 'peertube@localhost:9001', 0, 0) + await expectAccountFollows(servers[2].url, 'peertube@localhost:9003', 0, 0) + }) + + it('Should upload a video on server 2 and 3 and propagate only the video of server 2', async function () { + this.timeout(35000) await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'server2' }) await uploadVideo(servers[2].url, servers[2].accessToken, { name: 'server3' }) - await wait(5000) + await waitJobs(servers) let res = await getVideosList(servers[0].url) expect(res.body.total).to.equal(1) @@ -213,17 +284,39 @@ describe('Test follows', function () { const text3 = 'my second answer to thread 1' await addVideoCommentReply(servers[ 2 ].url, servers[ 2 ].accessToken, video4.id, threadId, text3) } + + { + await createVideoCaption({ + url: servers[2].url, + accessToken: servers[2].accessToken, + language: 'ar', + videoId: video4.id, + fixture: 'subtitle-good2.vtt' + }) + } } - await wait(5000) + await waitJobs(servers) // Server 1 follows server 3 await follow(servers[ 0 ].url, [ servers[ 2 ].url ], servers[ 0 ].accessToken) - await wait(7000) + await waitJobs(servers) + }) + + it('Should have the correct follows counts 3', async function () { + await expectAccountFollows(servers[0].url, 'peertube@localhost:9001', 0, 2) + await expectAccountFollows(servers[0].url, 'peertube@localhost:9002', 1, 0) + await expectAccountFollows(servers[0].url, 'peertube@localhost:9003', 1, 0) + + await expectAccountFollows(servers[1].url, 'peertube@localhost:9001', 0, 1) + await expectAccountFollows(servers[1].url, 'peertube@localhost:9002', 1, 0) + + await expectAccountFollows(servers[2].url, 'peertube@localhost:9001', 0, 2) + await expectAccountFollows(servers[2].url, 'peertube@localhost:9003', 1, 0) }) - it('Should propagate videos', async function () { + it('Should have propagated videos', async function () { const res = await getVideosList(servers[ 0 ].url) expect(res.body.total).to.equal(7) @@ -240,19 +333,24 @@ describe('Test follows', function () { name: 'server3-4', category: 2, licence: 6, - language: 3, + language: 'zh', nsfw: true, description: 'my super description', - host: 'localhost:9003', - account: 'root', + support: 'my super support text', + account: { + name: 'root', + host: 'localhost:9003' + }, isLocal, + commentsEnabled: true, duration: 5, tags: [ 'tag1', 'tag2', 'tag3' ], privacy: VideoPrivacy.PUBLIC, likes: 1, dislikes: 1, channel: { - name: 'Default root channel', + displayName: 'Main root channel', + name: 'root_channel', description: '', isLocal }, @@ -267,7 +365,7 @@ describe('Test follows', function () { await completeVideoCheck(servers[ 0 ].url, video4, checkAttributes) }) - it('Should propagate comments', async function () { + it('Should have propagated comments', async function () { const res1 = await getVideoCommentThreads(servers[0].url, video4.id, 0, 5) expect(res1.body.total).to.equal(1) @@ -305,14 +403,33 @@ describe('Test follows', function () { expect(secondChild.comment.text).to.equal('my second answer to thread 1') expect(secondChild.children).to.have.lengthOf(0) }) + + it('Should have propagated captions', async function () { + const res = await listVideoCaptions(servers[0].url, video4.id) + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + + 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') + await testCaptionFile(servers[0].url, caption1.captionPath, 'Subtitle good 2.') + }) + + it('Should unfollow server 3 on server 1 and does not list server 3 videos', async function () { + this.timeout(5000) + + await unfollow(servers[0].url, servers[0].accessToken, servers[2]) + + await waitJobs(servers) + + let res = await getVideosList(servers[ 0 ].url) + expect(res.body.total).to.equal(1) + }) + }) after(async function () { killallServers(servers) - - // Keep the logs if the test failed - if (this['ok']) { - await flushTests() - } }) })