diff --git a/lib/mockRequest.js b/lib/mockRequest.js index 440b2ad..862a69f 100644 --- a/lib/mockRequest.js +++ b/lib/mockRequest.js @@ -48,6 +48,11 @@ function createRequest(options) { mockRequest.query = (options.query) ? options.query : {}; mockRequest.files = (options.files) ? options.files : {}; + //parse query string from url to object + if (Object.keys(mockRequest.query).length == 0) { + mockRequest.query = require('querystring').parse(mockRequest.url.split('?')[1]) + } + /** * Function: header * diff --git a/test/test-mockRequest.js b/test/test-mockRequest.js index 9ba728c..e437cd1 100644 --- a/test/test-mockRequest.js +++ b/test/test-mockRequest.js @@ -167,3 +167,32 @@ exports['.param - returns value in correct order (query)'] = function(test) { test.done(); }; + +exports['query object is parsed from url query string'] = function(test) { + var request = httpMocks.createRequest({ + url: 'http://www.whatever.com?a=1&b=2&c=3' + }); + + test.equal(request.query['a'], '1'); + test.equal(request.query['b'], '2'); + test.equal(request.query['c'], '3'); + + test.done(); +}; + +exports['query object is parsed from supplied options if provided'] = function(test) { + var request = httpMocks.createRequest({ + url: 'http://www.whatever.com?a=1&b=2&c=3', + query: { + 'a': '7', + 'b': '8', + 'c': '9' + } + }); + + test.equal(request.query['a'], '7'); + test.equal(request.query['b'], '8'); + test.equal(request.query['c'], '9'); + + test.done(); +};