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