diff --git a/lib/hock.js b/lib/hock.js index 84ed87a..b0bc08d 100644 --- a/lib/hock.js +++ b/lib/hock.js @@ -4,7 +4,8 @@ var qs = require('querystring'), url_ = require('url'), http = require('http'), Request = require('./request'), - deepEqual = require('deep-equal'); + deepEqual = require('deep-equal'), + urlEqual = require('url-equal'); /** * Hock class @@ -65,16 +66,9 @@ Hock.prototype.hasRoute = function (method, url, body, headers) { headers = {}; } - const parsedUrl = url_.parse(url), - parsedQs = qs.parse(parsedUrl); - var found = this._assertions.filter(function(request) { - const parsedRequestUrl = url_.parse(request.url), - parsedRequestQs = qs.decode(parsedRequestUrl); - return request.method === method - && parsedRequestUrl.pathname === parsedUrl.pathname - && deepEqual(parsedRequestQs, parsedQs) + && urlEqual(url, request.url) && request.body === body && deepEqual(request.headers, headers); }) diff --git a/lib/request.js b/lib/request.js index b7fbd24..56d3218 100644 --- a/lib/request.js +++ b/lib/request.js @@ -1,5 +1,11 @@ +'use strict'; + var fs = require('fs'), - Stream = require('stream'); + qs = require('querystring'), + url_ = require('url'), + Stream = require('stream'), + urlEqual = require('url-equal'), + deepEqual = require('deep-equal'); // From Nock function isStream(obj) { @@ -201,7 +207,8 @@ Request.prototype.isMatch = function(request) { } if (request.method === 'GET' || request.method === 'DELETE') { - return this.method === request.method && request.url === this.url && checkHeaders(); + return this.method === request.method && urlEqual(this.url, request.url) && + checkHeaders(); } else { var body = request.body; @@ -209,7 +216,7 @@ Request.prototype.isMatch = function(request) { body = this._requestFilter(request.body); } - return this.method === request.method && this.url === request.url && + return this.method === request.method && urlEqual(this.url, request.url) && this.body === body && checkHeaders(); } diff --git a/package.json b/package.json index c720b24..2aa237c 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "node": ">=0.8.x" }, "dependencies": { - "deep-equal": "0.2.1" + "deep-equal": "0.2.1", + "url-equal": "~0.1.1" } }