@@ -11,20 +11,56 @@ def get(self):
1111 self .write (f"Hello, { name } " )
1212
1313
14+ class InspectHandler (RequestHandler ):
15+ def make_response (self , path_var ):
16+ # Send the response as JSON
17+ self .finish (
18+ {
19+ "method" : self .request .method ,
20+ "path" : self .request .path ,
21+ "path_var" : path_var ,
22+ "query_params" : {
23+ k : self .get_query_arguments (k ) for k in self .request .query_arguments
24+ },
25+ "body" : self .request .body .decode ("latin1" ),
26+ }
27+ )
28+
29+ def get (self , path_var ):
30+ return self .make_response (path_var )
31+
32+ def post (self , path_var ):
33+ return self .make_response (path_var )
34+
35+
1436class AsyncASGITestCase (AsyncTestCase ):
1537 def setUp (self ) -> None :
1638 super ().setUp ()
1739 self .asgi_app = ASGIAdapter (
18- Application (
19- [
20- (r"/" , BasicHandler ),
21- ]
22- )
40+ Application ([(r"/" , BasicHandler ), (r"/inspect(/.*)" , InspectHandler )])
2341 )
42+ self .client = TestClient (self .asgi_app )
2443
25- @gen_test (timeout = None )
44+ @gen_test (timeout = 10 )
2645 async def test_basic_request (self ):
27- client = TestClient (self .asgi_app )
28- resp = await client .get ("/?name=foo" )
46+ resp = await self .client .get ("/?name=foo" )
2947 assert resp .status_code == 200
3048 assert resp .text == "Hello, foo"
49+
50+ @gen_test (timeout = 10 )
51+ async def test_get_request_details (self ):
52+ resp = await self .client .get ("/inspect/foo/?bar=baz" )
53+ d = resp .json ()
54+ assert d ["method" ] == "GET"
55+ assert d ["path" ] == "/inspect/foo/"
56+ assert d ["query_params" ] == {"bar" : ["baz" ]}
57+ assert d ["body" ] == ""
58+
59+ @gen_test (timeout = 10 )
60+ async def test_post_request_details (self ):
61+ resp = await self .client .post ("/inspect/foo/?bar=baz" , data = b"123" )
62+ d = resp .json ()
63+ assert d ["method" ] == "POST"
64+ assert d ["path" ] == "/inspect/foo/"
65+ assert d ["query_params" ] == {"bar" : ["baz" ]}
66+ assert d ["body" ] == "123"
0 commit comments