add tests for getting challenge members and fix a lot of bugs

This commit is contained in:
Matteo Pagliazzi
2016-01-16 16:18:06 +01:00
parent d7d63ad229
commit f447af19ae
6 changed files with 32 additions and 10 deletions
+5 -4
View File
@@ -38,8 +38,9 @@ api.createChallenge = {
let groupId = req.body.groupId;
let prize = req.body.prize;
let group = await Group.getGroup({user, groupId, fields: '-chat'});
let group = await Group.getGroup({user, groupId, fields: '-chat', mustBeMember: true});
if (!group) throw new NotFound(res.t('groupNotFound'));
if (!group.isMember(user)) throw new NotAuthorized(res.t('mustBeGroupMember'));
if (group.leaderOnly && group.leaderOnly.challenges && group.leader !== user._id) {
throw new NotAuthorized(res.t('onlyGroupLeaderChal'));
@@ -150,10 +151,10 @@ api.getChallenge = {
let challengeId = req.params.challengeId;
let challenge = await Challenge.findById(challengeId).exec();
if (!challenge) throw new NotFound(res.t('challengeNotFound'));
if (!challenge || !challenge.hasAccess(user)) {
throw new NotFound(res.t('challengeNotFound'));
}
let group = await Group.getGroup({user, groupId: challenge.groupId, fields: '_id type privacy'});
if (!group || !challenge.canView(user, group)) throw new NotFound(res.t('challengeNotFound'));
res.respond(200, challenge);
},
+4 -2
View File
@@ -73,8 +73,10 @@ function _getMembersForItem (type) {
let group;
if (type === 'challenge-members') {
challenge = await Challenge.findById(challengeId).select('_id type leader').exec();
if (!challenge || !challenge.hasAccess(user)) throw new NotFound(res.t('groupNotFound'));
challenge = await Challenge.findById(challengeId).select('_id type leader groupId').exec();
if (!challenge) throw new NotFound(res.t('challengeNotFound'));
group = await Group.getGroup({user, groupId: challenge.groupId, fields: '_id type privacy'});
if (!group || !challenge.canView(user, group)) throw new NotFound(res.t('challengeNotFound'));
} else {
group = await Group.getGroup({user, groupId, fields: '_id type'});
if (!group) throw new NotFound(res.t('groupNotFound'));