test/req.subdomains.js JAVASCRIPT 174 lines View on github.com → Search inside
1'use strict'23var express = require('../')4  , request = require('supertest');56describe('req', function(){7  describe('.subdomains', function(){8    describe('when present', function(){9      it('should return an array', function(done){10        var app = express();1112        app.use(function(req, res){13          res.send(req.subdomains);14        });1516        request(app)17        .get('/')18        .set('Host', 'tobi.ferrets.example.com')19        .expect(200, ['ferrets', 'tobi'], done);20      })2122      it('should work with IPv4 address', function(done){23        var app = express();2425        app.use(function(req, res){26          res.send(req.subdomains);27        });2829        request(app)30        .get('/')31        .set('Host', '127.0.0.1')32        .expect(200, [], done);33      })3435      it('should work with IPv6 address', function(done){36        var app = express();3738        app.use(function(req, res){39          res.send(req.subdomains);40        });4142        request(app)43        .get('/')44        .set('Host', '[::1]')45        .expect(200, [], done);46      })47    })4849    describe('otherwise', function(){50      it('should return an empty array', function(done){51        var app = express();5253        app.use(function(req, res){54          res.send(req.subdomains);55        });5657        request(app)58        .get('/')59        .set('Host', 'example.com')60        .expect(200, [], done);61      })62    })6364    describe('with no host', function(){65      it('should return an empty array', function(done){66        var app = express();6768        app.use(function(req, res){69          req.headers.host = null;70          res.send(req.subdomains);71        });7273        request(app)74        .get('/')75        .expect(200, [], done);76      })77    })7879    describe('with trusted X-Forwarded-Host', function () {80      it('should return an array', function (done) {81        var app = express();8283        app.set('trust proxy', true);84        app.use(function (req, res) {85          res.send(req.subdomains);86        });8788        request(app)89        .get('/')90        .set('X-Forwarded-Host', 'tobi.ferrets.example.com')91        .expect(200, ['ferrets', 'tobi'], done);92      })93    })9495    describe('when subdomain offset is set', function(){96      describe('when subdomain offset is zero', function(){97        it('should return an array with the whole domain', function(done){98          var app = express();99          app.set('subdomain offset', 0);100101          app.use(function(req, res){102            res.send(req.subdomains);103          });104105          request(app)106          .get('/')107          .set('Host', 'tobi.ferrets.sub.example.com')108          .expect(200, ['com', 'example', 'sub', 'ferrets', 'tobi'], done);109        })110111        it('should return an array with the whole IPv4', function (done) {112          var app = express();113          app.set('subdomain offset', 0);114115          app.use(function(req, res){116            res.send(req.subdomains);117          });118119          request(app)120          .get('/')121          .set('Host', '127.0.0.1')122          .expect(200, ['127.0.0.1'], done);123        })124125        it('should return an array with the whole IPv6', function (done) {126          var app = express();127          app.set('subdomain offset', 0);128129          app.use(function(req, res){130            res.send(req.subdomains);131          });132133          request(app)134          .get('/')135          .set('Host', '[::1]')136          .expect(200, ['[::1]'], done);137        })138      })139140      describe('when present', function(){141        it('should return an array', function(done){142          var app = express();143          app.set('subdomain offset', 3);144145          app.use(function(req, res){146            res.send(req.subdomains);147          });148149          request(app)150          .get('/')151          .set('Host', 'tobi.ferrets.sub.example.com')152          .expect(200, ['ferrets', 'tobi'], done);153        })154      })155156      describe('otherwise', function(){157        it('should return an empty array', function(done){158          var app = express();159          app.set('subdomain offset', 3);160161          app.use(function(req, res){162            res.send(req.subdomains);163          });164165          request(app)166          .get('/')167          .set('Host', 'sub.example.com')168          .expect(200, [], done);169        })170      })171    })172  })173})

Code quality findings 12

Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var express = require('../')
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();

Get this view in your editor

Same data, no extra tab — call code_get_file + code_get_findings over MCP from Claude/Cursor/Copilot.