|
var sys = require("util")
|
|
, assert = require("assert")
|
|
, XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest
|
|
, xhr = new XMLHttpRequest()
|
|
, http = require("http");
|
|
|
|
// Test server
|
|
var server = http.createServer(function (req, res) {
|
|
// Test setRequestHeader
|
|
assert.equal("Foobar", req.headers["x-test"]);
|
|
// Test non-conforming allowed header
|
|
assert.equal("node-XMLHttpRequest-test", req.headers["user-agent"]);
|
|
// Test header set with blacklist disabled
|
|
assert.equal("http://github.com", req.headers["referer"]);
|
|
|
|
var body = "Hello World";
|
|
res.writeHead(200, {
|
|
"Content-Type": "text/plain",
|
|
"Content-Length": Buffer.byteLength(body),
|
|
// Set cookie headers to see if they're correctly suppressed
|
|
// Actual values don't matter
|
|
"Set-Cookie": "foo=bar",
|
|
"Set-Cookie2": "bar=baz",
|
|
"Date": "Thu, 30 Aug 2012 18:17:53 GMT",
|
|
"Connection": "close"
|
|
});
|
|
res.write("Hello World");
|
|
res.end();
|
|
|
|
this.close();
|
|
}).listen(8000);
|
|
|
|
xhr.onreadystatechange = function() {
|
|
if (this.readyState == 4) {
|
|
// Test getAllResponseHeaders()
|
|
var headers = "content-type: text/plain\r\ncontent-length: 11\r\ndate: Thu, 30 Aug 2012 18:17:53 GMT\r\nconnection: close";
|
|
assert.equal(headers, this.getAllResponseHeaders());
|
|
|
|
// Test case insensitivity
|
|
assert.equal('text/plain', this.getResponseHeader('Content-Type'));
|
|
assert.equal('text/plain', this.getResponseHeader('Content-type'));
|
|
assert.equal('text/plain', this.getResponseHeader('content-Type'));
|
|
assert.equal('text/plain', this.getResponseHeader('content-type'));
|
|
|
|
// Test aborted getAllResponseHeaders
|
|
this.abort();
|
|
assert.equal("", this.getAllResponseHeaders());
|
|
assert.equal(null, this.getResponseHeader("Connection"));
|
|
|
|
sys.puts("done");
|
|
}
|
|
};
|
|
|
|
assert.equal(null, xhr.getResponseHeader("Content-Type"));
|
|
try {
|
|
xhr.open("GET", "http://localhost:8000/");
|
|
// Valid header
|
|
xhr.setRequestHeader("X-Test", "Foobar");
|
|
// Invalid header
|
|
xhr.setRequestHeader("Content-Length", 0);
|
|
// Allowed header outside of specs
|
|
xhr.setRequestHeader("user-agent", "node-XMLHttpRequest-test");
|
|
// Test getRequestHeader
|
|
assert.equal("Foobar", xhr.getRequestHeader("X-Test"));
|
|
// Test invalid header
|
|
assert.equal("", xhr.getRequestHeader("Content-Length"));
|
|
|
|
// Test allowing all headers
|
|
xhr.setDisableHeaderCheck(true);
|
|
xhr.setRequestHeader("Referer", "http://github.com");
|
|
assert.equal("http://github.com", xhr.getRequestHeader("Referer"));
|
|
|
|
xhr.send();
|
|
} catch(e) {
|
|
console.log("ERROR: Exception raised", e);
|
|
}
|