fix typo add test
diff --git a/lib/server/sse_handler.dart b/lib/server/sse_handler.dart
index 7a5ac0e..9c1f57f 100644
--- a/lib/server/sse_handler.dart
+++ b/lib/server/sse_handler.dart
@@ -96,7 +96,7 @@
}
shelf.Response _createSseConnection(shelf.Request req, String path) {
- if (_isClosed) return null;
+ if (_isClosed) return shelf.Response.notFound('');
req.hijack((channel) async {
var sink = utf8.encoder.startChunkedConversion(channel.sink);
sink.add(_sseHeaders(req.headers['origin']));
@@ -115,7 +115,7 @@
_connectionController.add(connection);
});
- return null;
+ return shelf.Response.notFound('');
}
String _getOriginalPath(shelf.Request req) => req.requestedUri.path;
diff --git a/test/sse_test.dart b/test/sse_test.dart
index c21345e..63c4b8e 100644
--- a/test/sse_test.dart
+++ b/test/sse_test.dart
@@ -88,7 +88,7 @@
expect(handler.numberOfClients, 0);
});
- test('Cancelling the listener closes the conneciton', () async {
+ test('Cancelling the listener closes the connection', () async {
expect(handler.numberOfClients, 0);
await webdriver.get('http://localhost:${server.port}');
var connection = await handler.connections.next;
@@ -112,6 +112,21 @@
expect(handler.numberOfClients, 0);
});
+ test('Closing the handler prevents new connections', () async {
+ expect(handler.numberOfClients, 0);
+ await webdriver.get('http://localhost:${server.port}');
+ var connection = await handler.connections.next;
+ expect(handler.numberOfClients, 1);
+
+ handler.close();
+ // Should complete since the connection is closed.
+ await connection.stream.toList();
+ assert(handler.numberOfClients == 0);
+
+ await webdriver.get('http://localhost:${server.port}');
+ expect(await handler.connections.hasNext, isFalse);
+ });
+
test('Disconnects when navigating away', () async {
await webdriver.get('http://localhost:${server.port}');
expect(handler.numberOfClients, 1);