🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

common-errors

Package Overview
Dependencies
Maintainers
1
Versions
47
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

common-errors - npm Package Compare versions

Comparing version

to
0.4.18

4

lib/http-status.js

@@ -45,3 +45,5 @@ var util = require('util');

var params = req && req.params || {};
if(/GET|HEAD/i.test(method) || params.hasOwnProperty(err.argumentName)) err.status_code = 404;
var route_path = req && req.route && req.route.path || '';
if(/GET|HEAD/i.test(method) || params.hasOwnProperty(err.argumentName) || new RegExp(":" + err.argumentName + '').test(route_path + '/')) err.status_code = 404;
else err.status_code = 400;

@@ -48,0 +50,0 @@ err.message = err.message.replace(new RegExp("^Missing argument: (" + err.argumentName + ")$"), 'Not Found: "$1"' );

@@ -15,3 +15,3 @@ var HttpStatusError = require('../http-status');

res.send(err.status_code, err.message);
res.status(err.status_code).send(err.message);
}

@@ -5,3 +5,3 @@ {

"description": "Common error classes and utility functions",
"version": "0.4.17",
"version": "0.4.18",
"repository": {

@@ -18,3 +18,4 @@ "type": "git",

"dependencies": {
"lodash": "= 2.4.1"
"lodash": "= 2.4.1",
"route-parser": "0.0.2"
},

@@ -24,3 +25,7 @@ "devDependencies": {

"sinon": "*",
"common-errors": "git://github.com/shutterstock/node-common-errors.git#global_extend.v1"
"supertest": "*",
"common-errors": "git://github.com/shutterstock/node-common-errors.git#global_extend.v1",
"express": "4.x.x",
"express3": "git://github.com/dfenster/express3.git",
"body-parser": "*"
},

@@ -45,4 +50,5 @@ "keywords": [

"main": "index.js",
"engines": { "node": ">= 0.8" }
"engines": {
"node": ">= 0.8"
}
}

@@ -13,2 +13,5 @@ common-errors

## Installation
```npm install common-errors```
## Class Directory

@@ -15,0 +18,0 @@

var assert = require('assert');
var sinon = require('sinon');
var supertest = require('supertest');
var express3 = require('express3');
var express4 = require('express');
var body_parser = require('body-parser');
var errors = require('../../');

@@ -8,12 +12,14 @@ var errorHandler = errors.middleware.errorHandler;

var Response = function Response(){}
Response.prototype.send = function(status_code, message){
this.status_code = status_code;
this.message = message;
};
describe("errorHandler", function(){
var err;
describe("errorHandler", function(){
var app = new express4();
app.use(body_parser.json());
app.all('/error', function(req, res, next){ return next(err); });
app.post('/error/:test', function(req, res, next){ return next(err); });
app.use(errorHandler);
var request = new supertest(app);
beforeEach(function(){
sandbox.stub(console, 'error', function(message){
})
sandbox.stub(console, 'error', function(message){ });
});

@@ -25,112 +31,173 @@

it("should handle NotPermittedError", function(){
var res = new Response();
errorHandler(new errors.NotPermitted("don't do that"), {}, res);
assert.equal(res.status_code, 403);
assert.equal(res.message, "An attempt was made to perform an operation that is invalid: don't do that");
assert.ok(!console.error.called);
it("should handle NotPermittedError", function(done){
err = new errors.NotPermitted("don't do that");
request.get('/error').end(function(err, res){
assert.equal(res.res.statusCode, 403);
assert.equal(res.text, "An attempt was made to perform an operation that is invalid: don't do that");
assert.ok(!console.error.called, "console.error not called");
done();
});
});
it("should handle AuthenticationRequired", function(){
var res = new Response();
errorHandler(new errors.AuthenticationRequired("gime password"), {}, res);
assert.equal(res.status_code, 401);
assert.equal(res.message, "An attempt was made to perform an operation without authentication: gime password");
assert.ok(!console.error.called);
it("should handle AuthenticationRequired", function(done){
err = new errors.AuthenticationRequired("gime password");
request.get('/error').end(function(err, res){
assert.equal(res.res.statusCode, 401);
assert.equal(res.text, "An attempt was made to perform an operation without authentication: gime password");
assert.ok(!console.error.called, "console.error not called");
done();
});
});
it("should handle Validation", function(){
var res = new Response();
errorHandler(new errors.Validation("bad"), {}, res);
assert.equal(res.status_code, 400);
assert.equal(res.message, "bad");
assert.ok(!console.error.called);
it("should handle Validation", function(done){
err = new errors.Validation("bad")
request.get('/error').end(function(err, res){
assert.equal(res.res.statusCode, 400);
assert.equal(res.text, "bad");
assert.ok(!console.error.called, "console.error not called");
done();
});
});
it("should handle AlreadyInUse", function(){
var res = new Response();
errorHandler(new errors.AlreadyInUse("bad", "test"), {}, res);
assert.equal(res.status_code, 409);
assert.equal(res.message, "The specified 'bad' value is already in use for: test");
assert.ok(!console.error.called);
it("should handle AlreadyInUse", function(done){
err = new errors.AlreadyInUse("bad", "test");
request.get('/error').end(function(err, res){
assert.equal(res.res.statusCode, 409);
assert.equal(res.text, "The specified 'bad' value is already in use for: test");
assert.ok(!console.error.called, "console.error not called");
done();
});
});
it("should handle AlreadyInUse", function(){
var res = new Response();
errorHandler(new errors.ArgumentNull("test"), {method:"GET"}, res);
assert.equal(res.status_code, 404);
assert.equal(res.message, "Not Found: \"test\"");
assert.ok(!console.error.called);
it("should handle ArgumentNull", function(done){
err = new errors.ArgumentNull("test");
request.get('/error').end(function(err, res){
assert.equal(res.res.statusCode, 404);
assert.equal(res.text, "Not Found: \"test\"");
assert.ok(!console.error.called, "console.error not called");
done();
});
});
it("should handle AlreadyInUse POST param", function(){
var res = new Response();
errorHandler(new errors.ArgumentNull("test"), {method:"POST", params:{"test":"1"}}, res);
assert.equal(res.status_code, 404);
assert.equal(res.message, "Not Found: \"test\"");
assert.ok(!console.error.called);
it("should handle ArgumentNull route param", function(done){
err = new errors.ArgumentNull("test");
request.post('/error/1').end(function(err, res){
assert.equal(res.res.statusCode, 404);
assert.equal(res.text, "Not Found: \"test\"");
assert.ok(!console.error.called, "console.error not called");
done();
});
});
it("should handle AlreadyInUse POST", function(){
var res = new Response();
errorHandler(new errors.ArgumentNull("test"), {method:"POST", params:{}}, res);
assert.equal(res.status_code, 400);
assert.equal(res.message, "Not Found: \"test\"");
assert.ok(!console.error.called);
it("should handle ArgumentNull route param in express3", function(done){
err = new errors.ArgumentNull("test");
var app = express3();
app.use(app.router)
app.use(errorHandler);
app.post('/error/:test', function(req, res, next){
return next(err);
});
var request = new supertest(app);
request.post('/error/1').end(function(err, res){
assert.equal(res.res.statusCode, 404);
assert.equal(res.text, "Not Found: \"test\"");
assert.ok(!console.error.called, "console.error not called");
done();
});
});
it("should handle NotFoundError", function(){
var res = new Response();
errorHandler(new errors.NotFoundError("test"), {}, res);
assert.equal(res.status_code, 404);
assert.equal(res.message, "Not Found: \"test\"");
assert.ok(!console.error.called);
it("should handle ArgumentNull POST", function(done){
err = new errors.ArgumentNull("test");
request.post('/error').send({test:1}).end(function(err, res){
assert.equal(res.res.statusCode, 400);
assert.equal(res.text, "Not Found: \"test\"");
assert.ok(!console.error.called, "console.error not called");
done();
});
});
it("should handle Error", function(){
var res = new Response();
errorHandler(new Error("test"), {}, res);
assert.equal(res.status_code, 500);
assert.equal(res.message, "Internal Server Error!");
assert.ok(console.error.called);
assert.ok(/test/.test(console.error.getCall(0).args[0]));
it("should handle NotFoundError", function(done){
err = new errors.NotFoundError("test");
request.get('/error').end(function(err, res){
assert.equal(res.res.statusCode, 404);
assert.equal(res.text, "Not Found: \"test\"");
assert.ok(!console.error.called, "console.error not called");
done();
});
});
it("should handle Error", function(done){
err = new Error("test");
request.get('/error').end(function(err, res){
assert.equal(res.res.statusCode, 500);
assert.equal(res.text, "Internal Server Error!");
assert.ok(console.error.called);
assert.ok(/test/.test(console.error.getCall(0).args[0]));
done();
});
});
it("should handle Error status", function(){
var res = new Response();
var err = new Error("test");
it("should handle Error status", function(done){
err = new Error("test");
err.status = 544;
errorHandler(err, {}, res);
assert.equal(res.status_code, 544);
assert.equal(res.message, "Internal Server Error!");
assert.ok(console.error.called);
assert.ok(/test/.test(console.error.getCall(0).args[0]));
request.get('/error').end(function(err, res){
assert.equal(res.res.statusCode, 544);
assert.equal(res.text, "Internal Server Error!");
assert.ok(console.error.called);
assert.ok(/test/.test(console.error.getCall(0).args[0]));
done();
});
});
it("should handle HttpStatusError (deprecated)", function(){
var res = new Response();
errorHandler(new errors.HttpStatus('custom status message', 544), {}, res);
assert.equal(res.status_code, 544);
assert.equal(res.message, "Internal Server Error!");
assert.ok(console.error.called);
assert.ok(/custom status message/.test(console.error.getCall(0).args[0]));
it("should handle HttpStatusError (deprecated)", function(done){
err = new errors.HttpStatus('custom status message', 544);
request.get('/error').end(function(err, res){
assert.equal(res.res.statusCode, 544);
assert.equal(res.text, "Internal Server Error!");
assert.ok(console.error.called);
assert.ok(/custom status message/.test(console.error.getCall(0).args[0]));
done();
});
});
it("should handle HttpStatusError", function(){
var res = new Response();
errorHandler(new errors.HttpStatus(544, 'custom status message'), {}, res);
assert.equal(res.status_code, 544);
assert.equal(res.message, "Internal Server Error!");
assert.ok(console.error.called);
assert.ok(/custom status message/.test(console.error.getCall(0).args[0]));
it("should handle HttpStatusError", function(done){
err = new errors.HttpStatus(544, 'custom status message')
request.get('/error').end(function(err, res){
assert.equal(res.res.statusCode, 544);
assert.equal(res.text, "Internal Server Error!");
assert.ok(console.error.called);
assert.ok(/custom status message/.test(console.error.getCall(0).args[0]));
done();
});
});
it("should handle HttpStatusError 400", function(){
var res = new Response();
errorHandler(new errors.HttpStatus(444, 'custom status message'), {}, res);
assert.equal(res.status_code, 444);
assert.equal(res.message, "custom status message");
assert.ok(!console.error.called);
it("should handle HttpStatusError 400", function(done){
err = new errors.HttpStatus(444, 'custom status message')
request.get('/error').end(function(err, res){
assert.equal(res.res.statusCode, 444);
assert.equal(res.text, "custom status message");
assert.ok(!console.error.called);
done();
});
});
it("should work with express 3", function(done){
var app = express3();
app.use(app.router)
app.use(errorHandler);
app.get('/error', function(req, res, next){
return next(new Error("This is a test"));
});
var request = new supertest(app);
request.get('/error')
.end(function(err, res){
assert.equal(res.res.statusCode, 500);
done();
})
})
});