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

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);
},