From 3e87c8d3e9cdc7580f80b8b2157352cd3f927605 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 19 Dec 2015 18:07:39 +0100 Subject: [PATCH] fix some tests --- test/api/v3/integration/chat/GET-chat.test.js | 9 +- .../v3/integration/groups/POST-groups.test.js | 185 +++++++++--------- test/helpers/api-integration.helper.js | 6 +- website/src/controllers/api-v3/groups.js | 3 +- website/src/models/group.js | 2 +- website/src/models/user.js | 2 +- 6 files changed, 101 insertions(+), 106 deletions(-) diff --git a/test/api/v3/integration/chat/GET-chat.test.js b/test/api/v3/integration/chat/GET-chat.test.js index 75b5a36d15..f1fe89c5d6 100644 --- a/test/api/v3/integration/chat/GET-chat.test.js +++ b/test/api/v3/integration/chat/GET-chat.test.js @@ -1,6 +1,7 @@ import { createAndPopulateGroup, generateUser, + generateGroup, requester, } from '../../../../helpers/api-integration.helper'; @@ -8,8 +9,9 @@ describe('GET /groups/:groupId/chat', () => { let user, api; before(() => { - return generateUser().then((generatedUser) => { + return generateUser({balance: 2}).then((generatedUser) => { user = generatedUser; + console.log(user._id, user.balance) api = requester(user); }); }); @@ -18,14 +20,15 @@ describe('GET /groups/:groupId/chat', () => { let group; before(() => { - return createAndPopulateGroup({groupDetails: { + return generateGroup(user, { + name: 'test group', type: 'guild', privacy: 'public', chat: [ 'Hello', 'Welcome to the Guild', ], - }}) + }) .then((createdGroup) => { group = createdGroup; }); diff --git a/test/api/v3/integration/groups/POST-groups.test.js b/test/api/v3/integration/groups/POST-groups.test.js index 6d1aec25d5..85269fe6b7 100644 --- a/test/api/v3/integration/groups/POST-groups.test.js +++ b/test/api/v3/integration/groups/POST-groups.test.js @@ -7,17 +7,17 @@ import { describe('POST /group', () => { let user, api; - beforeEach(() => { - return generateUser().then((generatedUser) => { - user = generatedUser; - api = requester(user); - }); - }); + beforeEach(() => { + return generateUser().then((generatedUser) => { + user = generatedUser; + api = requester(user); + }); + }); - context('Guilds', () => { + context('Guilds', () => { it('returns an error when a user with insufficient funds attempts to create a guild', () => { - let groupName = "Test Public Guild"; - let groupType = "guild"; + let groupName = 'Test Public Guild'; + let groupType = 'guild'; return expect( api.post('/groups', { @@ -32,99 +32,90 @@ describe('POST /group', () => { }); }); - context('public guild', () => { - it('creates a group', () => { - let groupName = "Test Public Guild"; - let groupType = "guild"; - let tmpUser; + context('public guild', () => { + it('creates a group', () => { + let groupName = 'Test Public Guild'; + let groupType = 'guild'; - return generateUser({balance: 1}).then((generatedUser) => { - tmpUser = generatedUser; - api = requester(tmpUser); - return api.post('/groups', { - name: groupName, - type: groupType - }); - }) - .then((result) => { - expect(result._id).to.exist; - expect(result.name).to.equal(groupName); - expect(result.type).to.equal(groupType); - }) - .then(() => { - api = requester(user); - }); - }); - }); - - context('private guild', () => { - it('creates a group', () => { - let groupName = "Test Private Guild"; - let groupType = "guild"; - let groupPrivacy = "private"; - let tmpUser; - - return generateUser({balance: 1}).then((generatedUser) => { - tmpUser = generatedUser; - api = requester(tmpUser); - return api.post('/groups', { - name: groupName, - type: groupType, - privacy: groupPrivacy - }); - }) - .then((result) => { - expect(result._id).to.exist; - expect(result.name).to.equal(groupName); - expect(result.type).to.equal(groupType); - expect(result.privacy).to.equal(groupPrivacy); - }) - .then(() => { - api = requester(tmpUser); - }); - }); - }); - }); - - context('Parties', () => { - it('creates a party', () => { - let groupName = "Test Party"; - let groupType = "party"; - - return api.post('/groups', { - name: groupName, - type: groupType - }) - .then((result) => { - expect(result._id).to.exist; - expect(result.name).to.equal(groupName); - expect(result.type).to.equal(groupType); - }) - }); - - it('prevents user in a party from creating a party', () => { - let tmpUser; - let groupName = "Test Party"; - let groupType = "party"; - - return generateUser().then((generatedUser) => { - tmpUser = generatedUser; - api = requester(tmpUser); - return api.post('/groups', { + return generateUser({balance: 1}).then((generatedUser) => { + let api2 = requester(generatedUser); + return api2.post('/groups', { name: groupName, type: groupType }); }) - .then(() => { - return expect(api.post('/groups')).to.eventually.be.rejected.and.eql({ - code: 401, - error: 'NotAuthorized', - message: t('messageGroupAlreadyInParty'), - }); - }) - .then(() => { - api = requester(user); + .then((result) => { + expect(result._id).to.exist; + expect(result.name).to.equal(groupName); + expect(result.type).to.equal(groupType); }); }); - }); + }); + + context('private guild', () => { + it('creates a group', () => { + let groupName = 'Test Private Guild'; + let groupType = 'guild'; + let groupPrivacy = 'private'; + let tmpUser; + + return generateUser({balance: 1}).then((generatedUser) => { + let api2 = requester(generatedUser); + return api2.post('/groups', { + name: groupName, + type: groupType, + privacy: groupPrivacy + }); + }) + .then((result) => { + expect(result._id).to.exist; + expect(result.name).to.equal(groupName); + expect(result.type).to.equal(groupType); + expect(result.privacy).to.equal(groupPrivacy); + }); + }); + }); + }); + + context('Parties', () => { + it('creates a party', () => { + let groupName = "Test Party"; + let groupType = "party"; + + return api.post('/groups', { + name: groupName, + type: groupType + }) + .then((result) => { + expect(result._id).to.exist; + expect(result.name).to.equal(groupName); + expect(result.type).to.equal(groupType); + }) + }); + + it('prevents user in a party from creating a party', () => { + let tmpUser; + let groupName = "Test Party"; + let groupType = "party"; + + return generateUser().then((generatedUser) => { + tmpUser = generatedUser; + api = requester(tmpUser); + return api.post('/groups', { + name: groupName, + type: groupType + }); + }) + .then(() => { + return expect(api.post('/groups')).to.eventually.be.rejected.and.eql({ + code: 401, + error: 'NotAuthorized', + message: t('messageGroupAlreadyInParty'), + }); + }) + .then(() => { + api = requester(user); + }); + }); + }); }); diff --git a/test/helpers/api-integration.helper.js b/test/helpers/api-integration.helper.js index 973414a3a8..9b865ccb85 100644 --- a/test/helpers/api-integration.helper.js +++ b/test/helpers/api-integration.helper.js @@ -103,15 +103,15 @@ export function generateUser (update = {}) { // Generates a new group. Requires a user object, which // will will become the groups leader. Takes an update // argument which will update group -export function generateGroup (leader, update = {}) { +export function generateGroup (leader, details = {}, update = {}) { let request = _requestMaker(leader, 'post'); return new Promise((resolve, reject) => { - request('/groups').then((group) => { + request('/groups', details).then((group) => { _updateDocument('groups', group, update, () => { resolve(group); }).catch(reject); - }); + }).catch(reject); }); } diff --git a/website/src/controllers/api-v3/groups.js b/website/src/controllers/api-v3/groups.js index 25826d2d04..c431db872f 100644 --- a/website/src/controllers/api-v3/groups.js +++ b/website/src/controllers/api-v3/groups.js @@ -8,7 +8,7 @@ import { BadRequest, NotAuthorized, } from '../../libs/api-v3/errors'; -import firebase from '../../libs/api-v3/firebase'; +import * as firebase from '../../libs/api-v3/firebase'; let api = {}; @@ -31,6 +31,7 @@ api.createGroup = { group.leader = user._id; if (group.type === 'guild') { + console.log(user._id, user.balance) if (user.balance < 1) return next(new NotAuthorized(res.t('messageInsufficientGems'))); group.balance = 1; diff --git a/website/src/models/group.js b/website/src/models/group.js index 6e3dec592d..54c54b473a 100644 --- a/website/src/models/group.js +++ b/website/src/models/group.js @@ -4,7 +4,7 @@ import shared from '../../../common'; import _ from 'lodash'; import { model as Challenge} from './challenge'; import validator from 'validator'; -import firebase from '../libs/api-v2/firebase'; +import * as firebase from '../libs/api-v2/firebase'; import baseModel from '../libs/api-v3/baseModel'; import Q from 'q'; diff --git a/website/src/models/user.js b/website/src/models/user.js index 40a9fbcaa0..54da99fb5c 100644 --- a/website/src/models/user.js +++ b/website/src/models/user.js @@ -477,7 +477,7 @@ export let schema = new Schema({ schema.plugin(baseModel, { // TODO revisit a lot of things are missing - noSet: ['_id', 'apiToken', 'auth.blocked', 'auth.timestamps', 'lastCron', 'auth.local.hashed_password', 'auth.local.salt', 'tasksOrder', 'tags', 'stats', 'challenges', 'guilds', 'party._id', 'party.quest', 'invitations'], + noSet: ['_id', 'apiToken', 'auth.blocked', 'auth.timestamps', 'lastCron', 'auth.local.hashed_password', 'auth.local.salt', 'tasksOrder', 'tags', 'stats', 'challenges', 'guilds', 'party._id', 'party.quest', 'invitations', 'balance'], private: ['auth.local.hashed_password', 'auth.local.salt'], toJSONTransform: function userToJSON (doc) { // FIXME? Is this a reference to `doc.filters` or just disabled code? Remove?