From a37e9e74ff07b057370d1ed6c0b391a02be8a6d2 Mon Sep 17 00:00:00 2001 From: kontrollanten <6680299+kontrollanten@users.noreply.github.com> Date: Mon, 13 Dec 2021 15:29:13 +0100 Subject: Give moderators access to edit channels (#4608) * give admins access to edit all channels closes #4598 * test(channels): +admin update another users channel * Fix tests * fix(server): delete another users channel Since the channel owner isn't necessary the auth user we need to check the right account whether it's the last video or not. * REMOVE_ANY_VIDEO_CHANNEL > MANAGE_ANY_VIDEO_CHANNEL Merge REMOVE_ANY_VIDEO_CHANNEL and MANY_VIDEO_CHANNELS to MANAGE_ANY_VIDEO_CHANNEL. * user-right: moderator can't manage admins channel * client: MyVideoChannelCreateComponent > VideoChannelCreateComponent * client: MyVideoChannelEdit > VideoChannelEdit * Revert "user-right: moderator can't manage admins channel" This reverts commit 2c627c154e2bfe6af2e0f45efb27faf4117572f3. * server: clean dupl validator functionality * fix ensureUserCanManageChannel usage It's not async anymore. * server: merge channel validator middleares ensureAuthUserOwnsChannelValidator & ensureUserCanManageChannel gets merged into one middleware. * client(VideoChannelEdit): redirect to prev route * fix(VideoChannels): handle anon users * client: new routes for create/update channel * Refactor channel validators Co-authored-by: Chocobozzz --- server/tests/api/videos/video-channels.ts | 37 ++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) (limited to 'server/tests') diff --git a/server/tests/api/videos/video-channels.ts b/server/tests/api/videos/video-channels.ts index c25754eb6..6ab5faa07 100644 --- a/server/tests/api/videos/video-channels.ts +++ b/server/tests/api/videos/video-channels.ts @@ -33,6 +33,7 @@ describe('Test video channels', function () { let totoChannel: number let videoUUID: string let accountName: string + let secondUserChannelName: string const avatarPaths: { [ port: number ]: string } = {} const bannerPaths: { [ port: number ]: string } = {} @@ -219,6 +220,35 @@ describe('Test video channels', function () { } }) + it('Should update another accounts video channel', async function () { + this.timeout(15000) + + const result = await servers[0].users.generate('second_user') + secondUserChannelName = result.userChannelName + + await servers[0].videos.quickUpload({ name: 'video', token: result.token }) + + const videoChannelAttributes = { + displayName: 'video channel updated', + description: 'video channel description updated', + support: 'support updated' + } + + await servers[0].channels.update({ channelName: secondUserChannelName, attributes: videoChannelAttributes }) + + await waitJobs(servers) + }) + + it('Should have another accounts video channel updated', async function () { + for (const server of servers) { + const body = await server.channels.get({ channelName: `${secondUserChannelName}@${servers[0].host}` }) + + expect(body.displayName).to.equal('video channel updated') + expect(body.description).to.equal('video channel description updated') + expect(body.support).to.equal('support updated') + } + }) + it('Should update the channel support field and update videos too', async function () { this.timeout(35000) @@ -368,12 +398,13 @@ describe('Test video channels', function () { }) it('Should have video channel deleted', async function () { - const body = await servers[0].channels.list({ start: 0, count: 10 }) + const body = await servers[0].channels.list({ start: 0, count: 10, sort: 'createdAt' }) - expect(body.total).to.equal(1) + expect(body.total).to.equal(2) expect(body.data).to.be.an('array') - expect(body.data).to.have.lengthOf(1) + expect(body.data).to.have.lengthOf(2) expect(body.data[0].displayName).to.equal('Main root channel') + expect(body.data[1].displayName).to.equal('video channel updated') }) it('Should create the main channel with an uuid if there is a conflict', async function () { -- cgit v1.2.3