mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
var common = require("../common");
|
|
var assert = common.assert;
|
|
var http = require("http");
|
|
|
|
var outstanding_reqs = 0;
|
|
var test_req_body = "some stuff...\n";
|
|
var test_res_body = "other stuff!\n";
|
|
var sent_continue = false;
|
|
var got_continue = false;
|
|
|
|
function handler(req, res) {
|
|
assert.equal(sent_continue, true, "Full response sent before 100 Continue");
|
|
common.debug("Server sending full response...");
|
|
res.writeHead(200, {
|
|
'Content-Type' : 'text/plain',
|
|
"ABCD" : "1"
|
|
});
|
|
res.end(test_res_body);
|
|
}
|
|
|
|
var server = http.createServer(handler);
|
|
server.addListener("checkContinue", function(req, res) {
|
|
common.debug("Server got Expect: 100-continue...");
|
|
res.writeContinue();
|
|
sent_continue = true;
|
|
handler(req, res);
|
|
});
|
|
server.listen(common.PORT);
|
|
|
|
|
|
|
|
server.addListener("listening", function() {
|
|
var client = http.createClient(common.PORT);
|
|
req = client.request("POST", "/world", {
|
|
"Expect": "100-continue",
|
|
});
|
|
common.debug("Client sending request...");
|
|
outstanding_reqs++;
|
|
body = "";
|
|
req.addListener('continue', function () {
|
|
common.debug("Client got 100 Continue...");
|
|
got_continue = true;
|
|
req.end(test_req_body);
|
|
});
|
|
req.addListener('response', function (res) {
|
|
assert.equal(got_continue, true,
|
|
"Full response received before 100 Continue"
|
|
);
|
|
assert.equal(200, res.statusCode,
|
|
"Final status code was " + res.statusCode + ", not 200."
|
|
);
|
|
res.setEncoding("utf8");
|
|
res.addListener('data', function (chunk) { body += chunk; });
|
|
res.addListener('end', function () {
|
|
common.debug("Got full response.");
|
|
assert.equal(body, test_res_body, "Response body doesn't match.");
|
|
assert.ok("abcd" in res.headers, "Response headers missing.");
|
|
outstanding_reqs--;
|
|
if (outstanding_reqs == 0) {
|
|
server.close();
|
|
process.exit();
|
|
}
|
|
});
|
|
});
|
|
});
|