+
+ await makePostBodyRequest({
+ url: servers[0].url,
+ path,
+ token: servers[0].accessToken,
+ fields,
+ expectedStatus: HttpStatusCode.NO_CONTENT_204
+ })
+ })
+ })
+
+ describe('When updating a video in blacklist', function () {
+ const basePath = '/api/v1/videos/'
+
+ it('Should fail with a wrong video', async function () {
+ const wrongPath = '/api/v1/videos/blabla/blacklist'
+ const fields = {}
+ await makePutBodyRequest({ url: servers[0].url, path: wrongPath, token: servers[0].accessToken, fields })
+ })
+
+ it('Should fail with a video not blacklisted', async function () {
+ const path = '/api/v1/videos/' + notBlacklistedVideoId + '/blacklist'
+ const fields = {}
+ await makePutBodyRequest({
+ url: servers[0].url,
+ path,
+ token: servers[0].accessToken,
+ fields,
+ expectedStatus: HttpStatusCode.NOT_FOUND_404
+ })
+ })
+
+ it('Should fail with a non authenticated user', async function () {
+ const path = basePath + servers[0].store.videoCreated + '/blacklist'
+ const fields = {}
+ await makePutBodyRequest({ url: servers[0].url, path, token: 'hello', fields, expectedStatus: HttpStatusCode.UNAUTHORIZED_401 })
+ })
+
+ it('Should fail with a non admin user', async function () {
+ const path = basePath + servers[0].store.videoCreated + '/blacklist'
+ const fields = {}
+ await makePutBodyRequest({
+ url: servers[0].url,
+ path,
+ token: userAccessToken2,
+ fields,
+ expectedStatus: HttpStatusCode.FORBIDDEN_403
+ })
+ })
+
+ it('Should fail with an invalid reason', async function () {
+ const path = basePath + servers[0].store.videoCreated.uuid + '/blacklist'
+ const fields = { reason: 'a'.repeat(305) }
+
+ await makePutBodyRequest({ url: servers[0].url, path, token: servers[0].accessToken, fields })
+ })
+
+ it('Should succeed with the correct params', async function () {
+ const path = basePath + servers[0].store.videoCreated.shortUUID + '/blacklist'
+ const fields = { reason: 'hello' }
+
+ await makePutBodyRequest({
+ url: servers[0].url,
+ path,
+ token: servers[0].accessToken,
+ fields,
+ expectedStatus: HttpStatusCode.NO_CONTENT_204
+ })
+ })
+ })
+
+ describe('When getting blacklisted video', function () {
+
+ it('Should fail with a non authenticated user', async function () {
+ await servers[0].videos.get({ id: servers[0].store.videoCreated.uuid, expectedStatus: HttpStatusCode.UNAUTHORIZED_401 })
+ })
+
+ it('Should fail with another user', async function () {
+ await servers[0].videos.getWithToken({
+ token: userAccessToken2,
+ id: servers[0].store.videoCreated.uuid,
+ expectedStatus: HttpStatusCode.FORBIDDEN_403
+ })
+ })
+
+ it('Should succeed with the owner authenticated user', async function () {
+ const video = await servers[0].videos.getWithToken({ token: userAccessToken1, id: servers[0].store.videoCreated.uuid })
+ expect(video.blacklisted).to.be.true
+ })
+
+ it('Should succeed with an admin', async function () {
+ const video = servers[0].store.videoCreated
+
+ for (const id of [ video.id, video.uuid, video.shortUUID ]) {
+ const video = await servers[0].videos.getWithToken({ id, expectedStatus: HttpStatusCode.OK_200 })
+ expect(video.blacklisted).to.be.true
+ }