| OLD | NEW |
| (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 |
| OLD | NEW |