[Groonga-commit] groonga/express-kotoumi [master] Add test utilities for HTTP REST APIs

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index