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

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

Issue 17581002: Add new VirtualHost class to http_server package, for handling multiple hosts on multiple sources (… (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add cert and factor out getStatusCode and getHeaders to utils.dart. Created 7 years, 6 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/http_server/test/virtual_directory_test.dart ('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
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'dart:async';
6 import 'dart:io';
7
8 import "package:unittest/unittest.dart";
9 import "package:http_server/http_server.dart";
10
11 import 'utils.dart';
12
13 void main() {
14 setupSecure();
15
16 test('empty-host', () {
17 expect(HttpServer.bind('localhost', 0).then((server) {
18 var virHost = new VirtualHost(server);
19 return getStatusCode(server.port, '/')
20 .whenComplete(server.close);
21 }), completion(equals(HttpStatus.FORBIDDEN)));
22 });
23
24 test('empty-host-unhandled', () {
25 expect(HttpServer.bind('localhost', 0).then((server) {
26 var virHost = new VirtualHost(server);
27 expect(virHost.unhandled.first.then((request) {
28 request.response.close();
29 }), completion(isNull));
30 return getStatusCode(server.port, '/')
31 .whenComplete(server.close);
32 }), completion(equals(HttpStatus.OK)));
33 });
34
35 test('single-host', () {
36 expect(HttpServer.bind('localhost', 0).then((server) {
37 var virHost = new VirtualHost(server);
38 expect(virHost.addHost('*.host.com').first.then((request) {
39 request.response.close();
40 }), completion(isNull));
41 return getStatusCode(server.port, '/', host: 'my.host.com')
42 .whenComplete(server.close);
43 }), completion(equals(HttpStatus.OK)));
44 });
45
46 test('multiple-host', () {
47 expect(HttpServer.bind('localhost', 0).then((server) {
48 var virHost = new VirtualHost(server);
49 expect(virHost.addHost('*.host1.com').first.then((request) {
50 request.response.close();
51 }), completion(isNull));
52 expect(virHost.addHost('*.host2.com').first.then((request) {
53 request.response.close();
54 }), completion(isNull));
55 expect(virHost.addHost('*.host3.com').first.then((request) {
56 request.response.close();
57 }), completion(isNull));
58 return Future.wait([
59 getStatusCode(server.port, '/', host: 'my.host1.com'),
60 getStatusCode(server.port, '/', host: 'my.host2.com'),
61 getStatusCode(server.port, '/', host: 'my.host3.com')])
62 .whenComplete(server.close);
63 }), completion(equals([HttpStatus.OK, HttpStatus.OK, HttpStatus.OK])));
64 });
65
66 test('multiple-source-https', () {
67 expect(Future.wait([
68 HttpServer.bind('localhost', 0),
69 HttpServer.bindSecure('localhost', 0, certificateName: CERTIFICATE)])
70 .then((servers) {
71 var virHost = new VirtualHost();
72 virHost.addSource(servers[0]);
73 virHost.addSource(servers[1]);
74 virHost.unhandled.listen((request) {
75 request.response.close();
76 });
77 return Future.wait([
78 getStatusCode(servers[0].port, '/', host: 'myhost1.com'),
79 getStatusCode(
80 servers[1].port, '/', host: 'myhost2.com', secure: true)])
81 .whenComplete(() => servers.forEach((s) => s.close()));
82 }), completion(equals([HttpStatus.OK, HttpStatus.OK])));
83 });
84
85 group('domain', () {
86 test('specific-sub-domain', () {
87 expect(HttpServer.bind('localhost', 0).then((server) {
88 var virHost = new VirtualHost(server);
89 expect(virHost.addHost('my1.host.com').first.then((request) {
90 request.response.close();
91 }), completion(isNull));
92 expect(virHost.addHost('my2.host.com').first.then((request) {
93 request.response.close();
94 }), completion(isNull));
95 expect(virHost.addHost('my3.host.com').first.then((request) {
96 request.response.close();
97 }), completion(isNull));
98 return Future.wait([
99 getStatusCode(server.port, '/', host: 'my1.host.com'),
100 getStatusCode(server.port, '/', host: 'my2.host.com'),
101 getStatusCode(server.port, '/', host: 'my3.host.com')])
102 .whenComplete(server.close);
103 }), completion(equals([HttpStatus.OK, HttpStatus.OK, HttpStatus.OK])));
104 });
105
106 test('wildcard-sub-domain', () {
107 expect(HttpServer.bind('localhost', 0).then((server) {
108 var virHost = new VirtualHost(server);
109 expect(virHost.addHost('*.host1.com').first.then((request) {
110 request.response.close();
111 }), completion(isNull));
112 expect(virHost.addHost('*.host2.com').first.then((request) {
113 request.response.close();
114 }), completion(isNull));
115 expect(virHost.addHost('*.host3.com').first.then((request) {
116 request.response.close();
117 }), completion(isNull));
118 return Future.wait([
119 getStatusCode(server.port, '/', host: 'my.host1.com'),
120 getStatusCode(server.port, '/', host: 'my.host2.com'),
121 getStatusCode(server.port, '/', host: 'my.host3.com')])
122 .whenComplete(server.close);
123 }), completion(equals([HttpStatus.OK, HttpStatus.OK, HttpStatus.OK])));
124 });
125
126 test('mix-sub-domain', () {
127 expect(HttpServer.bind('localhost', 0).then((server) {
128 var virHost = new VirtualHost(server);
129 expect(virHost.addHost('my1.host.com').first.then((request) {
130 request.response.close();
131 }), completion(isNull));
132 expect(virHost.addHost('my2.host.com').first.then((request) {
133 request.response.close();
134 }), completion(isNull));
135 expect(virHost.addHost('*.host.com').first.then((request) {
136 request.response.close();
137 }), completion(isNull));
138 return Future.wait([
139 getStatusCode(server.port, '/', host: 'my1.host.com'),
140 getStatusCode(server.port, '/', host: 'my2.host.com'),
141 getStatusCode(server.port, '/', host: 'my3.host.com')])
142 .whenComplete(server.close);
143 }), completion(equals([HttpStatus.OK, HttpStatus.OK, HttpStatus.OK])));
144 });
145
146
147 test('wildcard', () {
148 expect(HttpServer.bind('localhost', 0).then((server) {
149 var virHost = new VirtualHost(server);
150 expect(virHost.addHost('*').first.then((request) {
151 request.response.close();
152 }), completion(isNull));
153 expect(virHost.addHost('*.com').first.then((request) {
154 request.response.close();
155 }), completion(isNull));
156 expect(virHost.addHost('*.host.com').first.then((request) {
157 request.response.close();
158 }), completion(isNull));
159 return Future.wait([
160 getStatusCode(server.port, '/', host: 'some.host.dk'),
161 getStatusCode(server.port, '/', host: 'my.host2.com'),
162 getStatusCode(server.port, '/', host: 'long.sub.of.host.com')])
163 .whenComplete(server.close);
164 }), completion(equals([HttpStatus.OK, HttpStatus.OK, HttpStatus.OK])));
165 });
166
167 test('duplicate-domain', () {
168 var virHost = new VirtualHost();
169 virHost.addHost('my1.host.com');
170 expect(() => (virHost.addHost('my1.host.com')), throwsArgumentError);
171 virHost.addHost('*.host.com');
172 expect(() => (virHost.addHost('*.host.com')), throwsArgumentError);
173 virHost.addHost('my2.host.com');
174 virHost.addHost('my3.host.com');
175 virHost.addHost('*.com');
176 virHost.addHost('*');
177 expect(() => (virHost.addHost('*')), throwsArgumentError);
178 });
179 });
180 }
181
OLDNEW
« no previous file with comments | « pkg/http_server/test/virtual_directory_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698