]> git.cworth.org Git - obsolete/notmuch-web/blobdiff - node_modules/express/node_modules/qs/support/expresso/test/http.test.js
Install the "express" node module via npm
[obsolete/notmuch-web] / node_modules / express / node_modules / qs / support / expresso / test / http.test.js
diff --git a/node_modules/express/node_modules/qs/support/expresso/test/http.test.js b/node_modules/express/node_modules/qs/support/expresso/test/http.test.js
new file mode 100644 (file)
index 0000000..1f9d249
--- /dev/null
@@ -0,0 +1,146 @@
+
+/**
+ * Module dependencies.
+ */
+
+var assert = require('assert')
+  , http = require('http');
+
+var server = http.createServer(function(req, res){
+  if (req.method === 'GET') {
+    if (req.url === '/delay') {
+      setTimeout(function(){
+        res.writeHead(200, {});
+        res.end('delayed');
+      }, 200);
+    } else {
+      var body = JSON.stringify({ name: 'tj' });
+      res.writeHead(200, {
+        'Content-Type': 'application/json; charset=utf8',
+        'Content-Length': body.length
+      });
+      res.end(body);
+    }
+  } else {
+    var body = '';
+    req.setEncoding('utf8');
+    req.on('data', function(chunk){ body += chunk });
+    req.on('end', function(){
+      res.writeHead(200, {});
+      res.end(req.url + ' ' + body);
+    });
+  }
+});
+
+var delayedServer = http.createServer(function(req, res){
+  res.writeHead(200);
+  res.end('it worked');
+});
+
+var oldListen = delayedServer.listen;
+delayedServer.listen = function(){
+  var args = arguments;
+  setTimeout(function(){
+    oldListen.apply(delayedServer, args);
+  }, 100);
+};
+
+module.exports = {
+  'test assert.response(req, res, fn)': function(beforeExit){
+    var calls = 0;
+
+    assert.response(server, {
+      url: '/',
+      method: 'GET'
+    },{
+      body: '{"name":"tj"}',
+      status: 200,
+      headers: {
+        'Content-Type': 'application/json; charset=utf8'
+      }
+    }, function(res){
+      ++calls;
+      assert.ok(res);
+    });
+    
+    beforeExit(function(){
+      assert.equal(1, calls);
+    })
+  },
+
+  'test assert.response(req, fn)': function(beforeExit){
+    var calls = 0;
+
+    assert.response(server, {
+      url: '/foo'
+    }, function(res){
+      ++calls;
+      assert.ok(res.body.indexOf('tj') >= 0, 'Test assert.response() callback');
+    });
+
+    beforeExit(function(){
+      assert.equal(1, calls);
+    });
+  },
+  
+  'test assert.response() delay': function(beforeExit){
+    var calls = 0;
+
+    assert.response(server,
+      { url: '/delay', timeout: 1500 },
+      { body: 'delayed' },
+      function(){
+        ++calls;
+      });
+
+    beforeExit(function(){
+      assert.equal(1, calls);
+    });
+  },
+
+  'test assert.response() regexp': function(beforeExit){
+    var calls = 0;
+
+    assert.response(server,
+      { url: '/foo', method: 'POST', data: 'foobar' },
+      { body: /^\/foo foo(bar)?/ },
+      function(){
+        ++calls;
+      });
+    
+    beforeExit(function(){
+      assert.equal(1, calls);
+    });
+  },
+  
+  'test assert.response() regexp headers': function(beforeExit){
+    var calls = 0;
+
+    assert.response(server,
+      { url: '/' },
+      { body: '{"name":"tj"}', headers: { 'Content-Type': /^application\/json/ } },
+      function(){
+        ++calls;
+      });
+    
+    beforeExit(function(){
+      assert.equal(1, calls);
+    });
+  },
+
+  // [!] if this test doesn't pass, an uncaught ECONNREFUSED will display
+  'test assert.response() with deferred listen()': function(beforeExit){
+    var calls = 0;
+
+    assert.response(delayedServer,
+      { url: '/' },
+      { body: 'it worked' },
+      function(){
+        ++calls;
+      });
+
+    beforeExit(function(){
+      assert.equal(1, calls);
+    });
+  }
+};