Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Unified Diff: third_party/polymer/components/iron-ajax/test/iron-request.html

Issue 2906483004: [pinpoint] Add iron-form and paper-checkbox to polymer components. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/polymer/components/iron-ajax/test/iron-request.html
diff --git a/third_party/polymer/components/iron-ajax/test/iron-request.html b/third_party/polymer/components/iron-ajax/test/iron-request.html
new file mode 100644
index 0000000000000000000000000000000000000000..c4468842a8a4163beaee8d81b9bc069b4087d181
--- /dev/null
+++ b/third_party/polymer/components/iron-ajax/test/iron-request.html
@@ -0,0 +1,311 @@
+<!doctype html>
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<html>
+<head>
+ <title>iron-request</title>
+
+ <script src="../../webcomponentsjs/webcomponents.js"></script>
+ <script src="../../web-component-tester/browser.js"></script>
+
+ <link rel="import" href="../../polymer/polymer.html">
+ <link rel="import" href="../iron-request.html">
+</head>
+<body>
+ <test-fixture id="TrivialRequest">
+ <template>
+ <iron-request></iron-request>
+ </template>
+ </test-fixture>
+ <script>
+ suite('<iron-request>', function () {
+ var jsonResponseHeaders;
+ var successfulRequestOptions;
+ var request;
+ var server;
+
+ setup(function () {
+ jsonResponseHeaders = {
+ 'Content-Type': 'application/json'
+ };
+ server = sinon.fakeServer.create();
+ server.respondWith('GET', '/responds_to_get_with_json', [
+ 200,
+ jsonResponseHeaders,
+ '{"success":true}'
+ ]);
+
+ server.respondWith('GET', '/responds_to_get_with_prefixed_json', [
+ 200,
+ jsonResponseHeaders,
+ '])}while(1);</x>{"success":true}'
+ ]);
+
+ server.respondWith('GET', '/responds_to_get_with_500', [
+ 500,
+ {},
+ ''
+ ]);
+
+ server.respondWith('GET', '/responds_to_get_with_100', [
+ 100,
+ {},
+ ''
+ ]);
+
+ server.respondWith('GET', '/responds_to_get_with_0', [
+ 0,
+ jsonResponseHeaders,
+ '{"success":true}'
+ ]);
+
+
+ request = fixture('TrivialRequest');
+ successfulRequestOptions = {
+ url: '/responds_to_get_with_json'
+ };
+
+ synchronousSuccessfulRequestOptions = {
+ url: '/responds_to_get_with_json',
+ async: false,
+ timeout: 100
+ };
+
+ asynchronousSuccessfulRequestOptions = {
+ url: '/responds_to_get_with_json',
+ async: true,
+ timeout: 100
+ };
+ });
+
+ teardown(function () {
+ server.restore();
+ });
+
+ suite('basic usage', function () {
+ test('creates network requests, requiring only `url`', function () {
+ request.send(successfulRequestOptions);
+
+ server.respond();
+
+ expect(request.response).to.be.ok;
+ });
+
+ test('timeout not set if synchronous', function () {
+ request.send(synchronousSuccessfulRequestOptions);
+
+ expect(request.xhr.async).to.be.eql(false);
+ expect(request.xhr.timeout).to.be.eql(undefined);
+ });
+
+ test('timeout set if asynchronous', function () {
+ request.send(asynchronousSuccessfulRequestOptions);
+
+ expect(request.xhr.async).to.be.eql(true);
+ expect(request.xhr.timeout).to.be.eql(100);
+ });
+
+ test('sets async to true by default', function () {
+ request.send(successfulRequestOptions);
+ expect(request.xhr.async).to.be.eql(true);
+ });
+
+ test('can be aborted', function () {
+ request.send(successfulRequestOptions);
+
+ request.abort();
+
+ server.respond();
+
+ return request.completes.then(function () {
+ throw new Error('Request did not abort appropriately!');
+ }).catch(function (e) {
+ expect(request.response).to.not.be.ok;
+ });
+ });
+
+ test('default responseType is text', function () {
+ request.send(successfulRequestOptions);
+ server.respond();
+
+ return request.completes.then(function() {
+ expect(request.response).to.be.an('string')
+ });
+ });
+
+ test('default responseType of text is not applied, when async is false', function () {
+ var options = Object.create(successfulRequestOptions);
+ options.async = false;
+
+ request.send(options);
+ server.respond();
+
+ return request.completes.then(function() {
+ expect(request.xhr.responseType).to.be.empty;
+ });
+ });
+
+ test('responseType can be configured via handleAs option', function () {
+ var options = Object.create(successfulRequestOptions);
+ options.handleAs = 'json';
+
+ request.send(options);
+ expect(server.requests.length).to.be.equal(1);
+ expect(server.requests[0].requestHeaders['accept']).to.be.equal(
+ 'application/json');
+ server.respond();
+
+ return request.completes.then(function() {
+ expect(request.response).to.be.an('object');
+ });
+ });
+
+ test('setting jsonPrefix correctly strips it from the response', function () {
+ var options = {
+ url: '/responds_to_get_with_prefixed_json',
+ handleAs: 'json',
+ jsonPrefix: '])}while(1);</x>'
+ };
+
+ request.send(options);
+ expect(server.requests.length).to.be.equal(1);
+ expect(server.requests[0].requestHeaders['accept']).to.be.equal(
+ 'application/json');
+ server.respond();
+
+ return request.completes.then(function() {
+ expect(request.response).to.deep.eq({success: true});
+ });
+ });
+
+ test('responseType cannot be configured via handleAs option, when async is false', function () {
+ var options = Object.create(successfulRequestOptions);
+ options.handleAs = 'json';
+ options.async = false;
+
+ request.send(options);
+ expect(server.requests.length).to.be.equal(1);
+ expect(server.requests[0].requestHeaders['accept']).to.be.equal(
+ 'application/json');
+ server.respond();
+
+ return request.completes.then(function() {
+ expect(request.response).to.be.a('string');
+ });
+ });
+
+ test('headers are sent up', function() {
+ var options = Object.create(successfulRequestOptions);
+ options.headers = {
+ 'foo': 'bar',
+ 'accept': 'this should override the default'
+ };
+ request.send(options);
+ expect(server.requests.length).to.be.equal(1);
+ var fakeXhr = server.requests[0]
+ expect(fakeXhr.requestHeaders['foo']).to.be.equal(
+ 'bar');
+ expect(fakeXhr.requestHeaders['accept']).to.be.equal(
+ 'this should override the default');
+ });
+
+ test('headers are deduped by lowercasing', function() {
+ var options = Object.create(successfulRequestOptions);
+ options.headers = {
+ 'foo': 'bar',
+ 'Foo': 'bar',
+ 'fOo': 'bar',
+ 'Accept': 'this should also override the default'
+ };
+ request.send(options);
+ expect(server.requests.length).to.be.equal(1);
+ var fakeXhr = server.requests[0]
+ expect(Object.keys(fakeXhr.requestHeaders).length).to.be.equal(2);
+ expect(fakeXhr.requestHeaders['foo']).to.be.equal(
+ 'bar');
+ expect(fakeXhr.requestHeaders['accept']).to.be.equal(
+ 'this should also override the default');
+ });
+ });
+
+ suite('special cases', function() {
+ test('treats status code 0 as success, though the outcome is ambiguous', function() {
+ // Note: file:// status code will probably be 0 no matter what happened.
+ request.send({
+ url: '/responds_to_get_with_0'
+ });
+
+ server.respond();
+
+ expect(request.succeeded).to.be.equal(true);
+ });
+ });
+
+ suite('errors', function() {
+ test('treats status codes between 1 and 199 as errors', function() {
+ request.send({
+ url: '/responds_to_get_with_100'
+ });
+
+ server.respond();
+
+ expect(request.succeeded).to.be.equal(false);
+ });
+
+ test('treats status codes between 300 and ∞ as errors', function() {
+ request.send({
+ url: '/responds_to_get_with_500'
+ });
+
+ server.respond();
+
+ expect(request.succeeded).to.be.equal(false);
+ });
+ });
+
+ suite('status codes', function() {
+ test('status and statusText is set after a ambiguous request', function() {
+ request.send({
+ url: '/responds_to_get_with_0'
+ });
+
+ server.respond();
+
+ expect(request.status).to.be.equal(0);
+ expect(request.statusText).to.be.equal('');
+ });
+
+ test('status and statusText is set after a request that succeeded', function() {
+ request.send({
+ url: '/responds_to_get_with_json'
+ });
+
+ server.respond();
+
+ expect(request.status).to.be.equal(200);
+ expect(request.statusText).to.be.equal('OK');
+ });
+
+ test('status and statusText is set after a request that failed', function() {
+ request.send({
+ url: '/responds_to_get_with_500'
+ });
+
+ server.respond();
+
+ expect(request.status).to.be.equal(500);
+ expect(request.statusText).to.be.equal('Internal Server Error');
+ });
+ });
+ });
+ </script>
+
+</body>
+</html>
« no previous file with comments | « third_party/polymer/components/iron-ajax/test/iron-ajax.html ('k') | third_party/polymer/components/iron-form/.bower.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698