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

Side by Side Diff: pkg/http_server/test/http_body_test.dart

Issue 22872012: Remove Encoding-enum from dart:io and add interface in dart:convert. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix typo. Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:io'; 5 import 'dart:io';
6 import 'dart:utf'; 6 import 'dart:convert';
7 7
8 import 'package:http_server/http_server.dart'; 8 import 'package:http_server/http_server.dart';
9 import 'package:unittest/unittest.dart'; 9 import 'package:unittest/unittest.dart';
10 10
11 void testHttpClientResponseBody() { 11 void testHttpClientResponseBody() {
12 void test(String mimeType, 12 void test(String mimeType,
13 List<int> content, 13 List<int> content,
14 dynamic expectedBody, 14 dynamic expectedBody,
15 String type, 15 String type,
16 [bool shouldFail = false]) { 16 [bool shouldFail = false]) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 "text"); 59 "text");
60 test("text/plain; charset=iso-8859-1", 60 test("text/plain; charset=iso-8859-1",
61 "body".codeUnits, 61 "body".codeUnits,
62 "body", 62 "body",
63 "text"); 63 "text");
64 test("text/plain; charset=us-ascii", 64 test("text/plain; charset=us-ascii",
65 "body".codeUnits, 65 "body".codeUnits,
66 "body", 66 "body",
67 "text"); 67 "text");
68 test("text/plain; charset=utf-8", [42], "*", "text"); 68 test("text/plain; charset=utf-8", [42], "*", "text");
69 test("text/plain; charset=us-ascii", [142], "?", "text"); 69 test("text/plain; charset=us-ascii", [142], null, "text", true);
70 test("text/plain; charset=utf-8", 70 test("text/plain; charset=utf-8", [142], null, "text", true);
71 [142],
72 new String.fromCharCodes([UNICODE_REPLACEMENT_CHARACTER_CODEPOINT]),
73 "text");
74 71
75 test("application/json", 72 test("application/json",
76 '{"val": 5}'.codeUnits, 73 '{"val": 5}'.codeUnits,
77 { "val" : 5 }, 74 { "val" : 5 },
78 "json"); 75 "json");
79 test("application/json", 76 test("application/json",
80 '{ bad json }'.codeUnits, 77 '{ bad json }'.codeUnits,
81 null, 78 null,
82 "json", 79 "json",
83 true); 80 true);
84 } 81 }
85 82
86 void testHttpServerRequestBody() { 83 void testHttpServerRequestBody() {
87 void test(String mimeType, 84 void test(String mimeType,
88 List<int> content, 85 List<int> content,
89 dynamic expectedBody, 86 dynamic expectedBody,
90 String type, 87 String type,
91 {bool shouldFail: false, 88 {bool shouldFail: false,
92 Encoding defaultEncoding: Encoding.UTF_8}) { 89 Encoding defaultEncoding: UTF8}) {
93 HttpServer.bind("127.0.0.1", 0).then((server) { 90 HttpServer.bind("127.0.0.1", 0).then((server) {
94 server.transform(new HttpBodyHandler(defaultEncoding: defaultEncoding)) 91 server.transform(new HttpBodyHandler(defaultEncoding: defaultEncoding))
95 .listen((body) { 92 .listen((body) {
96 expect(shouldFail, isFalse); 93 expect(shouldFail, isFalse);
97 expect(body.type, equals(type)); 94 expect(body.type, equals(type));
98 switch (type) { 95 switch (type) {
99 case "text": 96 case "text":
100 expect(body.contentType.mimeType, equals("text/plain")); 97 expect(body.contentType.mimeType, equals("text/plain"));
101 expect(body.body, equals(expectedBody)); 98 expect(body.body, equals(expectedBody));
102 break; 99 break;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 }); 159 });
163 }); 160 });
164 } 161 }
165 162
166 test("text/plain", "body".codeUnits, "body", "text"); 163 test("text/plain", "body".codeUnits, "body", "text");
167 test("text/plain; charset=utf-8", 164 test("text/plain; charset=utf-8",
168 "body".codeUnits, 165 "body".codeUnits,
169 "body", 166 "body",
170 "text"); 167 "text");
171 test("text/plain; charset=utf-8", [42], "*", "text"); 168 test("text/plain; charset=utf-8", [42], "*", "text");
172 test("text/plain; charset=us-ascii", [142], "?", "text"); 169 test("text/plain; charset=us-ascii", [142], null, "text", shouldFail: true);
173 test("text/plain; charset=utf-8", 170 test("text/plain; charset=utf-8", [142], null, "text", shouldFail: true);
174 [142],
175 new String.fromCharCodes([UNICODE_REPLACEMENT_CHARACTER_CODEPOINT]),
176 "text");
177 171
178 test("application/json", 172 test("application/json",
179 '{"val": 5}'.codeUnits, 173 '{"val": 5}'.codeUnits,
180 { "val" : 5 }, 174 { "val" : 5 },
181 "json"); 175 "json");
182 test("application/json", 176 test("application/json",
183 '{ bad json }'.codeUnits, 177 '{ bad json }'.codeUnits,
184 null, 178 null,
185 "json", 179 "json",
186 shouldFail: true); 180 shouldFail: true);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 237
244 test('application/x-www-form-urlencoded', 238 test('application/x-www-form-urlencoded',
245 '%E5%B9%B3%3D%E4%BB%AE%E5%90%8D=%E5%B9%B3%E4%BB%AE%E5%90%8D&b' 239 '%E5%B9%B3%3D%E4%BB%AE%E5%90%8D=%E5%B9%B3%E4%BB%AE%E5%90%8D&b'
246 '=%E5%B9%B3%E4%BB%AE%E5%90%8D'.codeUnits, 240 '=%E5%B9%B3%E4%BB%AE%E5%90%8D'.codeUnits,
247 { 'b' : '平仮名', 241 { 'b' : '平仮名',
248 '平=仮名' : '平仮名'}, 242 '平=仮名' : '平仮名'},
249 "form"); 243 "form");
250 244
251 test('application/x-www-form-urlencoded', 245 test('application/x-www-form-urlencoded',
252 'a=%F8+%26%23548%3B'.codeUnits, 246 'a=%F8+%26%23548%3B'.codeUnits,
253 { 'a' : '\u{FFFD} &#548;' }, 247 null,
254 "form"); 248 "form",
249 shouldFail: true);
255 250
256 test('application/x-www-form-urlencoded', 251 test('application/x-www-form-urlencoded',
257 'a=%C0%A0'.codeUnits, 252 'a=%C0%A0'.codeUnits,
258 { 'a' : '\u{FFFD}' }, 253 null,
259 "form"); 254 "form",
255 shouldFail: true);
260 256
261 test('application/x-www-form-urlencoded', 257 test('application/x-www-form-urlencoded',
262 'a=x%A0x'.codeUnits, 258 'a=x%A0x'.codeUnits,
263 { 'a' : 'x\u{FFFD}x' }, 259 null,
264 "form"); 260 "form",
261 shouldFail: true);
265 262
266 test('application/x-www-form-urlencoded', 263 test('application/x-www-form-urlencoded',
267 'a=x%C0x'.codeUnits, 264 'a=x%C0x'.codeUnits,
268 { 'a' : 'x\u{FFFD}x' }, 265 null,
269 "form"); 266 "form",
267 shouldFail: true);
270 268
271 test('application/x-www-form-urlencoded', 269 test('application/x-www-form-urlencoded',
272 'a=%C3%B8+%C8%A4'.codeUnits, 270 'a=%C3%B8+%C8%A4'.codeUnits,
273 { 'a' : 'ø Ȥ' }, 271 { 'a' : 'ø Ȥ' },
274 "form"); 272 "form");
275 273
276 test('application/x-www-form-urlencoded', 274 test('application/x-www-form-urlencoded',
277 'a=%F8+%26%23548%3B'.codeUnits, 275 'a=%F8+%26%23548%3B'.codeUnits,
278 { 'a' : 'ø &#548;' }, 276 { 'a' : 'ø &#548;' },
279 "form", 277 "form",
280 defaultEncoding: Encoding.ISO_8859_1); 278 defaultEncoding: LATIN1);
281 279
282 test('application/x-www-form-urlencoded', 280 test('application/x-www-form-urlencoded',
283 'name=%26'.codeUnits, 281 'name=%26'.codeUnits,
284 { 'name' : '&' }, 282 { 'name' : '&' },
285 "form", 283 "form",
286 defaultEncoding: Encoding.ISO_8859_1); 284 defaultEncoding: LATIN1);
287 285
288 test('application/x-www-form-urlencoded', 286 test('application/x-www-form-urlencoded',
289 'name=%F8%26'.codeUnits, 287 'name=%F8%26'.codeUnits,
290 { 'name' : 'ø&' }, 288 { 'name' : 'ø&' },
291 "form", 289 "form",
292 defaultEncoding: Encoding.ISO_8859_1); 290 defaultEncoding: LATIN1);
293 291
294 test('application/x-www-form-urlencoded', 292 test('application/x-www-form-urlencoded',
295 'name=%26%3B'.codeUnits, 293 'name=%26%3B'.codeUnits,
296 { 'name' : '&;' }, 294 { 'name' : '&;' },
297 "form", 295 "form",
298 defaultEncoding: Encoding.ISO_8859_1); 296 defaultEncoding: LATIN1);
299 297
300 test('application/x-www-form-urlencoded', 298 test('application/x-www-form-urlencoded',
301 'name=%26%23548%3B%26%23548%3B'.codeUnits, 299 'name=%26%23548%3B%26%23548%3B'.codeUnits,
302 { 'name' : '&#548;&#548;' }, 300 { 'name' : '&#548;&#548;' },
303 "form", 301 "form",
304 defaultEncoding: Encoding.ISO_8859_1); 302 defaultEncoding: LATIN1);
305 303
306 test('application/x-www-form-urlencoded', 304 test('application/x-www-form-urlencoded',
307 'name=%26'.codeUnits, 305 'name=%26'.codeUnits,
308 { 'name' : '&' }, 306 { 'name' : '&' },
309 "form"); 307 "form");
310 308
311 test('application/x-www-form-urlencoded', 309 test('application/x-www-form-urlencoded',
312 'name=%C3%B8%26'.codeUnits, 310 'name=%C3%B8%26'.codeUnits,
313 { 'name' : 'ø&' }, 311 { 'name' : 'ø&' },
314 "form"); 312 "form");
(...skipping 11 matching lines...) Expand all
326 test('application/x-www-form-urlencoded', 324 test('application/x-www-form-urlencoded',
327 'name=%C8%A4%C8%A4'.codeUnits, 325 'name=%C8%A4%C8%A4'.codeUnits,
328 { 'name' : 'ȤȤ' }, 326 { 'name' : 'ȤȤ' },
329 "form"); 327 "form");
330 } 328 }
331 329
332 void main() { 330 void main() {
333 testHttpClientResponseBody(); 331 testHttpClientResponseBody();
334 testHttpServerRequestBody(); 332 testHttpServerRequestBody();
335 } 333 }
OLDNEW
« no previous file with comments | « pkg/http_server/lib/src/http_multipart_form_data_impl.dart ('k') | pkg/http_server/test/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698