1
1
import 'dart:io' ;
2
2
3
+ import 'package:dart_frog/dart_frog.dart' ;
3
4
import 'package:dart_frog/src/_internal.dart' ;
4
5
import 'package:http/http.dart' as http;
5
6
import 'package:shelf/shelf.dart' as shelf;
7
+ import 'package:shelf/shelf_io.dart' as shelf_io;
6
8
import 'package:test/test.dart' ;
7
9
8
10
void main () {
@@ -20,6 +22,24 @@ void main() {
20
22
});
21
23
});
22
24
25
+ group ('toShelfHandler' , () {
26
+ test ('converts a Handler into a shelf.Handler' , () async {
27
+ Future <Response > handler (RequestContext context) async {
28
+ return Response (body: 'Hello World' );
29
+ }
30
+
31
+ final server = await shelf_io.serve (
32
+ toShelfHandler (handler),
33
+ 'localhost' ,
34
+ 8001 ,
35
+ );
36
+ final response = await http.get (Uri .parse ('http://localhost:8001' ));
37
+ expect (response.statusCode, equals (HttpStatus .ok));
38
+ expect (response.body, equals ('Hello World' ));
39
+ await server.close ();
40
+ });
41
+ });
42
+
23
43
group ('fromShelfMiddleware' , () {
24
44
test ('converts a shelf.Middleware into a Middleware' , () async {
25
45
shelf.Handler middleware (shelf.Handler handler) {
@@ -35,12 +55,42 @@ void main() {
35
55
.addMiddleware (fromShelfMiddleware (middleware))
36
56
.addHandler ((_) => Response (body: 'Hello World' ));
37
57
38
- final server = await serve (handler, 'localhost' , 8001 );
39
- var response = await http.get (Uri .parse ('http://localhost:8001' ));
58
+ final server = await serve (handler, 'localhost' , 8002 );
59
+ var response = await http.get (Uri .parse ('http://localhost:8002' ));
60
+ expect (response.statusCode, equals (HttpStatus .ok));
61
+ expect (response.body, equals ('Hello World' ));
62
+ response = await http.get (
63
+ Uri .parse ('http://localhost:8002' ).replace (
64
+ queryParameters: const < String , String > {'foo' : 'bar' },
65
+ ),
66
+ );
67
+ expect (response.statusCode, equals (HttpStatus .badRequest));
68
+ expect (response.body, equals ('oops!' ));
69
+ await server.close ();
70
+ });
71
+ });
72
+
73
+ group ('toShelfMiddleware' , () {
74
+ test ('converts a Middleware into a shelf.Middleware' , () async {
75
+ Handler middleware (Handler handler) {
76
+ return (context) {
77
+ if (context.request.url.queryParameters.containsKey ('foo' )) {
78
+ return Response (statusCode: HttpStatus .badRequest, body: 'oops!' );
79
+ }
80
+ return handler (context);
81
+ };
82
+ }
83
+
84
+ final handler = const shelf.Pipeline ()
85
+ .addMiddleware (toShelfMiddleware (middleware))
86
+ .addHandler ((_) => shelf.Response .ok ('Hello World' ));
87
+
88
+ final server = await shelf_io.serve (handler, 'localhost' , 8003 );
89
+ var response = await http.get (Uri .parse ('http://localhost:8003' ));
40
90
expect (response.statusCode, equals (HttpStatus .ok));
41
91
expect (response.body, equals ('Hello World' ));
42
92
response = await http.get (
43
- Uri .parse ('http://localhost:8001 ' ).replace (
93
+ Uri .parse ('http://localhost:8003 ' ).replace (
44
94
queryParameters: const < String , String > {'foo' : 'bar' },
45
95
),
46
96
);
0 commit comments