OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2015, 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 |
| 7 import 'package:shelf/shelf.dart'; |
| 8 import 'package:test/test.dart'; |
| 9 |
| 10 import 'test_util.dart'; |
| 11 |
| 12 void main() { |
| 13 test("passes the URL to the server", () { |
| 14 var serverHandler = new ServerHandler(LOCALHOST_URI); |
| 15 expect(serverHandler.server.url, equals(LOCALHOST_URI)); |
| 16 }); |
| 17 |
| 18 test("pipes a request from ServerHandler.handler to a mounted handler", |
| 19 () async { |
| 20 var serverHandler = new ServerHandler(LOCALHOST_URI); |
| 21 serverHandler.server.mount(asyncHandler); |
| 22 |
| 23 var response = await makeSimpleRequest(serverHandler.handler); |
| 24 expect(response.statusCode, equals(200)); |
| 25 expect(response.readAsString(), completion(equals('Hello from /'))); |
| 26 }); |
| 27 |
| 28 test("waits until the server's handler is mounted to service a request", |
| 29 () async { |
| 30 var serverHandler = new ServerHandler(LOCALHOST_URI); |
| 31 var future = makeSimpleRequest(serverHandler.handler); |
| 32 await new Future.delayed(Duration.ZERO); |
| 33 |
| 34 serverHandler.server.mount(syncHandler); |
| 35 var response = await future; |
| 36 expect(response.statusCode, equals(200)); |
| 37 expect(response.readAsString(), completion(equals('Hello from /'))); |
| 38 }); |
| 39 |
| 40 test("stops servicing requests after Server.close is called", () { |
| 41 var serverHandler = new ServerHandler(LOCALHOST_URI); |
| 42 serverHandler.server.mount(expectAsync((_) {}, count: 0)); |
| 43 serverHandler.server.close(); |
| 44 |
| 45 expect(makeSimpleRequest(serverHandler.handler), throwsStateError); |
| 46 }); |
| 47 |
| 48 test("calls onClose when Server.close is called", () async { |
| 49 var onCloseCalled = false; |
| 50 var completer = new Completer(); |
| 51 var serverHandler = new ServerHandler(LOCALHOST_URI, onClose: () { |
| 52 onCloseCalled = true; |
| 53 return completer.future; |
| 54 }); |
| 55 |
| 56 var closeDone = false; |
| 57 serverHandler.server.close().then((_) { |
| 58 closeDone = true; |
| 59 }); |
| 60 expect(onCloseCalled, isTrue); |
| 61 await new Future.delayed(Duration.ZERO); |
| 62 |
| 63 expect(closeDone, isFalse); |
| 64 completer.complete(); |
| 65 await new Future.delayed(Duration.ZERO); |
| 66 |
| 67 expect(closeDone, isTrue); |
| 68 }); |
| 69 |
| 70 test("doesn't allow Server.mount to be called multiple times", () { |
| 71 var serverHandler = new ServerHandler(LOCALHOST_URI); |
| 72 serverHandler.server.mount((_) {}); |
| 73 expect(() => serverHandler.server.mount((_) {}), throwsStateError); |
| 74 expect(() => serverHandler.server.mount((_) {}), throwsStateError); |
| 75 }); |
| 76 } |
OLD | NEW |