YUKI Hiroshi
null+****@clear*****
Wed Jan 16 16:27:22 JST 2013
YUKI Hiroshi 2013-01-16 16:27:22 +0900 (Wed, 16 Jan 2013) New Revision: 256e52851a9b19cbc1f885eeb66cf2f5fc373765 https://github.com/groonga/express-kotoumi/commit/256e52851a9b19cbc1f885eeb66cf2f5fc373765 Log: Add test utilities for HTTP REST APIs Modified files: test/test-utils.js Modified: test/test-utils.js (+65 -0) =================================================================== --- test/test-utils.js 2013-01-16 16:30:39 +0900 (eff4db3) +++ test/test-utils.js 2013-01-16 16:27:22 +0900 (78e35b0) @@ -1,5 +1,6 @@ var assert = require('chai').assert; var nodemock = require('nodemock'); +var Deferred = require('jsdeferred').Deferred; function createMockedSender() { var sender = { @@ -66,6 +67,70 @@ function createMockedMessageCallback() { exports.createMockedMessageCallback = createMockedMessageCallback; +var testPort = 3333; + +function setupServer(handler) { + var server = http.createServer(handler); + server.listen(testPort); + return server; +} +exports.setupServer = setupServer; + +function sendRequest(method, path, postData, headers) { + var deferred = new Deferred(); + + var options = { + host: 'localhost', + port: testPort, + path: path, + method: method, + headers: {} + }; + + if (headers) { + for (var header in headers) { + if (headers.hasOwnProperty(header)) + options.headers[header] = headers[header]; + } + } + + Deferred.next(function() { + var request = http.request(options, function(response) { + var body = ''; + response.on('data', function(data) { + body += data; + }); + response.on('end', function() { + deferred.call({ + statusCode: response.statusCode, + body: body + }); + }); + }); + request.on('error', function(error) { + deferred.fail(error); + }); + + if (postData) request.write(postData); + request.end(); + }); + + return deferred; +} + +function get(path, headers) { + return sendRequest('GET', path, null, headers); +} +exports.get = get; +Deferred.register('get', function() { return get.apply(this, arguments); }); + +function post(path, body, headers) { + return sendRequest('POST', path, body, headers); +} +exports.post = post; +Deferred.register('post', function() { return post.apply(this, arguments); }); + + function TypeOf(typeString) { if (!(this instanceof TypeOf)) return new TypeOf(typeString); -------------- next part -------------- HTML����������������������������...Download