147 lines · 5.4 KB · JavaScript
RawDownload
////  testXMLHttpRequest.js//  examples////  Created by Ryan Huffman on 5/4/14//  Copyright 2014 High Fidelity, Inc.////  XMLHttpRequest Tests////  Distributed under the Apache License, Version 2.0.//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html// Script.include("../../libraries/unitTest.js"); test("Test default request values", function(finished) {    var req = new XMLHttpRequest();     this.assertEquals(req.UNSENT, req.readyState, "readyState should be UNSENT");    this.assertEquals(0, req.status, "status should be `0` by default");    this.assertEquals("", req.statusText, "statusText should be empty string by default");    this.assertEquals("", req.getAllResponseHeaders(), "getAllResponseHeaders() should return empty string by default");    this.assertEquals("", req.response, "response should be empty string by default");    this.assertEquals("", req.responseText, "responseText should be empty string by default");    this.assertEquals("", req.responseType, "responseType should be empty string by default");    this.assertEquals(0, req.timeout, "timeout should be `0` by default");    this.assertEquals(0, req.errorCode, "there should be no error by default");});  test("Test readyStates", function() {    var req = new XMLHttpRequest();    var state = req.readyState;     var statesVisited = [true, false, false, false, false]     req.onreadystatechange = function() {        statesVisited[req.readyState] = true;    };     req.open("GET", "https://gist.githubusercontent.com/huffman/33cc618fec183d1bccd0/raw/test.json", false);    req.send();    for (var i = 0; i <= req.DONE; i++) {        this.assertEquals(true, statesVisited[i], i + " should be set");    }    this.assertEquals(req.DONE, req.readyState, "readyState should be DONE");}); test("Test TEXT request", function() {    var req = new XMLHttpRequest();    var state = req.readyState;     req.open("GET", "https://gist.githubusercontent.com/huffman/33cc618fec183d1bccd0/raw/test.json", false);    req.send();     this.assertEquals(req.DONE, req.readyState, "readyState should be DONE");    this.assertEquals(200, req.status, "status should be `200`");    this.assertEquals(0, req.errorCode);    this.assertEquals("OK", req.statusText, "statusText should be `OK`");    this.assertNotEquals("", req.getAllResponseHeaders(), "headers should no longer be empty string");    this.assertNull(req.getResponseHeader('invalidheader'), "invalid header should return `null`");    this.assertEquals("GitHub.com", req.getResponseHeader('Server'), "Server header should be GitHub.com");    this.assertEquals('{"id": 1}', req.response);    this.assertEquals('{"id": 1}', req.responseText);}); test("Test JSON request", function() {    var req = new XMLHttpRequest();    var state = req.readyState;     req.responseType = "json";    req.open("GET", "https://gist.githubusercontent.com/huffman/33cc618fec183d1bccd0/raw/test.json", false);    req.send();     this.assertEquals(req.DONE, req.readyState, "readyState should be DONE");    this.assertEquals(200, req.status, "status should be `200`");    this.assertEquals(0, req.errorCode);    this.assertEquals("OK", req.statusText, "statusText should be `OK`");    this.assertNotEquals("", req.getAllResponseHeaders(), "headers should no longer be empty string");    this.assertNull(req.getResponseHeader('invalidheader'), "invalid header should return `null`");    this.assertEquals("GitHub.com", req.getResponseHeader('Server'), "Server header should be GitHub.com");    this.assertHasProperty('id', req.response);    this.assertEquals(1, req.response.id);    this.assertEquals('{"id": 1}', req.responseText);}); test("Test Bad URL", function() {    var req = new XMLHttpRequest();    var state = req.readyState;     req.open("POST", "hifi://domain/path", false);    req.send();     this.assertEquals(req.DONE, req.readyState, "readyState should be DONE");    this.assertNotEquals(0, req.errorCode);}); test("Test Bad Method Error", function() {    var req = new XMLHttpRequest();    var state = req.readyState;     req.open("POST", "https://www.google.com", false);     req.send("randomdata");     this.assertEquals(req.DONE, req.readyState, "readyState should be DONE");    this.assertEquals(405, req.status);    this.assertEquals(202, req.errorCode);     req.open("POST", "https://www.google.com", false)    req.send();     this.assertEquals(req.DONE, req.readyState, "readyState should be DONE");    this.assertEquals(405, req.status);    this.assertEquals(202, req.errorCode);}); test("Test abort", function() {    var req = new XMLHttpRequest();    var state = req.readyState;     req.open("POST", "https://www.google.com", true)    req.send();    req.abort();     this.assertEquals(0, req.status);    this.assertEquals(0, req.errorCode);}); test("Test timeout", function() {    var req = new XMLHttpRequest();    var state = req.readyState;    var timedOut = false;     req.ontimeout = function() {        timedOut = true;    };     req.open("POST", "https://gist.githubusercontent.com/huffman/33cc618fec183d1bccd0/raw/test.json", false)    req.timeout = 1;    req.send();     this.assertEquals(true, timedOut, "request should have timed out");    this.assertEquals(req.DONE, req.readyState, "readyState should be DONE");    this.assertEquals(0, req.status, "status should be `0`");    this.assertEquals(4, req.errorCode, "4 is the timeout error code for QNetworkReply::NetworkError");});