Files
talk/test/server/graph/mutations/changeUsername.js
T
2017-11-08 09:41:38 -07:00

83 lines
2.4 KiB
JavaScript

const {graphql} = require('graphql');
const schema = require('../../../../graph/schema');
const Context = require('../../../../graph/context');
const SettingsService = require('../../../../services/settings');
const UsersService = require('../../../../services/users');
const {expect} = require('chai');
describe('graph.mutations.changeUsername', () => {
let user;
beforeEach(async () => {
await SettingsService.init();
user = await UsersService.createLocalUser('test@test.com', 'testpassword1!', 'kirk');
expect(user).to.have.property('username', 'kirk');
expect(user).to.have.property('lowercaseUsername', 'kirk');
expect(user.status.username.status).to.equal('SET');
});
const changeUsernameMutation = `
mutation ChangeUsername($user_id: ID!, $username: String!) {
changeUsername(id: $user_id, username: $username) {
errors {
translation_key
}
}
}
`;
[
{roles: null},
{roles: ['STAFF']},
{roles: []},
{roles: ['MODERATOR']},
{roles: ['ADMIN']},
{roles: ['ADMIN', 'MODERATOR']},
].forEach(({roles}) => {
it(`can change the username with roles ${roles && roles.length ? roles : JSON.stringify(roles)}`, async () => {
let username = 'spock';
let ctx = new Context({user});
let res = await graphql(schema, changeUsernameMutation, {}, ctx, {
user_id: user.id,
username,
});
if (res.errors && res.errors.length > 0) {
console.error(res.errors);
}
expect(res.errors).to.be.undefined;
expect(res.data.changeUsername).to.have.property('errors');
expect(res.data.changeUsername.errors).to.have.length(1);
expect(res.data.changeUsername.errors[0]).to.have.property('translation_key', 'NOT_AUTHORIZED');
// Set the user to the desired status.
user = await UsersService.setUsernameStatus(user.id, 'REJECTED');
expect(user.status.username.status, 'REJECTED');
ctx = new Context({user});
res = await graphql(schema, changeUsernameMutation, {}, ctx, {
user_id: user.id,
username,
});
if (res.errors && res.errors.length > 0) {
console.error(res.errors);
}
expect(res.errors).to.be.undefined;
expect(res.data.changeUsername).to.be.null;
user = await UsersService.findById(user.id);
expect(user.status.username.status, 'CHANGED');
});
});
});