UNPKG

express-htaccess-middleware

Version:

An express middleware that interprets .htaccess rewrite rules.

150 lines (114 loc) 3.85 kB
var RewriteMiddleware = require('../lib/middleware'); var express = require('./helpers/express'); var expect = require('chai').expect; var path = require('path'); var supertest = require('supertest'); var async = require('async'); var app = null; describe('30-rewritebase', function() { before(function (done) { var file = path.resolve(__dirname, 'htaccess_files', '30-rewritebase.htaccess'); express(0, {file: file}, function(err, server) { app = server; done(); }); }); after(function (done) { app.close(); done(); }); it('RewriteRule source1.html dest1.html [R]', function (done) { async.series([ function(next) { this.request = supertest(app) .get('/source1.html') .end(function (err, res) { expect(res.statusCode).to.equal(302); expect(res.header).to.have.property('location'); expect(res.header.location).to.equal('/dir/dest1.html'); done(); }); }.bind(this), function(next) { this.request = supertest(app) .get('/folder/source1.html') .end(function (err, res) { expect(res.statusCode).to.equal(302); expect(res.header).to.have.property('location'); expect(res.header.location).to.equal('/dir/dest1.html'); done(); }); }.bind(this) ], done); }); it('RewriteRule ^source2.html$ dest2.html [R]', function (done) { async.series([ function(next) { this.request = supertest(app) .get('/source2.html') .end(function (err, res) { expect(res.statusCode).to.equal(302); expect(res.header).to.have.property('location'); expect(res.header.location).to.equal('/dir/dest2.html'); done(); }); }.bind(this), function(next) { this.request = supertest(app) .get('/folder/source2.html') .end(function (err, res) { expect(res.statusCode).to.equal(404); done(); }); }.bind(this) ], done); }); it('RewriteRule source3.html$ /folder/dest3.html [R]', function (done) { async.series([ function(next) { this.request = supertest(app) .get('/source3.html') .end(function (err, res) { expect(res.statusCode).to.equal(302); expect(res.header).to.have.property('location'); expect(res.header.location).to.equal('/folder/dest3.html'); done(); }); }.bind(this), function(next) { this.request = supertest(app) .get('/subfolder/source3.html') .end(function (err, res) { expect(res.statusCode).to.equal(302); expect(res.header).to.have.property('location'); expect(res.header.location).to.equal('/folder/dest3.html'); done(); }); }.bind(this) ], done); }); it('RewriteRule (source4.html) http://www.domain2.com/$1 [R]', function (done) { async.series([ function(next) { this.request = supertest(app) .get('/source4.html') .end(function (err, res) { expect(res.statusCode).to.equal(302); expect(res.header).to.have.property('location'); expect(res.header.location).to.equal('http://www.domain2.com/source4.html'); done(); }); }.bind(this), function(next) { this.request = supertest(app) .get('/subfolder/source4.html') .end(function (err, res) { expect(res.statusCode).to.equal(302); expect(res.header).to.have.property('location'); expect(res.header.location).to.equal('http://www.domain2.com/source4.html'); done(); }); }.bind(this) ], done); }); });