Skip to content

Commit

Permalink
Refactor URL comparisons to url-equal
Browse files Browse the repository at this point in the history
Fix `Request#isMatch` to also accept any order of query strings.
  • Loading branch information
mmalecki committed Jul 3, 2018
1 parent ccefab4 commit 104fb10
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 13 deletions.
12 changes: 3 additions & 9 deletions lib/hock.js
Expand Up @@ -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
Expand Down Expand Up @@ -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);
})
Expand Down
13 changes: 10 additions & 3 deletions 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) {
Expand Down Expand Up @@ -201,15 +207,16 @@ 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;
if (this._requestFilter) {
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();

}
Expand Down
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -33,6 +33,7 @@
"node": ">=0.8.x"
},
"dependencies": {
"deep-equal": "0.2.1"
"deep-equal": "0.2.1",
"url-equal": "~0.1.1"
}
}

0 comments on commit 104fb10

Please sign in to comment.