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

Side by Side Diff: remoting/webapp/unittests/xhr_unittest.js

Issue 945033002: Updated XHR API so call sites are more descriptive. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@xhr-test
Patch Set: Created 5 years, 9 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 unified diff | Download patch
« no previous file with comments | « remoting/webapp/unittests/dns_blackhole_checker_unittest.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview 6 * @fileoverview
7 * @suppress {checkTypes|checkVars|reportUnknownTypes} 7 * @suppress {checkTypes|checkVars|reportUnknownTypes}
8 */ 8 */
9 9
10 (function() { 10 (function() {
11 11
12 'use strict'; 12 'use strict';
13 13
14 module('xhr', { 14 var fakeXhr;
15 setup: function() { 15
16 QUnit.module('xhr', {
17 beforeEach: function() {
18 fakeXhr = null;
19 sinon.useFakeXMLHttpRequest().onCreate = function(xhr) {
20 fakeXhr = xhr;
21 };
16 }, 22 },
17 teardown: function() { 23 afterEach: function() {
18 } 24 }
19 }); 25 });
20 26
21 test('urlencodeParamHash', function() { 27 QUnit.test('urlencodeParamHash', function() {
22 QUnit.equal( 28 QUnit.equal(
23 remoting.xhr.urlencodeParamHash({}), 29 remoting.Xhr.urlencodeParamHash({}),
24 ''); 30 '');
25 QUnit.equal( 31 QUnit.equal(
26 remoting.xhr.urlencodeParamHash({'key': 'value'}), 32 remoting.Xhr.urlencodeParamHash({'key': 'value'}),
27 'key=value'); 33 'key=value');
28 QUnit.equal( 34 QUnit.equal(
29 remoting.xhr.urlencodeParamHash({'key /?=&': 'value /?=&'}), 35 remoting.Xhr.urlencodeParamHash({'key /?=&': 'value /?=&'}),
30 'key%20%2F%3F%3D%26=value%20%2F%3F%3D%26'); 36 'key%20%2F%3F%3D%26=value%20%2F%3F%3D%26');
31 QUnit.equal( 37 QUnit.equal(
32 remoting.xhr.urlencodeParamHash({'k1': 'v1', 'k2': 'v2'}), 38 remoting.Xhr.urlencodeParamHash({'k1': 'v1', 'k2': 'v2'}),
33 'k1=v1&k2=v2'); 39 'k1=v1&k2=v2');
34 }); 40 });
35 41
36 asyncTest('basic GET', function() { 42 QUnit.test('basic GET', function(assert) {
37 sinon.useFakeXMLHttpRequest(); 43 var done = assert.async();
38 var request = remoting.xhr.start({ 44
39 method: 'GET', 45 new remoting.Xhr({
40 url: 'http://foo.com', 46 method: 'GET',
41 onDone: function(xhr) { 47 url: 'http://foo.com',
42 QUnit.ok(xhr === request); 48 responseType: 'text'
43 QUnit.equal(xhr.status, 200); 49 }).then(function(xhrr) {
44 QUnit.equal(xhr.responseText, 'body'); 50 QUnit.equal(xhrr.status, 200);
45 QUnit.start(); 51 QUnit.equal(xhrr.responseText, 'body');
46 } 52 done();
47 }); 53 });
48 QUnit.equal(request.method, 'GET'); 54 QUnit.equal(fakeXhr.method, 'GET');
49 QUnit.equal(request.url, 'http://foo.com'); 55 QUnit.equal(fakeXhr.url, 'http://foo.com');
50 QUnit.equal(request.withCredentials, false); 56 QUnit.equal(fakeXhr.withCredentials, false);
51 QUnit.equal(request.requestBody, null); 57 QUnit.equal(fakeXhr.requestBody, null);
52 QUnit.ok(!('Content-type' in request.requestHeaders)); 58 QUnit.ok(!('Content-type' in fakeXhr.requestHeaders));
53 request.respond(200, {}, 'body'); 59 fakeXhr.respond(200, {}, 'body');
54 }); 60 });
55 61
56 asyncTest('GET with param string', function() { 62 QUnit.test('GET with param string', function(assert) {
57 sinon.useFakeXMLHttpRequest(); 63 var done = assert.async();
58 var request = remoting.xhr.start({ 64
59 method: 'GET', 65 new remoting.Xhr({
60 url: 'http://foo.com', 66 method: 'GET',
61 onDone: function(xhr) { 67 url: 'http://foo.com',
62 QUnit.ok(xhr === request); 68 responseType: 'text',
63 QUnit.equal(xhr.status, 200);
64 QUnit.equal(xhr.responseText, 'body');
65 QUnit.start();
66 },
67 urlParams: 'the_param_string' 69 urlParams: 'the_param_string'
68 }); 70 }).then(function(xhrr) {
69 QUnit.equal(request.method, 'GET'); 71 QUnit.equal(xhrr.status, 200);
70 QUnit.equal(request.url, 'http://foo.com?the_param_string'); 72 QUnit.equal(xhrr.responseText, 'body');
71 QUnit.equal(request.withCredentials, false); 73 done();
72 QUnit.equal(request.requestBody, null); 74 });
73 QUnit.ok(!('Content-type' in request.requestHeaders)); 75 QUnit.equal(fakeXhr.method, 'GET');
74 request.respond(200, {}, 'body'); 76 QUnit.equal(fakeXhr.url, 'http://foo.com?the_param_string');
75 }); 77 QUnit.equal(fakeXhr.withCredentials, false);
76 78 QUnit.equal(fakeXhr.requestBody, null);
77 asyncTest('GET with param object', function() { 79 QUnit.ok(!('Content-type' in fakeXhr.requestHeaders));
78 sinon.useFakeXMLHttpRequest(); 80 fakeXhr.respond(200, {}, 'body');
79 var request = remoting.xhr.start({ 81 });
80 method: 'GET', 82
81 url: 'http://foo.com', 83 QUnit.test('GET with param object', function(assert) {
82 onDone: function(xhr) { 84 var done = assert.async();
83 QUnit.ok(xhr === request); 85
84 QUnit.equal(xhr.status, 200); 86 new remoting.Xhr({
85 QUnit.equal(xhr.responseText, 'body'); 87 method: 'GET',
86 QUnit.start(); 88 url: 'http://foo.com',
87 }, 89 responseType: 'text',
88 urlParams: {'a': 'b', 'c': 'd'} 90 urlParams: {'a': 'b', 'c': 'd'}
89 }); 91 }).then(function(xhrr) {
90 QUnit.equal(request.method, 'GET'); 92 QUnit.equal(xhrr.status, 200);
91 QUnit.equal(request.url, 'http://foo.com?a=b&c=d'); 93 QUnit.equal(xhrr.responseText, 'body');
92 QUnit.equal(request.withCredentials, false); 94 done();
93 QUnit.equal(request.requestBody, null); 95 });
94 QUnit.ok(!('Content-type' in request.requestHeaders)); 96 QUnit.equal(fakeXhr.method, 'GET');
95 request.respond(200, {}, 'body'); 97 QUnit.equal(fakeXhr.url, 'http://foo.com?a=b&c=d');
96 }); 98 QUnit.equal(fakeXhr.withCredentials, false);
97 99 QUnit.equal(fakeXhr.requestBody, null);
98 asyncTest('GET with headers', function() { 100 QUnit.ok(!('Content-type' in fakeXhr.requestHeaders));
99 sinon.useFakeXMLHttpRequest(); 101 fakeXhr.respond(200, {}, 'body');
100 var request = remoting.xhr.start({ 102 });
101 method: 'GET', 103
102 url: 'http://foo.com', 104 QUnit.test('GET with headers', function(assert) {
103 onDone: function(xhr) { 105 var done = assert.async();
104 QUnit.ok(xhr === request); 106
105 QUnit.equal(xhr.status, 200); 107 new remoting.Xhr({
106 QUnit.equal(xhr.responseText, 'body'); 108 method: 'GET',
107 QUnit.start(); 109 url: 'http://foo.com',
108 }, 110 responseType: 'text',
109 headers: {'Header1': 'headerValue1', 'Header2': 'headerValue2'} 111 headers: {'Header1': 'headerValue1', 'Header2': 'headerValue2'}
110 }); 112 }).then(function(xhrr) {
111 QUnit.equal(request.method, 'GET'); 113 QUnit.equal(xhrr.status, 200);
112 QUnit.equal(request.url, 'http://foo.com'); 114 QUnit.equal(xhrr.responseText, 'body');
113 QUnit.equal(request.withCredentials, false); 115 done();
114 QUnit.equal(request.requestBody, null); 116 });
115 QUnit.equal( 117 QUnit.equal(fakeXhr.method, 'GET');
116 request.requestHeaders['Header1'], 118 QUnit.equal(fakeXhr.url, 'http://foo.com');
119 QUnit.equal(fakeXhr.withCredentials, false);
120 QUnit.equal(fakeXhr.requestBody, null);
121 QUnit.equal(
122 fakeXhr.requestHeaders['Header1'],
117 'headerValue1'); 123 'headerValue1');
118 QUnit.equal( 124 QUnit.equal(
119 request.requestHeaders['Header2'], 125 fakeXhr.requestHeaders['Header2'],
120 'headerValue2'); 126 'headerValue2');
121 QUnit.ok(!('Content-type' in request.requestHeaders)); 127 QUnit.ok(!('Content-type' in fakeXhr.requestHeaders));
122 request.respond(200, {}, 'body'); 128 fakeXhr.respond(200, {}, 'body');
123 }); 129 });
124 130
125 131
126 asyncTest('GET with credentials', function() { 132 QUnit.test('GET with credentials', function(assert) {
127 sinon.useFakeXMLHttpRequest(); 133 var done = assert.async();
128 var request = remoting.xhr.start({ 134
129 method: 'GET', 135 new remoting.Xhr({
130 url: 'http://foo.com', 136 method: 'GET',
131 onDone: function(xhr) { 137 url: 'http://foo.com',
132 QUnit.ok(xhr === request); 138 responseType: 'text',
133 QUnit.equal(xhr.status, 200);
134 QUnit.equal(xhr.responseText, 'body');
135 QUnit.start();
136 },
137 withCredentials: true 139 withCredentials: true
138 }); 140 }).then(function(xhrr) {
139 QUnit.equal(request.method, 'GET'); 141 QUnit.equal(xhrr.status, 200);
140 QUnit.equal(request.url, 'http://foo.com'); 142 QUnit.equal(xhrr.responseText, 'body');
141 QUnit.equal(request.withCredentials, true); 143 done();
142 QUnit.equal(request.requestBody, null); 144 });
143 QUnit.ok(!('Content-type' in request.requestHeaders)); 145 QUnit.equal(fakeXhr.method, 'GET');
144 request.respond(200, {}, 'body'); 146 QUnit.equal(fakeXhr.url, 'http://foo.com');
145 }); 147 QUnit.equal(fakeXhr.withCredentials, true);
146 148 QUnit.equal(fakeXhr.requestBody, null);
147 asyncTest('POST with text content', function() { 149 QUnit.ok(!('Content-type' in fakeXhr.requestHeaders));
148 sinon.useFakeXMLHttpRequest(); 150 fakeXhr.respond(200, {}, 'body');
149 var request = remoting.xhr.start({ 151 });
150 method: 'POST', 152
151 url: 'http://foo.com', 153 QUnit.test('POST with text content', function(assert) {
152 onDone: function(xhr) { 154 var done = assert.async();
153 QUnit.ok(xhr === request); 155
154 QUnit.equal(xhr.status, 200); 156 new remoting.Xhr({
155 QUnit.equal(xhr.responseText, 'body'); 157 method: 'POST',
156 QUnit.start(); 158 url: 'http://foo.com',
157 }, 159 responseType: 'text',
158 textContent: 'the_content_string' 160 textContent: 'the_content_string'
159 }); 161 }).then(function(xhrr) {
160 QUnit.equal(request.method, 'POST'); 162 QUnit.equal(xhrr.status, 200);
161 QUnit.equal(request.url, 'http://foo.com'); 163 QUnit.equal(xhrr.responseText, 'body');
162 QUnit.equal(request.withCredentials, false); 164 done();
163 QUnit.equal(request.requestBody, 'the_content_string'); 165 });
164 QUnit.ok(!('Content-type' in request.requestHeaders)); 166 QUnit.equal(fakeXhr.method, 'POST');
165 request.respond(200, {}, 'body'); 167 QUnit.equal(fakeXhr.url, 'http://foo.com');
166 }); 168 QUnit.equal(fakeXhr.withCredentials, false);
167 169 QUnit.equal(fakeXhr.requestBody, 'the_content_string');
168 asyncTest('POST with form content', function() { 170 QUnit.ok(!('Content-type' in fakeXhr.requestHeaders));
169 sinon.useFakeXMLHttpRequest(); 171 fakeXhr.respond(200, {}, 'body');
170 var request = remoting.xhr.start({ 172 });
171 method: 'POST', 173
172 url: 'http://foo.com', 174 QUnit.test('POST with form content', function(assert) {
173 onDone: function(xhr) { 175 var done = assert.async();
174 QUnit.ok(xhr === request); 176
175 QUnit.equal(xhr.status, 200); 177 new remoting.Xhr({
176 QUnit.equal(xhr.responseText, 'body'); 178 method: 'POST',
177 QUnit.start(); 179 url: 'http://foo.com',
178 }, 180 responseType: 'text',
179 formContent: {'a': 'b', 'c': 'd'} 181 formContent: {'a': 'b', 'c': 'd'}
180 }); 182 }).then(function(xhrr) {
181 QUnit.equal(request.method, 'POST'); 183 QUnit.equal(xhrr.status, 200);
182 QUnit.equal(request.url, 'http://foo.com'); 184 QUnit.equal(xhrr.responseText, 'body');
183 QUnit.equal(request.withCredentials, false); 185 done();
184 QUnit.equal(request.requestBody, 'a=b&c=d'); 186 });
185 QUnit.equal( 187 QUnit.equal(fakeXhr.method, 'POST');
186 request.requestHeaders['Content-type'], 188 QUnit.equal(fakeXhr.url, 'http://foo.com');
189 QUnit.equal(fakeXhr.withCredentials, false);
190 QUnit.equal(fakeXhr.requestBody, 'a=b&c=d');
191 QUnit.equal(
192 fakeXhr.requestHeaders['Content-type'],
187 'application/x-www-form-urlencoded'); 193 'application/x-www-form-urlencoded');
188 request.respond(200, {}, 'body'); 194 fakeXhr.respond(200, {}, 'body');
189 }); 195 });
190 196
191 asyncTest('defaultResponse 200', function() { 197 QUnit.test('defaultResponse 200', function(assert) {
192 sinon.useFakeXMLHttpRequest(); 198 var done = assert.async();
193 199
194 var onDone = function() { 200 var onDone = function() {
195 QUnit.ok(true); 201 QUnit.ok(true);
196 QUnit.start(); 202 done();
197 }; 203 };
198 204
199 var onError = function(error) { 205 var onError = function(error) {
200 QUnit.ok(false); 206 QUnit.ok(false);
201 QUnit.start(); 207 done();
202 }; 208 };
203 209
204 var request = remoting.xhr.start({ 210 new remoting.Xhr({
205 method: 'POST', 211 method: 'POST',
206 url: 'http://foo.com', 212 url: 'http://foo.com'
207 onDone: remoting.xhr.defaultResponse(onDone, onError) 213 }).then(remoting.Xhr.defaultResponse(onDone, onError));
208 }); 214 fakeXhr.respond(200);
209 request.respond(200); 215 });
210 }); 216
211 217
212 218 QUnit.test('defaultResponse 404', function(assert) {
213 asyncTest('defaultResponse 404', function() { 219 var done = assert.async();
214 sinon.useFakeXMLHttpRequest();
215 220
216 var onDone = function() { 221 var onDone = function() {
217 QUnit.ok(false); 222 QUnit.ok(false);
218 QUnit.start(); 223 done();
219 }; 224 };
220 225
221 var onError = function(error) { 226 var onError = function(error) {
222 QUnit.ok(true); 227 QUnit.ok(true);
223 QUnit.start(); 228 done();
224 }; 229 };
225 230
226 var request = remoting.xhr.start({ 231 new remoting.Xhr({
227 method: 'POST', 232 method: 'POST',
228 url: 'http://foo.com', 233 url: 'http://foo.com'
229 onDone: remoting.xhr.defaultResponse(onDone, onError) 234 }).then(remoting.Xhr.defaultResponse(onDone, onError));
230 }); 235 fakeXhr.respond(404);
231 request.respond(404);
232 }); 236 });
233 237
234 })(); 238 })();
OLDNEW
« no previous file with comments | « remoting/webapp/unittests/dns_blackhole_checker_unittest.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698