breaking: remove deprecated admin.groups methods

isekai-main
Barış Soner Uşaklı 3 years ago
parent a8afdc6019
commit 07e2741ea6

@ -15,6 +15,8 @@ const groupsAPI = module.exports;
groupsAPI.create = async function (caller, data) {
if (!caller.uid) {
throw new Error('[[error:no-privileges]]');
} else if (!data) {
throw new Error('[[error:invalid-data]]');
} else if (typeof data.name !== 'string' || groups.isPrivilegeGroup(data.name)) {
throw new Error('[[error:invalid-group-name]]');
}
@ -34,6 +36,9 @@ groupsAPI.create = async function (caller, data) {
};
groupsAPI.update = async function (caller, data) {
if (!data) {
throw new Error('[[error:invalid-data]]');
}
const groupName = await groups.getGroupNameByGroupSlug(data.slug);
await isOwner(caller, groupName);
@ -60,6 +65,9 @@ groupsAPI.delete = async function (caller, data) {
};
groupsAPI.join = async function (caller, data) {
if (!data) {
throw new Error('[[error:invalid-data]]');
}
if (caller.uid <= 0 || !data.uid) {
throw new Error('[[error:invalid-uid]]');
}
@ -118,6 +126,9 @@ groupsAPI.join = async function (caller, data) {
};
groupsAPI.leave = async function (caller, data) {
if (!data) {
throw new Error('[[error:invalid-data]]');
}
if (caller.uid <= 0) {
throw new Error('[[error:invalid-uid]]');
}

@ -15,7 +15,6 @@ const SocketAdmin = module.exports;
SocketAdmin.user = require('./admin/user');
SocketAdmin.categories = require('./admin/categories');
SocketAdmin.settings = require('./admin/settings');
SocketAdmin.groups = require('./admin/groups');
SocketAdmin.tags = require('./admin/tags');
SocketAdmin.rewards = require('./admin/rewards');
SocketAdmin.navigation = require('./admin/navigation');

@ -1,54 +0,0 @@
'use strict';
const groups = require('../../groups');
const sockets = require('..');
const api = require('../../api');
const Groups = module.exports;
Groups.create = async function (socket, data) {
sockets.warnDeprecated(socket, 'POST /api/v3/groups');
if (!data) {
throw new Error('[[error:invalid-data]]');
} else if (groups.isPrivilegeGroup(data.name)) {
throw new Error('[[error:invalid-group-name]]');
}
return await groups.create({
name: data.name,
description: data.description,
private: data.private,
hidden: data.hidden,
ownerUid: socket.uid,
});
};
Groups.join = async (socket, data) => {
sockets.warnDeprecated(socket, 'PUT /api/v3/groups/:slug/membership/:uid');
if (!data) {
throw new Error('[[error:invalid-data]]');
}
const slug = await groups.getGroupField(data.groupName, 'slug');
return await api.groups.join(socket, { slug: slug, uid: data.uid });
};
Groups.leave = async function (socket, data) {
sockets.warnDeprecated(socket, 'DELETE /api/v3/groups/:slug/membership/:uid');
if (!data) {
throw new Error('[[error:invalid-data]]');
}
const slug = await groups.getGroupField(data.groupName, 'slug');
await api.groups.leave(socket, { slug: slug, uid: data.uid });
};
Groups.update = async function (socket, data) {
sockets.warnDeprecated(socket, 'PUT /api/v3/groups/:slug');
if (!data) {
throw new Error('[[error:invalid-data]]');
}
const slug = await groups.getGroupField(data.groupName, 'slug');
await api.groups.update(socket, { slug, ...data.values });
// await groups.update(data.groupName, data.values);
};

@ -1271,132 +1271,127 @@ describe('Groups', () => {
});
});
describe('admin socket methods', () => {
describe('admin api/socket methods', () => {
const socketGroups = require('../src/socket.io/admin/groups');
it('should fail to create group with invalid data', (done) => {
socketGroups.create({ uid: adminUid }, null, (err) => {
assert.equal(err.message, '[[error:invalid-data]]');
done();
});
const apiGroups = require('../src/api/groups');
it('should fail to create group with invalid data', async () => {
let err;
try {
await apiGroups.create({ uid: adminUid }, null);
} catch (_err) {
err = _err;
}
assert.strictEqual(err.message, '[[error:invalid-data]]');
});
it('should fail to create group if group name is privilege group', (done) => {
socketGroups.create({ uid: adminUid }, { name: 'cid:1:privileges:read' }, (err) => {
assert.equal(err.message, '[[error:invalid-group-name]]');
done();
});
it('should fail to create group if group name is privilege group', async () => {
let err;
try {
await apiGroups.create({ uid: adminUid }, { name: 'cid:1:privileges:read' });
} catch (_err) {
err = _err;
}
assert.strictEqual(err.message, '[[error:invalid-group-name]]');
});
it('should create a group', (done) => {
socketGroups.create({ uid: adminUid }, { name: 'newgroup', description: 'group created by admin' }, (err, groupData) => {
assert.ifError(err);
assert.equal(groupData.name, 'newgroup');
assert.equal(groupData.description, 'group created by admin');
assert.equal(groupData.private, 1);
assert.equal(groupData.hidden, 0);
assert.equal(groupData.memberCount, 1);
done();
});
it('should create a group', async () => {
const groupData = await apiGroups.create({ uid: adminUid }, { name: 'newgroup', description: 'group created by admin' });
assert.equal(groupData.name, 'newgroup');
assert.equal(groupData.description, 'group created by admin');
assert.equal(groupData.private, 1);
assert.equal(groupData.hidden, 0);
assert.equal(groupData.memberCount, 1);
});
it('should fail to join with invalid data', (done) => {
socketGroups.join({ uid: adminUid }, null, (err) => {
assert.equal(err.message, '[[error:invalid-data]]');
done();
});
it('should fail to join with invalid data', async () => {
let err;
try {
await apiGroups.join({ uid: adminUid }, null);
} catch (_err) {
err = _err;
}
assert.strictEqual(err.message, '[[error:invalid-data]]');
});
it('should add user to group', (done) => {
socketGroups.join({ uid: adminUid }, { uid: testUid, groupName: 'newgroup' }, (err) => {
assert.ifError(err);
Groups.isMember(testUid, 'newgroup', (err, isMember) => {
assert.ifError(err);
assert(isMember);
done();
});
});
it('should add user to group', async () => {
await apiGroups.join({ uid: adminUid }, { uid: testUid, slug: 'newgroup' });
const isMember = await Groups.isMember(testUid, 'newgroup');
assert(isMember);
});
it('should not error if user is already member', (done) => {
socketGroups.join({ uid: adminUid }, { uid: testUid, groupName: 'newgroup' }, (err) => {
assert.ifError(err);
done();
});
it('should not error if user is already member', async () => {
await apiGroups.join({ uid: adminUid }, { uid: testUid, slug: 'newgroup' });
});
it('it should fail with invalid data', (done) => {
socketGroups.leave({ uid: adminUid }, null, (err) => {
assert.equal(err.message, '[[error:invalid-data]]');
done();
});
it('it should fail with invalid data', async () => {
let err;
try {
await apiGroups.leave({ uid: adminUid }, null);
} catch (_err) {
err = _err;
}
assert.strictEqual(err.message, '[[error:invalid-data]]');
});
it('it should fail if admin tries to remove self', (done) => {
socketGroups.leave({ uid: adminUid }, { uid: adminUid, groupName: 'administrators' }, (err) => {
assert.equal(err.message, '[[error:cant-remove-self-as-admin]]');
done();
});
it('it should fail if admin tries to remove self', async () => {
let err;
try {
await apiGroups.leave({ uid: adminUid }, { uid: adminUid, slug: 'administrators' });
} catch (_err) {
err = _err;
}
assert.strictEqual(err.message, '[[error:cant-remove-self-as-admin]]');
});
it('should not error if user is not member', (done) => {
socketGroups.leave({ uid: adminUid }, { uid: 3, groupName: 'newgroup' }, (err) => {
assert.ifError(err);
done();
});
it('should not error if user is not member', async () => {
await apiGroups.leave({ uid: adminUid }, { uid: 3, slug: 'newgroup' });
});
it('should fail if trying to remove someone else from group', (done) => {
socketGroups.leave({ uid: testUid }, { uid: adminUid, groupName: 'newgroup' }, (err) => {
assert.strictEqual(err.message, '[[error:no-privileges]]');
done();
});
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]]');
});
it('should remove user from group', (done) => {
socketGroups.leave({ uid: adminUid }, { uid: testUid, groupName: 'newgroup' }, (err) => {
assert.ifError(err);
Groups.isMember(testUid, 'newgroup', (err, isMember) => {
assert.ifError(err);
assert(!isMember);
done();
});
});
it('should remove user from group', async () => {
await apiGroups.leave({ uid: adminUid }, { uid: testUid, slug: 'newgroup' });
const isMember = await Groups.isMember(testUid, 'newgroup');
assert(!isMember);
});
it('should fail with invalid data', (done) => {
socketGroups.update({ uid: adminUid }, null, (err) => {
assert.equal(err.message, '[[error:invalid-data]]');
done();
});
it('should fail with invalid data', async () => {
let err;
try {
await apiGroups.update({ uid: adminUid }, null);
} catch (_err) {
err = _err;
}
assert.strictEqual(err.message, '[[error:invalid-data]]');
});
it('should update group', (done) => {
it('should update group', async () => {
const data = {
groupName: 'newgroup',
values: {
name: 'renamedgroup',
description: 'cat group',
userTitle: 'cats',
userTitleEnabled: 1,
disableJoinRequests: 1,
hidden: 1,
private: 0,
},
slug: 'newgroup',
name: 'renamedgroup',
description: 'cat group',
userTitle: 'cats',
userTitleEnabled: 1,
disableJoinRequests: 1,
hidden: 1,
private: 0,
};
socketGroups.update({ uid: adminUid }, data, (err) => {
assert.ifError(err);
Groups.get('renamedgroup', {}, (err, groupData) => {
assert.ifError(err);
assert.equal(groupData.name, 'renamedgroup');
assert.equal(groupData.userTitle, 'cats');
assert.equal(groupData.description, 'cat group');
assert.equal(groupData.hidden, true);
assert.equal(groupData.disableJoinRequests, true);
assert.equal(groupData.private, false);
done();
});
});
await apiGroups.update({ uid: adminUid }, data);
const groupData = await Groups.get('renamedgroup', {});
assert.equal(groupData.name, 'renamedgroup');
assert.equal(groupData.userTitle, 'cats');
assert.equal(groupData.description, 'cat group');
assert.equal(groupData.hidden, true);
assert.equal(groupData.disableJoinRequests, true);
assert.equal(groupData.private, false);
});
});

Loading…
Cancel
Save