Skip to content

Commit

Permalink
Fix request sequence
Browse files Browse the repository at this point in the history
rename to `requestid`;
add test, add examples
  • Loading branch information
Vladimir Varankin committed Dec 15, 2014
1 parent 716b6fc commit 8778aad
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 8 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1 @@
/node_modules
node_modules
6 changes: 6 additions & 0 deletions examples/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"config" : { "port": "3010" },
"devDependencies": {
"connect": "*"
}
}
14 changes: 14 additions & 0 deletions examples/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
var http = require('http'),
connect = require('connect'),
requestId = require('../'),
app = connect();

app
.use(requestId.createMiddleware())
.use(function(req, res, next) {
var reqId = requestId.get();
res.end('Request ID: ' + reqId);
next();
});

http.createServer(app).listen(process.env.npm_package_config_port);
8 changes: 4 additions & 4 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
var domain = require('domain'),
d = domain.create(),
requestId = module.exports;

requestId.createMiddleware = function createRequestIdMiddleware() {
return function(req, res, next) {
d.run(function() {
var reqDomain = domain.create();
reqDomain.run(function() {
requestId.set(req.headers['x-request-id']);
next();
});
Expand All @@ -18,10 +18,10 @@ requestId.get = function getRequestId() {
}
};

requestId.set = function setRequestId(id) {
requestId.set = function setRequestId(reqId) {
var activeDomain = domain.active;
if(activeDomain != null && typeof activeDomain.requestId === 'undefined') {
activeDomain.requestId = id;
activeDomain.requestId = reqId;
}
return activeDomain;
};
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"name": "nodules-requestid",
"name": "requestid",
"version": "0.1.0",
"description": "X-Request-Id signer for Node.js",
"scripts": {
"test": "make test"
"test": "mocha -u bdd -R spec test.js"
},
"repository": {
"type": "git",
Expand All @@ -22,7 +22,8 @@
"istanbul": "^0.3.5",
"jscs": "1.4.x",
"jshint": "~2.3.0",
"mocha": "^2.0.1"
"mocha": "^2.0.1",
"supertest": "^0.15.0"
},
"engine": {
"node": ">=0.10"
Expand Down
53 changes: 53 additions & 0 deletions test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
var assert = require('assert'),
http = require('http'),
request = require('supertest'),
requestId = require('./');

describe('request-id', function() {
describe('createMiddleware()', function() {
it('should return middleware function', function() {
var middleware = requestId.createMiddleware();
assert.equal(typeof middleware, 'function');
});
});

describe('get()', function() {
var server;

before(function() {
var requestIdMiddleware = requestId.createMiddleware(),
asyncMiddleware = function(req, res, next) {
setTimeout(function() { // NOTE: emulate some asynchronous middleware chain
process.nextTick(next)
}, 10);
};

server = http.createServer(function(req, res) {
requestIdMiddleware(req, res, function() {
asyncMiddleware(req, res, function() {
res.end(requestId.get());
})
});
});
});

var reqIdPrefix = '123x123-',
requestsMax = 3;

it('should return nothing if no request-id set', function(done) {
request(server)
.get('/')
.expect('', done);
});

Array.apply(null, { length : requestsMax }).forEach(function(_, i) {
it('should return request-id for current request (' + i + ')', function(done) {
var newId = reqIdPrefix + i;
request(server)
.get('/')
.set('X-Request-Id', newId)
.expect(newId, done);
});
});
});
});

0 comments on commit 8778aad

Please sign in to comment.