ensure parseurl always working as expected

This commit is contained in:
dead_horse 2015-11-05 10:55:28 +08:00
parent 7fe29d92f1
commit c243baa4d1
3 changed files with 20 additions and 0 deletions

View file

@ -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;

View file

@ -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');
})
}) })

View file

@ -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');
})
}) })