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);
}

