mountebank-test
Version:
Over the wire test doubles
52 lines (45 loc) • 1.22 kB
JavaScript
;
var Q = require('q'),
url = require('url'),
helpers = require('../../util/helpers');
function createTestRequest () {
return {
requestFrom: '',
method: 'GET',
path: '/',
query: {},
headers: {},
body: ''
};
}
function headersFor (rawHeaders) {
var result = {};
for (var i = 0; i < rawHeaders.length; i += 2) {
result[rawHeaders[i]] = rawHeaders[i+1];
}
return result;
}
function transform (request) {
var parts = url.parse(request.url, true);
return {
requestFrom: helpers.socketName(request.socket),
method: request.method,
path: parts.pathname,
query: parts.query,
headers: headersFor(request.rawHeaders),
body: request.body
};
}
function createFrom (container) {
var deferred = Q.defer(),
request = container.request;
request.body = '';
request.setEncoding('utf8');
request.on('data', function (chunk) { request.body += chunk; });
request.on('end', function () { deferred.resolve(transform(request)); });
return deferred.promise;
}
module.exports = {
createTestRequest: createTestRequest,
createFrom: createFrom
};