aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/labs/net/xhr_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/labs/net/xhr_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/labs/net/xhr_test.html437
1 files changed, 0 insertions, 437 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/labs/net/xhr_test.html b/contexts/data/lib/closure-library/closure/goog/labs/net/xhr_test.html
deleted file mode 100644
index 992a646..0000000
--- a/contexts/data/lib/closure-library/closure/goog/labs/net/xhr_test.html
+++ /dev/null
@@ -1,437 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-Copyright 2011 The Closure Library Authors. All Rights Reserved.
-
-Use of this source code is governed by the Apache License, Version 2.0.
-See the COPYING file for details.
--->
-<!--
--->
-<head>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<title>Closure Unit Tests - goog.labs.net.xhr</title>
-<script src="../../base.js"></script>
-<script>
- goog.require('goog.labs.net.xhr');
- goog.require('goog.result');
- goog.require('goog.string');
- goog.require('goog.testing.AsyncTestCase');
- goog.require('goog.testing.MockClock');
- goog.require('goog.testing.jsunit');
- goog.require('goog.userAgent');
-</script>
-</head>
-<body>
-<script>
-
- function setupStubXMLHttpRequest() {
-
- mockClock = new goog.testing.MockClock(true);
-
- var stubXhr = {
- sent: false,
- aborted: false,
- status: 0,
- headers: {},
- open: function(method, url, async) {
- this.method = method;
- this.url = url;
- this.async = async;
- },
- setRequestHeader: function(key, value) {
- this.headers[key] = value;
- },
- overrideMimeType: function(mimeType) {
- this.mimeType = mimeType;
- },
- abort: function() {
- this.aborted = true;
- this.load(0);
- },
- send: function(data) {
- this.data = data;
- this.sent = true;
- },
- load: function(status) {
- this.status = status;
- this.readyState = 4;
- if (this.onreadystatechange) this.onreadystatechange();
- }
- };
-
- goog.net.XmlHttp = function() {
- return stubXhr;
- };
- for (var x in originalXmlHttp) {
- goog.net.XmlHttp[x] = originalXmlHttp[x];
- }
-
- return stubXhr;
- }
-
-
- var xhr = goog.labs.net.xhr;
- var originalXmlHttp = goog.net.XmlHttp;
- var mockClock;
-
- var testCase = new goog.testing.AsyncTestCase(document.title);
- testCase.stepTimeout = 5 * 1000;
-
- testCase.setUpPage = function() {
- this.autoDiscoverTests();
- };
-
- testCase.tearDown = function() {
- if (mockClock) {
- mockClock.dispose();
- mockClock = null;
- }
- goog.net.XmlHttp = originalXmlHttp;
- };
-
- G_testRunner.initialize(testCase);
-
- // Many tests don't work on the local file system due to cross-origin
- // restrictions in Chrome without --allow-file-access-from-files.
- // They will run on the farm or on a Closure Test server.
- var shouldRunLocally = goog.userAgent.IE || goog.userAgent.GECKO ||
- goog.string.startsWith(document.location.href, 'file://');
-
- function testSimpleRequest() {
- if (shouldRunLocally) return;
-
- testCase.waitForAsync('simpleRequest');
- var result = xhr.send('GET', 'testdata/xhr_test_text.data');
- goog.result.waitOnSuccess(result,
- function(xhr) {
- assertEquals('Just some data.', xhr.responseText);
- assertEquals(200, xhr.status);
- testCase.continueTesting();
- });
- goog.result.waitOnError(result, fail);
- }
-
- function testGetText() {
- if (shouldRunLocally) return;
-
- testCase.waitForAsync('getText');
- var result = xhr.get('testdata/xhr_test_text.data');
- goog.result.waitOnSuccess(result, function(content) {
- assertEquals('Just some data.', content);
- testCase.continueTesting();
- });
- goog.result.waitOnError(result, fail);
- }
-
- function testGetTextWithJson() {
- if (shouldRunLocally) return;
-
- testCase.waitForAsync('getTextWithJson');
- var result = xhr.get('testdata/xhr_test_json.data');
- goog.result.waitOnSuccess(result, function(content) {
- assertEquals('while(1);\n{"stat":"ok","count":12345}\n', content);
- testCase.continueTesting();
- });
- goog.result.waitOnError(result, fail);
- }
-
- function testPostText() {
- if (shouldRunLocally) return;
-
- testCase.waitForAsync('postText');
- var result = xhr.post('testdata/xhr_test_text.data', 'post-data');
- goog.result.waitOnSuccess(result, function(content) {
- // No good way to test post-data gets transported.
- assertEquals('Just some data.', content);
- testCase.continueTesting();
- });
- goog.result.waitOnError(result, fail);
- }
-
- function testGetJson() {
- if (shouldRunLocally) return;
-
- testCase.waitForAsync('getJson');
- xhr.getJson('testdata/xhr_test_json.data', {xssiPrefix: 'while(1);\n'}).
- addCallback(function(content) {
- assertEquals('ok', content['stat']);
- assertEquals(12345, content['count']);
- testCase.continueTesting();
- }).
- addErrback(fail);
- }
-
- function testSerialRequests() {
- if (shouldRunLocally) return;
-
- var result = xhr.get('testdata/xhr_test_text.data');
- var chainedResult = goog.result.chain(result, function(result) {
- return xhr.getJson(
- 'testdata/xhr_test_json.data', {xssiPrefix: 'while(1);\n'});
- });
-
- // Data that comes through to callbacks should be from the 2nd request.
- goog.result.waitOnSuccess(chainedResult, function(json) {
- assertEquals('ok', json['stat']);
- assertEquals(12345, json['count']);
- testCase.continueTesting();
- });
- goog.result.waitOnError(chainedResult, fail);
- }
-
- function testParallelRequest() {
- if (shouldRunLocally) return;
-
- var textData, jsonData;
- function loadText(response) {
- textData = response;
- }
- function loadJson(response) {
- jsonData = response;
- }
-
- var fetchTextResult = xhr.get('testdata/xhr_test_text.data');
- var textDataResult = goog.result.transform(fetchTextResult, loadText);
-
- var fetchJsonResult = xhr.getJson('testdata/xhr_test_json.data',
- {xssiPrefix: 'while(1);\n'});
- var jsonDataResult = goog.result.transform(fetchJsonResult, loadJson);
-
- var combinedResult = goog.result.combine(textDataResult,
- jsonDataResult);
-
- goog.result.waitOnSuccess(combinedResult, function() {
- assertEquals('Just some data.', textData);
- assertEquals('ok', jsonData['stat']);
- testCase.continueTesting();
- });
- goog.result.waitOnError(combinedResult, fail);
- }
-
- function testBadUrlDetectedAsError() {
- if (shouldRunLocally) return;
-
- testCase.waitForAsync('badUrl');
- var result = xhr.getJson('unknown-file.dat');
- goog.result.waitOnSuccess(result, fail);
- goog.result.waitOnError(result, function(result) {
- var err = result.getError();
- assertTrue('Error should be an HTTP error',
- err instanceof xhr.HttpError);
- assertEquals(404, err.status);
- assertNotNull(err.xhr);
- testCase.continueTesting();
- });
- }
-
- function testBadOriginTriggersOnErrorHandler() {
- testCase.waitForAsync('badOrigin');
- var result = xhr.get('http://www.google.com');
- goog.result.waitOnSuccess(result, fail);
- goog.result.waitOnError(result, function(result) {
- var err = result.getError();
- // In IE this will be a goog.labs.net.xhr.Error since it is thrown
- // when calling xhr.open(), other browsers will raise an HttpError.
- assertTrue('Error should be an xhr error',
- err instanceof xhr.Error);
- assertNotNull(err.xhr);
- testCase.continueTesting();
- });
- }
-
- function testAbortRequest() {
- if (shouldRunLocally) return;
-
- var err;
- var result = xhr.send('GET', 'test-url', null);
- goog.result.waitOnSuccess(result, fail);
- goog.result.waitOnError(result, function(result) {
- err = result.getError();
- });
- result.cancel();
- assertTrue(err instanceof goog.result.Result.CancelError);
- }
-
- //============================================================================
- // The following tests are synchronous and use a stubbed out XMLHttpRequest.
- //============================================================================
-
- function testSendNoOptions() {
- var stubXhr = setupStubXMLHttpRequest();
- var called = false;
- var result = xhr.send('GET', 'test-url', null);
- goog.result.waitOnSuccess(result, function(xhr) {
- called = true;
- assertEquals('Objects should be equal', xhr, stubXhr);
- });
- goog.result.waitOnError(result, fail);
-
- assertTrue('XHR should have been sent', stubXhr.sent);
- assertFalse('Callback should not yet have been called', called);
-
- stubXhr.load(200);
-
- assertTrue('Callback should have been called', called);
-
- assertEquals('GET', stubXhr.method);
- assertEquals('test-url', stubXhr.url);
- }
-
- function testSendPostSetsDefaultHeader() {
- var stubXhr = setupStubXMLHttpRequest();
- var result = xhr.send('POST', 'test-url', null);
- goog.result.waitOnError(result, fail);
-
- stubXhr.load(200);
-
- assertEquals('POST', stubXhr.method);
- assertEquals('test-url', stubXhr.url);
- assertEquals('application/x-www-form-urlencoded;charset=utf-8',
- stubXhr.headers['Content-Type']);
- }
-
- function testSendPostHeaders() {
- var stubXhr = setupStubXMLHttpRequest();
- var result = xhr.send('POST', 'test-url', null, {
- headers: {'Content-Type': 'text/plain', 'X-Made-Up': 'FooBar'}
- });
- goog.result.waitOnError(result, fail);
-
- stubXhr.load(200);
-
- assertEquals('POST', stubXhr.method);
- assertEquals('test-url', stubXhr.url);
- assertEquals('text/plain', stubXhr.headers['Content-Type']);
- assertEquals('FooBar', stubXhr.headers['X-Made-Up']);
- }
-
- function testSendWithCredentials() {
- var stubXhr = setupStubXMLHttpRequest();
- var result = xhr.send('POST', 'test-url', null, {withCredentials: true});
- goog.result.waitOnError(result, fail);
- stubXhr.load(200);
- assertTrue('XHR should have been sent', stubXhr.sent);
- assertTrue(stubXhr.withCredentials);
- }
-
- function testSendWithMimeType() {
- var stubXhr = setupStubXMLHttpRequest();
- var result = xhr.send('POST', 'test-url', null, {mimeType: 'text/plain'});
- goog.result.waitOnError(result, fail);
-
- stubXhr.load(200);
- assertTrue('XHR should have been sent', stubXhr.sent);
- assertEquals('text/plain', stubXhr.mimeType);
- }
-
- function testSendWithHttpError() {
- var stubXhr = setupStubXMLHttpRequest();
- var err;
- var result = xhr.send('POST', 'test-url', null);
- goog.result.waitOnSuccess(result, fail);
- goog.result.waitOnError(result, function(result) {
- err = result.getError();
- });
-
- stubXhr.load(500);
-
- assertTrue('XHR should have been sent', stubXhr.sent);
- assertTrue(err instanceof xhr.HttpError);
- assertEquals(500, err.status);
- }
-
- function testSendWithTimeoutNotHit() {
- // TODO(user): This test fails in safari if it is run as part of a batch
- // but passes when run on its own. Something strange is going on to do
- // with the references to window.clearTimeout inside onreadystatechange and
- // the mockclock overrides.
- if (goog.userAgent.SAFARI) return;
-
- var stubXhr = setupStubXMLHttpRequest();
- var err;
- var result = xhr.send('POST', 'test-url', null, {timeoutMs: 1500});
- goog.result.waitOnError(result, fail);
- assertTrue(mockClock.getTimeoutsMade() > 0);
- mockClock.tick(1400);
- stubXhr.load(200);
- mockClock.tick(200);
- assertTrue('XHR should have been sent', stubXhr.sent);
- assertFalse('XHR should not have been aborted', stubXhr.aborted);
- }
-
- function testSendWithTimeoutHit() {
- var stubXhr = setupStubXMLHttpRequest();
- var err;
- var result = xhr.send('POST', 'test-url', null, {timeoutMs: 50});
- goog.result.waitOnSuccess(result, fail);
- goog.result.waitOnError(result, function(res) { err = res.getError(); });
- assertTrue(mockClock.getTimeoutsMade() > 0);
- mockClock.tick(50);
- assertTrue('XHR should have been sent', stubXhr.sent);
- assertTrue('XHR should have been aborted', stubXhr.aborted);
- assertTrue(err instanceof xhr.TimeoutError);
- }
-
- function testSendWithTimeoutWithoutDeferreds() {
- var stubXhr = setupStubXMLHttpRequest();
- var err;
- xhr.makeRequest('POST', 'test-url', null, {timeoutMs: 50}, fail,
- function(e) { err = e; });
- assertTrue(mockClock.getTimeoutsMade() > 0);
- mockClock.tick(50);
- assertTrue('XHR should have been sent', stubXhr.sent);
- assertTrue('XHR should have been aborted', stubXhr.aborted);
- assertTrue(err instanceof xhr.TimeoutError);
- }
-
- function testCancelRequest() {
- var stubXhr = setupStubXMLHttpRequest();
- var err;
- var result = xhr.send('GET', 'test-url', null, {timeoutMs: 50});
- goog.result.waitOnSuccess(result, fail);
- goog.result.waitOnError(result, function(result) {
- err = result.getError();
- });
- result.cancel();
- stubXhr.load(0); // Call load anyway, shoudn't make a difference.
- mockClock.tick(100); // Timeout should never be called.
-
- assertTrue('XHR should have been sent', stubXhr.sent);
- assertTrue('XHR should have been aborted', stubXhr.aborted);
- assertTrue(err instanceof goog.result.Result.CancelError);
- }
-
- function testGetJson() {
- var stubXhr = setupStubXMLHttpRequest();
- var responseData;
- var result = xhr.getJson('test-url');
- goog.result.waitOnSuccess(result, function(data) {
- responseData = data;
- });
- goog.result.waitOnError(result, fail);
-
- stubXhr.responseText = '{"a": 1, "b": 2}';
- stubXhr.load(200);
-
- assertObjectEquals({a: 1, b: 2}, responseData);
- }
-
- function testGetJsonWithXssiPrefix() {
- var stubXhr = setupStubXMLHttpRequest();
- var responseData;
- var result = xhr.getJson('test-url', {xssiPrefix: 'while(1);\n'});
- goog.result.waitOnSuccess(result, function(data) {
- responseData = data;
- });
- goog.result.waitOnError(result, fail);
-
- stubXhr.responseText = 'while(1);\n{"a": 1, "b": 2}';
- stubXhr.load(200);
-
- assertObjectEquals({a: 1, b: 2}, responseData);
- }
-
-</script>
-</body>
-</html>