ensure parseurl always working as expected
This commit is contained in:
parent
7fe29d92f1
commit
c243baa4d1
3 changed files with 20 additions and 0 deletions
|
@ -129,6 +129,8 @@ module.exports = {
|
||||||
|
|
||||||
set path(path) {
|
set path(path) {
|
||||||
var url = parse(this.req);
|
var url = parse(this.req);
|
||||||
|
if (url.pathname === path) return;
|
||||||
|
|
||||||
url.pathname = path;
|
url.pathname = path;
|
||||||
url.path = null;
|
url.path = null;
|
||||||
|
|
||||||
|
@ -180,6 +182,8 @@ module.exports = {
|
||||||
|
|
||||||
set querystring(str) {
|
set querystring(str) {
|
||||||
var url = parse(this.req);
|
var url = parse(this.req);
|
||||||
|
if (url.search === '?' + str) return;
|
||||||
|
|
||||||
url.search = str;
|
url.search = str;
|
||||||
url.path = null;
|
url.path = null;
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var context = require('../context');
|
var context = require('../context');
|
||||||
|
var parseurl = require('parseurl');
|
||||||
|
|
||||||
describe('ctx.path', function(){
|
describe('ctx.path', function(){
|
||||||
it('should return the pathname', function(){
|
it('should return the pathname', function(){
|
||||||
|
@ -28,4 +29,11 @@ describe('ctx.path=', function(){
|
||||||
ctx.originalUrl.should.equal('/login');
|
ctx.originalUrl.should.equal('/login');
|
||||||
ctx.request.originalUrl.should.equal('/login');
|
ctx.request.originalUrl.should.equal('/login');
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should not affect parseurl', function(){
|
||||||
|
const ctx = context({ url: '/login?foo=bar' });
|
||||||
|
ctx.path = '/login';
|
||||||
|
const url = parseurl(ctx.req);
|
||||||
|
url.path.should.equal('/login?foo=bar');
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var context = require('../context');
|
var context = require('../context');
|
||||||
|
var parseurl = require('parseurl');
|
||||||
|
|
||||||
describe('ctx.querystring', function(){
|
describe('ctx.querystring', function(){
|
||||||
it('should return the querystring', function(){
|
it('should return the querystring', function(){
|
||||||
|
@ -44,4 +45,11 @@ describe('ctx.querystring=', function(){
|
||||||
ctx.originalUrl.should.equal('/store/shoes');
|
ctx.originalUrl.should.equal('/store/shoes');
|
||||||
ctx.request.originalUrl.should.equal('/store/shoes');
|
ctx.request.originalUrl.should.equal('/store/shoes');
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should not affect parseurl', function(){
|
||||||
|
const ctx = context({ url: '/login?foo=bar' });
|
||||||
|
ctx.querystring = 'foo=bar';
|
||||||
|
const url = parseurl(ctx.req);
|
||||||
|
url.path.should.equal('/login?foo=bar');
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue