11import logging
22
3- from connect .eaas .logging import ExtensionLogHandler
3+ from urllib3 .response import HTTPResponse
4+ from requests .models import Response
5+
6+ from connect .eaas .logging import ExtensionLogHandler , RequestLogger
47
58
69def test_extension_log_handler ():
@@ -17,3 +20,154 @@ def test_extension_log_handler():
1720 None ,
1821 ))
1922 assert extra_fields ['field' ] == 'value'
23+
24+
25+ def test_request_logger_request (caplog ):
26+ rl = RequestLogger (logging .getLogger ('eaas.extension' ))
27+
28+ with caplog .at_level (logging .DEBUG ):
29+ rl .log_request ('POST' , 'https://example.com' , {})
30+
31+ assert '\n ' .join (
32+ [
33+ '--- HTTP Request ---' ,
34+ "POST https://example.com " ,
35+ '' ,
36+ ],
37+ ) == caplog .records [0 ].message
38+
39+
40+ def test_request_logger_request_params (caplog ):
41+ rl = RequestLogger (logging .getLogger ('eaas.extension' ))
42+
43+ with caplog .at_level (logging .DEBUG ):
44+ rl .log_request ('POST' , 'https://example.com' , {'params' : {'a' : 'va' }})
45+
46+ assert '\n ' .join (
47+ [
48+ '--- HTTP Request ---' ,
49+ "POST https://example.com?a=va " ,
50+ '' ,
51+ ],
52+ ) == caplog .records [0 ].message
53+
54+
55+ def test_request_logger_request_with_qs (caplog ):
56+ rl = RequestLogger (logging .getLogger ('eaas.extension' ))
57+
58+ with caplog .at_level (logging .DEBUG ):
59+ rl .log_request ('GET' , 'https://example.com?queryparam=value' , {})
60+
61+ assert '\n ' .join (
62+ [
63+ '--- HTTP Request ---' ,
64+ "GET https://example.com?queryparam=value " ,
65+ '' ,
66+ ],
67+ ) == caplog .records [0 ].message
68+
69+
70+ def test_request_logger_request_with_headers (caplog ):
71+ rl = RequestLogger (logging .getLogger ('eaas.extension' ))
72+
73+ headers = {
74+ 'Authorization' : 'ApiKey SU-000:xxxx' ,
75+ }
76+
77+ with caplog .at_level (logging .DEBUG ):
78+ rl .log_request ('GET' , 'https://example.com' , {'headers' : headers })
79+
80+ assert '\n ' .join (
81+ [
82+ '--- HTTP Request ---' ,
83+ "GET https://example.com " ,
84+ 'Authorization: ApiKey SU-000:xxxx' ,
85+ '' ,
86+ ],
87+ ) == caplog .records [0 ].message
88+
89+
90+ def test_request_logger_request_with_json_body (caplog ):
91+ rl = RequestLogger (logging .getLogger ('eaas.extension' ))
92+
93+ json = {
94+ 'test' : 'data' ,
95+ }
96+
97+ with caplog .at_level (logging .DEBUG ):
98+ rl .log_request ('GET' , 'https://example.com' , {'json' : json })
99+
100+ assert '\n ' .join (
101+ [
102+ '--- HTTP Request ---' ,
103+ "GET https://example.com " ,
104+ '{' ,
105+ ' "test": "data"' ,
106+ '}' ,
107+ '' ,
108+ ],
109+ ) == caplog .records [0 ].message
110+
111+
112+ def test_request_logger_response (caplog ):
113+ rl = RequestLogger (logging .getLogger ('eaas.extension' ))
114+
115+ rsp = Response ()
116+ rsp .raw = HTTPResponse ()
117+
118+ rsp .status_code = 200
119+ rsp .raw .reason = 'OK'
120+
121+ with caplog .at_level (logging .DEBUG ):
122+ rl .log_response (rsp )
123+
124+ assert '\n ' .join (
125+ [
126+ '--- HTTP Response ---' ,
127+ '200 OK' ,
128+ '' ,
129+ ],
130+ ) == caplog .records [0 ].message
131+
132+ rsp = Response ()
133+ rsp .status_code = 200
134+ rsp .reason_phrase = 'OK'
135+
136+ with caplog .at_level (logging .DEBUG ):
137+ rl .log_response (rsp )
138+
139+ assert '\n ' .join (
140+ [
141+ '--- HTTP Response ---' ,
142+ '200 OK' ,
143+ '' ,
144+ ],
145+ ) == caplog .records [0 ].message
146+
147+
148+ def test_request_logger_response_json (mocker , caplog ):
149+ json = {'id' : 'XX-1234' , 'name' : 'XXX' }
150+ mocker .patch ('requests.models.Response.json' , return_value = json )
151+
152+ rl = RequestLogger (logging .getLogger ('eaas.extension' ))
153+
154+ rsp = Response ()
155+ rsp .raw = HTTPResponse ()
156+ rsp .headers = {'Content-Type' : 'application/json' }
157+ rsp .status_code = 200
158+ rsp .raw .reason = 'OK'
159+
160+ with caplog .at_level (logging .DEBUG ):
161+ rl .log_response (rsp )
162+ assert '\n ' .join (
163+ [
164+ '--- HTTP Response ---' ,
165+ '200 OK' ,
166+ 'Content-Type: application/json' ,
167+ '{' ,
168+ ' "id": "XX-1234",' ,
169+ ' "name": "XXX"' ,
170+ '}' ,
171+ '' ,
172+ ],
173+ ) == caplog .records [0 ].message
0 commit comments