fix test lint

This commit is contained in:
Matteo Pagliazzi
2019-10-08 20:45:38 +02:00
parent e37f4467f8
commit 85fb5f33aa
367 changed files with 6635 additions and 6080 deletions

View File

@@ -38,7 +38,7 @@ describe('DELETE social registration', () => {
'auth.facebook.id': 'some-fb-id',
});
let response = await user.del('/user/auth/social/facebook');
const response = await user.del('/user/auth/social/facebook');
expect(response).to.eql({});
await user.sync();
expect(user.auth.facebook).to.be.undefined;
@@ -51,7 +51,7 @@ describe('DELETE social registration', () => {
'auth.local': { ok: true },
});
let response = await user.del('/user/auth/social/facebook');
const response = await user.del('/user/auth/social/facebook');
expect(response).to.eql({});
await user.sync();
expect(user.auth.facebook).to.be.undefined;
@@ -76,7 +76,7 @@ describe('DELETE social registration', () => {
'auth.google.id': 'some-google-id',
});
let response = await user.del('/user/auth/social/google');
const response = await user.del('/user/auth/social/google');
expect(response).to.eql({});
await user.sync();
expect(user.auth.google).to.be.undefined;
@@ -89,7 +89,7 @@ describe('DELETE social registration', () => {
'auth.local': { ok: true },
});
let response = await user.del('/user/auth/social/google');
const response = await user.del('/user/auth/social/google');
expect(response).to.eql({});
await user.sync();
expect(user.auth.goodl).to.be.undefined;

View File

@@ -1,18 +1,18 @@
import {
encrypt,
} from '../../../../../../website/server/libs/encryption';
import moment from 'moment';
import superagent from 'superagent';
import nconf from 'nconf';
import {
generateUser,
} from '../../../../../helpers/api-integration/v3';
import superagent from 'superagent';
import nconf from 'nconf';
import {
encrypt,
} from '../../../../../../website/server/libs/encryption';
const API_TEST_SERVER_PORT = nconf.get('PORT');
// @TODO skipped because on travis the client isn't available and the redirect fails
xdescribe('GET /user/auth/local/reset-password-set-new-one', () => {
let endpoint = `http://localhost:${API_TEST_SERVER_PORT}/static/user/auth/local/reset-password-set-new-one`;
const endpoint = `http://localhost:${API_TEST_SERVER_PORT}/static/user/auth/local/reset-password-set-new-one`;
// Tests to validate the validatePasswordResetCodeAndFindUser function
@@ -27,9 +27,9 @@ xdescribe('GET /user/auth/local/reset-password-set-new-one', () => {
});
it('renders an error page if the code cannot be decrypted', async () => {
let user = await generateUser();
const user = await generateUser();
let code = JSON.stringify({ // not encrypted
const code = JSON.stringify({ // not encrypted
userId: user._id,
expiresAt: new Date(),
});
@@ -38,11 +38,11 @@ xdescribe('GET /user/auth/local/reset-password-set-new-one', () => {
});
it('renders an error page if the code is expired', async () => {
let user = await generateUser();
const user = await generateUser();
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().subtract({minutes: 1}),
expiresAt: moment().subtract({ minutes: 1 }),
}));
await user.update({
'auth.local.passwordResetCode': code,
@@ -53,9 +53,9 @@ xdescribe('GET /user/auth/local/reset-password-set-new-one', () => {
});
it('renders an error page if the user does not exist', async () => {
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: Date.now().toString(),
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
const res = await superagent.get(`${endpoint}?code=${code}`);
@@ -63,11 +63,11 @@ xdescribe('GET /user/auth/local/reset-password-set-new-one', () => {
});
it('renders an error page if the user has no local auth', async () => {
let user = await generateUser();
const user = await generateUser();
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
await user.update({
auth: 'not an object with valid fields',
@@ -78,11 +78,11 @@ xdescribe('GET /user/auth/local/reset-password-set-new-one', () => {
});
it('renders an error page if the code doesn\'t match the one saved at user.auth.passwordResetCode', async () => {
let user = await generateUser();
const user = await generateUser();
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
await user.update({
'auth.local.passwordResetCode': 'invalid',
@@ -95,19 +95,18 @@ xdescribe('GET /user/auth/local/reset-password-set-new-one', () => {
//
it('returns the password reset page if the password reset code is valid', async () => {
let user = await generateUser();
const user = await generateUser();
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
await user.update({
'auth.local.passwordResetCode': code,
});
let res = await superagent.get(`${endpoint}?code=${code}`);
const res = await superagent.get(`${endpoint}?code=${code}`);
expect(res.req.path.indexOf('hasError=false') !== -1).to.equal(true);
expect(res.req.path.indexOf('code=') !== -1).to.equal(true);
});
});

View File

@@ -1,3 +1,4 @@
import moment from 'moment';
import {
encrypt,
} from '../../../../../../website/server/libs/encryption';
@@ -7,7 +8,6 @@ import {
sha1MakeSalt,
sha1Encrypt as sha1EncryptPassword,
} from '../../../../../../website/server/libs/password';
import moment from 'moment';
import {
generateUser,
requester,
@@ -36,9 +36,9 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
});
it('renders an error page if the code cannot be decrypted', async () => {
let user = await generateUser();
const user = await generateUser();
let code = JSON.stringify({ // not encrypted
const code = JSON.stringify({ // not encrypted
userId: user._id,
expiresAt: new Date(),
});
@@ -53,11 +53,11 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
});
it('renders an error page if the code is expired', async () => {
let user = await generateUser();
const user = await generateUser();
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().subtract({minutes: 1}),
expiresAt: moment().subtract({ minutes: 1 }),
}));
await user.update({
'auth.local.passwordResetCode': code,
@@ -73,9 +73,9 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
});
it('renders an error page if the user does not exist', async () => {
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: Date.now().toString(),
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
await expect(api.post(`${endpoint}`, {
@@ -88,11 +88,11 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
});
it('renders an error page if the user has no local auth', async () => {
let user = await generateUser();
const user = await generateUser();
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
await expect(api.post(`${endpoint}`, {
@@ -105,11 +105,11 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
});
it('renders an error page if the code doesn\'t match the one saved at user.auth.passwordResetCode', async () => {
let user = await generateUser();
const user = await generateUser();
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
await user.update({
'auth.local.passwordResetCode': 'invalid',
@@ -127,11 +127,11 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
//
it('renders the error page if the new password is missing', async () => {
let user = await generateUser();
const user = await generateUser();
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
await user.update({
'auth.local.passwordResetCode': code,
@@ -147,11 +147,11 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
});
it('renders the error page if the password confirmation is missing', async () => {
let user = await generateUser();
const user = await generateUser();
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
await user.update({
'auth.local.passwordResetCode': code,
@@ -168,11 +168,11 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
});
it('renders the error page if the password confirmation does not match', async () => {
let user = await generateUser();
const user = await generateUser();
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
await user.update({
'auth.local.passwordResetCode': code,
@@ -190,17 +190,17 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
});
it('renders the success page and save the user', async () => {
let user = await generateUser();
const user = await generateUser();
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
await user.update({
'auth.local.passwordResetCode': code,
});
let res = await api.post(`${endpoint}`, {
const res = await api.post(`${endpoint}`, {
newPassword: 'my new password',
confirmPassword: 'my new password',
code,
@@ -212,16 +212,16 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
expect(user.auth.local.passwordResetCode).to.equal(undefined);
expect(user.auth.local.passwordHashMethod).to.equal('bcrypt');
expect(user.auth.local.salt).to.be.undefined;
let isPassValid = await compare(user, 'my new password');
const isPassValid = await compare(user, 'my new password');
expect(isPassValid).to.equal(true);
});
it('renders the success page and convert the password from sha1 to bcrypt', async () => {
let user = await generateUser();
const user = await generateUser();
let textPassword = 'mySecretPassword';
let salt = sha1MakeSalt();
let sha1HashedPassword = sha1EncryptPassword(textPassword, salt);
const textPassword = 'mySecretPassword';
const salt = sha1MakeSalt();
const sha1HashedPassword = sha1EncryptPassword(textPassword, salt);
await user.update({
'auth.local.hashed_password': sha1HashedPassword,
@@ -234,15 +234,15 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
expect(user.auth.local.salt).to.equal(salt);
expect(user.auth.local.hashed_password).to.equal(sha1HashedPassword);
let code = encrypt(JSON.stringify({
const code = encrypt(JSON.stringify({
userId: user._id,
expiresAt: moment().add({days: 1}),
expiresAt: moment().add({ days: 1 }),
}));
await user.update({
'auth.local.passwordResetCode': code,
});
let res = await api.post(`${endpoint}`, {
const res = await api.post(`${endpoint}`, {
newPassword: 'my new password',
confirmPassword: 'my new password',
code,
@@ -256,7 +256,7 @@ describe('POST /user/auth/reset-password-set-new-one', () => {
expect(user.auth.local.salt).to.be.undefined;
expect(user.auth.local.hashed_password).not.to.equal(sha1HashedPassword);
let isValidPassword = await bcryptCompare('my new password', user.auth.local.hashed_password);
const isValidPassword = await bcryptCompare('my new password', user.auth.local.hashed_password);
expect(isValidPassword).to.equal(true);
});
});

View File

@@ -1,3 +1,4 @@
import nconf from 'nconf';
import {
generateUser,
requester,
@@ -9,20 +10,19 @@ import {
sha1Encrypt as sha1EncryptPassword,
} from '../../../../../../website/server/libs/password';
import nconf from 'nconf';
describe('POST /user/auth/local/login', () => {
let api;
let user;
let endpoint = '/user/auth/local/login';
let password = 'password';
const endpoint = '/user/auth/local/login';
const password = 'password';
beforeEach(async () => {
api = requester();
user = await generateUser();
});
it('success with username', async () => {
let response = await api.post(endpoint, {
const response = await api.post(endpoint, {
username: user.auth.local.username,
password,
});
@@ -30,7 +30,7 @@ describe('POST /user/auth/local/login', () => {
});
it('success with email', async () => {
let response = await api.post(endpoint, {
const response = await api.post(endpoint, {
username: user.auth.local.email,
password,
});
@@ -81,9 +81,9 @@ describe('POST /user/auth/local/login', () => {
});
it('converts user with SHA1 encrypted password to bcrypt encryption', async () => {
let textPassword = 'mySecretPassword';
let salt = sha1MakeSalt();
let sha1HashedPassword = sha1EncryptPassword(textPassword, salt);
const textPassword = 'mySecretPassword';
const salt = sha1MakeSalt();
const sha1HashedPassword = sha1EncryptPassword(textPassword, salt);
await user.update({
'auth.local.hashed_password': sha1HashedPassword,
@@ -107,7 +107,7 @@ describe('POST /user/auth/local/login', () => {
expect(user.auth.local.salt).to.be.undefined;
expect(user.auth.local.hashed_password).not.to.equal(sha1HashedPassword);
let isValidPassword = await bcryptCompare(textPassword, user.auth.local.hashed_password);
const isValidPassword = await bcryptCompare(textPassword, user.auth.local.hashed_password);
expect(isValidPassword).to.equal(true);
});

View File

@@ -1,3 +1,5 @@
import { v4 as uuid } from 'uuid';
import { each } from 'lodash';
import {
generateUser,
requester,
@@ -6,8 +8,6 @@ import {
getProperty,
} from '../../../../../helpers/api-integration/v3';
import { ApiUser } from '../../../../../helpers/api-integration/api-classes';
import { v4 as uuid } from 'uuid';
import { each } from 'lodash';
import { encrypt } from '../../../../../../website/server/libs/encryption';
function generateRandomUserName () {
@@ -23,11 +23,11 @@ describe('POST /user/auth/local/register', () => {
});
it('registers a new user', async () => {
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
const username = generateRandomUserName();
const email = `${username}@example.com`;
const password = 'password';
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -42,11 +42,11 @@ describe('POST /user/auth/local/register', () => {
});
it('registers a new user and sets verifiedUsername to true', async () => {
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
const username = generateRandomUserName();
const email = `${username}@example.com`;
const password = 'password';
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -60,11 +60,11 @@ describe('POST /user/auth/local/register', () => {
xit('remove spaces from username', async () => {
// TODO can probably delete this test now
let username = ' usernamewithspaces ';
let email = 'test@example.com';
let password = 'password';
const username = ' usernamewithspaces ';
const email = 'test@example.com';
const password = 'password';
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -125,24 +125,24 @@ describe('POST /user/auth/local/register', () => {
context('provides default tags and tasks', async () => {
it('for a generic API consumer', async () => {
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
const username = generateRandomUserName();
const email = `${username}@example.com`;
const password = 'password';
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
confirmPassword: password,
});
let requests = new ApiUser(user);
const requests = new ApiUser(user);
let habits = await requests.get('/tasks/user?type=habits');
let dailys = await requests.get('/tasks/user?type=dailys');
let todos = await requests.get('/tasks/user?type=todos');
let rewards = await requests.get('/tasks/user?type=rewards');
let tags = await requests.get('/tags');
const habits = await requests.get('/tasks/user?type=habits');
const dailys = await requests.get('/tasks/user?type=dailys');
const todos = await requests.get('/tasks/user?type=todos');
const rewards = await requests.get('/tasks/user?type=rewards');
const tags = await requests.get('/tags');
expect(habits).to.have.a.lengthOf(0);
expect(dailys).to.have.a.lengthOf(0);
@@ -162,26 +162,26 @@ describe('POST /user/auth/local/register', () => {
xit('for Web', async () => {
api = requester(
null,
{'x-client': 'habitica-web'},
{ 'x-client': 'habitica-web' },
);
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
const username = generateRandomUserName();
const email = `${username}@example.com`;
const password = 'password';
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
confirmPassword: password,
});
let requests = new ApiUser(user);
const requests = new ApiUser(user);
let habits = await requests.get('/tasks/user?type=habits');
let dailys = await requests.get('/tasks/user?type=dailys');
let todos = await requests.get('/tasks/user?type=todos');
let rewards = await requests.get('/tasks/user?type=rewards');
let tags = await requests.get('/tags');
const habits = await requests.get('/tasks/user?type=habits');
const dailys = await requests.get('/tasks/user?type=dailys');
const todos = await requests.get('/tasks/user?type=todos');
const rewards = await requests.get('/tasks/user?type=rewards');
const tags = await requests.get('/tags');
expect(habits).to.have.a.lengthOf(3);
expect(habits[0].text).to.eql(t('defaultHabit1Text'));
@@ -216,26 +216,26 @@ describe('POST /user/auth/local/register', () => {
it('for Android', async () => {
api = requester(
null,
{'x-client': 'habitica-android'},
{ 'x-client': 'habitica-android' },
);
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
const username = generateRandomUserName();
const email = `${username}@example.com`;
const password = 'password';
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
confirmPassword: password,
});
let requests = new ApiUser(user);
const requests = new ApiUser(user);
let habits = await requests.get('/tasks/user?type=habits');
let dailys = await requests.get('/tasks/user?type=dailys');
let todos = await requests.get('/tasks/user?type=todos');
let rewards = await requests.get('/tasks/user?type=rewards');
let tags = await requests.get('/tags');
const habits = await requests.get('/tasks/user?type=habits');
const dailys = await requests.get('/tasks/user?type=dailys');
const todos = await requests.get('/tasks/user?type=todos');
const rewards = await requests.get('/tasks/user?type=rewards');
const tags = await requests.get('/tags');
expect(habits).to.have.a.lengthOf(0);
expect(dailys).to.have.a.lengthOf(0);
@@ -247,26 +247,26 @@ describe('POST /user/auth/local/register', () => {
it('for iOS', async () => {
api = requester(
null,
{'x-client': 'habitica-ios'},
{ 'x-client': 'habitica-ios' },
);
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
const username = generateRandomUserName();
const email = `${username}@example.com`;
const password = 'password';
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
confirmPassword: password,
});
let requests = new ApiUser(user);
const requests = new ApiUser(user);
let habits = await requests.get('/tasks/user?type=habits');
let dailys = await requests.get('/tasks/user?type=dailys');
let todos = await requests.get('/tasks/user?type=todos');
let rewards = await requests.get('/tasks/user?type=rewards');
let tags = await requests.get('/tags');
const habits = await requests.get('/tasks/user?type=habits');
const dailys = await requests.get('/tasks/user?type=dailys');
const todos = await requests.get('/tasks/user?type=todos');
const rewards = await requests.get('/tasks/user?type=rewards');
const tags = await requests.get('/tags');
expect(habits).to.have.a.lengthOf(0);
expect(dailys).to.have.a.lengthOf(0);
@@ -277,11 +277,11 @@ describe('POST /user/auth/local/register', () => {
});
xit('enrolls new users in an A/B test', async () => {
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
const username = generateRandomUserName();
const email = `${username}@example.com`;
const password = 'password';
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -292,11 +292,11 @@ describe('POST /user/auth/local/register', () => {
});
it('includes items awarded by default when creating a new user', async () => {
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
const username = generateRandomUserName();
const email = `${username}@example.com`;
const password = 'password';
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -309,10 +309,10 @@ describe('POST /user/auth/local/register', () => {
});
it('requires password and confirmPassword to match', async () => {
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
let confirmPassword = 'not password';
const username = generateRandomUserName();
const email = `${username}@example.com`;
const password = 'password';
const confirmPassword = 'not password';
await expect(api.post('/user/auth/local/register', {
username,
@@ -327,9 +327,9 @@ describe('POST /user/auth/local/register', () => {
});
it('requires a username', async () => {
let email = `${generateRandomUserName()}@example.com`;
let password = 'password';
let confirmPassword = 'password';
const email = `${generateRandomUserName()}@example.com`;
const password = 'password';
const confirmPassword = 'password';
await expect(api.post('/user/auth/local/register', {
email,
@@ -343,8 +343,8 @@ describe('POST /user/auth/local/register', () => {
});
it('requires an email', async () => {
let username = generateRandomUserName();
let password = 'password';
const username = generateRandomUserName();
const password = 'password';
await expect(api.post('/user/auth/local/register', {
username,
@@ -358,9 +358,9 @@ describe('POST /user/auth/local/register', () => {
});
it('requires a valid email', async () => {
let username = generateRandomUserName();
let email = 'notanemail@sdf';
let password = 'password';
const username = generateRandomUserName();
const email = 'notanemail@sdf';
const password = 'password';
await expect(api.post('/user/auth/local/register', {
username,
@@ -375,11 +375,11 @@ describe('POST /user/auth/local/register', () => {
});
it('sanitizes email params to a lowercase string before creating the user', async () => {
let username = generateRandomUserName();
let email = 'ISANEmAiL@ExAmPle.coM';
let password = 'password';
const username = generateRandomUserName();
const email = 'ISANEmAiL@ExAmPle.coM';
const password = 'password';
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -390,9 +390,9 @@ describe('POST /user/auth/local/register', () => {
});
it('fails on a habitica.com email', async () => {
let username = generateRandomUserName();
let email = `${username}@habitica.com`;
let password = 'password';
const username = generateRandomUserName();
const email = `${username}@habitica.com`;
const password = 'password';
await expect(api.post('/user/auth/local/register', {
username,
@@ -407,9 +407,9 @@ describe('POST /user/auth/local/register', () => {
});
it('fails on a habitrpg.com email', async () => {
let username = generateRandomUserName();
let email = `${username}@habitrpg.com`;
let password = 'password';
const username = generateRandomUserName();
const email = `${username}@habitrpg.com`;
const password = 'password';
await expect(api.post('/user/auth/local/register', {
username,
@@ -424,9 +424,9 @@ describe('POST /user/auth/local/register', () => {
});
it('requires a password', async () => {
let username = generateRandomUserName();
let email = `${username}@example.com`;
let confirmPassword = 'password';
const username = generateRandomUserName();
const email = `${username}@example.com`;
const confirmPassword = 'password';
await expect(api.post('/user/auth/local/register', {
username,
@@ -442,9 +442,9 @@ describe('POST /user/auth/local/register', () => {
context('attach to facebook user', () => {
let user;
let email = 'some@email.net';
let username = 'some-username';
let password = 'some-password';
const email = 'some@email.net';
const username = 'some-username';
const password = 'some-password';
beforeEach(async () => {
user = await generateUser();
});
@@ -475,7 +475,8 @@ describe('POST /user/auth/local/register', () => {
});
context('login is already taken', () => {
let username, email, api;
let username; let email; let
api;
beforeEach(async () => {
api = requester();
@@ -490,8 +491,8 @@ describe('POST /user/auth/local/register', () => {
});
it('rejects if username is already taken', async () => {
let uniqueEmail = `${generateRandomUserName()}@exampe.com`;
let password = 'password';
const uniqueEmail = `${generateRandomUserName()}@exampe.com`;
const password = 'password';
await expect(api.post('/user/auth/local/register', {
username,
@@ -506,8 +507,8 @@ describe('POST /user/auth/local/register', () => {
});
it('rejects if email is already taken', async () => {
let uniqueUsername = generateRandomUserName();
let password = 'password';
const uniqueUsername = generateRandomUserName();
const password = 'password';
await expect(api.post('/user/auth/local/register', {
username: uniqueUsername,
@@ -523,7 +524,8 @@ describe('POST /user/auth/local/register', () => {
});
context('req.query.groupInvite', () => {
let api, username, email, password;
let api; let username; let email; let
password;
beforeEach(() => {
api = requester();
@@ -533,7 +535,7 @@ describe('POST /user/auth/local/register', () => {
});
it('does not crash the signup process when it\'s invalid', async () => {
let user = await api.post('/user/auth/local/register?groupInvite=aaaaInvalid', {
const user = await api.post('/user/auth/local/register?groupInvite=aaaaInvalid', {
username,
email,
password,
@@ -544,17 +546,17 @@ describe('POST /user/auth/local/register', () => {
});
it('supports invite using req.query.groupInvite', async () => {
let { group, groupLeader } = await createAndPopulateGroup({
const { group, groupLeader } = await createAndPopulateGroup({
groupDetails: { type: 'party', privacy: 'private' },
});
let invite = encrypt(JSON.stringify({
const 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}`, {
const user = await api.post(`/user/auth/local/register?groupInvite=${invite}`, {
username,
email,
password,
@@ -567,11 +569,11 @@ describe('POST /user/auth/local/register', () => {
});
it('awards achievement to inviter', async () => {
let { group, groupLeader } = await createAndPopulateGroup({
const { group, groupLeader } = await createAndPopulateGroup({
groupDetails: { type: 'party', privacy: 'private' },
});
let invite = encrypt(JSON.stringify({
const invite = encrypt(JSON.stringify({
id: group._id,
inviter: groupLeader._id,
sentAt: Date.now(),
@@ -589,17 +591,17 @@ describe('POST /user/auth/local/register', () => {
});
it('user not added to a party on expired invite', async () => {
let { group, groupLeader } = await createAndPopulateGroup({
const { group, groupLeader } = await createAndPopulateGroup({
groupDetails: { type: 'party', privacy: 'private' },
});
let invite = encrypt(JSON.stringify({
const invite = encrypt(JSON.stringify({
id: group._id,
inviter: groupLeader._id,
sentAt: Date.now() - 6.912e8, // 8 days old
}));
let user = await api.post(`/user/auth/local/register?groupInvite=${invite}`, {
const user = await api.post(`/user/auth/local/register?groupInvite=${invite}`, {
username,
email,
password,
@@ -610,17 +612,17 @@ describe('POST /user/auth/local/register', () => {
});
it('adds a user to a guild on an invite of type other than party', async () => {
let { group, groupLeader } = await createAndPopulateGroup({
const { group, groupLeader } = await createAndPopulateGroup({
groupDetails: { type: 'guild', privacy: 'private' },
});
let invite = encrypt(JSON.stringify({
const invite = encrypt(JSON.stringify({
id: group._id,
inviter: groupLeader._id,
sentAt: Date.now(),
}));
let user = await api.post(`/user/auth/local/register?groupInvite=${invite}`, {
const user = await api.post(`/user/auth/local/register?groupInvite=${invite}`, {
username,
email,
password,
@@ -636,7 +638,8 @@ describe('POST /user/auth/local/register', () => {
});
context('successful login via api', () => {
let api, username, email, password;
let api; let username; let email; let
password;
beforeEach(() => {
api = requester();
@@ -646,7 +649,7 @@ describe('POST /user/auth/local/register', () => {
});
it('sets all site tour values to -2 (already seen)', async () => {
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -655,13 +658,13 @@ describe('POST /user/auth/local/register', () => {
expect(user.flags.tour).to.not.be.empty;
each(user.flags.tour, (value) => {
each(user.flags.tour, value => {
expect(value).to.eql(-2);
});
});
it('populates user with default todos, not no other task types', async () => {
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -675,7 +678,7 @@ describe('POST /user/auth/local/register', () => {
});
it('populates user with default tags', async () => {
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -687,17 +690,18 @@ describe('POST /user/auth/local/register', () => {
});
context('successful login with habitica-web header', () => {
let api, username, email, password;
let api; let username; let email; let
password;
beforeEach(() => {
api = requester({}, {'x-client': 'habitica-web'});
api = requester({}, { 'x-client': 'habitica-web' });
username = generateRandomUserName();
email = `${username}@example.com`;
password = 'password';
});
it('sets all common tutorial flags to true', async () => {
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -706,13 +710,13 @@ describe('POST /user/auth/local/register', () => {
expect(user.flags.tour).to.not.be.empty;
each(user.flags.tutorial.common, (value) => {
each(user.flags.tutorial.common, value => {
expect(value).to.eql(true);
});
});
it('populates user with default todos, habits, and rewards', async () => {
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -726,7 +730,7 @@ describe('POST /user/auth/local/register', () => {
});
it('populates user with default tags', async () => {
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
@@ -737,17 +741,17 @@ describe('POST /user/auth/local/register', () => {
});
it('adds the correct tags to the correct tasks', async () => {
let user = await api.post('/user/auth/local/register', {
const user = await api.post('/user/auth/local/register', {
username,
email,
password,
confirmPassword: password,
});
let requests = new ApiUser(user);
const requests = new ApiUser(user);
let habits = await requests.get('/tasks/user?type=habits');
let todos = await requests.get('/tasks/user?type=todos');
const habits = await requests.get('/tasks/user?type=habits');
const todos = await requests.get('/tasks/user?type=todos');
expect(habits).to.have.a.lengthOf(0);
expect(todos).to.have.a.lengthOf(0);

View File

@@ -1,18 +1,18 @@
import passport from 'passport';
import {
generateUser,
requester,
translate as t,
getProperty,
} from '../../../../../helpers/api-integration/v3';
import passport from 'passport';
describe('POST /user/auth/social', () => {
let api;
let user;
let endpoint = '/user/auth/social';
let randomAccessToken = '123456';
let facebookId = 'facebookId';
let googleId = 'googleId';
const endpoint = '/user/auth/social';
const randomAccessToken = '123456';
const facebookId = 'facebookId';
const googleId = 'googleId';
let network = 'NoNetwork';
beforeEach(async () => {
@@ -22,7 +22,7 @@ describe('POST /user/auth/social', () => {
it('fails if network is not supported', async () => {
await expect(api.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
})).to.eventually.be.rejected.and.eql({
code: 400,
@@ -33,14 +33,14 @@ describe('POST /user/auth/social', () => {
describe('facebook', () => {
before(async () => {
let expectedResult = {id: facebookId, displayName: 'a facebook user'};
const expectedResult = { id: facebookId, displayName: 'a facebook user' };
sandbox.stub(passport._strategies.facebook, 'userProfile').yields(null, expectedResult);
network = 'facebook';
});
it('registers a new user', async () => {
const response = await api.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
@@ -54,13 +54,13 @@ describe('POST /user/auth/social', () => {
});
it('logs an existing user in', async () => {
let registerResponse = await api.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
const registerResponse = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
let response = await api.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
const response = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
@@ -70,8 +70,8 @@ describe('POST /user/auth/social', () => {
});
it('add social auth to an existing user', async () => {
let response = await user.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
const response = await user.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
@@ -82,7 +82,7 @@ describe('POST /user/auth/social', () => {
xit('enrolls a new user in an A/B test', async () => {
await api.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
@@ -92,14 +92,14 @@ describe('POST /user/auth/social', () => {
describe('google', () => {
before(async () => {
let expectedResult = {id: googleId, displayName: 'a google user'};
const expectedResult = { id: googleId, displayName: 'a google user' };
sandbox.stub(passport._strategies.google, 'userProfile').yields(null, expectedResult);
network = 'google';
});
it('registers a new user', async () => {
let response = await api.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
const response = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
@@ -110,13 +110,13 @@ describe('POST /user/auth/social', () => {
});
it('logs an existing user in', async () => {
let registerResponse = await api.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
const registerResponse = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
let response = await api.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
const response = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
@@ -126,8 +126,8 @@ describe('POST /user/auth/social', () => {
});
it('add social auth to an existing user', async () => {
let response = await user.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
const response = await user.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
@@ -138,7 +138,7 @@ describe('POST /user/auth/social', () => {
xit('enrolls a new user in an A/B test', async () => {
await api.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});

View File

@@ -1,14 +1,14 @@
import moment from 'moment';
import {
generateUser,
translate as t,
} from '../../../../../helpers/api-integration/v3';
import moment from 'moment';
import {
decrypt,
} from '../../../../../../website/server/libs/encryption';
describe('POST /user/reset-password', async () => {
let endpoint = '/user/reset-password';
const endpoint = '/user/reset-password';
let user;
beforeEach(async () => {
@@ -16,8 +16,8 @@ describe('POST /user/reset-password', async () => {
});
it('resets password', async () => {
let previousPassword = user.auth.local.hashed_password;
let response = await user.post(endpoint, {
const previousPassword = user.auth.local.hashed_password;
const response = await user.post(endpoint, {
email: user.auth.local.email,
});
expect(response).to.eql({ data: {}, message: t('passwordReset') });
@@ -26,7 +26,7 @@ describe('POST /user/reset-password', async () => {
});
it('same message on error as on success', async () => {
let response = await user.post(endpoint, {
const response = await user.post(endpoint, {
email: 'nonExistent@email.com',
});
expect(response).to.eql({ data: {}, message: t('passwordReset') });
@@ -50,8 +50,8 @@ describe('POST /user/reset-password', async () => {
await user.sync();
expect(user.auth.local.passwordResetCode).to.be.a.string;
let decryptedCode = JSON.parse(decrypt(user.auth.local.passwordResetCode));
const decryptedCode = JSON.parse(decrypt(user.auth.local.passwordResetCode));
expect(decryptedCode.userId).to.equal(user._id);
expect(moment(decryptedCode.expiresAt).isAfter(moment().add({hours: 23}))).to.equal(true);
expect(moment(decryptedCode.expiresAt).isAfter(moment().add({ hours: 23 }))).to.equal(true);
});
});

View File

@@ -1,3 +1,4 @@
import nconf from 'nconf';
import {
generateUser,
translate as t,
@@ -8,13 +9,12 @@ import {
sha1Encrypt as sha1EncryptPassword,
} from '../../../../../../website/server/libs/password';
import nconf from 'nconf';
const ENDPOINT = '/user/auth/update-email';
describe('PUT /user/auth/update-email', () => {
let newEmail = 'SOmE-nEw-emAIl_2@example.net';
let oldPassword = 'password'; // from habitrpg/test/helpers/api-integration/v3/object-generators.js
const newEmail = 'SOmE-nEw-emAIl_2@example.net';
const oldPassword = 'password'; // from habitrpg/test/helpers/api-integration/v3/object-generators.js
context('Local Authenticaion User', async () => {
let user;
@@ -53,8 +53,8 @@ describe('PUT /user/auth/update-email', () => {
});
it('changes email if new email and existing password are provided', async () => {
let lowerCaseNewEmail = newEmail.toLowerCase();
let response = await user.put(ENDPOINT, {
const lowerCaseNewEmail = newEmail.toLowerCase();
const response = await user.put(ENDPOINT, {
newEmail,
password: oldPassword,
});
@@ -76,10 +76,10 @@ describe('PUT /user/auth/update-email', () => {
});
it('converts user with SHA1 encrypted password to bcrypt encryption', async () => {
let textPassword = 'mySecretPassword';
let salt = sha1MakeSalt();
let sha1HashedPassword = sha1EncryptPassword(textPassword, salt);
let myNewEmail = 'my-new-random-email@example.net';
const textPassword = 'mySecretPassword';
const salt = sha1MakeSalt();
const sha1HashedPassword = sha1EncryptPassword(textPassword, salt);
const myNewEmail = 'my-new-random-email@example.net';
await user.update({
'auth.local.hashed_password': sha1HashedPassword,
@@ -93,7 +93,7 @@ describe('PUT /user/auth/update-email', () => {
expect(user.auth.local.hashed_password).to.equal(sha1HashedPassword);
// update email
let response = await user.put(ENDPOINT, {
const response = await user.put(ENDPOINT, {
newEmail: myNewEmail,
password: textPassword,
});
@@ -106,7 +106,7 @@ describe('PUT /user/auth/update-email', () => {
expect(user.auth.local.salt).to.be.undefined;
expect(user.auth.local.hashed_password).not.to.equal(sha1HashedPassword);
let isValidPassword = await bcryptCompare(textPassword, user.auth.local.hashed_password);
const isValidPassword = await bcryptCompare(textPassword, user.auth.local.hashed_password);
expect(isValidPassword).to.equal(true);
});
});

View File

@@ -12,17 +12,17 @@ const ENDPOINT = '/user/auth/update-password';
describe('PUT /user/auth/update-password', async () => {
let user;
let password = 'password'; // from habitrpg/test/helpers/api-integration/v3/object-generators.js
let wrongPassword = 'wrong-password';
let newPassword = 'new-password';
const password = 'password'; // from habitrpg/test/helpers/api-integration/v3/object-generators.js
const wrongPassword = 'wrong-password';
const newPassword = 'new-password';
beforeEach(async () => {
user = await generateUser();
});
it('successfully changes the password', async () => {
let previousHashedPassword = user.auth.local.hashed_password;
let response = await user.put(ENDPOINT, {
const previousHashedPassword = user.auth.local.hashed_password;
const response = await user.put(ENDPOINT, {
password,
newPassword,
confirmPassword: newPassword,
@@ -57,7 +57,7 @@ describe('PUT /user/auth/update-password', async () => {
});
it('returns an error when password is missing', async () => {
let body = {
const body = {
newPassword,
confirmPassword: newPassword,
};
@@ -70,7 +70,7 @@ describe('PUT /user/auth/update-password', async () => {
});
it('returns an error when newPassword is missing', async () => {
let body = {
const body = {
password,
confirmPassword: newPassword,
};
@@ -83,7 +83,7 @@ describe('PUT /user/auth/update-password', async () => {
});
it('returns an error when confirmPassword is missing', async () => {
let body = {
const body = {
password,
newPassword,
};
@@ -96,9 +96,9 @@ describe('PUT /user/auth/update-password', async () => {
});
it('converts user with SHA1 encrypted password to bcrypt encryption', async () => {
let textPassword = 'mySecretPassword';
let salt = sha1MakeSalt();
let sha1HashedPassword = sha1EncryptPassword(textPassword, salt);
const textPassword = 'mySecretPassword';
const salt = sha1MakeSalt();
const sha1HashedPassword = sha1EncryptPassword(textPassword, salt);
await user.update({
'auth.local.hashed_password': sha1HashedPassword,
@@ -123,7 +123,7 @@ describe('PUT /user/auth/update-password', async () => {
expect(user.auth.local.salt).to.be.undefined;
expect(user.auth.local.hashed_password).not.to.equal(sha1HashedPassword);
let isValidPassword = await bcryptCompare(newPassword, user.auth.local.hashed_password);
const isValidPassword = await bcryptCompare(newPassword, user.auth.local.hashed_password);
expect(isValidPassword).to.equal(true);
});
});

View File

@@ -12,15 +12,15 @@ const ENDPOINT = '/user/auth/update-username';
describe('PUT /user/auth/update-username', async () => {
let user;
let password = 'password'; // from habitrpg/test/helpers/api-integration/v4/object-generators.js
const password = 'password'; // from habitrpg/test/helpers/api-integration/v4/object-generators.js
beforeEach(async () => {
user = await generateUser();
});
it('successfully changes username with password', async () => {
let newUsername = 'new-username';
let response = await user.put(ENDPOINT, {
const newUsername = 'new-username';
const response = await user.put(ENDPOINT, {
username: newUsername,
password,
});
@@ -30,8 +30,8 @@ describe('PUT /user/auth/update-username', async () => {
});
it('successfully changes username without password', async () => {
let newUsername = 'new-username-nopw';
let response = await user.put(ENDPOINT, {
const newUsername = 'new-username-nopw';
const response = await user.put(ENDPOINT, {
username: newUsername,
});
expect(response).to.eql({ username: newUsername });
@@ -40,8 +40,8 @@ describe('PUT /user/auth/update-username', async () => {
});
it('successfully changes username containing number and underscore', async () => {
let newUsername = 'new_username9';
let response = await user.put(ENDPOINT, {
const newUsername = 'new_username9';
const response = await user.put(ENDPOINT, {
username: newUsername,
});
expect(response).to.eql({ username: newUsername });
@@ -52,8 +52,8 @@ describe('PUT /user/auth/update-username', async () => {
it('sets verifiedUsername when changing username', async () => {
user.flags.verifiedUsername = false;
await user.sync();
let newUsername = 'new-username-verify';
let response = await user.put(ENDPOINT, {
const newUsername = 'new-username-verify';
const response = await user.put(ENDPOINT, {
username: newUsername,
});
expect(response).to.eql({ username: newUsername });
@@ -62,10 +62,10 @@ describe('PUT /user/auth/update-username', async () => {
});
it('converts user with SHA1 encrypted password to bcrypt encryption', async () => {
let myNewUsername = 'my-new-username';
let textPassword = 'mySecretPassword';
let salt = sha1MakeSalt();
let sha1HashedPassword = sha1EncryptPassword(textPassword, salt);
const myNewUsername = 'my-new-username';
const textPassword = 'mySecretPassword';
const salt = sha1MakeSalt();
const sha1HashedPassword = sha1EncryptPassword(textPassword, salt);
await user.update({
'auth.local.hashed_password': sha1HashedPassword,
@@ -79,7 +79,7 @@ describe('PUT /user/auth/update-username', async () => {
expect(user.auth.local.hashed_password).to.equal(sha1HashedPassword);
// update email
let response = await user.put(ENDPOINT, {
const response = await user.put(ENDPOINT, {
username: myNewUsername,
password: textPassword,
});
@@ -92,14 +92,14 @@ describe('PUT /user/auth/update-username', async () => {
expect(user.auth.local.salt).to.be.undefined;
expect(user.auth.local.hashed_password).not.to.equal(sha1HashedPassword);
let isValidPassword = await bcryptCompare(textPassword, user.auth.local.hashed_password);
const isValidPassword = await bcryptCompare(textPassword, user.auth.local.hashed_password);
expect(isValidPassword).to.equal(true);
});
context('errors', async () => {
it('prevents username update if new username is already taken', async () => {
let existingUsername = 'existing-username';
await generateUser({'auth.local.username': existingUsername, 'auth.local.lowerCaseUsername': existingUsername });
const existingUsername = 'existing-username';
await generateUser({ 'auth.local.username': existingUsername, 'auth.local.lowerCaseUsername': existingUsername });
await expect(user.put(ENDPOINT, {
username: existingUsername,
@@ -112,7 +112,7 @@ describe('PUT /user/auth/update-username', async () => {
});
it('errors if password is wrong', async () => {
let newUsername = 'new-username';
const newUsername = 'new-username';
await expect(user.put(ENDPOINT, {
username: newUsername,
password: 'wrong-password',