1 /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
3 import * as chai from 'chai'
8 flushAndRunMultipleServers,
11 getVideoChannelVideos,
14 setAccessTokensToServers,
16 } from '../../../../shared/extra-utils'
17 import { unfollow } from '../../../../shared/extra-utils/server/follows'
18 import { userLogin } from '../../../../shared/extra-utils/users/login'
19 import { createUser } from '../../../../shared/extra-utils/users/users'
20 import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
22 const expect = chai.expect
24 describe('Test follow constraints', function () {
25 let servers: ServerInfo[] = []
26 let video1UUID: string
27 let video2UUID: string
28 let userAccessToken: string
30 before(async function () {
33 servers = await flushAndRunMultipleServers(2)
35 // Get the access tokens
36 await setAccessTokensToServers(servers)
39 const res = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video server 1' })
40 video1UUID = res.body.video.uuid
43 const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video server 2' })
44 video2UUID = res.body.video.uuid
49 password: 'super_password'
51 await createUser({ url: servers[0].url, accessToken: servers[0].accessToken, username: user.username, password: user.password })
52 userAccessToken = await userLogin(servers[0], user)
54 await doubleFollow(servers[0], servers[1])
57 describe('With a followed instance', function () {
59 describe('With an unlogged user', function () {
61 it('Should get the local video', async function () {
62 await getVideo(servers[0].url, video1UUID, HttpStatusCode.OK_200)
65 it('Should get the remote video', async function () {
66 await getVideo(servers[0].url, video2UUID, HttpStatusCode.OK_200)
69 it('Should list local account videos', async function () {
70 const res = await getAccountVideos(servers[0].url, undefined, 'root@localhost:' + servers[0].port, 0, 5)
72 expect(res.body.total).to.equal(1)
73 expect(res.body.data).to.have.lengthOf(1)
76 it('Should list remote account videos', async function () {
77 const res = await getAccountVideos(servers[0].url, undefined, 'root@localhost:' + servers[1].port, 0, 5)
79 expect(res.body.total).to.equal(1)
80 expect(res.body.data).to.have.lengthOf(1)
83 it('Should list local channel videos', async function () {
84 const videoChannelName = 'root_channel@localhost:' + servers[0].port
85 const res = await getVideoChannelVideos(servers[0].url, undefined, videoChannelName, 0, 5)
87 expect(res.body.total).to.equal(1)
88 expect(res.body.data).to.have.lengthOf(1)
91 it('Should list remote channel videos', async function () {
92 const videoChannelName = 'root_channel@localhost:' + servers[1].port
93 const res = await getVideoChannelVideos(servers[0].url, undefined, videoChannelName, 0, 5)
95 expect(res.body.total).to.equal(1)
96 expect(res.body.data).to.have.lengthOf(1)
100 describe('With a logged user', function () {
101 it('Should get the local video', async function () {
102 await getVideoWithToken(servers[0].url, userAccessToken, video1UUID, HttpStatusCode.OK_200)
105 it('Should get the remote video', async function () {
106 await getVideoWithToken(servers[0].url, userAccessToken, video2UUID, HttpStatusCode.OK_200)
109 it('Should list local account videos', async function () {
110 const res = await getAccountVideos(servers[0].url, userAccessToken, 'root@localhost:' + servers[0].port, 0, 5)
112 expect(res.body.total).to.equal(1)
113 expect(res.body.data).to.have.lengthOf(1)
116 it('Should list remote account videos', async function () {
117 const res = await getAccountVideos(servers[0].url, userAccessToken, 'root@localhost:' + servers[1].port, 0, 5)
119 expect(res.body.total).to.equal(1)
120 expect(res.body.data).to.have.lengthOf(1)
123 it('Should list local channel videos', async function () {
124 const videoChannelName = 'root_channel@localhost:' + servers[0].port
125 const res = await getVideoChannelVideos(servers[0].url, userAccessToken, videoChannelName, 0, 5)
127 expect(res.body.total).to.equal(1)
128 expect(res.body.data).to.have.lengthOf(1)
131 it('Should list remote channel videos', async function () {
132 const videoChannelName = 'root_channel@localhost:' + servers[1].port
133 const res = await getVideoChannelVideos(servers[0].url, userAccessToken, videoChannelName, 0, 5)
135 expect(res.body.total).to.equal(1)
136 expect(res.body.data).to.have.lengthOf(1)
141 describe('With a non followed instance', function () {
143 before(async function () {
146 await unfollow(servers[0].url, servers[0].accessToken, servers[1])
149 describe('With an unlogged user', function () {
151 it('Should get the local video', async function () {
152 await getVideo(servers[0].url, video1UUID, HttpStatusCode.OK_200)
155 it('Should not get the remote video', async function () {
156 await getVideo(servers[0].url, video2UUID, HttpStatusCode.FORBIDDEN_403)
159 it('Should list local account videos', async function () {
160 const res = await getAccountVideos(servers[0].url, undefined, 'root@localhost:' + servers[0].port, 0, 5)
162 expect(res.body.total).to.equal(1)
163 expect(res.body.data).to.have.lengthOf(1)
166 it('Should not list remote account videos', async function () {
167 const res = await getAccountVideos(servers[0].url, undefined, 'root@localhost:' + servers[1].port, 0, 5)
169 expect(res.body.total).to.equal(0)
170 expect(res.body.data).to.have.lengthOf(0)
173 it('Should list local channel videos', async function () {
174 const videoChannelName = 'root_channel@localhost:' + servers[0].port
175 const res = await getVideoChannelVideos(servers[0].url, undefined, videoChannelName, 0, 5)
177 expect(res.body.total).to.equal(1)
178 expect(res.body.data).to.have.lengthOf(1)
181 it('Should not list remote channel videos', async function () {
182 const videoChannelName = 'root_channel@localhost:' + servers[1].port
183 const res = await getVideoChannelVideos(servers[0].url, undefined, videoChannelName, 0, 5)
185 expect(res.body.total).to.equal(0)
186 expect(res.body.data).to.have.lengthOf(0)
190 describe('With a logged user', function () {
191 it('Should get the local video', async function () {
192 await getVideoWithToken(servers[0].url, userAccessToken, video1UUID, HttpStatusCode.OK_200)
195 it('Should get the remote video', async function () {
196 await getVideoWithToken(servers[0].url, userAccessToken, video2UUID, HttpStatusCode.OK_200)
199 it('Should list local account videos', async function () {
200 const res = await getAccountVideos(servers[0].url, userAccessToken, 'root@localhost:' + servers[0].port, 0, 5)
202 expect(res.body.total).to.equal(1)
203 expect(res.body.data).to.have.lengthOf(1)
206 it('Should list remote account videos', async function () {
207 const res = await getAccountVideos(servers[0].url, userAccessToken, 'root@localhost:' + servers[1].port, 0, 5)
209 expect(res.body.total).to.equal(1)
210 expect(res.body.data).to.have.lengthOf(1)
213 it('Should list local channel videos', async function () {
214 const videoChannelName = 'root_channel@localhost:' + servers[0].port
215 const res = await getVideoChannelVideos(servers[0].url, userAccessToken, videoChannelName, 0, 5)
217 expect(res.body.total).to.equal(1)
218 expect(res.body.data).to.have.lengthOf(1)
221 it('Should list remote channel videos', async function () {
222 const videoChannelName = 'root_channel@localhost:' + servers[1].port
223 const res = await getVideoChannelVideos(servers[0].url, userAccessToken, videoChannelName, 0, 5)
225 expect(res.body.total).to.equal(1)
226 expect(res.body.data).to.have.lengthOf(1)
231 after(async function () {
232 await cleanupTests(servers)