Merge pull request #6778 from HabitRPG/api-v3-session-invite

[API v3] Refactor session invite (no more session!)
This commit is contained in:
Matteo Pagliazzi
2016-02-27 18:07:39 +01:00
8 changed files with 106 additions and 36 deletions
@@ -80,6 +80,7 @@ describe('Post /groups/:groupId/invite', () => {
name: groupName,
inviter: inviter._id,
}]);
await expect(userToInvite.get('/user'))
.to.eventually.have.deep.property('invitations.guilds[0].id', group._id);
});
@@ -102,6 +103,7 @@ describe('Post /groups/:groupId/invite', () => {
inviter: inviter._id,
},
]);
await expect(userToInvite.get('/user')).to.eventually.have.deep.property('invitations.guilds[0].id', group._id);
await expect(userToInvite2.get('/user')).to.eventually.have.deep.property('invitations.guilds[0].id', group._id);
});
@@ -173,6 +175,7 @@ describe('Post /groups/:groupId/invite', () => {
it('invites a user to a group by email', async () => {
await expect(inviter.post(`/groups/${group._id}/invite`, {
emails: [testInvite],
inviter: 'inviter name',
})).to.exist;
});
@@ -224,8 +227,8 @@ describe('Post /groups/:groupId/invite', () => {
});
let invitedUser = await newUser.get('/user');
expect(invite).to.exist;
expect(invitedUser.invitations.guilds[0].id).to.equal(group._id);
expect(invite).to.exist;
});
});
@@ -2,9 +2,11 @@ import {
generateUser,
requester,
translate as t,
createAndPopulateGroup,
} from '../../../../../helpers/api-integration/v3';
import { v4 as generateRandomUserName } from 'uuid';
import { each } from 'lodash';
import { encrypt } from '../../../../../../website/src/libs/api-v3/encryption';
describe('POST /user/auth/local/register', () => {
context('username and email are free', () => {
@@ -162,6 +164,53 @@ describe('POST /user/auth/local/register', () => {
});
});
context('req.query.groupInvite', () => {
let api, username, email, password;
beforeEach(() => {
api = requester();
username = generateRandomUserName();
email = `${username}@example.com`;
password = 'password';
});
it('does not crash the signup process when it\'s invalid', async () => {
let user = await api.post('/user/auth/local/register?groupInvite=aaaaInvalid', {
username,
email,
password,
confirmPassword: password,
});
expect(user._id).to.be.a('string');
});
it('supports invite using req.query.groupInvite', async () => {
let { group, groupLeader } = await createAndPopulateGroup({
groupDetails: { type: 'party', privacy: 'private' },
});
let invite = encrypt(JSON.stringify({
id: group._id,
inviter: groupLeader._id,
sentAt: Date.now(), // so we can let it expire
}));
let user = await api.post(`/user/auth/local/register?groupInvite=${invite}`, {
username,
email,
password,
confirmPassword: password,
});
expect(user.invitations.party).to.eql({
id: group._id,
name: group.name,
inviter: groupLeader._id,
});
});
});
context('successful login via api', () => {
let api, username, email, password;