mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 15:17:25 +01:00
fix test lint
This commit is contained in:
@@ -1,16 +1,17 @@
|
||||
/* eslint-disable global-require */
|
||||
import nconf from 'nconf';
|
||||
import requireAgain from 'require-again';
|
||||
import {
|
||||
generateRes,
|
||||
generateReq,
|
||||
generateNext,
|
||||
} from '../../../helpers/api-unit.helper';
|
||||
import * as analyticsService from '../../../../website/server/libs/analyticsService';
|
||||
import nconf from 'nconf';
|
||||
import requireAgain from 'require-again';
|
||||
|
||||
describe('analytics middleware', () => {
|
||||
let res, req, next;
|
||||
let pathToAnalyticsMiddleware = '../../../../website/server/middlewares/analytics';
|
||||
let res; let req; let
|
||||
next;
|
||||
const pathToAnalyticsMiddleware = '../../../../website/server/middlewares/analytics';
|
||||
|
||||
beforeEach(() => {
|
||||
res = generateRes();
|
||||
@@ -19,7 +20,7 @@ describe('analytics middleware', () => {
|
||||
});
|
||||
|
||||
it('attaches analytics object res.locals', () => {
|
||||
let attachAnalytics = requireAgain(pathToAnalyticsMiddleware).default;
|
||||
const attachAnalytics = requireAgain(pathToAnalyticsMiddleware).default;
|
||||
|
||||
attachAnalytics(req, res, next);
|
||||
|
||||
@@ -28,7 +29,7 @@ describe('analytics middleware', () => {
|
||||
|
||||
it('attaches stubbed methods for non-prod environments', () => {
|
||||
sandbox.stub(nconf, 'get').withArgs('IS_PROD').returns(false);
|
||||
let attachAnalytics = requireAgain(pathToAnalyticsMiddleware).default;
|
||||
const attachAnalytics = requireAgain(pathToAnalyticsMiddleware).default;
|
||||
|
||||
attachAnalytics(req, res, next);
|
||||
|
||||
@@ -39,7 +40,7 @@ describe('analytics middleware', () => {
|
||||
it('attaches real methods for prod environments', () => {
|
||||
sandbox.stub(nconf, 'get').withArgs('IS_PROD').returns(true);
|
||||
|
||||
let attachAnalytics = requireAgain(pathToAnalyticsMiddleware).default;
|
||||
const attachAnalytics = requireAgain(pathToAnalyticsMiddleware).default;
|
||||
|
||||
attachAnalytics(req, res, next);
|
||||
|
||||
|
||||
@@ -5,7 +5,8 @@ import {
|
||||
import { authWithHeaders as authWithHeadersFactory } from '../../../../website/server/middlewares/auth';
|
||||
|
||||
describe('auth middleware', () => {
|
||||
let res, req, user;
|
||||
let res; let req; let
|
||||
user;
|
||||
|
||||
beforeEach(async () => {
|
||||
res = generateRes();
|
||||
@@ -14,7 +15,7 @@ describe('auth middleware', () => {
|
||||
});
|
||||
|
||||
describe('auth with headers', () => {
|
||||
it('allows to specify a list of user field that we do not want to load', (done) => {
|
||||
it('allows to specify a list of user field that we do not want to load', done => {
|
||||
const authWithHeaders = authWithHeadersFactory({
|
||||
userFieldsToExclude: ['items'],
|
||||
});
|
||||
@@ -22,18 +23,18 @@ describe('auth middleware', () => {
|
||||
req.headers['x-api-user'] = user._id;
|
||||
req.headers['x-api-key'] = user.apiToken;
|
||||
|
||||
authWithHeaders(req, res, (err) => {
|
||||
authWithHeaders(req, res, err => {
|
||||
if (err) return done(err);
|
||||
|
||||
const userToJSON = res.locals.user.toJSON();
|
||||
expect(userToJSON.items).to.not.exist;
|
||||
expect(userToJSON.auth).to.exist;
|
||||
|
||||
done();
|
||||
return done();
|
||||
});
|
||||
});
|
||||
|
||||
it('makes sure some fields are always included', (done) => {
|
||||
it('makes sure some fields are always included', done => {
|
||||
const authWithHeaders = authWithHeadersFactory({
|
||||
userFieldsToExclude: [
|
||||
'items', 'auth.timestamps',
|
||||
@@ -44,7 +45,7 @@ describe('auth middleware', () => {
|
||||
req.headers['x-api-user'] = user._id;
|
||||
req.headers['x-api-key'] = user.apiToken;
|
||||
|
||||
authWithHeaders(req, res, (err) => {
|
||||
authWithHeaders(req, res, err => {
|
||||
if (err) return done(err);
|
||||
|
||||
const userToJSON = res.locals.user.toJSON();
|
||||
@@ -56,7 +57,7 @@ describe('auth middleware', () => {
|
||||
expect(userToJSON._id).to.exist;
|
||||
expect(userToJSON.flags).to.exist;
|
||||
|
||||
done();
|
||||
return done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -7,7 +7,8 @@ import {
|
||||
import cors from '../../../../website/server/middlewares/cors';
|
||||
|
||||
describe('cors middleware', () => {
|
||||
let res, req, next;
|
||||
let res; let req; let
|
||||
next;
|
||||
|
||||
beforeEach(() => {
|
||||
req = generateReq();
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import moment from 'moment';
|
||||
import { v4 as generateUUID } from 'uuid';
|
||||
import {
|
||||
generateRes,
|
||||
generateReq,
|
||||
@@ -5,22 +7,21 @@ import {
|
||||
generateDaily,
|
||||
} from '../../../helpers/api-unit.helper';
|
||||
import cronMiddleware from '../../../../website/server/middlewares/cron';
|
||||
import moment from 'moment';
|
||||
import { model as User } from '../../../../website/server/models/user';
|
||||
import { model as Group } from '../../../../website/server/models/group';
|
||||
import * as Tasks from '../../../../website/server/models/task';
|
||||
import * as analyticsService from '../../../../website/server/libs/analyticsService';
|
||||
import * as cronLib from '../../../../website/server/libs/cron';
|
||||
import { v4 as generateUUID } from 'uuid';
|
||||
|
||||
const CRON_TIMEOUT_WAIT = new Date(60 * 60 * 1000).getTime();
|
||||
const CRON_TIMEOUT_UNIT = new Date(60 * 1000).getTime();
|
||||
|
||||
describe('cron middleware', () => {
|
||||
let res, req;
|
||||
let res; let
|
||||
req;
|
||||
let user;
|
||||
|
||||
beforeEach((done) => {
|
||||
beforeEach(done => {
|
||||
res = generateRes();
|
||||
req = generateReq();
|
||||
user = new User({
|
||||
@@ -48,33 +49,35 @@ describe('cron middleware', () => {
|
||||
sandbox.restore();
|
||||
});
|
||||
|
||||
it('calls next when user is not attached', (done) => {
|
||||
it('calls next when user is not attached', done => {
|
||||
res.locals.user = null;
|
||||
cronMiddleware(req, res, done);
|
||||
});
|
||||
|
||||
it('calls next when days have not been missed', (done) => {
|
||||
it('calls next when days have not been missed', done => {
|
||||
cronMiddleware(req, res, done);
|
||||
});
|
||||
|
||||
it('should clear todos older than 30 days for free users', async () => {
|
||||
user.lastCron = moment(new Date()).subtract({days: 2});
|
||||
let task = generateTodo(user);
|
||||
task.dateCompleted = moment(new Date()).subtract({days: 31});
|
||||
user.lastCron = moment(new Date()).subtract({ days: 2 });
|
||||
const task = generateTodo(user);
|
||||
task.dateCompleted = moment(new Date()).subtract({ days: 31 });
|
||||
task.completed = true;
|
||||
await task.save();
|
||||
await user.save();
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
cronMiddleware(req, res, (err) => {
|
||||
cronMiddleware(req, res, err => {
|
||||
if (err) return reject(err);
|
||||
|
||||
Tasks.Task.findOne({_id: task}, function (secondErr, taskFound) {
|
||||
Tasks.Task.findOne({ _id: task }, (secondErr, taskFound) => {
|
||||
if (secondErr) return reject(err);
|
||||
expect(secondErr).to.not.exist;
|
||||
expect(taskFound).to.not.exist;
|
||||
resolve();
|
||||
return resolve();
|
||||
});
|
||||
|
||||
return null;
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -82,22 +85,23 @@ describe('cron middleware', () => {
|
||||
it('should not clear todos older than 30 days for subscribed users', async () => {
|
||||
user.purchased.plan.customerId = 'subscribedId';
|
||||
user.purchased.plan.dateUpdated = moment('012013', 'MMYYYY');
|
||||
user.lastCron = moment(new Date()).subtract({days: 2});
|
||||
let task = generateTodo(user);
|
||||
task.dateCompleted = moment(new Date()).subtract({days: 31});
|
||||
user.lastCron = moment(new Date()).subtract({ days: 2 });
|
||||
const task = generateTodo(user);
|
||||
task.dateCompleted = moment(new Date()).subtract({ days: 31 });
|
||||
task.completed = true;
|
||||
await task.save();
|
||||
await user.save();
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
cronMiddleware(req, res, (err) => {
|
||||
cronMiddleware(req, res, err => {
|
||||
if (err) return reject(err);
|
||||
Tasks.Task.findOne({_id: task}, function (secondErr, taskFound) {
|
||||
Tasks.Task.findOne({ _id: task }, (secondErr, taskFound) => {
|
||||
if (secondErr) return reject(secondErr);
|
||||
expect(secondErr).to.not.exist;
|
||||
expect(taskFound).to.exist;
|
||||
resolve();
|
||||
return resolve();
|
||||
});
|
||||
return null;
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -105,105 +109,106 @@ describe('cron middleware', () => {
|
||||
it('should clear todos older than 90 days for subscribed users', async () => {
|
||||
user.purchased.plan.customerId = 'subscribedId';
|
||||
user.purchased.plan.dateUpdated = moment('012013', 'MMYYYY');
|
||||
user.lastCron = moment(new Date()).subtract({days: 2});
|
||||
user.lastCron = moment(new Date()).subtract({ days: 2 });
|
||||
|
||||
let task = generateTodo(user);
|
||||
task.dateCompleted = moment(new Date()).subtract({days: 91});
|
||||
const task = generateTodo(user);
|
||||
task.dateCompleted = moment(new Date()).subtract({ days: 91 });
|
||||
task.completed = true;
|
||||
await task.save();
|
||||
await user.save();
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
cronMiddleware(req, res, (err) => {
|
||||
cronMiddleware(req, res, err => {
|
||||
if (err) return reject(err);
|
||||
Tasks.Task.findOne({_id: task}, function (secondErr, taskFound) {
|
||||
Tasks.Task.findOne({ _id: task }, (secondErr, taskFound) => {
|
||||
if (secondErr) return reject(secondErr);
|
||||
expect(secondErr).to.not.exist;
|
||||
expect(taskFound).to.not.exist;
|
||||
resolve();
|
||||
return resolve();
|
||||
});
|
||||
return null;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should call next if user was not modified after cron', async () => {
|
||||
let hpBefore = user.stats.hp;
|
||||
user.lastCron = moment(new Date()).subtract({days: 2});
|
||||
const hpBefore = user.stats.hp;
|
||||
user.lastCron = moment(new Date()).subtract({ days: 2 });
|
||||
await user.save();
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
cronMiddleware(req, res, (err) => {
|
||||
cronMiddleware(req, res, err => {
|
||||
if (err) return reject(err);
|
||||
expect(hpBefore).to.equal(user.stats.hp);
|
||||
resolve();
|
||||
return resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('updates user.auth.timestamps.loggedin and lastCron', async () => {
|
||||
user.lastCron = moment(new Date()).subtract({days: 2});
|
||||
let now = new Date();
|
||||
user.lastCron = moment(new Date()).subtract({ days: 2 });
|
||||
const now = new Date();
|
||||
await user.save();
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
cronMiddleware(req, res, (err) => {
|
||||
cronMiddleware(req, res, err => {
|
||||
if (err) return reject(err);
|
||||
expect(moment(now).isSame(user.lastCron, 'day'));
|
||||
expect(moment(now).isSame(user.auth.timestamps.loggedin, 'day'));
|
||||
resolve();
|
||||
return resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('does damage for missing dailies', async () => {
|
||||
let hpBefore = user.stats.hp;
|
||||
user.lastCron = moment(new Date()).subtract({days: 2});
|
||||
let daily = generateDaily(user);
|
||||
daily.startDate = moment(new Date()).subtract({days: 2});
|
||||
const hpBefore = user.stats.hp;
|
||||
user.lastCron = moment(new Date()).subtract({ days: 2 });
|
||||
const daily = generateDaily(user);
|
||||
daily.startDate = moment(new Date()).subtract({ days: 2 });
|
||||
await daily.save();
|
||||
await user.save();
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
cronMiddleware(req, res, (err) => {
|
||||
cronMiddleware(req, res, err => {
|
||||
if (err) return reject(err);
|
||||
User.findOne({_id: user._id}, function (secondErr, updatedUser) {
|
||||
return User.findOne({ _id: user._id }, (secondErr, updatedUser) => {
|
||||
if (secondErr) return reject(secondErr);
|
||||
expect(updatedUser.stats.hp).to.be.lessThan(hpBefore);
|
||||
resolve();
|
||||
return resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('updates tasks', async () => {
|
||||
user.lastCron = moment(new Date()).subtract({days: 2});
|
||||
let todo = generateTodo(user);
|
||||
let todoValueBefore = todo.value;
|
||||
user.lastCron = moment(new Date()).subtract({ days: 2 });
|
||||
const todo = generateTodo(user);
|
||||
const todoValueBefore = todo.value;
|
||||
await Promise.all([todo.save(), user.save()]);
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
cronMiddleware(req, res, (err) => {
|
||||
cronMiddleware(req, res, err => {
|
||||
if (err) return reject(err);
|
||||
Tasks.Task.findOne({_id: todo._id}, function (secondErr, todoFound) {
|
||||
return Tasks.Task.findOne({ _id: todo._id }, (secondErr, todoFound) => {
|
||||
if (secondErr) return reject(secondErr);
|
||||
expect(todoFound.value).to.be.lessThan(todoValueBefore);
|
||||
resolve();
|
||||
return resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('applies quest progress', async () => {
|
||||
let hpBefore = user.stats.hp;
|
||||
user.lastCron = moment(new Date()).subtract({days: 2});
|
||||
let daily = generateDaily(user);
|
||||
daily.startDate = moment(new Date()).subtract({days: 2});
|
||||
const hpBefore = user.stats.hp;
|
||||
user.lastCron = moment(new Date()).subtract({ days: 2 });
|
||||
const daily = generateDaily(user);
|
||||
daily.startDate = moment(new Date()).subtract({ days: 2 });
|
||||
await daily.save();
|
||||
|
||||
let questKey = 'dilatory';
|
||||
const questKey = 'dilatory';
|
||||
user.party.quest.key = questKey;
|
||||
|
||||
let party = new Group({
|
||||
const party = new Group({
|
||||
type: 'party',
|
||||
name: generateUUID(),
|
||||
leader: user._id,
|
||||
@@ -218,22 +223,22 @@ describe('cron middleware', () => {
|
||||
party.startQuest(user);
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
cronMiddleware(req, res, (err) => {
|
||||
cronMiddleware(req, res, err => {
|
||||
if (err) return reject(err);
|
||||
User.findOne({_id: user._id}, function (secondErr, updatedUser) {
|
||||
return User.findOne({ _id: user._id }, (secondErr, updatedUser) => {
|
||||
if (secondErr) return reject(secondErr);
|
||||
expect(updatedUser.stats.hp).to.be.lessThan(hpBefore);
|
||||
resolve();
|
||||
return resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('recovers from failed cron and does not error when user is already cronning', async () => {
|
||||
user.lastCron = moment(new Date()).subtract({days: 2});
|
||||
user.lastCron = moment(new Date()).subtract({ days: 2 });
|
||||
await user.save();
|
||||
|
||||
let updatedUser = user.toObject();
|
||||
const updatedUser = user.toObject();
|
||||
updatedUser.nMatched = 0;
|
||||
|
||||
sandbox.spy(cronLib, 'recoverCron');
|
||||
@@ -242,8 +247,8 @@ describe('cron middleware', () => {
|
||||
.withArgs({
|
||||
_id: user._id,
|
||||
$or: [
|
||||
{_cronSignature: 'NOT_RUNNING'},
|
||||
{_cronSignature: {$lt: sinon.match.number}},
|
||||
{ _cronSignature: 'NOT_RUNNING' },
|
||||
{ _cronSignature: { $lt: sinon.match.number } },
|
||||
],
|
||||
})
|
||||
.returns({
|
||||
@@ -253,18 +258,18 @@ describe('cron middleware', () => {
|
||||
});
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
cronMiddleware(req, res, (err) => {
|
||||
cronMiddleware(req, res, err => {
|
||||
if (err) return reject(err);
|
||||
expect(cronLib.recoverCron).to.be.calledOnce;
|
||||
|
||||
resolve();
|
||||
return resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('cronSignature less than an hour ago should error', async () => {
|
||||
user.lastCron = moment(new Date()).subtract({days: 2});
|
||||
let now = new Date();
|
||||
user.lastCron = moment(new Date()).subtract({ days: 2 });
|
||||
const now = new Date();
|
||||
await User.update({
|
||||
_id: user._id,
|
||||
}, {
|
||||
@@ -273,20 +278,20 @@ describe('cron middleware', () => {
|
||||
},
|
||||
}).exec();
|
||||
await user.save();
|
||||
let expectedErrMessage = `Impossible to recover from cron for user ${user._id}.`;
|
||||
const expectedErrMessage = `Impossible to recover from cron for user ${user._id}.`;
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
cronMiddleware(req, res, (err) => {
|
||||
cronMiddleware(req, res, err => {
|
||||
if (!err) return reject(new Error('Cron should have failed.'));
|
||||
expect(err.message).to.be.equal(expectedErrMessage);
|
||||
resolve();
|
||||
return resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('cronSignature longer than an hour ago should allow cron', async () => {
|
||||
user.lastCron = moment(new Date()).subtract({days: 2});
|
||||
let now = new Date();
|
||||
user.lastCron = moment(new Date()).subtract({ days: 2 });
|
||||
const now = new Date();
|
||||
await User.update({
|
||||
_id: user._id,
|
||||
}, {
|
||||
@@ -297,11 +302,11 @@ describe('cron middleware', () => {
|
||||
await user.save();
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
cronMiddleware(req, res, (err) => {
|
||||
cronMiddleware(req, res, err => {
|
||||
if (err) return reject(err);
|
||||
expect(moment(now).isSame(user.auth.timestamps.loggedin, 'day'));
|
||||
expect(user._cronSignature).to.be.equal('NOT_RUNNING');
|
||||
resolve();
|
||||
return resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -10,7 +10,8 @@ import { NotAuthorized } from '../../../../website/server/libs/errors';
|
||||
import apiError from '../../../../website/server/libs/apiError';
|
||||
|
||||
describe('ensure access middlewares', () => {
|
||||
let res, req, next;
|
||||
let res; let req; let
|
||||
next;
|
||||
|
||||
beforeEach(() => {
|
||||
res = generateRes();
|
||||
@@ -20,7 +21,7 @@ describe('ensure access middlewares', () => {
|
||||
|
||||
context('ensure admin', () => {
|
||||
it('returns not authorized when user is not an admin', () => {
|
||||
res.locals = {user: {contributor: {admin: false}}};
|
||||
res.locals = { user: { contributor: { admin: false } } };
|
||||
|
||||
ensureAdmin(req, res, next);
|
||||
|
||||
@@ -30,7 +31,7 @@ describe('ensure access middlewares', () => {
|
||||
});
|
||||
|
||||
it('passes when user is an admin', () => {
|
||||
res.locals = {user: {contributor: {admin: true}}};
|
||||
res.locals = { user: { contributor: { admin: true } } };
|
||||
|
||||
ensureAdmin(req, res, next);
|
||||
|
||||
@@ -41,7 +42,7 @@ describe('ensure access middlewares', () => {
|
||||
|
||||
context('ensure sudo', () => {
|
||||
it('returns not authorized when user is not a sudo user', () => {
|
||||
res.locals = {user: {contributor: {sudo: false}}};
|
||||
res.locals = { user: { contributor: { sudo: false } } };
|
||||
|
||||
ensureSudo(req, res, next);
|
||||
|
||||
@@ -51,7 +52,7 @@ describe('ensure access middlewares', () => {
|
||||
});
|
||||
|
||||
it('passes when user is a sudo user', () => {
|
||||
res.locals = {user: {contributor: {sudo: true}}};
|
||||
res.locals = { user: { contributor: { sudo: true } } };
|
||||
|
||||
ensureSudo(req, res, next);
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/* eslint-disable global-require */
|
||||
import nconf from 'nconf';
|
||||
import {
|
||||
generateRes,
|
||||
generateReq,
|
||||
@@ -6,10 +7,10 @@ import {
|
||||
} from '../../../helpers/api-unit.helper';
|
||||
import ensureDevelpmentMode from '../../../../website/server/middlewares/ensureDevelpmentMode';
|
||||
import { NotFound } from '../../../../website/server/libs/errors';
|
||||
import nconf from 'nconf';
|
||||
|
||||
describe('developmentMode middleware', () => {
|
||||
let res, req, next;
|
||||
let res; let req; let
|
||||
next;
|
||||
|
||||
beforeEach(() => {
|
||||
res = generateRes();
|
||||
|
||||
@@ -15,7 +15,8 @@ import { BadRequest } from '../../../../website/server/libs/errors';
|
||||
import logger from '../../../../website/server/libs/logger';
|
||||
|
||||
describe('errorHandler', () => {
|
||||
let res, req, next;
|
||||
let res; let req; let
|
||||
next;
|
||||
|
||||
beforeEach(() => {
|
||||
res = generateRes();
|
||||
@@ -29,7 +30,7 @@ describe('errorHandler', () => {
|
||||
});
|
||||
|
||||
it('sends internal server error if error is not a CustomError and is not identified', () => {
|
||||
let error = new Error();
|
||||
const error = new Error();
|
||||
|
||||
errorHandler(error, req, res, next);
|
||||
|
||||
@@ -45,7 +46,7 @@ describe('errorHandler', () => {
|
||||
});
|
||||
|
||||
it('identifies errors with statusCode property and format them correctly', () => {
|
||||
let error = new Error('Error message');
|
||||
const error = new Error('Error message');
|
||||
error.statusCode = 400;
|
||||
|
||||
errorHandler(error, req, res, next);
|
||||
@@ -62,7 +63,7 @@ describe('errorHandler', () => {
|
||||
});
|
||||
|
||||
it('doesn\'t leak info about 500 errors', () => {
|
||||
let error = new Error('Some secret error message');
|
||||
const error = new Error('Some secret error message');
|
||||
error.statusCode = 500;
|
||||
|
||||
errorHandler(error, req, res, next);
|
||||
@@ -79,7 +80,7 @@ describe('errorHandler', () => {
|
||||
});
|
||||
|
||||
it('sends CustomError', () => {
|
||||
let error = new BadRequest();
|
||||
const error = new BadRequest();
|
||||
|
||||
errorHandler(error, req, res, next);
|
||||
|
||||
@@ -95,7 +96,7 @@ describe('errorHandler', () => {
|
||||
});
|
||||
|
||||
it('handle http-errors errors', () => {
|
||||
let error = new Error('custom message');
|
||||
const error = new Error('custom message');
|
||||
error.statusCode = 422;
|
||||
|
||||
errorHandler(error, req, res, next);
|
||||
@@ -112,7 +113,7 @@ describe('errorHandler', () => {
|
||||
});
|
||||
|
||||
it('handle express-validator errors', () => {
|
||||
let error = [{param: 'param', msg: 'invalid param', value: 123}];
|
||||
const error = [{ param: 'param', msg: 'invalid param', value: 123 }];
|
||||
|
||||
errorHandler(error, req, res, next);
|
||||
|
||||
@@ -131,7 +132,7 @@ describe('errorHandler', () => {
|
||||
});
|
||||
|
||||
it('handle Mongoose Validation errors', () => {
|
||||
let error = new Error('User validation failed');
|
||||
const error = new Error('User validation failed');
|
||||
error.name = 'ValidationError';
|
||||
|
||||
error.errors = {
|
||||
@@ -159,7 +160,7 @@ describe('errorHandler', () => {
|
||||
});
|
||||
|
||||
it('logs error', () => {
|
||||
let error = new BadRequest();
|
||||
const error = new BadRequest();
|
||||
|
||||
errorHandler(error, req, res, next);
|
||||
|
||||
|
||||
@@ -10,11 +10,12 @@ import {
|
||||
import common from '../../../../website/common';
|
||||
import { model as User } from '../../../../website/server/models/user';
|
||||
|
||||
const i18n = common.i18n;
|
||||
const { i18n } = common;
|
||||
|
||||
describe('language middleware', () => {
|
||||
describe('res.t', () => {
|
||||
let res, req, next;
|
||||
let res; let req; let
|
||||
next;
|
||||
|
||||
beforeEach(() => {
|
||||
res = generateRes();
|
||||
@@ -46,9 +47,10 @@ describe('language middleware', () => {
|
||||
});
|
||||
|
||||
describe('getUserLanguage', () => {
|
||||
let res, req, next;
|
||||
let res; let req; let
|
||||
next;
|
||||
|
||||
let checkResT = (resToCheck) => {
|
||||
const checkResT = resToCheck => {
|
||||
expect(resToCheck.t).to.be.a('function');
|
||||
expect(resToCheck.t('help')).to.equal(i18n.t('help', req.language));
|
||||
};
|
||||
@@ -119,7 +121,7 @@ describe('language middleware', () => {
|
||||
checkResT(res);
|
||||
});
|
||||
|
||||
it('falls back to english if the user preferred language is not avalaible', (done) => {
|
||||
it('falls back to english if the user preferred language is not avalaible', done => {
|
||||
req.locals = {
|
||||
user: {
|
||||
preferences: {
|
||||
@@ -155,7 +157,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
|
||||
context('request with session', () => {
|
||||
it('uses the user preferred language if avalaible', (done) => {
|
||||
it('uses the user preferred language if avalaible', done => {
|
||||
sandbox.stub(User, 'findOne').returns({
|
||||
lean () {
|
||||
return this;
|
||||
@@ -182,7 +184,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
|
||||
context('browser fallback', () => {
|
||||
it('uses browser specificed language', (done) => {
|
||||
it('uses browser specificed language', done => {
|
||||
req.headers['accept-language'] = 'pt';
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
@@ -192,7 +194,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('uses first language in series if browser specifies multiple', (done) => {
|
||||
it('uses first language in series if browser specifies multiple', done => {
|
||||
req.headers['accept-language'] = 'he, pt, it';
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
@@ -202,7 +204,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('skips invalid lanaguages and uses first language in series if browser specifies multiple', (done) => {
|
||||
it('skips invalid lanaguages and uses first language in series if browser specifies multiple', done => {
|
||||
req.headers['accept-language'] = 'blah, he, pt, it';
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
@@ -212,7 +214,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('uses normal version of language if specialized locale is passed in', (done) => {
|
||||
it('uses normal version of language if specialized locale is passed in', done => {
|
||||
req.headers['accept-language'] = 'fr-CA';
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
@@ -222,7 +224,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('uses normal version of language if specialized locale is passed in', (done) => {
|
||||
it('uses normal version of language if specialized locale is passed in', done => {
|
||||
req.headers['accept-language'] = 'fr-CA';
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
@@ -232,7 +234,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('uses es if es is passed in', (done) => {
|
||||
it('uses es if es is passed in', done => {
|
||||
req.headers['accept-language'] = 'es';
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
@@ -242,7 +244,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('uses es_419 if applicable es-languages are passed in', (done) => {
|
||||
it('uses es_419 if applicable es-languages are passed in', done => {
|
||||
req.headers['accept-language'] = 'es-mx';
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
@@ -252,7 +254,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('uses es_419 if multiple es languages are passed in', (done) => {
|
||||
it('uses es_419 if multiple es languages are passed in', done => {
|
||||
req.headers['accept-language'] = 'es-GT, es-MX, es-CR';
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
@@ -262,7 +264,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('zh', (done) => {
|
||||
it('zh', done => {
|
||||
req.headers['accept-language'] = 'zh-TW';
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
@@ -272,7 +274,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('uses english if browser specified language is not compatible', (done) => {
|
||||
it('uses english if browser specified language is not compatible', done => {
|
||||
req.headers['accept-language'] = 'blah';
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
@@ -282,7 +284,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('uses english if browser does not specify', (done) => {
|
||||
it('uses english if browser does not specify', done => {
|
||||
req.headers['accept-language'] = '';
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
@@ -292,7 +294,7 @@ describe('language middleware', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('uses english if browser does not supply an accept-language header', (done) => {
|
||||
it('uses english if browser does not supply an accept-language header', done => {
|
||||
delete req.headers['accept-language'];
|
||||
|
||||
getUserLanguage(req, res, () => {
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import nconf from 'nconf';
|
||||
import requireAgain from 'require-again';
|
||||
import {
|
||||
generateRes,
|
||||
generateReq,
|
||||
generateNext,
|
||||
} from '../../../helpers/api-unit.helper';
|
||||
import nconf from 'nconf';
|
||||
import requireAgain from 'require-again';
|
||||
|
||||
describe('maintenance mode middleware', () => {
|
||||
let res, req, next;
|
||||
let pathToMaintenanceModeMiddleware = '../../../../website/server/middlewares/maintenanceMode';
|
||||
let res; let req; let
|
||||
next;
|
||||
const pathToMaintenanceModeMiddleware = '../../../../website/server/middlewares/maintenanceMode';
|
||||
|
||||
beforeEach(() => {
|
||||
res = generateRes();
|
||||
@@ -18,7 +19,7 @@ describe('maintenance mode middleware', () => {
|
||||
it('does not return 503 error when maintenance mode is off', () => {
|
||||
req = generateReq();
|
||||
sandbox.stub(nconf, 'get').withArgs('MAINTENANCE_MODE').returns('false');
|
||||
let attachMaintenanceMode = requireAgain(pathToMaintenanceModeMiddleware).default;
|
||||
const attachMaintenanceMode = requireAgain(pathToMaintenanceModeMiddleware).default;
|
||||
|
||||
attachMaintenanceMode(req, res, next);
|
||||
|
||||
@@ -29,7 +30,7 @@ describe('maintenance mode middleware', () => {
|
||||
it('returns 503 error when maintenance mode is on', () => {
|
||||
req = generateReq();
|
||||
sandbox.stub(nconf, 'get').withArgs('MAINTENANCE_MODE').returns('true');
|
||||
let attachMaintenanceMode = requireAgain(pathToMaintenanceModeMiddleware).default;
|
||||
const attachMaintenanceMode = requireAgain(pathToMaintenanceModeMiddleware).default;
|
||||
|
||||
attachMaintenanceMode(req, res, next);
|
||||
|
||||
@@ -39,18 +40,18 @@ describe('maintenance mode middleware', () => {
|
||||
});
|
||||
|
||||
it('renders maintenance page when request type is HTML', () => {
|
||||
req = generateReq({headers: {accept: 'text/html'}});
|
||||
req = generateReq({ headers: { accept: 'text/html' } });
|
||||
sandbox.stub(nconf, 'get').withArgs('MAINTENANCE_MODE').returns('true');
|
||||
let attachMaintenanceMode = requireAgain(pathToMaintenanceModeMiddleware).default;
|
||||
const attachMaintenanceMode = requireAgain(pathToMaintenanceModeMiddleware).default;
|
||||
|
||||
attachMaintenanceMode(req, res, next);
|
||||
expect(res.render).to.have.been.calledOnce;
|
||||
});
|
||||
|
||||
it('sends error message when request type is JSON', () => {
|
||||
req = generateReq({headers: {accept: 'application/json'}});
|
||||
req = generateReq({ headers: { accept: 'application/json' } });
|
||||
sandbox.stub(nconf, 'get').withArgs('MAINTENANCE_MODE').returns('true');
|
||||
let attachMaintenanceMode = requireAgain(pathToMaintenanceModeMiddleware).default;
|
||||
const attachMaintenanceMode = requireAgain(pathToMaintenanceModeMiddleware).default;
|
||||
|
||||
attachMaintenanceMode(req, res, next);
|
||||
expect(res.send).to.have.been.calledOnce;
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import nconf from 'nconf';
|
||||
import requireAgain from 'require-again';
|
||||
import {
|
||||
generateRes,
|
||||
generateReq,
|
||||
generateNext,
|
||||
} from '../../../helpers/api-unit.helper';
|
||||
import nconf from 'nconf';
|
||||
import requireAgain from 'require-again';
|
||||
|
||||
describe('redirects middleware', () => {
|
||||
let res, req, next;
|
||||
let pathToRedirectsMiddleware = '../../../../website/server/middlewares/redirects';
|
||||
let res; let req; let
|
||||
next;
|
||||
const pathToRedirectsMiddleware = '../../../../website/server/middlewares/redirects';
|
||||
|
||||
beforeEach(() => {
|
||||
res = generateRes();
|
||||
@@ -18,13 +19,13 @@ describe('redirects middleware', () => {
|
||||
|
||||
context('forceSSL', () => {
|
||||
it('sends http requests to https', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IS_PROD').returns(true);
|
||||
req.header = sandbox.stub().withArgs('x-forwarded-proto').returns('http');
|
||||
req.originalUrl = '/static/front';
|
||||
|
||||
let attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
const attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
|
||||
attachRedirects.forceSSL(req, res, next);
|
||||
|
||||
@@ -33,13 +34,13 @@ describe('redirects middleware', () => {
|
||||
});
|
||||
|
||||
it('does not redirect https forwarded requests', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IS_PROD').returns(true);
|
||||
req.header = sandbox.stub().withArgs('x-forwarded-proto').returns('https');
|
||||
req.originalUrl = '/static/front';
|
||||
|
||||
let attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
const attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
|
||||
attachRedirects.forceSSL(req, res, next);
|
||||
|
||||
@@ -47,13 +48,13 @@ describe('redirects middleware', () => {
|
||||
});
|
||||
|
||||
it('does not redirect outside of production environments', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IS_PROD').returns(false);
|
||||
req.header = sandbox.stub().withArgs('x-forwarded-proto').returns('http');
|
||||
req.originalUrl = '/static/front';
|
||||
|
||||
let attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
const attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
|
||||
attachRedirects.forceSSL(req, res, next);
|
||||
|
||||
@@ -61,13 +62,13 @@ describe('redirects middleware', () => {
|
||||
});
|
||||
|
||||
it('does not redirect if base URL is not https', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('http://habitica.com');
|
||||
nconfStub.withArgs('IS_PROD').returns(true);
|
||||
req.header = sandbox.stub().withArgs('x-forwarded-proto').returns('http');
|
||||
req.originalUrl = '/static/front';
|
||||
|
||||
let attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
const attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
|
||||
attachRedirects.forceSSL(req, res, next);
|
||||
|
||||
@@ -75,7 +76,7 @@ describe('redirects middleware', () => {
|
||||
});
|
||||
|
||||
it('does not redirect if passed skip ssl request param is passed with corrrect key', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IS_PROD').returns(true);
|
||||
nconfStub.withArgs('SKIP_SSL_CHECK_KEY').returns('test-key');
|
||||
@@ -91,7 +92,7 @@ describe('redirects middleware', () => {
|
||||
});
|
||||
|
||||
it('does redirect if skip ssl request param is passed with incorrrect key', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IS_PROD').returns(true);
|
||||
nconfStub.withArgs('SKIP_SSL_CHECK_KEY').returns('test-key');
|
||||
@@ -108,7 +109,7 @@ describe('redirects middleware', () => {
|
||||
});
|
||||
|
||||
it('does redirect if skip ssl check key is not set', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IS_PROD').returns(true);
|
||||
nconfStub.withArgs('SKIP_SSL_CHECK_KEY').returns(null);
|
||||
@@ -127,7 +128,7 @@ describe('redirects middleware', () => {
|
||||
|
||||
context('forceHabitica', () => {
|
||||
it('sends requests with differing hostname to base URL host', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IGNORE_REDIRECT').returns('false');
|
||||
nconfStub.withArgs('IS_PROD').returns(true);
|
||||
@@ -136,7 +137,7 @@ describe('redirects middleware', () => {
|
||||
req.originalUrl = '/static/front';
|
||||
req.url = '/static/front';
|
||||
|
||||
let attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
const attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
|
||||
attachRedirects.forceHabitica(req, res, next);
|
||||
|
||||
@@ -145,7 +146,7 @@ describe('redirects middleware', () => {
|
||||
});
|
||||
|
||||
it('does not redirect outside of production environments', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IGNORE_REDIRECT').returns('false');
|
||||
nconfStub.withArgs('IS_PROD').returns(false);
|
||||
@@ -154,7 +155,7 @@ describe('redirects middleware', () => {
|
||||
req.originalUrl = '/static/front';
|
||||
req.url = '/static/front';
|
||||
|
||||
let attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
const attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
|
||||
attachRedirects.forceHabitica(req, res, next);
|
||||
|
||||
@@ -162,7 +163,7 @@ describe('redirects middleware', () => {
|
||||
});
|
||||
|
||||
it('does not redirect if env is set to ignore redirection', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IGNORE_REDIRECT').returns('true');
|
||||
nconfStub.withArgs('IS_PROD').returns(true);
|
||||
@@ -171,7 +172,7 @@ describe('redirects middleware', () => {
|
||||
req.originalUrl = '/static/front';
|
||||
req.url = '/static/front';
|
||||
|
||||
let attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
const attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
|
||||
attachRedirects.forceHabitica(req, res, next);
|
||||
|
||||
@@ -179,7 +180,7 @@ describe('redirects middleware', () => {
|
||||
});
|
||||
|
||||
it('does not redirect if request hostname matches base URL host', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IGNORE_REDIRECT').returns('false');
|
||||
nconfStub.withArgs('IS_PROD').returns(true);
|
||||
@@ -188,7 +189,7 @@ describe('redirects middleware', () => {
|
||||
req.originalUrl = '/static/front';
|
||||
req.url = '/static/front';
|
||||
|
||||
let attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
const attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
|
||||
attachRedirects.forceHabitica(req, res, next);
|
||||
|
||||
@@ -196,7 +197,7 @@ describe('redirects middleware', () => {
|
||||
});
|
||||
|
||||
it('does not redirect if request is an API URL', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IGNORE_REDIRECT').returns('false');
|
||||
nconfStub.withArgs('IS_PROD').returns(true);
|
||||
@@ -205,7 +206,7 @@ describe('redirects middleware', () => {
|
||||
req.originalUrl = '/api/v3/challenges';
|
||||
req.url = '/api/v3/challenges';
|
||||
|
||||
let attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
const attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
|
||||
attachRedirects.forceHabitica(req, res, next);
|
||||
|
||||
@@ -213,7 +214,7 @@ describe('redirects middleware', () => {
|
||||
});
|
||||
|
||||
it('does not redirect if request method is not GET', () => {
|
||||
let nconfStub = sandbox.stub(nconf, 'get');
|
||||
const nconfStub = sandbox.stub(nconf, 'get');
|
||||
nconfStub.withArgs('BASE_URL').returns('https://habitica.com');
|
||||
nconfStub.withArgs('IGNORE_REDIRECT').returns('false');
|
||||
nconfStub.withArgs('IS_PROD').returns(true);
|
||||
@@ -222,7 +223,7 @@ describe('redirects middleware', () => {
|
||||
req.originalUrl = '/static/front';
|
||||
req.url = '/static/front';
|
||||
|
||||
let attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
const attachRedirects = requireAgain(pathToRedirectsMiddleware);
|
||||
|
||||
attachRedirects.forceHabitica(req, res, next);
|
||||
|
||||
|
||||
@@ -7,7 +7,8 @@ import responseMiddleware from '../../../../website/server/middlewares/response'
|
||||
import packageInfo from '../../../../package.json';
|
||||
|
||||
describe('response middleware', () => {
|
||||
let res, req, next;
|
||||
let res; let req; let
|
||||
next;
|
||||
|
||||
beforeEach(() => {
|
||||
res = generateRes();
|
||||
@@ -24,7 +25,7 @@ describe('response middleware', () => {
|
||||
|
||||
it('can be used to respond to requests', () => {
|
||||
responseMiddleware(req, res, next);
|
||||
res.respond(200, {field: 1});
|
||||
res.respond(200, { field: 1 });
|
||||
|
||||
expect(res.status).to.be.calledOnce;
|
||||
expect(res.json).to.be.calledOnce;
|
||||
@@ -32,7 +33,7 @@ describe('response middleware', () => {
|
||||
expect(res.status).to.be.calledWith(200);
|
||||
expect(res.json).to.be.calledWith({
|
||||
success: true,
|
||||
data: {field: 1},
|
||||
data: { field: 1 },
|
||||
notifications: [],
|
||||
userV: res.locals.user._v,
|
||||
appVersion: packageInfo.version,
|
||||
@@ -41,7 +42,7 @@ describe('response middleware', () => {
|
||||
|
||||
it('can be passed a third parameter to be used as optional message', () => {
|
||||
responseMiddleware(req, res, next);
|
||||
res.respond(200, {field: 1}, 'hello');
|
||||
res.respond(200, { field: 1 }, 'hello');
|
||||
|
||||
expect(res.status).to.be.calledOnce;
|
||||
expect(res.json).to.be.calledOnce;
|
||||
@@ -49,7 +50,7 @@ describe('response middleware', () => {
|
||||
expect(res.status).to.be.calledWith(200);
|
||||
expect(res.json).to.be.calledWith({
|
||||
success: true,
|
||||
data: {field: 1},
|
||||
data: { field: 1 },
|
||||
message: 'hello',
|
||||
notifications: [],
|
||||
userV: res.locals.user._v,
|
||||
@@ -59,7 +60,7 @@ describe('response middleware', () => {
|
||||
|
||||
it('treats status >= 400 as failures', () => {
|
||||
responseMiddleware(req, res, next);
|
||||
res.respond(403, {field: 1});
|
||||
res.respond(403, { field: 1 });
|
||||
|
||||
expect(res.status).to.be.calledOnce;
|
||||
expect(res.json).to.be.calledOnce;
|
||||
@@ -67,7 +68,7 @@ describe('response middleware', () => {
|
||||
expect(res.status).to.be.calledWith(403);
|
||||
expect(res.json).to.be.calledWith({
|
||||
success: false,
|
||||
data: {field: 1},
|
||||
data: { field: 1 },
|
||||
notifications: [],
|
||||
userV: res.locals.user._v,
|
||||
appVersion: packageInfo.version,
|
||||
@@ -76,13 +77,13 @@ describe('response middleware', () => {
|
||||
|
||||
it('returns userV if a user is authenticated', () => {
|
||||
responseMiddleware(req, res, next);
|
||||
res.respond(200, {field: 1});
|
||||
res.respond(200, { field: 1 });
|
||||
|
||||
expect(res.json).to.be.calledOnce;
|
||||
|
||||
expect(res.json).to.be.calledWith({
|
||||
success: true,
|
||||
data: {field: 1},
|
||||
data: { field: 1 },
|
||||
notifications: [],
|
||||
userV: 0,
|
||||
appVersion: packageInfo.version,
|
||||
@@ -90,24 +91,25 @@ describe('response middleware', () => {
|
||||
});
|
||||
|
||||
it('returns notifications if a user is authenticated', () => {
|
||||
const user = res.locals.user;
|
||||
const { user } = res.locals;
|
||||
|
||||
user.notifications = [
|
||||
null, // invalid, not an object
|
||||
{seen: true}, // invalid, no type or id
|
||||
{id: 123}, // invalid, no type
|
||||
// {type: 'ABC'}, // invalid, no id, not included here because the id would be added automatically
|
||||
{type: 'ABC', id: '123'}, // valid
|
||||
{ seen: true }, // invalid, no type or id
|
||||
{ id: 123 }, // invalid, no type
|
||||
// invalid, no id, not included here because the id would be added automatically
|
||||
// {type: 'ABC'},
|
||||
{ type: 'ABC', id: '123' }, // valid
|
||||
];
|
||||
|
||||
responseMiddleware(req, res, next);
|
||||
res.respond(200, {field: 1});
|
||||
res.respond(200, { field: 1 });
|
||||
|
||||
expect(res.json).to.be.calledOnce;
|
||||
|
||||
expect(res.json).to.be.calledWith({
|
||||
success: true,
|
||||
data: {field: 1},
|
||||
data: { field: 1 },
|
||||
notifications: [
|
||||
{
|
||||
type: 'ABC',
|
||||
|
||||
Reference in New Issue
Block a user