1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/addon-sdk/source/test/test-xhr.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,89 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 'use strict' 1.8 + 1.9 +const { XMLHttpRequest } = require('sdk/net/xhr'); 1.10 +const { LoaderWithHookedConsole } = require('sdk/test/loader'); 1.11 +const { set: setPref } = require("sdk/preferences/service"); 1.12 +const data = require("./fixtures"); 1.13 + 1.14 +const DEPRECATE_PREF = "devtools.errorconsole.deprecation_warnings"; 1.15 + 1.16 +exports.testAPIExtension = function(assert) { 1.17 + let { loader, messages } = LoaderWithHookedConsole(module); 1.18 + let { XMLHttpRequest } = loader.require("sdk/net/xhr"); 1.19 + setPref(DEPRECATE_PREF, true); 1.20 + 1.21 + let xhr = new XMLHttpRequest(); 1.22 + assert.equal(typeof(xhr.forceAllowThirdPartyCookie), "function", 1.23 + "forceAllowThirdPartyCookie is defined"); 1.24 + assert.equal(xhr.forceAllowThirdPartyCookie(), undefined, 1.25 + "function can be called"); 1.26 + 1.27 + assert.ok(messages[0].msg.indexOf("`xhr.forceAllowThirdPartyCookie()` is deprecated") >= 0, 1.28 + "deprecation warning was dumped"); 1.29 + assert.ok(xhr.mozBackgroundRequest, "is background request"); 1.30 + 1.31 + loader.unload(); 1.32 +}; 1.33 + 1.34 +exports.testAbortedXhr = function(assert, done) { 1.35 + let req = new XMLHttpRequest(); 1.36 + req.open('GET', data.url('testLocalXhr.json')); 1.37 + req.addEventListener("abort", function() { 1.38 + assert.pass("request was aborted"); 1.39 + done(); 1.40 + }); 1.41 + req.send(null); 1.42 + req.abort(); 1.43 +}; 1.44 + 1.45 +exports.testLocalXhr = function(assert, done) { 1.46 + let req = new XMLHttpRequest(); 1.47 + let ready = false; 1.48 + 1.49 + req.overrideMimeType('text/plain'); 1.50 + req.open('GET', data.url('testLocalXhr.json')); 1.51 + req.onreadystatechange = function() { 1.52 + if (req.readyState == 4 && (req.status == 0 || req.status == 200)) { 1.53 + ready = true; 1.54 + assert.equal(req.responseText, '{}\n', 'XMLHttpRequest should get local files'); 1.55 + } 1.56 + }; 1.57 + req.addEventListener('load', function onload() { 1.58 + req.removeEventListener('load', onload); 1.59 + assert.pass('addEventListener for load event worked'); 1.60 + assert.ok(ready, 'onreadystatechange listener worked'); 1.61 + done(); 1.62 + }); 1.63 + req.send(null); 1.64 +}; 1.65 + 1.66 + 1.67 +exports.testResponseHeaders = function(assert, done) { 1.68 + let req = new XMLHttpRequest(); 1.69 + 1.70 + req.overrideMimeType('text/plain'); 1.71 + req.open('GET', module.uri); 1.72 + req.onreadystatechange = function() { 1.73 + if (req.readyState == 4 && (req.status == 0 || req.status == 200)) { 1.74 + var headers = req.getAllResponseHeaders(); 1.75 + headers = headers.split("\r\n"); 1.76 + if (headers.length == 1) { 1.77 + headers = headers[0].split("\n"); 1.78 + } 1.79 + for (let i in headers) { 1.80 + if (headers[i] && headers[i].search('Content-Type') >= 0) { 1.81 + assert.equal(headers[i], 'Content-Type: text/plain', 1.82 + 'XHR\'s headers are valid'); 1.83 + } 1.84 + } 1.85 + 1.86 + done(); 1.87 + } 1.88 + }; 1.89 + req.send(null); 1.90 +} 1.91 + 1.92 +require('test').run(exports);