summaryrefslogtreecommitdiff
path: root/node_modules/mongoose/support/expresso/test/http.test.js
blob: 41648d2f1c288cfa6048494aa954f0cf5bd06730 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/**
 * 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.addListener('data', function(chunk){ body += chunk });
        req.addListener('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()': function(beforeExit){
        var called = 0;

        assert.response(server, {
            url: '/',
            method: 'GET'
        },{
            body: '{"name":"tj"}',
            status: 200,
            headers: {
                'Content-Type': 'application/json; charset=utf8'
            }
        });

        assert.response(server, {
            url: '/foo',
            method: 'POST',
            data: 'bar baz'
        },{
            body: '/foo bar baz',
            status: 200
        }, function(res){
            ++called;
            assert.ok(res);
        });

        assert.response(server, {
            url: '/foo'
        }, function(res){
            ++called;
            assert.ok(res.body.indexOf('tj') >= 0, 'Test assert.response() callback');
        });

        assert.response(server,
            { url: '/delay', timeout: 300 },
            { body: 'delayed' });

        beforeExit(function(){
            assert.equal(2, called);
        });
    },

    'test assert.response() regexp': function(){
      assert.response(server,
        { url: '/foo', method: 'POST', data: 'foobar' },
        { body: /^\/foo foo(bar)?/ });
    },
    
    'test assert.response() regexp headers': function(){
      assert.response(server,
        { url: '/' },
        { body: '{"name":"tj"}', headers: { 'Content-Type': /^application\/json/ } });
    },

    // [!] if this test doesn't pass, an uncaught ECONNREFUSED will display
    'test assert.response() with deferred listen()': function(){
      assert.response(delayedServer,
        { url: '/' },
        { body: 'it worked' });
    }
};