addon-sdk/source/test/test-xhr.js

changeset 0
6474c204b198
     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);

mercurial