From 4c2cb1a7edfe6252e68e409d850aef73961338ca Mon Sep 17 00:00:00 2001 From: Peter Marton Date: Tue, 12 Dec 2017 00:13:54 +0100 Subject: [PATCH] fix(request): date() and time() methods return value (#1576) --- lib/request.js | 13 +++++-------- lib/server.js | 1 + test/request.test.js | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/lib/request.js b/lib/request.js index db5a0c8bc..aca11371b 100644 --- a/lib/request.js +++ b/lib/request.js @@ -241,14 +241,9 @@ function patch(Request) { * @memberof Request * @instance * @function date - * @returns {Date} date + * @returns {Date} date when request began being processed */ Request.prototype.date = function date() { - if (this._date !== undefined) { - return this._date; - } - - this._date = new Date(this._time); return this._date; }; @@ -410,10 +405,12 @@ function patch(Request) { * @memberof Request * @instance * @function time - * @returns {Number} time + * @returns {Number} time when request began being processed in epoch: + * ellapsed milliseconds since + * January 1, 1970, 00:00:00 UTC */ Request.prototype.time = function time() { - return this._time; + return this._date.getTime(); }; /** diff --git a/lib/server.js b/lib/server.js index 0c4b4432c..252fd6cd0 100644 --- a/lib/server.js +++ b/lib/server.js @@ -1210,6 +1210,7 @@ Server.prototype._run = function _run(req, res, route, chain, cb) { Server.prototype._setupRequest = function _setupRequest(req, res) { var self = this; req.log = res.log = self.log; + req._date = new Date(); req._time = process.hrtime(); req.serverName = self.name; diff --git a/test/request.test.js b/test/request.test.js index 23815ef58..e283e9bd5 100644 --- a/test/request.test.js +++ b/test/request.test.js @@ -191,3 +191,35 @@ test('should provide route object', function(t) { t.end(); }); }); + +test('should provide time when request started', function(t) { + SERVER.get('/ping/:name', function(req, res, next) { + t.equal(typeof req.time(), 'number'); + t.ok(req.time() > Date.now() - 1000); + t.ok(req.time() <= Date.now()); + res.send('ok'); + return next(); + }); + + CLIENT.get('/ping/lagavulin', function(err, _, res) { + t.ifError(err); + t.equal(res.statusCode, 200); + t.end(); + }); +}); + +test('should provide date when request started', function(t) { + SERVER.get('/ping/:name', function(req, res, next) { + t.ok(req.date() instanceof Date); + t.ok(req.date().getTime() > Date.now() - 1000); + t.ok(req.date().getTime() <= Date.now()); + res.send('ok'); + return next(); + }); + + CLIENT.get('/ping/lagavulin', function(err, _, res) { + t.ifError(err); + t.equal(res.statusCode, 200); + t.end(); + }); +});