more group tests

v1.18.x
barisusakli 8 years ago
parent d8a1e98a43
commit dff4ee767c

@ -12,45 +12,48 @@ module.exports = function (Groups) {
Groups.update = function (groupName, values, callback) {
callback = callback || function () {};
db.exists('group:' + groupName, function (err, exists) {
if (err || !exists) {
return callback(err || new Error('[[error:no-group]]'));
}
plugins.fireHook('filter:group.update', {
groupName: groupName,
values: values
}, function (err) {
if (err) {
return callback(err);
async.waterfall([
function (next) {
db.exists('group:' + groupName, next);
},
function (exists, next) {
if (!exists) {
return next(new Error('[[error:no-group]]'));
}
plugins.fireHook('filter:group.update', {
groupName: groupName,
values: values
}, next);
},
function (result, next) {
values = result.values;
var payload = {
description: values.description || '',
icon: values.icon || '',
labelColor: values.labelColor || '#000000'
};
if (values.hasOwnProperty('userTitle')) {
payload.userTitle = values.userTitle || '';
}
if (values.hasOwnProperty('userTitleEnabled')) {
payload.userTitleEnabled = values.userTitleEnabled ? '1' : '0';
}
if (values.hasOwnProperty('hidden')) {
payload.hidden = values.hidden ? '1' : '0';
}
if (values.hasOwnProperty('private')) {
payload.private = values.private ? '1' : '0';
}
if (values.hasOwnProperty('disableJoinRequests')) {
payload.disableJoinRequests = values.disableJoinRequests ? '1' : '0';
}
async.series([
async.apply(checkNameChange, groupName, values.name),
async.apply(updatePrivacy, groupName, values.private),
@ -63,19 +66,16 @@ module.exports = function (Groups) {
},
async.apply(db.setObject, 'group:' + groupName, payload),
async.apply(renameGroup, groupName, values.name)
], function (err) {
if (err) {
return callback(err);
}
plugins.fireHook('action:group.update', {
name: groupName,
values: values
});
callback();
], next);
},
function (result, next) {
plugins.fireHook('action:group.update', {
name: groupName,
values: values
});
});
});
next();
}
], callback);
};
function updateVisibility(groupName, hidden, callback) {

@ -504,6 +504,128 @@ describe('Groups', function () {
});
describe('admin socket methods', function () {
var socketGroups = require('../src/socket.io/admin/groups');
it('should fail to create group with invalid data', function (done) {
socketGroups.create({uid: adminUid}, null, function (err) {
assert.equal(err.message, '[[error:invalid-data]]');
done();
});
});
it('should fail to create group if group name is privilege group', function (done) {
socketGroups.create({uid: adminUid}, {name: 'cid:1:privileges:read'}, function (err) {
assert.equal(err.message, '[[error:invalid-group-name]]');
done();
});
});
it('should create a group', function (done) {
socketGroups.create({uid: adminUid}, {name: 'newgroup', description: 'group created by admin'}, function (err, groupData) {
assert.ifError(err);
assert.equal(groupData.name, 'newgroup');
assert.equal(groupData.description, 'group created by admin');
assert.equal(groupData.ownerUid, adminUid);
assert.equal(groupData.private, true);
assert.equal(groupData.memberCount, 1);
done();
});
});
it('should fail to join with invalid data', function (done) {
socketGroups.join({uid: adminUid}, null, function (err) {
assert.equal(err.message, '[[error:invalid-data]]');
done();
});
});
it('should add user to group', function (done) {
socketGroups.join({uid: adminUid}, {uid: testUid, groupName: 'newgroup'}, function (err) {
assert.ifError(err);
Groups.isMember(testUid, 'newgroup', function (err, isMember) {
assert.ifError(err);
assert(isMember);
done();
});
});
});
it('should fail to if user is already member', function (done) {
socketGroups.join({uid: adminUid}, {uid: testUid, groupName: 'newgroup'}, function (err) {
assert.equal(err.message, '[[error:group-already-member]]');
done();
});
});
it('it should fail with invalid data', function (done) {
socketGroups.leave({uid: adminUid}, null, function (err) {
assert.equal(err.message, '[[error:invalid-data]]');
done();
});
});
it('it should fail if admin tries to remove self', function (done) {
socketGroups.leave({uid: adminUid}, {uid: adminUid, groupName: 'administrators'}, function (err) {
assert.equal(err.message, '[[error:cant-remove-self-as-admin]]');
done();
});
});
it('should fail if user is not member', function (done) {
socketGroups.leave({uid: adminUid}, {uid: 3, groupName: 'newgroup'}, function (err) {
assert.equal(err.message, '[[error:group-not-member]]');
done();
});
});
it('should remove user from group', function (done) {
socketGroups.leave({uid: adminUid}, {uid: testUid, groupName: 'newgroup'}, function (err) {
assert.ifError(err);
Groups.isMember(testUid, 'newgroup', function (err, isMember) {
assert.ifError(err);
assert(!isMember);
done();
});
});
});
it('should fail with invalid data', function (done) {
socketGroups.update({uid: adminUid}, null, function (err) {
assert.equal(err.message, '[[error:invalid-data]]');
done();
});
});
it('should update group', function (done) {
var data = {
groupName: 'newgroup',
values: {
name: 'renamedgroup',
description: 'cat group',
userTitle: 'cats',
userTitleEnabled: 1,
disableJoinRequests: 1,
hidden: 1,
private: 0
}
};
socketGroups.update({uid: adminUid}, data, function (err) {
assert.ifError(err);
Groups.get('renamedgroup', {}, function (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();
});
});
});
});
after(function (done) {
db.emptydb(done);
});

Loading…
Cancel
Save