Skip to content

Commit

Permalink
tests: add more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dougwilson committed May 18, 2014
1 parent f755f42 commit 9152b83
Showing 1 changed file with 136 additions and 17 deletions.
153 changes: 136 additions & 17 deletions test/test.js
Expand Up @@ -12,14 +12,139 @@ describe('logger()', function () {
it('should accept format as function', function (done) {
var line;
var server = createServer(function (tokens, req, res) {
line = [req.method, req.url, res.statusCode].join(' ')
line = [req.method, req.url, res.statusCode].join(' ') + '\n'
})

request(server)
.get('/')
.end(function (err, res) {
if (err) return done(err)
line.should.equal('GET / 200')
line.should.equal('GET / 200\n')
done()
})
})

it('should use default format', function (done) {
var server = createServer({})

request(server)
.get('/')
.end(function (err, res) {
if (err) return done(err, res)
lastLogLine.should.startWith(res.text);
done()
})
})
})

describe('tokens', function () {
describe(':req', function () {
it('should get request properties', function (done) {
var server = createServer({
format: ':req[x-from-string]'
})

request(server)
.get('/')
.set('x-from-string', 'me')
.end(function (err, res) {
if (err) return done(err)
lastLogLine.should.equal('me\n')
done()
})
})
})

describe(':res', function () {
it('should get response properties', function (done) {
var server = createServer({
format: ':res[x-sent]'
})

request(server)
.get('/')
.end(function (err, res) {
if (err) return done(err)
lastLogLine.should.equal('true\n')
done()
})
})
})

describe(':remote-addr', function () {
it('should get remote address', function (done) {
var server = createServer({
format: ':remote-addr'
})

request(server)
.get('/')
.end(function (err, res) {
if (err) return done(err)
lastLogLine.should.equal(res.text + '\n')
done()
})
})

it('should use req.ip if there', function (done) {
var server = createServer({
format: ':remote-addr'
})

request(server)
.get('/')
.set('x-req-ip', '10.0.0.1')
.end(function (err, res) {
if (err) return done(err)
lastLogLine.should.equal('10.0.0.1\n')
done()
})
})

it('should work when connection: close', function (done) {
var server = createServer({
format: ':remote-addr'
})

request(server)
.get('/')
.set('Connection', 'close')
.end(function (err, res) {
if (err) return done(err)
lastLogLine.should.equal(res.text + '\n')
done()
})
})

it('should work when connection: keep-alive', function (done) {
var server = createServer({
format: ':remote-addr'
})

request(server)
.get('/')
.set('Connection', 'keep-alive')
.end(function (err, res) {
if (err) return done(err)
lastLogLine.should.equal(res.text + '\n')
done()
})
})
})
})

describe('with immediate option', function () {
it('should log before response', function (done) {
var server = createServer({
format: ':method :url :res[x-sent]',
immediate: true
})

request(server)
.get('/')
.end(function (err, res) {
if (err) return done(err)
lastLogLine.should.equal('GET / -\n')
done()
})
})
Expand Down Expand Up @@ -55,21 +180,6 @@ describe('logger()', function () {
})
})
})

describe('when Connection: close', function () {
it('should log the client ip', function (done) {
var server = createServer({'format': 'default'})

request(server)
.get('/')
.set('Connection', 'close')
.end(function (err, res) {
if (err) return done(err)
lastLogLine.should.startWith(res.text)
done()
})
})
})
})

function createServer(opts) {
Expand All @@ -83,8 +193,17 @@ function createServer(opts) {
var logger = morgan(options)

return http.createServer(function onRequest(req, res) {
if (req.headers['x-req-ip']) {
req.ip = req.headers['x-req-ip'];
}

logger(req, res, function onNext(err) {
if (!/close/i.test(req.headers.connection)) {
delete req._remoteAddress;
}

res.statusCode = err ? 500 : 200
res.setHeader('X-Sent', 'true')
res.end(err ? err.message : String(req.connection.remoteAddress))
})
})
Expand Down

0 comments on commit 9152b83

Please sign in to comment.