Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #29 from mmalecki/qs-order
Allow for any query string order
  • Loading branch information
mmalecki committed Jul 3, 2018
2 parents df20b8f + 36be23c commit 553620c
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 7 deletions.
11 changes: 8 additions & 3 deletions lib/hock.js
@@ -1,6 +1,11 @@
var http = require('http'),
'use strict';

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 @@ -63,7 +68,7 @@ Hock.prototype.hasRoute = function (method, url, body, headers) {

var found = this._assertions.filter(function(request) {
return request.method === method
&& request.url === url
&& 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.2-1"
}
}
12 changes: 12 additions & 0 deletions test/request-test.js
Expand Up @@ -31,5 +31,17 @@ describe('Request unit tests', function () {
headers: {}
}).should.equal(false);
});

it('should accept any order of query strings', function () {
var request = new Request(new Object(), {
method: 'GET',
url: '/?foo=bar&bar=foo'
});

request.isMatch({
method: 'GET',
url: '/?bar=foo&foo=bar'
}).should.equal(true);
});
});
});
9 changes: 9 additions & 0 deletions test/simple-test.js
Expand Up @@ -281,6 +281,15 @@ describe('Hock HTTP Tests', function() {
done();
});

it('matches different order of querystring parameters', function(done) {
hockInstance
.get('/url?user=foo&pass=bar')
.reply(200, { 'hock': 'ok' });

hockInstance.hasRoute('GET', '/url?pass=bar&user=foo').should.equal(true);
done();
});

after(function(done) {
httpServer.close(done);
});
Expand Down

0 comments on commit 553620c

Please sign in to comment.