diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 62562b7..0000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -coverage -node_modules diff --git a/.eslintrc.yml b/.eslintrc.yml deleted file mode 100644 index 6d49a7d..0000000 --- a/.eslintrc.yml +++ /dev/null @@ -1,19 +0,0 @@ -root: true -extends: - - standard - - plugin:markdown/recommended -plugins: - - markdown -overrides: - - files: '**/*.md' - processor: 'markdown/markdown' -rules: - eol-last: error - indent: - - error - - 2 - - SwitchCase: 1 - no-trailing-spaces: error - semi: - - error - - never diff --git a/index.js b/index.js index 4964516..747ff33 100644 --- a/index.js +++ b/index.js @@ -12,21 +12,21 @@ * @private */ -var flatten = require('array-flatten').flatten -var isPromise = require('is-promise') -var Layer = require('./lib/layer') -var methods = require('methods') -var mixin = require('utils-merge') -var parseUrl = require('parseurl') -var Route = require('./lib/route') -var setPrototypeOf = require('setprototypeof') +const flatten = require('array-flatten').flatten +const isPromise = require('is-promise') +const Layer = require('./lib/layer') +const methods = require('methods') +const mixin = require('utils-merge') +const parseUrl = require('parseurl') +const Route = require('./lib/route') +const setPrototypeOf = require('setprototypeof') /** * Module variables. * @private */ -var slice = Array.prototype.slice +const slice = Array.prototype.slice /** * Expose `Router`. @@ -53,7 +53,7 @@ function Router (options) { return new Router(options) } - var opts = options || {} + const opts = options || {} function router (req, res, next) { router.handle(req, res, next) @@ -128,7 +128,7 @@ Router.prototype.param = function param (name, fn) { throw new TypeError('argument fn must be a function') } - var params = this.params[name] + let params = this.params[name] if (!params) { params = this.params[name] = [] @@ -150,22 +150,22 @@ Router.prototype.handle = function handle (req, res, callback) { throw new TypeError('argument callback is required') } - var idx = 0 - var methods - var protohost = getProtohost(req.url) || '' - var removed = '' - var self = this - var slashAdded = false - var sync = 0 - var paramcalled = {} + let idx = 0 + let methods + const protohost = getProtohost(req.url) || '' + let removed = '' + const self = this + let slashAdded = false + let sync = 0 + const paramcalled = {} // middleware and routes - var stack = this.stack + const stack = this.stack // manage inter-router variables - var parentParams = req.params - var parentUrl = req.baseUrl || '' - var done = restore(callback, req, 'baseUrl', 'next', 'params') + const parentParams = req.params + const parentUrl = req.baseUrl || '' + let done = restore(callback, req, 'baseUrl', 'next', 'params') // setup next layer req.next = next @@ -183,7 +183,7 @@ Router.prototype.handle = function handle (req, res, callback) { next() function next (err) { - var layerError = err === 'route' + let layerError = err === 'route' ? null : err @@ -218,16 +218,16 @@ Router.prototype.handle = function handle (req, res, callback) { } // get pathname of request - var path = getPathname(req) + const path = getPathname(req) if (path == null) { return done(layerError) } // find next matching layer - var layer - var match - var route + let layer + let match + let route while (match !== true && idx < stack.length) { layer = stack[idx++] @@ -254,8 +254,8 @@ Router.prototype.handle = function handle (req, res, callback) { continue } - var method = req.method - var hasMethod = route._handlesMethod(method) + const method = req.method + const hasMethod = route._handlesMethod(method) // build up automatic options response if (!hasMethod && method === 'OPTIONS' && methods) { @@ -283,7 +283,7 @@ Router.prototype.handle = function handle (req, res, callback) { req.params = self.mergeParams ? mergeParams(layer.params, parentParams) : layer.params - var layerPath = layer.path + const layerPath = layer.path // this should be done for the layer processParams(self.params, layer, paramcalled, req, res, function (err) { @@ -308,7 +308,7 @@ Router.prototype.handle = function handle (req, res, callback) { } // Validate path breaks on a path separator - var c = path[layerPath.length] + const c = path[layerPath.length] if (c && c !== '/') { next(layerError) return @@ -355,13 +355,13 @@ Router.prototype.handle = function handle (req, res, callback) { */ Router.prototype.use = function use (handler) { - var offset = 0 - var path = '/' + let offset = 0 + let path = '/' // default path to '/' // disambiguate router.use([handler]) if (typeof handler !== 'function') { - var arg = handler + let arg = handler while (Array.isArray(arg) && arg.length !== 0) { arg = arg[0] @@ -374,21 +374,21 @@ Router.prototype.use = function use (handler) { } } - var callbacks = flatten(slice.call(arguments, offset)) + const callbacks = flatten(slice.call(arguments, offset)) if (callbacks.length === 0) { throw new TypeError('argument handler is required') } - for (var i = 0; i < callbacks.length; i++) { - var fn = callbacks[i] + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i] if (typeof fn !== 'function') { throw new TypeError('argument handler must be a function') } // add the middleware - var layer = new Layer(path, { + const layer = new Layer(path, { sensitive: this.caseSensitive, strict: false, end: false @@ -416,9 +416,9 @@ Router.prototype.use = function use (handler) { */ Router.prototype.route = function route (path) { - var route = new Route(path) + const route = new Route(path) - var layer = new Layer(path, { + const layer = new Layer(path, { sensitive: this.caseSensitive, strict: this.strict, end: true @@ -437,7 +437,7 @@ Router.prototype.route = function route (path) { // create Router#VERB functions methods.concat('all').forEach(function (method) { Router.prototype[method] = function (path) { - var route = this.route(path) + const route = this.route(path) route[method].apply(route, slice.call(arguments, 1)) return this } @@ -488,11 +488,11 @@ function getProtohost (url) { return undefined } - var searchIndex = url.indexOf('?') - var pathLength = searchIndex !== -1 + const searchIndex = url.indexOf('?') + const pathLength = searchIndex !== -1 ? searchIndex : url.length - var fqdnIndex = url.substring(0, pathLength).indexOf('://') + const fqdnIndex = url.substring(0, pathLength).indexOf('://') return fqdnIndex !== -1 ? url.substring(0, url.indexOf('/', 3 + fqdnIndex)) @@ -527,15 +527,15 @@ function mergeParams (params, parent) { } // make copy of parent for base - var obj = mixin({}, parent) + const obj = mixin({}, parent) // simple non-numeric merging if (!(0 in params) || !(0 in parent)) { return mixin(obj, params) } - var i = 0 - var o = 0 + let i = 0 + let o = 0 // determine numeric gap in params while (i in params) { @@ -568,20 +568,20 @@ function mergeParams (params, parent) { function processParams (params, layer, called, req, res, done) { // captured parameters from the layer, keys and values - var keys = layer.keys + const keys = layer.keys // fast track if (!keys || keys.length === 0) { return done() } - var i = 0 - var name - var paramIndex = 0 - var key - var paramVal - var paramCallbacks - var paramCalled + let i = 0 + let name + let paramIndex = 0 + let key + let paramVal + let paramCallbacks + let paramCalled // process params in order // param callbacks can be async @@ -626,7 +626,7 @@ function processParams (params, layer, called, req, res, done) { // single param callbacks function paramCallback (err) { - var fn = paramCallbacks[paramIndex++] + const fn = paramCallbacks[paramIndex++] // store updated value paramCalled.value = req.params[key.name] @@ -641,7 +641,7 @@ function processParams (params, layer, called, req, res, done) { if (!fn) return param() try { - var ret = fn(req, res, paramCallback, paramVal, key.name) + const ret = fn(req, res, paramCallback, paramVal, key.name) if (isPromise(ret)) { ret.then(null, function (error) { paramCallback(error || new Error('Rejected promise')) @@ -662,17 +662,17 @@ function processParams (params, layer, called, req, res, done) { */ function restore (fn, obj) { - var props = new Array(arguments.length - 2) - var vals = new Array(arguments.length - 2) + const props = new Array(arguments.length - 2) + const vals = new Array(arguments.length - 2) - for (var i = 0; i < props.length; i++) { + for (let i = 0; i < props.length; i++) { props[i] = arguments[i + 2] vals[i] = obj[props[i]] } return function () { // restore vals - for (var i = 0; i < props.length; i++) { + for (let i = 0; i < props.length; i++) { obj[props[i]] = vals[i] } @@ -687,15 +687,15 @@ function restore (fn, obj) { */ function sendOptionsResponse (res, methods) { - var options = Object.create(null) + const options = Object.create(null) // build unique method map - for (var i = 0; i < methods.length; i++) { + for (let i = 0; i < methods.length; i++) { options[methods[i]] = true } // construct the allow list - var allow = Object.keys(options).sort().join(', ') + const allow = Object.keys(options).sort().join(', ') // send response res.setHeader('Allow', allow) @@ -727,10 +727,10 @@ function trySendOptionsResponse (res, methods, next) { function wrap (old, fn) { return function proxy () { - var args = new Array(arguments.length + 1) + const args = new Array(arguments.length + 1) args[0] = old - for (var i = 0, len = arguments.length; i < len; i++) { + for (let i = 0, len = arguments.length; i < len; i++) { args[i + 1] = arguments[i] } diff --git a/lib/layer.js b/lib/layer.js index 73f7d69..a96eb10 100644 --- a/lib/layer.js +++ b/lib/layer.js @@ -12,16 +12,16 @@ * @private */ -var isPromise = require('is-promise') -var pathRegexp = require('path-to-regexp') +const isPromise = require('is-promise') +const pathRegexp = require('path-to-regexp') /** * Module variables. * @private */ -var hasOwnProperty = Object.prototype.hasOwnProperty -var TRAILING_SLASH_REGEXP = /\/+$/ +const hasOwnProperty = Object.prototype.hasOwnProperty +const TRAILING_SLASH_REGEXP = /\/+$/ /** * Expose `Layer`. @@ -34,7 +34,7 @@ function Layer (path, options, fn) { return new Layer(path, options, fn) } - var opts = options || {} + const opts = options || {} this.handle = fn this.keys = [] @@ -58,7 +58,7 @@ function Layer (path, options, fn) { */ Layer.prototype.handleError = function handleError (error, req, res, next) { - var fn = this.handle + const fn = this.handle if (fn.length !== 4) { // not a standard error handler @@ -67,7 +67,7 @@ Layer.prototype.handleError = function handleError (error, req, res, next) { try { // invoke function - var ret = fn(error, req, res, next) + const ret = fn(error, req, res, next) // wait for returned promise if (isPromise(ret)) { @@ -90,7 +90,7 @@ Layer.prototype.handleError = function handleError (error, req, res, next) { */ Layer.prototype.handleRequest = function handleRequest (req, res, next) { - var fn = this.handle + const fn = this.handle if (fn.length > 3) { // not a standard request handler @@ -99,7 +99,7 @@ Layer.prototype.handleRequest = function handleRequest (req, res, next) { try { // invoke function - var ret = fn(req, res, next) + const ret = fn(req, res, next) // wait for returned promise if (isPromise(ret)) { @@ -122,7 +122,7 @@ Layer.prototype.handleRequest = function handleRequest (req, res, next) { */ Layer.prototype.match = function match (path) { - var match + let match if (path != null) { // fast path non-ending match for / (any path matches) @@ -147,13 +147,13 @@ Layer.prototype.match = function match (path) { this.path = match[0] // iterate matches - var keys = this.keys - var params = this.params + const keys = this.keys + const params = this.params - for (var i = 1; i < match.length; i++) { - var key = keys[i - 1] - var prop = key.name - var val = decodeParam(match[i]) + for (let i = 1; i < match.length; i++) { + const key = keys[i - 1] + const prop = key.name + const val = decodeParam(match[i]) if (val !== undefined || !(hasOwnProperty.call(params, prop))) { params[prop] = val diff --git a/lib/route.js b/lib/route.js index 2a17763..c9c53e7 100644 --- a/lib/route.js +++ b/lib/route.js @@ -12,19 +12,19 @@ * @private */ -var flatten = require('array-flatten').flatten -var Layer = require('./layer') -var methods = require('methods') +const flatten = require('array-flatten').flatten +const Layer = require('./layer') +const methods = require('methods') /** * Module variables. * @private */ -var slice = Array.prototype.slice +const slice = Array.prototype.slice /* istanbul ignore next */ -var defer = typeof setImmediate === 'function' +const defer = typeof setImmediate === 'function' ? setImmediate : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) } @@ -59,7 +59,7 @@ Route.prototype._handlesMethod = function _handlesMethod (method) { } // normalize name - var name = typeof method === 'string' + let name = typeof method === 'string' ? method.toLowerCase() : method @@ -76,14 +76,14 @@ Route.prototype._handlesMethod = function _handlesMethod (method) { */ Route.prototype._methods = function _methods () { - var methods = Object.keys(this.methods) + const methods = Object.keys(this.methods) // append automatic head if (this.methods.get && !this.methods.head) { methods.push('head') } - for (var i = 0; i < methods.length; i++) { + for (let i = 0; i < methods.length; i++) { // make upper case methods[i] = methods[i].toUpperCase() } @@ -98,15 +98,15 @@ Route.prototype._methods = function _methods () { */ Route.prototype.dispatch = function dispatch (req, res, done) { - var idx = 0 - var stack = this.stack - var sync = 0 + let idx = 0 + const stack = this.stack + let sync = 0 if (stack.length === 0) { return done() } - var method = typeof req.method === 'string' + let method = typeof req.method === 'string' ? req.method.toLowerCase() : req.method @@ -139,8 +139,8 @@ Route.prototype.dispatch = function dispatch (req, res, done) { return defer(next, err) } - var layer - var match + let layer + let match // find next matching layer while (match !== true && idx < stack.length) { @@ -192,20 +192,20 @@ Route.prototype.dispatch = function dispatch (req, res, done) { */ Route.prototype.all = function all (handler) { - var callbacks = flatten(slice.call(arguments)) + const callbacks = flatten(slice.call(arguments)) if (callbacks.length === 0) { throw new TypeError('argument handler is required') } - for (var i = 0; i < callbacks.length; i++) { - var fn = callbacks[i] + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i] if (typeof fn !== 'function') { throw new TypeError('argument handler must be a function') } - var layer = Layer('/', {}, fn) + const layer = Layer('/', {}, fn) layer.method = undefined this.methods._all = true @@ -217,20 +217,20 @@ Route.prototype.all = function all (handler) { methods.forEach(function (method) { Route.prototype[method] = function (handler) { - var callbacks = flatten(slice.call(arguments)) + const callbacks = flatten(slice.call(arguments)) if (callbacks.length === 0) { throw new TypeError('argument handler is required') } - for (var i = 0; i < callbacks.length; i++) { - var fn = callbacks[i] + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i] if (typeof fn !== 'function') { throw new TypeError('argument handler must be a function') } - var layer = Layer('/', {}, fn) + const layer = Layer('/', {}, fn) layer.method = method this.methods[method] = true diff --git a/package.json b/package.json index 66ba5af..900cc9e 100644 --- a/package.json +++ b/package.json @@ -18,18 +18,13 @@ "utils-merge": "1.0.1" }, "devDependencies": { - "eslint": "8.34.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.26.0", - "eslint-plugin-markdown": "3.0.0", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", + "after": "0.8.2", "finalhandler": "1.2.0", "mocha": "10.2.0", "nyc": "15.1.0", "run-series": "^1.1.9", "safe-buffer": "5.2.1", + "standard": "^17.1.0", "supertest": "6.3.3" }, "files": [ @@ -44,7 +39,7 @@ "node": ">= 0.10" }, "scripts": { - "lint": "eslint .", + "lint": "standard", "test": "mocha --reporter spec --bail --check-leaks test/", "test-ci": "nyc --reporter=lcov --reporter=text npm test", "test-cov": "nyc --reporter=text npm test", diff --git a/scripts/version-history.js b/scripts/version-history.js index c58268a..b62d4e1 100644 --- a/scripts/version-history.js +++ b/scripts/version-history.js @@ -1,14 +1,14 @@ 'use strict' -var fs = require('fs') -var path = require('path') +const fs = require('fs') +const path = require('path') -var HISTORY_FILE_PATH = path.join(__dirname, '..', 'HISTORY.md') -var MD_HEADER_REGEXP = /^====*$/ -var VERSION = process.env.npm_package_version -var VERSION_PLACEHOLDER_REGEXP = /^(?:unreleased|(\d+\.)+x)$/ +const HISTORY_FILE_PATH = path.join(__dirname, '..', 'HISTORY.md') +const MD_HEADER_REGEXP = /^====*$/ +const VERSION = process.env.npm_package_version +const VERSION_PLACEHOLDER_REGEXP = /^(?:unreleased|(\d+\.)+x)$/ -var historyFileLines = fs.readFileSync(HISTORY_FILE_PATH, 'utf-8').split('\n') +const historyFileLines = fs.readFileSync(HISTORY_FILE_PATH, 'utf-8').split('\n') if (!MD_HEADER_REGEXP.test(historyFileLines[1])) { console.error('Missing header in HISTORY.md') @@ -21,7 +21,7 @@ if (!VERSION_PLACEHOLDER_REGEXP.test(historyFileLines[0])) { } if (historyFileLines[0].indexOf('x') !== -1) { - var versionCheckRegExp = new RegExp('^' + historyFileLines[0].replace('x', '.+') + '$') + const versionCheckRegExp = new RegExp('^' + historyFileLines[0].replace('x', '.+') + '$') if (!versionCheckRegExp.test(VERSION)) { console.error('Version %s does not match placeholder %s', VERSION, historyFileLines[0]) @@ -35,7 +35,7 @@ historyFileLines[1] = repeat('=', historyFileLines[0].length) fs.writeFileSync(HISTORY_FILE_PATH, historyFileLines.join('\n')) function getLocaleDate () { - var now = new Date() + const now = new Date() return zeroPad(now.getFullYear(), 4) + '-' + zeroPad(now.getMonth() + 1, 2) + '-' + @@ -43,9 +43,9 @@ function getLocaleDate () { } function repeat (str, length) { - var out = '' + let out = '' - for (var i = 0; i < length; i++) { + for (let i = 0; i < length; i++) { out += str } @@ -53,7 +53,7 @@ function repeat (str, length) { } function zeroPad (number, length) { - var num = number.toString() + let num = number.toString() while (num.length < length) { num = '0' + num diff --git a/test/.eslintrc.yml b/test/.eslintrc.yml deleted file mode 100644 index 9808c3b..0000000 --- a/test/.eslintrc.yml +++ /dev/null @@ -1,2 +0,0 @@ -env: - mocha: true diff --git a/test/auto-head.js b/test/auto-head.js index 2fd8580..e8fca8a 100644 --- a/test/auto-head.js +++ b/test/auto-head.js @@ -1,14 +1,14 @@ +const { it, describe } = require('mocha') +const Router = require('..') +const utils = require('./support/utils') -var Router = require('..') -var utils = require('./support/utils') - -var createServer = utils.createServer -var request = utils.request +const createServer = utils.createServer +const request = utils.request describe('HEAD', function () { it('should invoke get without head', function (done) { - var router = Router() - var server = createServer(router) + const router = Router() + const server = createServer(router) router.get('/users', sethit(1), saw) @@ -20,8 +20,8 @@ describe('HEAD', function () { }) it('should invoke head if prior to get', function (done) { - var router = Router() - var server = createServer(router) + const router = Router() + const server = createServer(router) router.head('/users', sethit(1), saw) router.get('/users', sethit(2), saw) @@ -35,14 +35,14 @@ describe('HEAD', function () { }) function saw (req, res) { - var msg = 'saw ' + req.method + ' ' + req.url + const msg = 'saw ' + req.method + ' ' + req.url res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end(msg) } function sethit (num) { - var name = 'x-fn-' + String(num) + const name = 'x-fn-' + String(num) return function hit (req, res, next) { res.setHeader(name, 'hit') next() diff --git a/test/auto-options.js b/test/auto-options.js index 9cfd429..b4bcfac 100644 --- a/test/auto-options.js +++ b/test/auto-options.js @@ -1,14 +1,14 @@ +const { it, describe } = require('mocha') +const Router = require('..') +const utils = require('./support/utils') -var Router = require('..') -var utils = require('./support/utils') - -var createServer = utils.createServer -var request = utils.request +const createServer = utils.createServer +const request = utils.request describe('OPTIONS', function () { it('should respond with defined routes', function (done) { - var router = Router() - var server = createServer(router) + const router = Router() + const server = createServer(router) router.delete('/', saw) router.get('/users', saw) @@ -22,8 +22,8 @@ describe('OPTIONS', function () { }) it('should not contain methods multiple times', function (done) { - var router = Router() - var server = createServer(router) + const router = Router() + const server = createServer(router) router.delete('/', saw) router.get('/users', saw) @@ -37,8 +37,8 @@ describe('OPTIONS', function () { }) it('should not include "all" routes', function (done) { - var router = Router() - var server = createServer(router) + const router = Router() + const server = createServer(router) router.get('/', saw) router.get('/users', saw) @@ -53,8 +53,8 @@ describe('OPTIONS', function () { }) it('should not respond if no matching path', function (done) { - var router = Router() - var server = createServer(router) + const router = Router() + const server = createServer(router) router.get('/users', saw) @@ -64,8 +64,8 @@ describe('OPTIONS', function () { }) it('should do nothing with explicit options route', function (done) { - var router = Router() - var server = createServer(router) + const router = Router() + const server = createServer(router) router.get('/users', saw) router.options('/users', saw) @@ -77,8 +77,8 @@ describe('OPTIONS', function () { describe('when error occurs in respone handler', function () { it('should pass error to callback', function (done) { - var router = Router() - var server = createServer(function hander (req, res, next) { + const router = Router() + const server = createServer(function hander (req, res, next) { res.writeHead(200) router(req, res, function (err) { res.end(String(Boolean(err))) @@ -95,14 +95,14 @@ describe('OPTIONS', function () { }) function saw (req, res) { - var msg = 'saw ' + req.method + ' ' + req.url + const msg = 'saw ' + req.method + ' ' + req.url res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end(msg) } function sethit (num) { - var name = 'x-fn-' + String(num) + const name = 'x-fn-' + String(num) return function hit (req, res, next) { res.setHeader(name, 'hit') next() diff --git a/test/fqdn-url.js b/test/fqdn-url.js index 3ad73b3..8db59c3 100644 --- a/test/fqdn-url.js +++ b/test/fqdn-url.js @@ -1,14 +1,14 @@ +const { it, describe } = require('mocha') +const Router = require('..') +const utils = require('./support/utils') -var Router = require('..') -var utils = require('./support/utils') - -var createServer = utils.createServer -var rawrequest = utils.rawrequest +const createServer = utils.createServer +const rawrequest = utils.rawrequest describe('FQDN url', function () { it('should not obscure FQDNs', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(saw) @@ -18,8 +18,8 @@ describe('FQDN url', function () { }) it('should strip/restore FQDN req.url', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/blog', setsaw(1)) router.use(saw) @@ -31,8 +31,8 @@ describe('FQDN url', function () { }) it('should ignore FQDN in search', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/proxy', setsaw(1)) router.use(saw) @@ -44,8 +44,8 @@ describe('FQDN url', function () { }) it('should ignore FQDN in path', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/proxy', setsaw(1)) router.use(saw) @@ -58,7 +58,7 @@ describe('FQDN url', function () { }) function setsaw (num) { - var name = 'x-saw-' + String(num) + const name = 'x-saw-' + String(num) return function hit (req, res, next) { res.setHeader(name, req.method + ' ' + req.url) next() @@ -66,7 +66,7 @@ function setsaw (num) { } function saw (req, res) { - var msg = 'saw ' + req.method + ' ' + req.url + const msg = 'saw ' + req.method + ' ' + req.url res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end(msg) diff --git a/test/param.js b/test/param.js index 0b02b5c..52fd006 100644 --- a/test/param.js +++ b/test/param.js @@ -1,42 +1,42 @@ +const { it, describe } = require('mocha') +const series = require('run-series') +const Router = require('..') +const utils = require('./support/utils') -var series = require('run-series') -var Router = require('..') -var utils = require('./support/utils') +const assert = utils.assert +const createHitHandle = utils.createHitHandle +const shouldHitHandle = utils.shouldHitHandle +const shouldNotHitHandle = utils.shouldNotHitHandle +const createServer = utils.createServer +const request = utils.request -var assert = utils.assert -var createHitHandle = utils.createHitHandle -var shouldHitHandle = utils.shouldHitHandle -var shouldNotHitHandle = utils.shouldNotHitHandle -var createServer = utils.createServer -var request = utils.request - -var describePromises = global.Promise ? describe : describe.skip +const describePromises = global.Promise ? describe : describe.skip describe('Router', function () { describe('.param(name, fn)', function () { it('should reject missing name', function () { - var router = new Router() + const router = new Router() assert.throws(router.param.bind(router), /argument name is required/) }) it('should reject bad name', function () { - var router = new Router() + const router = new Router() assert.throws(router.param.bind(router, 42), /argument name must be a string/) }) it('should reject missing fn', function () { - var router = new Router() + const router = new Router() assert.throws(router.param.bind(router, 'id'), /argument fn is required/) }) it('should reject bad fn', function () { - var router = new Router() + const router = new Router() assert.throws(router.param.bind(router, 'id', 42), /argument fn must be a function/) }) it('should map logic for a path param', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('id', function parseId (req, res, next, val) { req.params.id = Number(val) @@ -63,8 +63,8 @@ describe('Router', function () { }) it('should allow chaining', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('id', function parseId (req, res, next, val) { req.params.id = Number(val) @@ -87,8 +87,8 @@ describe('Router', function () { }) it('should automatically decode path value', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('user', function parseUser (req, res, next, user) { req.user = user @@ -106,8 +106,8 @@ describe('Router', function () { }) it('should 400 on invalid path value', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('user', function parseUser (req, res, next, user) { req.user = user @@ -125,8 +125,8 @@ describe('Router', function () { }) it('should only invoke fn when necessary', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('id', function parseId (req, res, next, val) { res.setHeader('x-id', val) @@ -156,8 +156,8 @@ describe('Router', function () { }) it('should only invoke fn once per request', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('user', function parseUser (req, res, next, user) { req.count = (req.count || 0) + 1 @@ -178,8 +178,8 @@ describe('Router', function () { }) it('should keep changes to req.params value', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('id', function parseUser (req, res, next, val) { req.count = (req.count || 0) + 1 @@ -202,8 +202,8 @@ describe('Router', function () { }) it('should invoke fn if path value differs', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('user', function parseUser (req, res, next, user) { req.count = (req.count || 0) + 1 @@ -225,8 +225,8 @@ describe('Router', function () { }) it('should catch exception in fn', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('user', function parseUser (req, res, next, user) { throw new Error('boom') @@ -243,8 +243,8 @@ describe('Router', function () { }) it('should catch exception in chained fn', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('user', function parseUser (req, res, next, user) { process.nextTick(next) @@ -266,8 +266,8 @@ describe('Router', function () { describePromises('promise support', function () { it('should pass rejected promise value', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('user', function parseUser (req, res, next, user) { return Promise.reject(new Error('boom')) @@ -284,8 +284,8 @@ describe('Router', function () { }) it('should pass rejected promise without value', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function createError (req, res, next) { return Promise.reject() // eslint-disable-line prefer-promise-reject-errors @@ -308,11 +308,11 @@ describe('Router', function () { describe('next("route")', function () { it('should cause route with param to be skipped', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('id', function parseId (req, res, next, val) { - var id = Number(val) + const id = Number(val) if (isNaN(id)) { return next('route') @@ -353,8 +353,8 @@ describe('Router', function () { }) it('should invoke fn if path value differs', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.param('user', function parseUser (req, res, next, user) { req.count = (req.count || 0) + 1 @@ -381,7 +381,7 @@ describe('Router', function () { }) function sethit (num) { - var name = 'x-fn-' + String(num) + const name = 'x-fn-' + String(num) return function hit (req, res, next) { res.setHeader(name, 'hit') next() @@ -389,7 +389,7 @@ function sethit (num) { } function saw (req, res) { - var msg = 'saw ' + req.method + ' ' + req.url + const msg = 'saw ' + req.method + ' ' + req.url res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end(msg) diff --git a/test/req.params.js b/test/req.params.js index 4a0e01b..e5b1b6b 100644 --- a/test/req.params.js +++ b/test/req.params.js @@ -1,14 +1,14 @@ +const { it, describe } = require('mocha') +const Router = require('..') +const utils = require('./support/utils') -var Router = require('..') -var utils = require('./support/utils') - -var createServer = utils.createServer -var request = utils.request +const createServer = utils.createServer +const request = utils.request describe('req.params', function () { it('should default to empty object', function (done) { - var router = Router() - var server = createServer(router) + const router = Router() + const server = createServer(router) router.get('/', sawParams) @@ -18,8 +18,8 @@ describe('req.params', function () { }) it('should not exist outside the router', function (done) { - var router = Router() - var server = createServer(function (req, res, next) { + const router = Router() + const server = createServer(function (req, res, next) { router(req, res, function (err) { if (err) return next(err) sawParams(req, res) @@ -35,8 +35,8 @@ describe('req.params', function () { }) it('should overwrite value outside the router', function (done) { - var router = Router() - var server = createServer(function (req, res, next) { + const router = Router() + const server = createServer(function (req, res, next) { req.params = { foo: 'bar' } router(req, res, done) }) @@ -49,8 +49,8 @@ describe('req.params', function () { }) it('should restore previous value outside the router', function (done) { - var router = Router() - var server = createServer(function (req, res, next) { + const router = Router() + const server = createServer(function (req, res, next) { req.params = { foo: 'bar' } router(req, res, function (err) { @@ -69,8 +69,8 @@ describe('req.params', function () { describe('when "mergeParams: true"', function () { it('should merge outside object with params', function (done) { - var router = Router({ mergeParams: true }) - var server = createServer(function (req, res, next) { + const router = Router({ mergeParams: true }) + const server = createServer(function (req, res, next) { req.params = { foo: 'bar' } router(req, res, function (err) { @@ -88,8 +88,8 @@ describe('req.params', function () { }) it('should ignore non-object outside object', function (done) { - var router = Router({ mergeParams: true }) - var server = createServer(function (req, res, next) { + const router = Router({ mergeParams: true }) + const server = createServer(function (req, res, next) { req.params = 42 router(req, res, function (err) { @@ -107,8 +107,8 @@ describe('req.params', function () { }) it('should overwrite outside keys that are the same', function (done) { - var router = Router({ mergeParams: true }) - var server = createServer(function (req, res, next) { + const router = Router({ mergeParams: true }) + const server = createServer(function (req, res, next) { req.params = { foo: 'bar' } router(req, res, function (err) { @@ -127,8 +127,8 @@ describe('req.params', function () { describe('with numeric properties in req.params', function () { it('should merge numeric properties by offsetting', function (done) { - var router = Router({ mergeParams: true }) - var server = createServer(function (req, res, next) { + const router = Router({ mergeParams: true }) + const server = createServer(function (req, res, next) { req.params = { 0: 'foo', 1: 'bar' } router(req, res, function (err) { @@ -146,8 +146,8 @@ describe('req.params', function () { }) it('should merge with same numeric properties', function (done) { - var router = Router({ mergeParams: true }) - var server = createServer(function (req, res, next) { + const router = Router({ mergeParams: true }) + const server = createServer(function (req, res, next) { req.params = { 0: 'foo' } router(req, res, function (err) { @@ -168,7 +168,7 @@ describe('req.params', function () { }) function hitParams (num) { - var name = 'x-params-' + String(num) + const name = 'x-params-' + String(num) return function hit (req, res, next) { res.setHeader(name, JSON.stringify(req.params)) next() diff --git a/test/route.js b/test/route.js index 724f5d5..e32e1d4 100644 --- a/test/route.js +++ b/test/route.js @@ -1,33 +1,33 @@ - -var Buffer = require('safe-buffer').Buffer -var methods = require('methods') -var series = require('run-series') -var Router = require('..') -var utils = require('./support/utils') - -var assert = utils.assert -var createHitHandle = utils.createHitHandle -var createServer = utils.createServer -var request = utils.request -var shouldHaveBody = utils.shouldHaveBody -var shouldHitHandle = utils.shouldHitHandle -var shouldNotHaveBody = utils.shouldNotHaveBody -var shouldNotHitHandle = utils.shouldNotHitHandle - -var describePromises = global.Promise ? describe : describe.skip +const { it, describe } = require('mocha') +const Buffer = require('safe-buffer').Buffer +const methods = require('methods') +const series = require('run-series') +const Router = require('..') +const utils = require('./support/utils') + +const assert = utils.assert +const createHitHandle = utils.createHitHandle +const createServer = utils.createServer +const request = utils.request +const shouldHaveBody = utils.shouldHaveBody +const shouldHitHandle = utils.shouldHitHandle +const shouldNotHaveBody = utils.shouldNotHaveBody +const shouldNotHitHandle = utils.shouldNotHitHandle + +const describePromises = global.Promise ? describe : describe.skip describe('Router', function () { describe('.route(path)', function () { it('should return a new route', function () { - var router = new Router() - var route = router.route('/foo') + const router = new Router() + const route = router.route('/foo') assert.equal(route.path, '/foo') }) it('should respond to multiple methods', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.get(saw) route.post(saw) @@ -52,9 +52,9 @@ describe('Router', function () { }) it('should route without method', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(function (req, res, next) { + const router = new Router() + const route = router.route('/foo') + const server = createServer(function (req, res, next) { req.method = undefined router(req, res, next) }) @@ -76,9 +76,9 @@ describe('Router', function () { }) it('should stack', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.post(createHitHandle(1)) route.all(createHitHandle(2)) @@ -111,9 +111,9 @@ describe('Router', function () { }) it('should not error on empty route', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) assert.ok(route) @@ -132,9 +132,9 @@ describe('Router', function () { }) it('should not invoke singular error route', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function handleError (err, req, res, next) { throw err || new Error('boom!') @@ -148,11 +148,11 @@ describe('Router', function () { it('should not stack overflow with a large sync stack', function (done) { this.timeout(5000) // long-running test - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) - for (var i = 0; i < 6000; i++) { + for (let i = 0; i < 6000; i++) { route.all(function (req, res, next) { next() }) } @@ -165,27 +165,27 @@ describe('Router', function () { describe('.all(...fn)', function () { it('should reject no arguments', function () { - var router = new Router() - var route = router.route('/') + const router = new Router() + const route = router.route('/') assert.throws(route.all.bind(route), /argument handler is required/) }) it('should reject empty array', function () { - var router = new Router() - var route = router.route('/') + const router = new Router() + const route = router.route('/') assert.throws(route.all.bind(route, []), /argument handler is required/) }) it('should reject invalid fn', function () { - var router = new Router() - var route = router.route('/') + const router = new Router() + const route = router.route('/') assert.throws(route.all.bind(route, 2), /argument handler must be a function/) }) it('should respond to all methods', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(saw) @@ -209,9 +209,9 @@ describe('Router', function () { }) it('should accept multiple arguments', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(createHitHandle(1), createHitHandle(2), helloWorld) @@ -223,9 +223,9 @@ describe('Router', function () { }) it('should accept single array of handlers', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all([createHitHandle(1), createHitHandle(2), helloWorld]) @@ -237,9 +237,9 @@ describe('Router', function () { }) it('should accept nested arrays of handlers', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all([[createHitHandle(1), createHitHandle(2)], createHitHandle(3)], helloWorld) @@ -261,15 +261,15 @@ describe('Router', function () { return } - var body = method !== 'head' + const body = method !== 'head' ? shouldHaveBody(Buffer.from('hello, world')) : shouldNotHaveBody() describe('.' + method + '(...fn)', function () { it('should respond to a ' + method.toUpperCase() + ' request', function (done) { - var router = new Router() - var route = router.route('/') - var server = createServer(router) + const router = new Router() + const route = router.route('/') + const server = createServer(router) route[method](helloWorld) @@ -280,27 +280,27 @@ describe('Router', function () { }) it('should reject no arguments', function () { - var router = new Router() - var route = router.route('/') + const router = new Router() + const route = router.route('/') assert.throws(route[method].bind(route), /argument handler is required/) }) it('should reject empty array', function () { - var router = new Router() - var route = router.route('/') + const router = new Router() + const route = router.route('/') assert.throws(route[method].bind(route, []), /argument handler is required/) }) it('should reject invalid fn', function () { - var router = new Router() - var route = router.route('/') + const router = new Router() + const route = router.route('/') assert.throws(route[method].bind(route, 2), /argument handler must be a function/) }) it('should accept multiple arguments', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route[method](createHitHandle(1), createHitHandle(2), helloWorld) @@ -313,9 +313,9 @@ describe('Router', function () { }) it('should accept single array of handlers', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route[method]([createHitHandle(1), createHitHandle(2), helloWorld]) @@ -328,9 +328,9 @@ describe('Router', function () { }) it('should accept nested arrays of handlers', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route[method]([[createHitHandle(1), createHitHandle(2)], createHitHandle(3)], helloWorld) @@ -347,9 +347,9 @@ describe('Router', function () { describe('error handling', function () { it('should handle errors from next(err)', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function createError (req, res, next) { next(new Error('boom!')) @@ -368,9 +368,9 @@ describe('Router', function () { }) it('should handle errors thrown', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function createError (req, res, next) { throw new Error('boom!') @@ -389,9 +389,9 @@ describe('Router', function () { }) it('should handle errors thrown in error handlers', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function createError (req, res, next) { throw new Error('boom!') @@ -414,9 +414,9 @@ describe('Router', function () { describe('next("route")', function () { it('should invoke next handler', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.get(function handle (req, res, next) { res.setHeader('x-next', 'route') @@ -432,9 +432,9 @@ describe('Router', function () { }) it('should invoke next route', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.get(function handle (req, res, next) { res.setHeader('x-next', 'route') @@ -450,9 +450,9 @@ describe('Router', function () { }) it('should skip next handlers in route', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(createHitHandle(1)) route.get(function goNext (req, res, next) { @@ -472,9 +472,9 @@ describe('Router', function () { }) it('should not invoke error handlers', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function goNext (req, res, next) { res.setHeader('x-next', 'route') @@ -495,9 +495,9 @@ describe('Router', function () { describe('next("router")', function () { it('should exit the router', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) function handle (req, res, next) { res.setHeader('x-next', 'router') @@ -516,9 +516,9 @@ describe('Router', function () { }) it('should not invoke error handlers', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function goNext (req, res, next) { res.setHeader('x-next', 'router') @@ -544,9 +544,9 @@ describe('Router', function () { describePromises('promise support', function () { it('should pass rejected promise value', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function createError (req, res, next) { return Promise.reject(new Error('boom!')) @@ -565,9 +565,9 @@ describe('Router', function () { }) it('should pass rejected promise without value', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function createError (req, res, next) { return Promise.reject() // eslint-disable-line prefer-promise-reject-errors @@ -586,9 +586,9 @@ describe('Router', function () { }) it('should ignore resolved promise', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function createError (req, res, next) { saw(req, res) @@ -606,9 +606,9 @@ describe('Router', function () { describe('error handling', function () { it('should pass rejected promise value', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function createError (req, res, next) { return Promise.reject(new Error('boom!')) @@ -629,9 +629,9 @@ describe('Router', function () { }) it('should pass rejected promise without value', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function createError (req, res, next) { return Promise.reject(new Error('boom!')) @@ -653,9 +653,9 @@ describe('Router', function () { }) it('should ignore resolved promise', function (done) { - var router = new Router() - var route = router.route('/foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/foo') + const server = createServer(router) route.all(function createError (req, res, next) { return Promise.reject(new Error('boom!')) @@ -681,9 +681,9 @@ describe('Router', function () { describe('path', function () { describe('using ":name"', function () { it('should name a capture group', function (done) { - var router = new Router() - var route = router.route('/:foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/:foo') + const server = createServer(router) route.all(sendParams) @@ -693,9 +693,9 @@ describe('Router', function () { }) it('should match single path segment', function (done) { - var router = new Router() - var route = router.route('/:foo') - var server = createServer(router) + const router = new Router() + const route = router.route('/:foo') + const server = createServer(router) route.all(sendParams) @@ -705,9 +705,9 @@ describe('Router', function () { }) it('should work multiple times', function (done) { - var router = new Router() - var route = router.route('/:foo/:bar') - var server = createServer(router) + const router = new Router() + const route = router.route('/:foo/:bar') + const server = createServer(router) route.all(sendParams) @@ -717,9 +717,9 @@ describe('Router', function () { }) it('should work following a partial capture group', function (done) { - var router = new Router() - var route = router.route('/user(s?)/:user/:op') - var server = createServer(router) + const router = new Router() + const route = router.route('/user(s?)/:user/:op') + const server = createServer(router) route.all(sendParams) @@ -738,9 +738,9 @@ describe('Router', function () { }) it('should work inside literal paranthesis', function (done) { - var router = new Router() - var route = router.route('/:user\\(:op\\)') - var server = createServer(router) + const router = new Router() + const route = router.route('/:user\\(:op\\)') + const server = createServer(router) route.all(sendParams) @@ -750,9 +750,9 @@ describe('Router', function () { }) it('should work within arrays', function (done) { - var router = new Router() - var route = router.route(['/user/:user/poke', '/user/:user/pokes']) - var server = createServer(router) + const router = new Router() + const route = router.route(['/user/:user/poke', '/user/:user/pokes']) + const server = createServer(router) route.all(sendParams) series([ @@ -772,9 +772,9 @@ describe('Router', function () { describe('using ":name?"', function () { it('should name an optional parameter', function (done) { - var router = new Router() - var route = router.route('/:foo?') - var server = createServer(router) + const router = new Router() + const route = router.route('/:foo?') + const server = createServer(router) route.all(sendParams) series([ @@ -792,9 +792,9 @@ describe('Router', function () { }) it('should work in any segment', function (done) { - var router = new Router() - var route = router.route('/user/:foo?/delete') - var server = createServer(router) + const router = new Router() + const route = router.route('/user/:foo?/delete') + const server = createServer(router) route.all(sendParams) series([ @@ -814,9 +814,9 @@ describe('Router', function () { describe('using ":name*"', function () { it('should name a zero-or-more repeated parameter', function (done) { - var router = new Router() - var route = router.route('/:foo*') - var server = createServer(router) + const router = new Router() + const route = router.route('/:foo*') + const server = createServer(router) route.all(sendParams) series([ @@ -839,9 +839,9 @@ describe('Router', function () { }) it('should work in any segment', function (done) { - var router = new Router() - var route = router.route('/user/:foo*/delete') - var server = createServer(router) + const router = new Router() + const route = router.route('/user/:foo*/delete') + const server = createServer(router) route.all(sendParams) series([ @@ -866,9 +866,9 @@ describe('Router', function () { describe('using ":name+"', function () { it('should name a one-or-more repeated parameter', function (done) { - var router = new Router() - var route = router.route('/:foo+') - var server = createServer(router) + const router = new Router() + const route = router.route('/:foo+') + const server = createServer(router) route.all(sendParams) @@ -892,9 +892,9 @@ describe('Router', function () { }) it('should work in any segment', function (done) { - var router = new Router() - var route = router.route('/user/:foo+/delete') - var server = createServer(router) + const router = new Router() + const route = router.route('/user/:foo+/delete') + const server = createServer(router) route.all(sendParams) series([ @@ -919,9 +919,9 @@ describe('Router', function () { describe('using ":name(regexp)"', function () { it('should limit capture group to regexp match', function (done) { - var router = new Router() - var route = router.route('/:foo([0-9]+)') - var server = createServer(router) + const router = new Router() + const route = router.route('/:foo([0-9]+)') + const server = createServer(router) route.all(sendParams) @@ -942,9 +942,9 @@ describe('Router', function () { describe('using "(regexp)"', function () { it('should add capture group using regexp', function (done) { - var router = new Router() - var route = router.route('/page_([0-9]+)') - var server = createServer(router) + const router = new Router() + const route = router.route('/page_([0-9]+)') + const server = createServer(router) route.all(sendParams) series([ @@ -962,9 +962,9 @@ describe('Router', function () { }) it('should treat regexp as literal regexp', function (done) { - var router = new Router() - var route = router.route('/([a-z]+:n[0-9]+)') - var server = createServer(router) + const router = new Router() + const route = router.route('/([a-z]+:n[0-9]+)') + const server = createServer(router) route.all(sendParams) series([ @@ -997,7 +997,7 @@ function helloWorld (req, res) { } function saw (req, res) { - var msg = 'saw ' + req.method + ' ' + req.url + const msg = 'saw ' + req.method + ' ' + req.url res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end(msg) diff --git a/test/router.js b/test/router.js index 433634f..01cc4ff 100644 --- a/test/router.js +++ b/test/router.js @@ -1,21 +1,21 @@ - -var Buffer = require('safe-buffer').Buffer -var methods = require('methods') -var series = require('run-series') -var Router = require('..') -var utils = require('./support/utils') - -var assert = utils.assert -var createHitHandle = utils.createHitHandle -var createServer = utils.createServer -var rawrequest = utils.rawrequest -var request = utils.request -var shouldHaveBody = utils.shouldHaveBody -var shouldHitHandle = utils.shouldHitHandle -var shouldNotHaveBody = utils.shouldNotHaveBody -var shouldNotHitHandle = utils.shouldNotHitHandle - -var describePromises = global.Promise ? describe : describe.skip +const { it, describe } = require('mocha') +const series = require('run-series') +const Buffer = require('safe-buffer').Buffer +const methods = require('methods') +const Router = require('..') +const utils = require('./support/utils') + +const assert = utils.assert +const createHitHandle = utils.createHitHandle +const createServer = utils.createServer +const rawrequest = utils.rawrequest +const request = utils.request +const shouldHaveBody = utils.shouldHaveBody +const shouldHitHandle = utils.shouldHitHandle +const shouldNotHaveBody = utils.shouldNotHaveBody +const shouldNotHitHandle = utils.shouldNotHitHandle + +const describePromises = global.Promise ? describe : describe.skip describe('Router', function () { it('should return a function', function () { @@ -27,25 +27,25 @@ describe('Router', function () { }) it('should reject missing callback', function () { - var router = new Router() + const router = new Router() assert.throws(function () { router({}, {}) }, /argument callback is required/) }) it('should invoke callback without "req.url"', function (done) { - var router = new Router() + const router = new Router() router.use(saw) router({}, {}, done) }) describe('.all(path, fn)', function () { it('should be chainable', function () { - var router = new Router() + const router = new Router() assert.equal(router.all('/', helloWorld), router) }) it('should respond to all methods', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.all('/', helloWorld) series(methods.map(function (method) { @@ -58,7 +58,7 @@ describe('Router', function () { return cb() } - var body = method !== 'head' + const body = method !== 'head' ? shouldHaveBody(Buffer.from('hello, world')) : shouldNotHaveBody() @@ -71,8 +71,8 @@ describe('Router', function () { }) it('should support array of paths', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.all(['/foo', '/bar'], saw) series([ @@ -95,8 +95,8 @@ describe('Router', function () { }) it('should support regexp path', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.all(/^\/[a-z]oo$/, saw) series([ @@ -119,8 +119,8 @@ describe('Router', function () { }) it('should support parameterized path', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.all('/:thing', saw) series([ @@ -150,10 +150,10 @@ describe('Router', function () { it('should not stack overflow with many registered routes', function (done) { this.timeout(5000) // long-running test - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) - for (var i = 0; i < 6000; i++) { + for (let i = 0; i < 6000; i++) { router.get('/thing' + i, helloWorld) } @@ -167,10 +167,10 @@ describe('Router', function () { it('should not stack overflow with a large sync stack', function (done) { this.timeout(5000) // long-running test - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) - for (var i = 0; i < 6000; i++) { + for (let i = 0; i < 6000; i++) { router.get('/foo', function (req, res, next) { next() }) } @@ -183,8 +183,8 @@ describe('Router', function () { describe('with "caseSensitive" option', function () { it('should not match paths case-sensitively by default', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.all('/foo/bar', saw) series([ @@ -207,8 +207,8 @@ describe('Router', function () { }) it('should not match paths case-sensitively when false', function (done) { - var router = new Router({ caseSensitive: false }) - var server = createServer(router) + const router = new Router({ caseSensitive: false }) + const server = createServer(router) router.all('/foo/bar', saw) series([ @@ -231,8 +231,8 @@ describe('Router', function () { }) it('should match paths case-sensitively when true', function (done) { - var router = new Router({ caseSensitive: true }) - var server = createServer(router) + const router = new Router({ caseSensitive: true }) + const server = createServer(router) router.all('/foo/bar', saw) series([ @@ -257,8 +257,8 @@ describe('Router', function () { describe('with "strict" option', function () { it('should accept optional trailing slashes by default', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.all('/foo', saw) series([ @@ -276,8 +276,8 @@ describe('Router', function () { }) it('should accept optional trailing slashes when false', function (done) { - var router = new Router({ strict: false }) - var server = createServer(router) + const router = new Router({ strict: false }) + const server = createServer(router) router.all('/foo', saw) series([ @@ -295,8 +295,8 @@ describe('Router', function () { }) it('should not accept optional trailing slashes when true', function (done) { - var router = new Router({ strict: true }) - var server = createServer(router) + const router = new Router({ strict: true }) + const server = createServer(router) router.all('/foo', saw) series([ @@ -324,19 +324,19 @@ describe('Router', function () { return } - var body = method !== 'head' + const body = method !== 'head' ? shouldHaveBody(Buffer.from('hello, world')) : shouldNotHaveBody() describe('.' + method + '(path, ...fn)', function () { it('should be chainable', function () { - var router = new Router() + const router = new Router() assert.equal(router[method]('/', helloWorld), router) }) it('should respond to a ' + method.toUpperCase() + ' request', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router[method]('/', helloWorld) @@ -347,13 +347,13 @@ describe('Router', function () { }) it('should reject invalid fn', function () { - var router = new Router() + const router = new Router() assert.throws(router[method].bind(router, '/', 2), /argument handler must be a function/) }) it('should support array of paths', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router[method](['/foo', '/bar'], createHitHandle(1), helloWorld) series([ @@ -381,8 +381,8 @@ describe('Router', function () { }) it('should support regexp path', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router[method](/^\/[a-z]oo$/, createHitHandle(1), helloWorld) series([ @@ -410,8 +410,8 @@ describe('Router', function () { }) it('should support parameterized path', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router[method]('/:thing', createHitHandle(1), helloWorld) @@ -446,8 +446,8 @@ describe('Router', function () { }) it('should accept multiple arguments', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router[method]('/', createHitHandle(1), createHitHandle(2), helloWorld) @@ -461,8 +461,8 @@ describe('Router', function () { describe('req.baseUrl', function () { it('should be empty', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router[method]('/foo', function handle (req, res) { res.setHeader('x-url-base', JSON.stringify(req.baseUrl)) @@ -477,8 +477,8 @@ describe('Router', function () { describe('req.route', function () { it('should be a Route', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router[method]('/foo', function handle (req, res) { res.setHeader('x-is-route', String(req.route instanceof Router.Route)) @@ -491,8 +491,8 @@ describe('Router', function () { }) it('should be the matched route', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router[method]('/foo', function handle (req, res) { res.setHeader('x-is-route', String(req.route.path === '/foo')) @@ -509,17 +509,17 @@ describe('Router', function () { describe('.use(...fn)', function () { it('should reject missing functions', function () { - var router = new Router() + const router = new Router() assert.throws(router.use.bind(router), /argument handler is required/) }) it('should reject empty array', function () { - var router = new Router() + const router = new Router() assert.throws(router.use.bind(router, []), /argument handler is required/) }) it('should reject non-functions', function () { - var router = new Router() + const router = new Router() assert.throws(router.use.bind(router, '/', 'hello'), /argument handler must be a function/) assert.throws(router.use.bind(router, '/', 5), /argument handler must be a function/) assert.throws(router.use.bind(router, '/', null), /argument handler must be a function/) @@ -527,13 +527,13 @@ describe('Router', function () { }) it('should be chainable', function () { - var router = new Router() + const router = new Router() assert.equal(router.use(helloWorld), router) }) it('should invoke function for all requests', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(saw) @@ -562,8 +562,8 @@ describe('Router', function () { }) it('should not invoke for blank URLs', function (done) { - var router = new Router() - var server = createServer(function hander (req, res, next) { + const router = new Router() + const server = createServer(function hander (req, res, next) { req.url = '' router(req, res, next) }) @@ -576,9 +576,9 @@ describe('Router', function () { }) it('should support another router', function (done) { - var inner = new Router() - var router = new Router() - var server = createServer(router) + const inner = new Router() + const router = new Router() + const server = createServer(router) inner.use(saw) router.use(inner) @@ -589,8 +589,8 @@ describe('Router', function () { }) it('should accept multiple arguments', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(createHitHandle(1), createHitHandle(2), helloWorld) @@ -602,8 +602,8 @@ describe('Router', function () { }) it('should accept single array of middleware', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use([createHitHandle(1), createHitHandle(2), helloWorld]) @@ -615,8 +615,8 @@ describe('Router', function () { }) it('should accept nested arrays of middleware', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use([[createHitHandle(1), createHitHandle(2)], createHitHandle(3)], helloWorld) @@ -629,8 +629,8 @@ describe('Router', function () { }) it('should not invoke singular error function', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function handleError (err, req, res, next) { throw err || new Error('boom!') @@ -644,10 +644,10 @@ describe('Router', function () { it('should not stack overflow with a large sync stack', function (done) { this.timeout(5000) // long-running test - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) - for (var i = 0; i < 6000; i++) { + for (let i = 0; i < 6000; i++) { router.use(function (req, res, next) { next() }) } @@ -660,8 +660,8 @@ describe('Router', function () { describe('error handling', function () { it('should invoke error function after next(err)', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function handle (req, res, next) { next(new Error('boom!')) @@ -675,8 +675,8 @@ describe('Router', function () { }) it('should invoke error function after throw err', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function handle (req, res, next) { throw new Error('boom!') @@ -690,8 +690,8 @@ describe('Router', function () { }) it('should not invoke error functions above function', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(sawError) @@ -707,8 +707,8 @@ describe('Router', function () { describe('next("route")', function () { it('should invoke next handler', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function handle (req, res, next) { res.setHeader('x-next', 'route') @@ -724,8 +724,8 @@ describe('Router', function () { }) it('should invoke next function', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) function goNext (req, res, next) { res.setHeader('x-next', 'route') @@ -743,8 +743,8 @@ describe('Router', function () { }) it('should not invoke error handlers', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function handle (req, res, next) { res.setHeader('x-next', 'route') @@ -762,8 +762,8 @@ describe('Router', function () { describe('next("router")', function () { it('should exit the router', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) function handle (req, res, next) { res.setHeader('x-next', 'router') @@ -781,8 +781,8 @@ describe('Router', function () { }) it('should not invoke error handlers', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function handle (req, res, next) { res.setHeader('x-next', 'router') @@ -800,8 +800,8 @@ describe('Router', function () { describePromises('promise support', function () { it('should pass rejected promise value', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function createError (req, res, next) { return Promise.reject(new Error('boom!')) @@ -815,8 +815,8 @@ describe('Router', function () { }) it('should pass rejected promise without value', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function createError (req, res, next) { return Promise.reject() // eslint-disable-line prefer-promise-reject-errors @@ -830,8 +830,8 @@ describe('Router', function () { }) it('should ignore resolved promise', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function createError (req, res, next) { saw(req, res) @@ -849,8 +849,8 @@ describe('Router', function () { describe('error handling', function () { it('should pass rejected promise value', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function createError (req, res, next) { return Promise.reject(new Error('boom!')) @@ -868,8 +868,8 @@ describe('Router', function () { }) it('should pass rejected promise without value', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function createError (req, res, next) { return Promise.reject() // eslint-disable-line prefer-promise-reject-errors @@ -887,8 +887,8 @@ describe('Router', function () { }) it('should ignore resolved promise', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(function createError (req, res, next) { return Promise.reject(new Error('boom!')) @@ -912,8 +912,8 @@ describe('Router', function () { describe('req.baseUrl', function () { it('should be empty', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(sawBase) @@ -926,13 +926,13 @@ describe('Router', function () { describe('.use(path, ...fn)', function () { it('should be chainable', function () { - var router = new Router() + const router = new Router() assert.equal(router.use('/', helloWorld), router) }) it('should invoke when req.url starts with path', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/foo', saw) series([ @@ -955,8 +955,8 @@ describe('Router', function () { }) it('should match if path has trailing slash', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/foo/', saw) @@ -980,8 +980,8 @@ describe('Router', function () { }) it('should support array of paths', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(['/foo/', '/bar'], saw) @@ -1005,8 +1005,8 @@ describe('Router', function () { }) it('should support regexp path', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(/^\/[a-z]oo/, saw) series([ @@ -1039,8 +1039,8 @@ describe('Router', function () { }) it('should ensure regexp matches path prefix', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use(/\/api.*/, createHitHandle(1)) router.use(/api/, createHitHandle(2)) @@ -1056,8 +1056,8 @@ describe('Router', function () { }) it('should support parameterized path', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/:thing', saw) series([ @@ -1085,8 +1085,8 @@ describe('Router', function () { }) it('should accept multiple arguments', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/foo', createHitHandle(1), createHitHandle(2), helloWorld) @@ -1099,8 +1099,8 @@ describe('Router', function () { describe('with "caseSensitive" option', function () { it('should not match paths case-sensitively by default', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/foo', saw) series([ @@ -1123,8 +1123,8 @@ describe('Router', function () { }) it('should not match paths case-sensitively when false', function (done) { - var router = new Router({ caseSensitive: false }) - var server = createServer(router) + const router = new Router({ caseSensitive: false }) + const server = createServer(router) router.use('/foo', saw) series([ @@ -1147,8 +1147,8 @@ describe('Router', function () { }) it('should match paths case-sensitively when true', function (done) { - var router = new Router({ caseSensitive: true }) - var server = createServer(router) + const router = new Router({ caseSensitive: true }) + const server = createServer(router) router.use('/foo', saw) series([ @@ -1173,8 +1173,8 @@ describe('Router', function () { describe('with "strict" option', function () { it('should accept optional trailing slashes by default', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/foo', saw) series([ @@ -1192,8 +1192,8 @@ describe('Router', function () { }) it('should accept optional trailing slashes when false', function (done) { - var router = new Router({ strict: false }) - var server = createServer(router) + const router = new Router({ strict: false }) + const server = createServer(router) router.use('/foo', saw) series([ @@ -1211,8 +1211,8 @@ describe('Router', function () { }) it('should accept optional trailing slashes when true', function (done) { - var router = new Router({ strict: true }) - var server = createServer(router) + const router = new Router({ strict: true }) + const server = createServer(router) router.use('/foo', saw) series([ @@ -1232,8 +1232,8 @@ describe('Router', function () { describe('next("route")', function () { it('should invoke next handler', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/foo', function handle (req, res, next) { res.setHeader('x-next', 'route') @@ -1249,8 +1249,8 @@ describe('Router', function () { }) it('should invoke next function', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) function goNext (req, res, next) { res.setHeader('x-next', 'route') @@ -1270,8 +1270,8 @@ describe('Router', function () { describe('req.baseUrl', function () { it('should contain the stripped path', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/foo', sawBase) @@ -1281,9 +1281,9 @@ describe('Router', function () { }) it('should contain the stripped path for multiple levels', function (done) { - var router1 = new Router() - var router2 = new Router() - var server = createServer(router1) + const router1 = new Router() + const router2 = new Router() + const server = createServer(router1) router1.use('/foo', router2) router2.use('/bar', sawBase) @@ -1294,11 +1294,11 @@ describe('Router', function () { }) it('should be altered correctly', function (done) { - var router = new Router() - var server = createServer(router) - var sub1 = new Router() - var sub2 = new Router() - var sub3 = new Router() + const router = new Router() + const server = createServer(router) + const sub1 = new Router() + const sub2 = new Router() + const sub3 = new Router() sub3.get('/zed', setsawBase(1)) @@ -1327,8 +1327,8 @@ describe('Router', function () { describe('req.url', function () { it('should strip path from req.url', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/foo', saw) @@ -1338,8 +1338,8 @@ describe('Router', function () { }) it('should restore req.url after stripping', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/foo', setsaw(1)) router.use(saw) @@ -1351,8 +1351,8 @@ describe('Router', function () { }) it('should strip/restore with trailing stash', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.use('/foo', setsaw(1)) router.use(saw) @@ -1367,8 +1367,8 @@ describe('Router', function () { describe('request rewriting', function () { it('should support altering req.method', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.put('/foo', createHitHandle(1)) router.post('/foo', createHitHandle(2), function (req, res, next) { @@ -1390,8 +1390,8 @@ describe('Router', function () { }) it('should support altering req.url', function (done) { - var router = new Router() - var server = createServer(router) + const router = new Router() + const server = createServer(router) router.get('/bar', createHitHandle(1)) router.get('/foo', createHitHandle(2), function (req, res, next) { @@ -1421,7 +1421,7 @@ function helloWorld (req, res) { } function setsaw (num) { - var name = 'x-saw-' + String(num) + const name = 'x-saw-' + String(num) return function saw (req, res, next) { res.setHeader(name, req.method + ' ' + req.url) next() @@ -1429,7 +1429,7 @@ function setsaw (num) { } function setsawBase (num) { - var name = 'x-saw-base-' + String(num) + const name = 'x-saw-base-' + String(num) return function sawBase (req, res, next) { res.setHeader(name, String(req.baseUrl)) next() @@ -1437,21 +1437,21 @@ function setsawBase (num) { } function saw (req, res) { - var msg = 'saw ' + req.method + ' ' + req.url + const msg = 'saw ' + req.method + ' ' + req.url res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end(msg) } function sawError (err, req, res, next) { - var msg = 'saw ' + err.name + ': ' + err.message + const msg = 'saw ' + err.name + ': ' + err.message res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end(msg) } function sawBase (req, res) { - var msg = 'saw ' + req.baseUrl + const msg = 'saw ' + req.baseUrl res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end(msg) diff --git a/test/support/utils.js b/test/support/utils.js index 30b2a5e..45ccb8a 100644 --- a/test/support/utils.js +++ b/test/support/utils.js @@ -1,10 +1,9 @@ - -var assert = require('assert') -var Buffer = require('safe-buffer').Buffer -var finalhandler = require('finalhandler') -var http = require('http') -var methods = require('methods') -var request = require('supertest') +const assert = require('assert') +const Buffer = require('safe-buffer').Buffer +const finalhandler = require('finalhandler') +const http = require('http') +const methods = require('methods') +const request = require('supertest') exports.assert = assert exports.createHitHandle = createHitHandle @@ -17,7 +16,7 @@ exports.shouldHitHandle = shouldHitHandle exports.shouldNotHitHandle = shouldNotHitHandle function createHitHandle (num) { - var name = 'x-fn-' + String(num) + const name = 'x-fn-' + String(num) return function hit (req, res, next) { res.setHeader(name, 'hit') next() @@ -31,10 +30,10 @@ function createServer (router) { } function rawrequest (server) { - var _headers = {} - var _method - var _path - var _test = {} + const _headers = {} + let _method + let _path + const _test = {} methods.forEach(function (method) { _test[method] = go.bind(null, method) @@ -46,7 +45,7 @@ function rawrequest (server) { return this } - var _server + let _server if (!server.address()) { _server = server.listen(0, onListening) @@ -56,25 +55,25 @@ function rawrequest (server) { onListening.call(server) function onListening () { - var addr = this.address() - var port = addr.port + const addr = this.address() + const port = addr.port - var req = http.request({ + const req = http.request({ host: '127.0.0.1', method: _method, path: _path, - port: port + port }) req.on('response', function (res) { - var buf = '' + let buf = '' res.setEncoding('utf8') res.on('data', function (s) { buf += s }) res.on('end', function () { - var err = null + let err = null try { - for (var key in _headers) { + for (const key in _headers) { assert.equal(res.headers[key], _headers[key]) } @@ -100,7 +99,7 @@ function rawrequest (server) { _path = path return { - expect: expect + expect } } @@ -109,7 +108,7 @@ function rawrequest (server) { function shouldHaveBody (buf) { return function (res) { - var body = !Buffer.isBuffer(res.body) + const body = !Buffer.isBuffer(res.body) ? Buffer.from(res.text) : res.body assert.ok(body, 'response has body') @@ -118,7 +117,7 @@ function shouldHaveBody (buf) { } function shouldHitHandle (num) { - var header = 'x-fn-' + String(num) + const header = 'x-fn-' + String(num) return function (res) { assert.equal(res.headers[header], 'hit', 'should hit handle ' + num) }