rob@77
|
1 var sys = require("util")
|
rob@77
|
2 , assert = require("assert")
|
rob@77
|
3 , XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest
|
rob@77
|
4 , xhr = new XMLHttpRequest()
|
rob@77
|
5 , http = require("http");
|
rob@77
|
6
|
rob@77
|
7 // Test server
|
rob@77
|
8 var server = http.createServer(function (req, res) {
|
rob@77
|
9 // Test setRequestHeader
|
rob@77
|
10 assert.equal("Foobar", req.headers["x-test"]);
|
rob@77
|
11 // Test non-conforming allowed header
|
rob@77
|
12 assert.equal("node-XMLHttpRequest-test", req.headers["user-agent"]);
|
rob@77
|
13 // Test header set with blacklist disabled
|
rob@77
|
14 assert.equal("http://github.com", req.headers["referer"]);
|
rob@77
|
15
|
rob@77
|
16 var body = "Hello World";
|
rob@77
|
17 res.writeHead(200, {
|
rob@77
|
18 "Content-Type": "text/plain",
|
rob@77
|
19 "Content-Length": Buffer.byteLength(body),
|
rob@77
|
20 // Set cookie headers to see if they're correctly suppressed
|
rob@77
|
21 // Actual values don't matter
|
rob@77
|
22 "Set-Cookie": "foo=bar",
|
rob@77
|
23 "Set-Cookie2": "bar=baz",
|
rob@77
|
24 "Date": "Thu, 30 Aug 2012 18:17:53 GMT",
|
rob@77
|
25 "Connection": "close"
|
rob@77
|
26 });
|
rob@77
|
27 res.write("Hello World");
|
rob@77
|
28 res.end();
|
rob@77
|
29
|
rob@77
|
30 this.close();
|
rob@77
|
31 }).listen(8000);
|
rob@77
|
32
|
rob@77
|
33 xhr.onreadystatechange = function() {
|
rob@77
|
34 if (this.readyState == 4) {
|
rob@77
|
35 // Test getAllResponseHeaders()
|
rob@77
|
36 var headers = "content-type: text/plain\r\ncontent-length: 11\r\ndate: Thu, 30 Aug 2012 18:17:53 GMT\r\nconnection: close";
|
rob@77
|
37 assert.equal(headers, this.getAllResponseHeaders());
|
rob@77
|
38
|
rob@77
|
39 // Test case insensitivity
|
rob@77
|
40 assert.equal('text/plain', this.getResponseHeader('Content-Type'));
|
rob@77
|
41 assert.equal('text/plain', this.getResponseHeader('Content-type'));
|
rob@77
|
42 assert.equal('text/plain', this.getResponseHeader('content-Type'));
|
rob@77
|
43 assert.equal('text/plain', this.getResponseHeader('content-type'));
|
rob@77
|
44
|
rob@77
|
45 // Test aborted getAllResponseHeaders
|
rob@77
|
46 this.abort();
|
rob@77
|
47 assert.equal("", this.getAllResponseHeaders());
|
rob@77
|
48 assert.equal(null, this.getResponseHeader("Connection"));
|
rob@77
|
49
|
rob@77
|
50 sys.puts("done");
|
rob@77
|
51 }
|
rob@77
|
52 };
|
rob@77
|
53
|
rob@77
|
54 assert.equal(null, xhr.getResponseHeader("Content-Type"));
|
rob@77
|
55 try {
|
rob@77
|
56 xhr.open("GET", "http://localhost:8000/");
|
rob@77
|
57 // Valid header
|
rob@77
|
58 xhr.setRequestHeader("X-Test", "Foobar");
|
rob@77
|
59 // Invalid header
|
rob@77
|
60 xhr.setRequestHeader("Content-Length", 0);
|
rob@77
|
61 // Allowed header outside of specs
|
rob@77
|
62 xhr.setRequestHeader("user-agent", "node-XMLHttpRequest-test");
|
rob@77
|
63 // Test getRequestHeader
|
rob@77
|
64 assert.equal("Foobar", xhr.getRequestHeader("X-Test"));
|
rob@77
|
65 // Test invalid header
|
rob@77
|
66 assert.equal("", xhr.getRequestHeader("Content-Length"));
|
rob@77
|
67
|
rob@77
|
68 // Test allowing all headers
|
rob@77
|
69 xhr.setDisableHeaderCheck(true);
|
rob@77
|
70 xhr.setRequestHeader("Referer", "http://github.com");
|
rob@77
|
71 assert.equal("http://github.com", xhr.getRequestHeader("Referer"));
|
rob@77
|
72
|
rob@77
|
73 xhr.send();
|
rob@77
|
74 } catch(e) {
|
rob@77
|
75 console.log("ERROR: Exception raised", e);
|
rob@77
|
76 }
|