summaryrefslogtreecommitdiff
path: root/test/mjsunit/test-http.js
blob: dc9cf4abecf839e3340caa76a7f36fff676fb04a (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
include("mjsunit.js");
PORT = 8888;

var responses_sent = 0;
var responses_recvd = 0;
var body0 = "";
var body1 = "";

function onLoad () {
  new node.http.Server(function (req, res) {
    if (responses_sent == 0) {
      assertEquals("GET", req.method);
      assertEquals("/hello", req.uri.path);
    }

    if (responses_sent == 1) {
      assertEquals("POST", req.method);
      assertEquals("/world", req.uri.path);
      this.close();
    }

    req.onBodyComplete = function () {
      res.sendHeader(200, [["Content-Type", "text/plain"]]);
      res.sendBody("The path was " + req.uri.path);
      res.finish();
      responses_sent += 1;
    };

    //assertEquals("127.0.0.1", res.connection.remoteAddress);
  }).listen(PORT);

  var client = new node.http.Client(PORT);
  var req = client.get("/hello");
  req.finish(function (res) {
    assertEquals(200, res.statusCode);
    responses_recvd += 1;
    res.setBodyEncoding("utf8");
    res.onBody = function (chunk) { body0 += chunk; };
  });

  setTimeout(function () {
    req = client.post("/world");
    req.finish(function (res) {
      assertEquals(200, res.statusCode);
      responses_recvd += 1;
      res.setBodyEncoding("utf8");
      res.onBody = function (chunk) { body1 += chunk; };
    });
  }, 1);
}

function onExit () {
  assertEquals(2, responses_recvd);
  assertEquals(2, responses_sent);
  assertEquals("The path was /hello", body0);
  assertEquals("The path was /world", body1);
}