diff --git a/lib/local-web-server.js b/lib/local-web-server.js index 285888a..a41e8c7 100644 --- a/lib/local-web-server.js +++ b/lib/local-web-server.js @@ -14,7 +14,7 @@ const pathToRegexp = require('path-to-regexp') module.exports = localWebServer /** - * Returns a Koa application you can launch or mix into an existing app. + * Returns a Koa application you can launch or mix into an existing app. * * @param [options] {object} - options * @param [options.static] {object} - koa-static config @@ -190,7 +190,7 @@ function proxyRequest (route, app) { /* test no keys remain in the new path */ keys.length = 0 - pathToRegexp(route.new, keys) + pathToRegexp(url.parse(route.new).path, keys) if (keys.length) { this.throw(500, `[PROXY] Invalid target URL: ${route.new}`) return next() diff --git a/test/test.js b/test/test.js index 7e186b5..9bf1f2e 100644 --- a/test/test.js +++ b/test/test.js @@ -9,7 +9,7 @@ function launchServer (app, options) { options = options || {} const path = `http://localhost:8100${options.path || '/'}` const server = http.createServer(app.callback()) - return server.listen(8100, () => { + return server.listen(options.port || 8100, () => { const req = request(path, options.reqOptions) if (options.onSuccess) req.then(options.onSuccess) if (!options.leaveOpen) req.then(() => server.close()) @@ -164,3 +164,28 @@ test('rewrite: proxy', function(t){ t.ok(/db_name/.test(response.data)) }}) }) + +test('rewrite: proxy with port', function(t){ + t.plan(2) + const one = localWebServer({ + log: { format: 'none' }, + static: { root: __dirname + '/fixture/one' } + }) + const two = localWebServer({ + log: { format: 'none' }, + static: { root: __dirname + '/fixture/spa' }, + rewrite: [ { from: '/test/*', to: 'http://localhost:9000/$1'} ] + }) + const server1 = http.createServer(one.callback()) + const server2 = http.createServer(two.callback()) + server1.listen(9000, () => { + server2.listen(8100, () => { + request('http://localhost:8100/test/file.txt').then(response => { + t.strictEqual(response.res.statusCode, 200) + t.ok(/one/.test(response.data)) + server1.close() + server2.close() + }) + }) + }) +})