var sys = require("util") , assert = require("assert") , XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest , http = require("http") , xhr; // Test server var server = http.createServer(function (req, res) { // Check request method and URL assert.equal(methods[curMethod], req.method); assert.equal("/" + methods[curMethod], req.url); var body = (req.method != "HEAD" ? "Hello World" : ""); res.writeHead(200, { "Content-Type": "text/plain", "Content-Length": Buffer.byteLength(body) }); // HEAD has no body if (req.method != "HEAD") { res.write(body); } res.end(); if (curMethod == methods.length - 1) { this.close(); sys.puts("done"); } }).listen(8000); // Test standard methods var methods = ["GET", "POST", "HEAD", "PUT", "DELETE"]; var curMethod = 0; function start(method) { // Reset each time xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (this.readyState == 4) { if (method == "HEAD") { assert.equal("", this.responseText); } else { assert.equal("Hello World", this.responseText); } curMethod++; if (curMethod < methods.length) { sys.puts("Testing " + methods[curMethod]); start(methods[curMethod]); } } }; var url = "http://localhost:8000/" + method; xhr.open(method, url); xhr.send(); } sys.puts("Testing " + methods[curMethod]); start(methods[curMethod]);