From b891c5accde29398f762638df9a2faab62b2b82d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 28 Apr 2023 16:43:49 -0400 Subject: [PATCH] test: fix group tests no idea how these passed on gh runner --- src/api/groups.js | 7 ++++--- test/groups.js | 41 +++++++++++++++++------------------------ 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/src/api/groups.js b/src/api/groups.js index 840f5cf97a..2a85a25a27 100644 --- a/src/api/groups.js +++ b/src/api/groups.js @@ -155,13 +155,14 @@ groupsAPI.leave = async function (caller, data) { groups.isMember(data.uid, groupName), ]); - if (!userExists) { - throw new Error('[[error:invalid-uid]]'); - } if (!isMember) { throw new Error('[[error:group-not-member]]'); } + if (!userExists) { + throw new Error('[[error:invalid-uid]]'); + } + if (groupData.disableLeave && isSelf) { throw new Error('[[error:group-leave-disabled]]'); } diff --git a/test/groups.js b/test/groups.js index 107f81cf5b..bc9b0cb2ef 100644 --- a/test/groups.js +++ b/test/groups.js @@ -737,7 +737,7 @@ describe('Groups', () => { const uid1 = await User.create({ username: utils.generateUUID().slice(0, 8) }); const uid2 = await User.create({ username: utils.generateUUID().slice(0, 8) }); - assert.rejects(apiGroups.join({ uid: uid1 }, { slug: 'test', uid: uid2 }, '[[error:not-allowed]]')); + await assert.rejects(apiGroups.join({ uid: uid1 }, { slug: 'test', uid: uid2 }, { message: '[[error:not-allowed]]' })); }); it('should allow admins to join private groups', async () => { @@ -923,7 +923,7 @@ describe('Groups', () => { }); it('should error if not owner or admin', async () => { - assert.rejects(apiGroups.accept({ uid: 0 }, { slug: 'privatecanjoin', uid: testUid }), '[[error:no-privileges]]'); + await assert.rejects(apiGroups.accept({ uid: 0 }, { slug: 'privatecanjoin', uid: testUid }), { message: '[[error:no-privileges]]' }); }); it('should accept membership of user', async () => { @@ -950,7 +950,7 @@ describe('Groups', () => { }); it('should error if user is not invited', async () => { - assert.rejects(apiGroups.acceptInvite({ uid: adminUid }, { slug: 'privatecanjoin' }), '[[error:not-invited]]'); + await assert.rejects(apiGroups.acceptInvite({ uid: adminUid }, { slug: 'privatecanjoin', uid: adminUid }), { message: '[[error:not-invited]]' }); }); it('should accept invite', async () => { @@ -982,7 +982,7 @@ describe('Groups', () => { }); it('should fail to kick user with invalid data', async () => { - assert.rejects(apiGroups.leave({ uid: adminUid }, { slug: 'privatecanjoin', uid: 8721632 }), '[[error:group-not-member]]'); + await assert.rejects(apiGroups.leave({ uid: adminUid }, { slug: 'privatecanjoin', uid: 8721632 }), { message: '[[error:group-not-member]]' }); }); it('should kick user from group', async () => { @@ -992,21 +992,17 @@ describe('Groups', () => { }); it('should fail to create group with invalid data', async () => { - try { - await apiGroups.create({ uid: 0 }, {}); - assert(false); - } catch (err) { - assert.equal(err.message, '[[error:no-privileges]]'); - } + await assert.rejects( + apiGroups.create({ uid: 0 }, {}), + { message: '[[error:no-privileges]]' } + ); }); it('should fail to create group if group creation is disabled', async () => { - try { - await apiGroups.create({ uid: testUid }, { name: 'avalidname' }); - assert(false); - } catch (err) { - assert.equal(err.message, '[[error:no-privileges]]'); - } + await assert.rejects( + apiGroups.create({ uid: testUid }, { name: 'avalidname' }), + { message: '[[error:no-privileges]]' } + ); }); it('should fail to create group if name is privilege group', async () => { @@ -1198,17 +1194,14 @@ describe('Groups', () => { }); it('should error if user is not member', async () => { - assert.rejects(apiGroups.leave({ uid: adminUid }, { uid: 3, slug: 'newgroup' }), '[[error:group-not-member]]'); + await assert.rejects(apiGroups.leave({ uid: adminUid }, { uid: 3, slug: 'newgroup' }), { message: '[[error:group-not-member]]' }); }); it('should fail if trying to remove someone else from group', async () => { - let err; - try { - await apiGroups.leave({ uid: testUid }, { uid: adminUid, slug: 'newgroup' }); - } catch (_err) { - err = _err; - } - assert.strictEqual(err.message, '[[error:no-privileges]]'); + await assert.rejects( + apiGroups.leave({ uid: testUid }, { uid: adminUid, slug: 'newgroup' }), + { message: '[[error:no-privileges]]' }, + ); }); it('should remove user from group', async () => {