From f043dcec96617348b9f3e67b7486b33d506b4965 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 5 Apr 2023 15:35:20 -0400 Subject: [PATCH] fix: remove socketGroups.kick --- src/api/groups.js | 4 ++-- src/socket.io/groups.js | 14 -------------- test/groups.js | 24 ++++++++---------------- 3 files changed, 10 insertions(+), 32 deletions(-) diff --git a/src/api/groups.js b/src/api/groups.js index a67d6f9d4a..7f422c7dd4 100644 --- a/src/api/groups.js +++ b/src/api/groups.js @@ -158,7 +158,7 @@ groupsAPI.leave = async function (caller, data) { throw new Error('[[error:invalid-uid]]'); } if (!isMember) { - return; + throw new Error('[[error:group-not-member]]'); } if (groupData.disableLeave && isSelf) { @@ -183,7 +183,7 @@ groupsAPI.leave = async function (caller, data) { const uids = await groups.getOwners(groupName); await notifications.push(notification, uids); - logGroupEvent(caller, 'group-leave', { + logGroupEvent(caller, `group-${isSelf ? 'leave' : 'kick'}`, { groupName: groupName, targetUid: data.uid, }); diff --git a/src/socket.io/groups.js b/src/socket.io/groups.js index 1d058c01e5..adb1dc9cbe 100644 --- a/src/socket.io/groups.js +++ b/src/socket.io/groups.js @@ -56,20 +56,6 @@ async function isOwner(socket, data) { } } -SocketGroups.kick = async (socket, data) => { - await isOwner(socket, data); - if (socket.uid === parseInt(data.uid, 10)) { - throw new Error('[[error:cant-kick-self]]'); - } - - const isOwnerBit = await groups.ownership.isOwner(data.uid, data.groupName); - await groups.kick(data.uid, data.groupName, isOwnerBit); - logGroupEvent(socket, 'group-kick', { - groupName: data.groupName, - targetUid: data.uid, - }); -}; - SocketGroups.search = async (socket, data) => { data.options = data.options || {}; diff --git a/test/groups.js b/test/groups.js index 678efd02e2..58ccb1dfcf 100644 --- a/test/groups.js +++ b/test/groups.js @@ -973,22 +973,14 @@ describe('Groups', () => { assert(!isOwner); }); - it('should fail to kick user with invalid data', (done) => { - socketGroups.kick({ uid: adminUid }, { groupName: 'PrivateCanJoin', uid: adminUid }, (err) => { - assert.equal(err.message, '[[error:cant-kick-self]]'); - done(); - }); + it('should fail to kick user with invalid data', async () => { + assert.rejects(apiGroups.leave({ uid: adminUid }, { slug: 'privatecanjoin', uid: 8721632 }), '[[error:group-not-member]]'); }); - it('should kick user from group', (done) => { - socketGroups.kick({ uid: adminUid }, { groupName: 'PrivateCanJoin', uid: testUid }, (err) => { - assert.ifError(err); - Groups.isMember(testUid, 'PrivateCanJoin', (err, isMember) => { - assert.ifError(err); - assert(!isMember); - done(); - }); - }); + it('should kick user from group', async () => { + await apiGroups.leave({ uid: adminUid }, { slug: 'privatecanjoin', uid: testUid }); + const isMember = await Groups.isMember(testUid, 'PrivateCanJoin'); + assert(!isMember); }); it('should fail to create group with invalid data', async () => { @@ -1197,8 +1189,8 @@ describe('Groups', () => { assert.strictEqual(err.message, '[[error:cant-remove-self-as-admin]]'); }); - it('should not error if user is not member', async () => { - await apiGroups.leave({ uid: adminUid }, { uid: 3, slug: 'newgroup' }); + it('should error if user is not member', async () => { + assert.rejects(apiGroups.leave({ uid: adminUid }, { uid: 3, slug: 'newgroup' }), '[[error:group-not-member]]'); }); it('should fail if trying to remove someone else from group', async () => {