fix errorHandler tests, add tests for res.respond

This commit is contained in:
Matteo Pagliazzi
2015-11-23 13:28:25 +01:00
parent 7086fbfbd6
commit 645095e58f
3 changed files with 63 additions and 10 deletions

View File

@@ -5,6 +5,8 @@ import {
} from '../../../../helpers/api-unit.helper';
import errorHandler from '../../../../../website/src/middlewares/api-v3/errorHandler';
import responseMiddleware from '../../../../../website/src/middlewares/api-v3/response';
import getUserLanguage from '../../../../../website/src/middlewares/api-v3/getUserLanguage';
import { BadRequest } from '../../../../../website/src/libs/api-v3/errors';
import logger from '../../../../../website/src/libs/api-v3/logger';
@@ -16,6 +18,8 @@ describe('errorHandler', () => {
res = generateRes();
req = generateReq();
next = generateNext();
responseMiddleware(req, res, next);
getUserLanguage(req, res, next);
sandbox.stub(logger, 'error');
});
@@ -30,6 +34,7 @@ describe('errorHandler', () => {
expect(res.status).to.be.calledWith(500);
expect(res.json).to.be.calledWith({
success: false,
error: 'InternalServerError',
message: 'An unexpected error occurred.',
});
@@ -46,6 +51,7 @@ describe('errorHandler', () => {
expect(res.status).to.be.calledWith(400);
expect(res.json).to.be.calledWith({
success: false,
error: 'Error',
message: 'Error message',
});
@@ -62,6 +68,7 @@ describe('errorHandler', () => {
expect(res.status).to.be.calledWith(500);
expect(res.json).to.be.calledWith({
success: false,
error: 'InternalServerError',
message: 'An unexpected error occurred.',
});
@@ -77,6 +84,7 @@ describe('errorHandler', () => {
expect(res.status).to.be.calledWith(400);
expect(res.json).to.be.calledWith({
success: false,
error: 'BadRequest',
message: 'Bad request.',
});
@@ -93,6 +101,7 @@ describe('errorHandler', () => {
expect(res.status).to.be.calledWith(error.statusCode);
expect(res.json).to.be.calledWith({
success: false,
error: error.name,
message: error.message,
});
@@ -108,6 +117,7 @@ describe('errorHandler', () => {
expect(res.status).to.be.calledWith(400);
expect(res.json).to.be.calledWith({
success: false,
error: 'BadRequest',
message: 'Invalid request parameters.',
errors: error,
@@ -133,6 +143,7 @@ describe('errorHandler', () => {
expect(res.status).to.be.calledWith(400);
expect(res.json).to.be.calledWith({
success: false,
error: 'BadRequest',
message: 'User validation failed.',
errors: [
@@ -154,11 +165,4 @@ describe('errorHandler', () => {
fullError: error,
});
});
it('does not send error if error is not defined', () => {
errorHandler(null, req, res, next);
expect(next).to.be.calledOnce;
expect(res.status).to.not.be.called;
});
});

View File

@@ -0,0 +1,51 @@
import {
generateRes,
generateReq,
generateNext,
} from '../../../../helpers/api-unit.helper';
import responseMiddleware from '../../../../../website/src/middlewares/api-v3/response'
describe('response middleware', function() {
let res, req, next;
beforeEach(() => {
res = generateRes();
req = generateReq();
next = generateNext();
});
it('attaches respond method to res', function() {
responseMiddleware(req, res, next);
expect(res.respond).to.exist;
});
it('can be used to respond to requests', function() {
responseMiddleware(req, res, next);
res.respond(200, {field: 1});
expect(res.status).to.be.calledOnce;
expect(res.json).to.be.calledOnce;
expect(res.status).to.be.calledWith(200);
expect(res.json).to.be.calledWith({
field: 1,
success: true,
});
});
it('treats status >= 400 as failures', function() {
responseMiddleware(req, res, next);
res.respond(403, {field: 1});
expect(res.status).to.be.calledOnce;
expect(res.json).to.be.calledOnce;
expect(res.status).to.be.calledWith(403);
expect(res.json).to.be.calledWith({
field: 1,
success: false,
});
});
});

View File

@@ -8,9 +8,7 @@ import {
} from '../../libs/api-v3/errors';
import { map } from 'lodash';
export default function errorHandler (err, req, res, next) {
if (!err) return next();
export default function errorHandler (err, req, res, next) { // eslint-disable-line no-unused-vars
// Log the original error with some metadata
let stack = err.stack || err.message || err;