| Index: pkg/shelf/test/stack_test.dart
|
| diff --git a/pkg/shelf/test/stack_test.dart b/pkg/shelf/test/stack_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8ff29d61360ccf68f9e3313dcc56f191b6ab4146
|
| --- /dev/null
|
| +++ b/pkg/shelf/test/stack_test.dart
|
| @@ -0,0 +1,91 @@
|
| +// 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.shelf_stack_test;
|
| +
|
| +import 'package:shelf/shelf.dart';
|
| +import 'package:unittest/unittest.dart';
|
| +
|
| +import 'test_util.dart';
|
| +
|
| +void main() {
|
| + test('compose middleware with Stack', () {
|
| + int accessLocation = 0;
|
| +
|
| + var middlewareA = createMiddleware(requestHandler: (request) {
|
| + expect(accessLocation, 0);
|
| + accessLocation = 1;
|
| + return null;
|
| + }, responseHandler: (response) {
|
| + expect(accessLocation, 4);
|
| + accessLocation = 5;
|
| + return response;
|
| + });
|
| +
|
| + var middlewareB = createMiddleware(requestHandler: (request) {
|
| + expect(accessLocation, 1);
|
| + accessLocation = 2;
|
| + return null;
|
| + }, responseHandler: (response) {
|
| + expect(accessLocation, 3);
|
| + accessLocation = 4;
|
| + return response;
|
| + });
|
| +
|
| + var handler = const Stack()
|
| + .addMiddleware(middlewareA)
|
| + .addMiddleware(middlewareB)
|
| + .addHandler((request) {
|
| + expect(accessLocation, 2);
|
| + accessLocation = 3;
|
| + return syncHandler(request);
|
| + });
|
| +
|
| + return makeSimpleRequest(handler).then((response) {
|
| + expect(response, isNotNull);
|
| + expect(accessLocation, 5);
|
| + });
|
| + });
|
| +
|
| + test('Stack can be used as middleware', () {
|
| + int accessLocation = 0;
|
| +
|
| + var middlewareA = createMiddleware(requestHandler: (request) {
|
| + expect(accessLocation, 0);
|
| + accessLocation = 1;
|
| + return null;
|
| + }, responseHandler: (response) {
|
| + expect(accessLocation, 4);
|
| + accessLocation = 5;
|
| + return response;
|
| + });
|
| +
|
| + var middlewareB = createMiddleware(requestHandler: (request) {
|
| + expect(accessLocation, 1);
|
| + accessLocation = 2;
|
| + return null;
|
| + }, responseHandler: (response) {
|
| + expect(accessLocation, 3);
|
| + accessLocation = 4;
|
| + return response;
|
| + });
|
| +
|
| + var innerStack = const Stack()
|
| + .addMiddleware(middlewareA)
|
| + .addMiddleware(middlewareB);
|
| +
|
| + var handler = const Stack()
|
| + .addMiddleware(innerStack.middleware)
|
| + .addHandler((request) {
|
| + expect(accessLocation, 2);
|
| + accessLocation = 3;
|
| + return syncHandler(request);
|
| + });
|
| +
|
| + return makeSimpleRequest(handler).then((response) {
|
| + expect(response, isNotNull);
|
| + expect(accessLocation, 5);
|
| + });
|
| + });
|
| +}
|
|
|