Test with express instead of http server
This commit is contained in:
parent
5646680e5e
commit
4b29acdcb0
|
@ -23,9 +23,8 @@
|
||||||
"chai": "^2.1.1",
|
"chai": "^2.1.1",
|
||||||
"eslint": "^2.5.3",
|
"eslint": "^2.5.3",
|
||||||
"eslint-config-loopback": "^3.0.0",
|
"eslint-config-loopback": "^3.0.0",
|
||||||
|
"express": "^4.13.4",
|
||||||
"mocha": "^2.1.0",
|
"mocha": "^2.1.0",
|
||||||
"parseurl": "^1.3.1",
|
|
||||||
"qs": "^6.2.0",
|
|
||||||
"supertest": "^1.1.0"
|
"supertest": "^1.1.0"
|
||||||
},
|
},
|
||||||
"browser": {
|
"browser": {
|
||||||
|
|
|
@ -8,9 +8,7 @@
|
||||||
var cloneAllProperties = require('../lib/clone.js');
|
var cloneAllProperties = require('../lib/clone.js');
|
||||||
var debug = require('debug')('test');
|
var debug = require('debug')('test');
|
||||||
var expect = require('chai').expect;
|
var expect = require('chai').expect;
|
||||||
var http = require('http');
|
var express = require('express');
|
||||||
var parseParam = require('qs').parse;
|
|
||||||
var parseUrl = require('parseurl');
|
|
||||||
var strongErrorHandler = require('..');
|
var strongErrorHandler = require('..');
|
||||||
var supertest = require('supertest');
|
var supertest = require('supertest');
|
||||||
var util = require('util');
|
var util = require('util');
|
||||||
|
@ -512,7 +510,7 @@ describe('strong-error-handler', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
var _httpServer, _requestHandler, request;
|
var app, _requestHandler, request;
|
||||||
function resetRequestHandler() {
|
function resetRequestHandler() {
|
||||||
_requestHandler = null;
|
_requestHandler = null;
|
||||||
}
|
}
|
||||||
|
@ -530,21 +528,14 @@ function givenErrorHandlerForError(error, options) {
|
||||||
|
|
||||||
var handler = strongErrorHandler(options);
|
var handler = strongErrorHandler(options);
|
||||||
_requestHandler = function(req, res, next) {
|
_requestHandler = function(req, res, next) {
|
||||||
queryMiddleware(req, res, function() {
|
debug('Invoking strong-error-handler');
|
||||||
debug('Invoking strong-error-handler');
|
handler(error, req, res, next);
|
||||||
handler(error, req, res, next);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function queryMiddleware(req, res, next) {
|
|
||||||
var queryString = parseUrl(req).query;
|
|
||||||
req.query = parseParam(queryString);
|
|
||||||
next();
|
|
||||||
}
|
|
||||||
|
|
||||||
function setupHttpServerAndClient(done) {
|
function setupHttpServerAndClient(done) {
|
||||||
_httpServer = http.createServer(function(req, res) {
|
app = express();
|
||||||
|
app.use(function(req, res, next) {
|
||||||
if (!_requestHandler) {
|
if (!_requestHandler) {
|
||||||
var msg = 'Error handler middleware was not setup in this test';
|
var msg = 'Error handler middleware was not setup in this test';
|
||||||
console.error(msg);
|
console.error(msg);
|
||||||
|
@ -553,31 +544,29 @@ function setupHttpServerAndClient(done) {
|
||||||
res.end(msg);
|
res.end(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
_requestHandler(req, res, warnUnhandledError);
|
||||||
_requestHandler(req, res, function(err) {
|
|
||||||
console.log('unexpected: strong-error-handler called next with '
|
|
||||||
(err && (err.stack || err)) || 'no error');
|
|
||||||
res.statusCode = 500;
|
|
||||||
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
|
|
||||||
res.end(err ?
|
|
||||||
'Unhandled strong-error-handler error:\n' + (err.stack || err) :
|
|
||||||
'The error was silently discared by strong-error-handler');
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
_httpServer.once('error', function(err) {
|
app.listen(0, function() {
|
||||||
|
var url = 'http://127.0.0.1:' + this.address().port;
|
||||||
|
debug('Test server listening on %s', url);
|
||||||
|
request = supertest(app);
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
.once('error', function(err) {
|
||||||
debug('Cannot setup HTTP server: %s', err.stack);
|
debug('Cannot setup HTTP server: %s', err.stack);
|
||||||
done(err);
|
done(err);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
_httpServer.once('listening', function() {
|
function warnUnhandledError(err) {
|
||||||
var url = 'http://127.0.0.1:' + this.address().port;
|
console.log('unexpected: strong-error-handler called next with '
|
||||||
debug('Test server listening on %s', url);
|
(err && (err.stack || err)) || 'no error');
|
||||||
request = supertest(url);
|
res.statusCode = 500;
|
||||||
done();
|
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
|
||||||
});
|
res.end(err ?
|
||||||
|
'Unhandled strong-error-handler error:\n' + (err.stack || err) :
|
||||||
_httpServer.listen(0, '127.0.0.1');
|
'The error was silently discared by strong-error-handler');
|
||||||
}
|
}
|
||||||
|
|
||||||
function ErrorWithProps(props) {
|
function ErrorWithProps(props) {
|
||||||
|
|
Loading…
Reference in New Issue