1 /* tslint:disable:no-unused-expression */
3 import * as chai from 'chai'
11 getVideoChangeOwnershipList,
14 refuseChangeOwnership,
17 setAccessTokensToServers,
21 import { waitJobs } from '../../utils/server/jobs'
22 import { User } from '../../../../shared/models/users'
24 const expect = chai.expect
26 describe('Test video change ownership - nominal', function () {
27 let server: ServerInfo = undefined
30 password: 'My great password'
34 password: 'My other password'
36 let firstUserAccessToken = ''
37 let secondUserAccessToken = ''
38 let lastRequestChangeOwnershipId = undefined
40 before(async function () {
45 server = await runServer(1)
46 await setAccessTokensToServers([server])
48 const videoQuota = 42000000
49 await createUser(server.url, server.accessToken, firstUser.username, firstUser.password, videoQuota)
50 await createUser(server.url, server.accessToken, secondUser.username, secondUser.password, videoQuota)
52 firstUserAccessToken = await userLogin(server, firstUser)
53 secondUserAccessToken = await userLogin(server, secondUser)
55 // Upload some videos on the server
56 const video1Attributes = {
57 name: 'my super name',
58 description: 'my super description'
60 await uploadVideo(server.url, firstUserAccessToken, video1Attributes)
62 await waitJobs(server)
64 const res = await getVideosList(server.url)
65 const videos = res.body.data
67 expect(videos.length).to.equal(1)
69 server.video = videos.find(video => video.name === 'my super name')
72 it('Should not have video change ownership', async function () {
73 const resFirstUser = await getVideoChangeOwnershipList(server.url, firstUserAccessToken)
75 expect(resFirstUser.body.total).to.equal(0)
76 expect(resFirstUser.body.data).to.be.an('array')
77 expect(resFirstUser.body.data.length).to.equal(0)
79 const resSecondUser = await getVideoChangeOwnershipList(server.url, secondUserAccessToken)
81 expect(resSecondUser.body.total).to.equal(0)
82 expect(resSecondUser.body.data).to.be.an('array')
83 expect(resSecondUser.body.data.length).to.equal(0)
86 it('Should send a request to change ownership of a video', async function () {
89 await changeVideoOwnership(server.url, firstUserAccessToken, server.video.id, secondUser.username)
92 it('Should only return a request to change ownership for the second user', async function () {
93 const resFirstUser = await getVideoChangeOwnershipList(server.url, firstUserAccessToken)
95 expect(resFirstUser.body.total).to.equal(0)
96 expect(resFirstUser.body.data).to.be.an('array')
97 expect(resFirstUser.body.data.length).to.equal(0)
99 const resSecondUser = await getVideoChangeOwnershipList(server.url, secondUserAccessToken)
101 expect(resSecondUser.body.total).to.equal(1)
102 expect(resSecondUser.body.data).to.be.an('array')
103 expect(resSecondUser.body.data.length).to.equal(1)
105 lastRequestChangeOwnershipId = resSecondUser.body.data[0].id
108 it('Should accept the same change ownership request without crashing', async function () {
111 await changeVideoOwnership(server.url, firstUserAccessToken, server.video.id, secondUser.username)
114 it('Should not create multiple change ownership requests while one is waiting', async function () {
117 const resSecondUser = await getVideoChangeOwnershipList(server.url, secondUserAccessToken)
119 expect(resSecondUser.body.total).to.equal(1)
120 expect(resSecondUser.body.data).to.be.an('array')
121 expect(resSecondUser.body.data.length).to.equal(1)
124 it('Should not be possible to refuse the change of ownership from first user', async function () {
127 await refuseChangeOwnership(server.url, firstUserAccessToken, lastRequestChangeOwnershipId, 403)
130 it('Should be possible to refuse the change of ownership from second user', async function () {
133 await refuseChangeOwnership(server.url, secondUserAccessToken, lastRequestChangeOwnershipId)
136 it('Should send a new request to change ownership of a video', async function () {
139 await changeVideoOwnership(server.url, firstUserAccessToken, server.video.id, secondUser.username)
142 it('Should return two requests to change ownership for the second user', async function () {
143 const resFirstUser = await getVideoChangeOwnershipList(server.url, firstUserAccessToken)
145 expect(resFirstUser.body.total).to.equal(0)
146 expect(resFirstUser.body.data).to.be.an('array')
147 expect(resFirstUser.body.data.length).to.equal(0)
149 const resSecondUser = await getVideoChangeOwnershipList(server.url, secondUserAccessToken)
151 expect(resSecondUser.body.total).to.equal(2)
152 expect(resSecondUser.body.data).to.be.an('array')
153 expect(resSecondUser.body.data.length).to.equal(2)
155 lastRequestChangeOwnershipId = resSecondUser.body.data[0].id
158 it('Should not be possible to accept the change of ownership from first user', async function () {
161 const secondUserInformationResponse = await getMyUserInformation(server.url, secondUserAccessToken)
162 const secondUserInformation: User = secondUserInformationResponse.body
163 const channelId = secondUserInformation.videoChannels[0].id
164 await acceptChangeOwnership(server.url, firstUserAccessToken, lastRequestChangeOwnershipId, channelId, 403)
167 it('Should be possible to accept the change of ownership from second user', async function () {
170 const secondUserInformationResponse = await getMyUserInformation(server.url, secondUserAccessToken)
171 const secondUserInformation: User = secondUserInformationResponse.body
172 const channelId = secondUserInformation.videoChannels[0].id
173 await acceptChangeOwnership(server.url, secondUserAccessToken, lastRequestChangeOwnershipId, channelId)
176 after(async function () {
177 killallServers([server])
181 describe('Test video change ownership - quota too small', function () {
182 let server: ServerInfo = undefined
185 password: 'My great password'
189 password: 'My other password'
191 let firstUserAccessToken = ''
192 let secondUserAccessToken = ''
193 let lastRequestChangeOwnershipId = undefined
195 before(async function () {
200 server = await runServer(1)
201 await setAccessTokensToServers([server])
203 const videoQuota = 42000000
204 const limitedVideoQuota = 10
205 await createUser(server.url, server.accessToken, firstUser.username, firstUser.password, videoQuota)
206 await createUser(server.url, server.accessToken, secondUser.username, secondUser.password, limitedVideoQuota)
208 firstUserAccessToken = await userLogin(server, firstUser)
209 secondUserAccessToken = await userLogin(server, secondUser)
211 // Upload some videos on the server
212 const video1Attributes = {
213 name: 'my super name',
214 description: 'my super description'
216 await uploadVideo(server.url, firstUserAccessToken, video1Attributes)
218 await waitJobs(server)
220 const res = await getVideosList(server.url)
221 const videos = res.body.data
223 expect(videos.length).to.equal(1)
225 server.video = videos.find(video => video.name === 'my super name')
228 it('Should send a request to change ownership of a video', async function () {
231 await changeVideoOwnership(server.url, firstUserAccessToken, server.video.id, secondUser.username)
234 it('Should only return a request to change ownership for the second user', async function () {
235 const resFirstUser = await getVideoChangeOwnershipList(server.url, firstUserAccessToken)
237 expect(resFirstUser.body.total).to.equal(0)
238 expect(resFirstUser.body.data).to.be.an('array')
239 expect(resFirstUser.body.data.length).to.equal(0)
241 const resSecondUser = await getVideoChangeOwnershipList(server.url, secondUserAccessToken)
243 expect(resSecondUser.body.total).to.equal(1)
244 expect(resSecondUser.body.data).to.be.an('array')
245 expect(resSecondUser.body.data.length).to.equal(1)
247 lastRequestChangeOwnershipId = resSecondUser.body.data[0].id
250 it('Should not be possible to accept the change of ownership from second user because of exceeded quota', async function () {
253 const secondUserInformationResponse = await getMyUserInformation(server.url, secondUserAccessToken)
254 const secondUserInformation: User = secondUserInformationResponse.body
255 const channelId = secondUserInformation.videoChannels[0].id
256 await acceptChangeOwnership(server.url, secondUserAccessToken, lastRequestChangeOwnershipId, channelId, 403)
259 after(async function () {
260 killallServers([server])