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