From 11ae7e2917ddf6e3c8e53d0855fd786163112d59 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 7 Nov 2022 10:11:51 +0100 Subject: Fix follow constraint check with an account --- server/tests/api/server/follow-constraints.ts | 88 ++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) (limited to 'server/tests/api') diff --git a/server/tests/api/server/follow-constraints.ts b/server/tests/api/server/follow-constraints.ts index 5998f58cc..e1ec2b069 100644 --- a/server/tests/api/server/follow-constraints.ts +++ b/server/tests/api/server/follow-constraints.ts @@ -1,8 +1,15 @@ /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ import { expect } from 'chai' -import { cleanupTests, createMultipleServers, doubleFollow, PeerTubeServer, setAccessTokensToServers } from '@shared/server-commands' import { HttpStatusCode, PeerTubeProblemDocument, ServerErrorCode } from '@shared/models' +import { + cleanupTests, + createMultipleServers, + doubleFollow, + PeerTubeServer, + setAccessTokensToServers, + waitJobs +} from '@shared/server-commands' describe('Test follow constraints', function () { let servers: PeerTubeServer[] = [] @@ -189,6 +196,7 @@ describe('Test follow constraints', function () { }) describe('With a logged user', function () { + it('Should get the local video', async function () { await servers[0].videos.getWithToken({ token: userToken, id: video1UUID }) }) @@ -229,6 +237,84 @@ describe('Test follow constraints', function () { }) }) + describe('When following a remote account', function () { + + before(async function () { + this.timeout(60000) + + await servers[0].follows.follow({ handles: [ 'root@' + servers[1].host ] }) + await waitJobs(servers) + }) + + it('Should get the remote video with an unlogged user', async function () { + await servers[0].videos.get({ id: video2UUID }) + }) + + it('Should get the remote video with a logged in user', async function () { + await servers[0].videos.getWithToken({ token: userToken, id: video2UUID }) + }) + }) + + describe('When unfollowing a remote account', function () { + + before(async function () { + this.timeout(60000) + + await servers[0].follows.unfollow({ target: 'root@' + servers[1].host }) + await waitJobs(servers) + }) + + it('Should not get the remote video with an unlogged user', async function () { + const body = await servers[0].videos.get({ id: video2UUID, expectedStatus: HttpStatusCode.FORBIDDEN_403 }) + + const error = body as unknown as PeerTubeProblemDocument + expect(error.code).to.equal(ServerErrorCode.DOES_NOT_RESPECT_FOLLOW_CONSTRAINTS) + }) + + it('Should get the remote video with a logged in user', async function () { + await servers[0].videos.getWithToken({ token: userToken, id: video2UUID }) + }) + }) + + describe('When following a remote channel', function () { + + before(async function () { + this.timeout(60000) + + await servers[0].follows.follow({ handles: [ 'root_channel@' + servers[1].host ] }) + await waitJobs(servers) + }) + + it('Should get the remote video with an unlogged user', async function () { + await servers[0].videos.get({ id: video2UUID }) + }) + + it('Should get the remote video with a logged in user', async function () { + await servers[0].videos.getWithToken({ token: userToken, id: video2UUID }) + }) + }) + + describe('When unfollowing a remote channel', function () { + + before(async function () { + this.timeout(60000) + + await servers[0].follows.unfollow({ target: 'root_channel@' + servers[1].host }) + await waitJobs(servers) + }) + + it('Should not get the remote video with an unlogged user', async function () { + const body = await servers[0].videos.get({ id: video2UUID, expectedStatus: HttpStatusCode.FORBIDDEN_403 }) + + const error = body as unknown as PeerTubeProblemDocument + expect(error.code).to.equal(ServerErrorCode.DOES_NOT_RESPECT_FOLLOW_CONSTRAINTS) + }) + + it('Should get the remote video with a logged in user', async function () { + await servers[0].videos.getWithToken({ token: userToken, id: video2UUID }) + }) + }) + after(async function () { await cleanupTests(servers) }) -- cgit v1.2.3