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

Side by Side Diff: pkg/shelf/test/message_test.dart

Issue 239183005: Add a context field to Message in shelf. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 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
« no previous file with comments | « pkg/shelf/pubspec.yaml ('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 (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library shelf.message_test; 5 library shelf.message_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:convert'; 8 import 'dart:convert';
9 9
10 import 'package:shelf/src/message.dart'; 10 import 'package:shelf/src/message.dart';
11 import 'package:unittest/unittest.dart'; 11 import 'package:unittest/unittest.dart';
12 12
13 class _TestMessage extends Message { 13 class _TestMessage extends Message {
14 _TestMessage(Map<String, String> headers, Stream<List<int>> body) 14 _TestMessage(Map<String, String> headers, Map<String, Object> context,
15 : super(body, headers: headers); 15 Stream<List<int>> body)
16 : super(body, headers: headers, context: context);
16 } 17 }
17 18
18 Message _createMessage({Map<String, String> headers, Stream<List<int>> body}) { 19 Message _createMessage({Map<String, String> headers,
20 Map<String, Object> context, Stream<List<int>> body}) {
19 if (body == null) body = new Stream.fromIterable([]); 21 if (body == null) body = new Stream.fromIterable([]);
20 return new _TestMessage(headers, body); 22 return new _TestMessage(headers, context, body);
21 } 23 }
22 24
23 void main() { 25 void main() {
24 group('headers', () { 26 group('headers', () {
25 test('message headers are case insensitive', () { 27 test('message headers are case insensitive', () {
26 var message = _createMessage(headers: {'foo': 'bar'}); 28 var message = _createMessage(headers: {'foo': 'bar'});
27 29
28 expect(message.headers, containsPair('foo', 'bar')); 30 expect(message.headers, containsPair('foo', 'bar'));
29 expect(message.headers, containsPair('Foo', 'bar')); 31 expect(message.headers, containsPair('Foo', 'bar'));
30 expect(message.headers, containsPair('FOO', 'bar')); 32 expect(message.headers, containsPair('FOO', 'bar'));
31 }); 33 });
32 34
33 test('null header value becomes empty, immutable', () { 35 test('null header value becomes empty, immutable', () {
34 var message = _createMessage(); 36 var message = _createMessage();
35 expect(message.headers, isEmpty); 37 expect(message.headers, isEmpty);
36 expect(() => message.headers['h1'] = 'value1', throwsUnsupportedError); 38 expect(() => message.headers['h1'] = 'value1', throwsUnsupportedError);
37 }); 39 });
38 40
39 test('headers are immutable', () { 41 test('headers are immutable', () {
40 var message = _createMessage(headers: {'h1': 'value1'}); 42 var message = _createMessage(headers: {'h1': 'value1'});
41 expect(() => message.headers['h1'] = 'value1', throwsUnsupportedError); 43 expect(() => message.headers['h1'] = 'value1', throwsUnsupportedError);
42 expect(() => message.headers['h1'] = 'value2', throwsUnsupportedError); 44 expect(() => message.headers['h1'] = 'value2', throwsUnsupportedError);
43 expect(() => message.headers['h2'] = 'value2', throwsUnsupportedError); 45 expect(() => message.headers['h2'] = 'value2', throwsUnsupportedError);
44 }); 46 });
45 }); 47 });
48
49 group('context', () {
50 test('is accessible', () {
51 var message = _createMessage(context: {'foo': 'bar'});
52 expect(message.context, containsPair('foo', 'bar'));
53 });
54
55 test('null context value becomes empty and immutable', () {
56 var message = _createMessage();
57 expect(message.context, isEmpty);
58 expect(() => message.context['key'] = 'value', throwsUnsupportedError);
59 });
60
61 test('is immutable', () {
62 var message = _createMessage(context: {'key': 'value'});
63 expect(() => message.context['key'] = 'value', throwsUnsupportedError);
64 expect(() => message.context['key2'] = 'value', throwsUnsupportedError);
65 });
66 });
67
46 group("readAsString", () { 68 group("readAsString", () {
47 test("supports a null body", () { 69 test("supports a null body", () {
48 var request = _createMessage(); 70 var request = _createMessage();
49 expect(request.readAsString(), completion(equals(""))); 71 expect(request.readAsString(), completion(equals("")));
50 }); 72 });
51 73
52 test("supports a Stream<List<int>> body", () { 74 test("supports a Stream<List<int>> body", () {
53 var controller = new StreamController(); 75 var controller = new StreamController();
54 var request = _createMessage(body: controller.stream); 76 var request = _createMessage(body: controller.stream);
55 expect(request.readAsString(), completion(equals("hello, world"))); 77 expect(request.readAsString(), completion(equals("hello, world")));
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 }).encoding, isNull); 176 }).encoding, isNull);
155 }); 177 });
156 178
157 test("comes from the content-type charset parameter", () { 179 test("comes from the content-type charset parameter", () {
158 expect(_createMessage(headers: { 180 expect(_createMessage(headers: {
159 'content-type': 'text/plain; charset=iso-8859-1' 181 'content-type': 'text/plain; charset=iso-8859-1'
160 }).encoding, equals(LATIN1)); 182 }).encoding, equals(LATIN1));
161 }); 183 });
162 }); 184 });
163 } 185 }
OLDNEW
« no previous file with comments | « pkg/shelf/pubspec.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698