Index: pkg/shelf/test/create_middleware_test.dart |
diff --git a/pkg/shelf/test/create_middleware_test.dart b/pkg/shelf/test/create_middleware_test.dart |
deleted file mode 100644 |
index a743dd5de6df36d967a5a5452760809a9c0dc1d8..0000000000000000000000000000000000000000 |
--- a/pkg/shelf/test/create_middleware_test.dart |
+++ /dev/null |
@@ -1,235 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library shelf.create_middleware_test; |
- |
-import 'dart:async'; |
- |
-import 'package:shelf/shelf.dart'; |
-import 'package:unittest/unittest.dart'; |
- |
-import 'test_util.dart'; |
- |
-void main() { |
- test('forwards the request and response if both handlers are null', () { |
- var handler = const Pipeline() |
- .addMiddleware(createMiddleware()) |
- .addHandler((request) { |
- return syncHandler(request, headers: {'from' : 'innerHandler'}); |
- }); |
- |
- return makeSimpleRequest(handler).then((response) { |
- expect(response.headers['from'], 'innerHandler'); |
- }); |
- }); |
- |
- group('requestHandler', () { |
- test('sync null response forwards to inner handler', () { |
- var handler = const Pipeline() |
- .addMiddleware(createMiddleware(requestHandler: (request) => null)) |
- .addHandler(syncHandler); |
- |
- return makeSimpleRequest(handler).then((response) { |
- expect(response.headers['from'], isNull); |
- }); |
- }); |
- |
- test('async null response forwards to inner handler', () { |
- var handler = const Pipeline() |
- .addMiddleware(createMiddleware( |
- requestHandler: (request) => new Future.value(null))) |
- .addHandler(syncHandler); |
- |
- return makeSimpleRequest(handler).then((response) { |
- expect(response.headers['from'], isNull); |
- }); |
- }); |
- |
- test('sync response is returned', () { |
- var handler = const Pipeline() |
- .addMiddleware(createMiddleware( |
- requestHandler: (request) => _middlewareResponse)) |
- .addHandler(_failHandler); |
- |
- return makeSimpleRequest(handler).then((response) { |
- expect(response.headers['from'], 'middleware'); |
- }); |
- }); |
- |
- test('async response is returned', () { |
- var handler = const Pipeline() |
- .addMiddleware(createMiddleware(requestHandler: (request) => |
- new Future.value(_middlewareResponse))) |
- .addHandler(_failHandler); |
- |
- return makeSimpleRequest(handler).then((response) { |
- expect(response.headers['from'], 'middleware'); |
- }); |
- }); |
- |
- group('with responseHandler', () { |
- test('with sync result, responseHandler is not called', () { |
- var middleware = createMiddleware( |
- requestHandler: (request) => _middlewareResponse, |
- responseHandler: (response) => fail('should not be called')); |
- |
- var handler = const Pipeline() |
- .addMiddleware(middleware) |
- .addHandler(syncHandler); |
- |
- return makeSimpleRequest(handler).then((response) { |
- expect(response.headers['from'], 'middleware'); |
- }); |
- }); |
- |
- test('with async result, responseHandler is not called', () { |
- var middleware = createMiddleware( |
- requestHandler: (request) => new Future.value(_middlewareResponse), |
- responseHandler: (response) => fail('should not be called')); |
- var handler = const Pipeline() |
- .addMiddleware(middleware) |
- .addHandler(syncHandler); |
- |
- return makeSimpleRequest(handler).then((response) { |
- expect(response.headers['from'], 'middleware'); |
- }); |
- }); |
- }); |
- }); |
- |
- group('responseHandler', () { |
- test('innerHandler sync response is seen, replaced value continues', () { |
- var handler = const Pipeline().addMiddleware(createMiddleware( |
- responseHandler: (response) { |
- expect(response.headers['from'], 'handler'); |
- return _middlewareResponse; |
- })).addHandler((request) { |
- return syncHandler(request, headers: {'from' : 'handler'} ); |
- }); |
- |
- return makeSimpleRequest(handler).then((response) { |
- expect(response.headers['from'], 'middleware'); |
- }); |
- }); |
- |
- test('innerHandler async response is seen, async value continues', () { |
- var handler = const Pipeline().addMiddleware( |
- createMiddleware(responseHandler: (response) { |
- expect(response.headers['from'], 'handler'); |
- return new Future.value(_middlewareResponse); |
- })).addHandler((request) { |
- return new Future(() => syncHandler( |
- request, headers: {'from' : 'handler'} )); |
- }); |
- |
- return makeSimpleRequest(handler).then((response) { |
- expect(response.headers['from'], 'middleware'); |
- }); |
- }); |
- }); |
- |
- group('error handling', () { |
- test('sync error thrown by requestHandler bubbles down', () { |
- var handler = const Pipeline() |
- .addMiddleware(createMiddleware( |
- requestHandler: (request) => throw 'middleware error')) |
- .addHandler(_failHandler); |
- |
- expect(makeSimpleRequest(handler), throwsA('middleware error')); |
- }); |
- |
- test('async error thrown by requestHandler bubbles down', () { |
- var handler = const Pipeline() |
- .addMiddleware(createMiddleware(requestHandler: (request) => |
- new Future.error('middleware error'))) |
- .addHandler(_failHandler); |
- |
- expect(makeSimpleRequest(handler), throwsA('middleware error')); |
- }); |
- |
- test('throw from responseHandler does not hit error handler', () { |
- var middleware = createMiddleware(responseHandler: (response) { |
- throw 'middleware error'; |
- }, errorHandler: (e, s) => fail('should never get here')); |
- |
- var handler = const Pipeline().addMiddleware(middleware) |
- .addHandler(syncHandler); |
- |
- expect(makeSimpleRequest(handler), throwsA('middleware error')); |
- }); |
- |
- test('requestHandler throw does not hit errorHandlers', () { |
- var middleware = createMiddleware( |
- requestHandler: (request) { |
- throw 'middleware error'; |
- }, |
- errorHandler: (e, s) => fail('should never get here')); |
- |
- var handler = const Pipeline().addMiddleware(middleware) |
- .addHandler(syncHandler); |
- |
- expect(makeSimpleRequest(handler), throwsA('middleware error')); |
- }); |
- |
- test('inner handler throws, is caught by errorHandler with response', () { |
- var middleware = createMiddleware( |
- errorHandler: (error, stack) { |
- expect(error, 'bad handler'); |
- return _middlewareResponse; |
- }); |
- |
- var handler = const Pipeline().addMiddleware(middleware) |
- .addHandler((request) { |
- throw 'bad handler'; |
- }); |
- |
- return makeSimpleRequest(handler).then((response) { |
- expect(response.headers['from'], 'middleware'); |
- }); |
- }); |
- |
- test('inner handler throws, is caught by errorHandler and rethrown', () { |
- var middleware = createMiddleware(errorHandler: (error, stack) { |
- expect(error, 'bad handler'); |
- throw error; |
- }); |
- |
- var handler = const Pipeline().addMiddleware(middleware) |
- .addHandler((request) { |
- throw 'bad handler'; |
- }); |
- |
- expect(makeSimpleRequest(handler), throwsA('bad handler')); |
- }); |
- |
- test('error thrown by inner handler without a middleware errorHandler is ' |
- 'rethrown', () { |
- var middleware = createMiddleware(); |
- |
- var handler = const Pipeline().addMiddleware(middleware) |
- .addHandler((request) { |
- throw 'bad handler'; |
- }); |
- |
- expect(makeSimpleRequest(handler), throwsA('bad handler')); |
- }); |
- |
- test("doesn't handle HijackException", () { |
- var middleware = createMiddleware(errorHandler: (error, stack) { |
- fail("error handler shouldn't be called"); |
- }); |
- |
- var handler = const Pipeline().addMiddleware(middleware) |
- .addHandler((request) => throw const HijackException()); |
- |
- expect(makeSimpleRequest(handler), |
- throwsA(new isInstanceOf<HijackException>())); |
- }); |
- }); |
-} |
- |
-_failHandler(Request request) => fail('should never get here'); |
- |
-final Response _middlewareResponse = |
- new Response.ok('middleware content', headers: {'from': 'middleware'}); |