@@ -148,14 +148,17 @@ def process_request(ws, request):
148148 async def handler (ws ):
149149 self .fail ("handler must not run" )
150150
151- async with serve (handler , * args [1 :], process_request = process_request ) as server :
152- with self .assertRaises (InvalidStatus ) as raised :
153- async with connect (get_uri (server )):
154- self .fail ("did not raise" )
155- self .assertEqual (
156- str (raised .exception ),
157- "server rejected WebSocket connection: HTTP 403" ,
158- )
151+ with self .assertNoLogs ("websockets" , logging .ERROR ):
152+ async with serve (
153+ handler , * args [1 :], process_request = process_request
154+ ) as server :
155+ with self .assertRaises (InvalidStatus ) as raised :
156+ async with connect (get_uri (server )):
157+ self .fail ("did not raise" )
158+ self .assertEqual (
159+ str (raised .exception ),
160+ "server rejected WebSocket connection: HTTP 403" ,
161+ )
159162
160163 async def test_async_process_request_returns_response (self ):
161164 """Server aborts handshake if async process_request returns a response."""
@@ -166,44 +169,65 @@ async def process_request(ws, request):
166169 async def handler (ws ):
167170 self .fail ("handler must not run" )
168171
169- async with serve (handler , * args [1 :], process_request = process_request ) as server :
170- with self .assertRaises (InvalidStatus ) as raised :
171- async with connect (get_uri (server )):
172- self .fail ("did not raise" )
173- self .assertEqual (
174- str (raised .exception ),
175- "server rejected WebSocket connection: HTTP 403" ,
176- )
172+ with self .assertNoLogs ("websockets" , logging .ERROR ):
173+ async with serve (
174+ handler , * args [1 :], process_request = process_request
175+ ) as server :
176+ with self .assertRaises (InvalidStatus ) as raised :
177+ async with connect (get_uri (server )):
178+ self .fail ("did not raise" )
179+ self .assertEqual (
180+ str (raised .exception ),
181+ "server rejected WebSocket connection: HTTP 403" ,
182+ )
177183
178184 async def test_process_request_raises_exception (self ):
179185 """Server returns an error if process_request raises an exception."""
180186
181187 def process_request (ws , request ):
182- raise RuntimeError
188+ raise RuntimeError ( "BOOM" )
183189
184- async with serve (* args , process_request = process_request ) as server :
185- with self .assertRaises (InvalidStatus ) as raised :
186- async with connect (get_uri (server )):
187- self .fail ("did not raise" )
188- self .assertEqual (
189- str (raised .exception ),
190- "server rejected WebSocket connection: HTTP 500" ,
191- )
190+ with self .assertLogs ("websockets" , logging .ERROR ) as logs :
191+ async with serve (* args , process_request = process_request ) as server :
192+ with self .assertRaises (InvalidStatus ) as raised :
193+ async with connect (get_uri (server )):
194+ self .fail ("did not raise" )
195+ self .assertEqual (
196+ str (raised .exception ),
197+ "server rejected WebSocket connection: HTTP 500" ,
198+ )
199+ self .assertEqual (
200+ [record .getMessage () for record in logs .records ],
201+ ["opening handshake failed" ],
202+ )
203+ self .assertEqual (
204+ [str (record .exc_info [1 ]) for record in logs .records ],
205+ ["BOOM" ],
206+ )
192207
193208 async def test_async_process_request_raises_exception (self ):
194209 """Server returns an error if async process_request raises an exception."""
195210
196211 async def process_request (ws , request ):
197- raise RuntimeError
212+ raise RuntimeError ( "BOOM" )
198213
199- async with serve (* args , process_request = process_request ) as server :
200- with self .assertRaises (InvalidStatus ) as raised :
201- async with connect (get_uri (server )):
202- self .fail ("did not raise" )
203- self .assertEqual (
204- str (raised .exception ),
205- "server rejected WebSocket connection: HTTP 500" ,
206- )
214+ with self .assertLogs ("websockets" , logging .ERROR ) as logs :
215+ async with serve (* args , process_request = process_request ) as server :
216+ with self .assertRaises (InvalidStatus ) as raised :
217+ async with connect (get_uri (server )):
218+ self .fail ("did not raise" )
219+ self .assertEqual (
220+ str (raised .exception ),
221+ "server rejected WebSocket connection: HTTP 500" ,
222+ )
223+ self .assertEqual (
224+ [record .getMessage () for record in logs .records ],
225+ ["opening handshake failed" ],
226+ )
227+ self .assertEqual (
228+ [str (record .exc_info [1 ]) for record in logs .records ],
229+ ["BOOM" ],
230+ )
207231
208232 async def test_process_response_returns_none (self ):
209233 """Server runs process_response but keeps the handshake response."""
@@ -277,31 +301,49 @@ async def test_process_response_raises_exception(self):
277301 """Server returns an error if process_response raises an exception."""
278302
279303 def process_response (ws , request , response ):
280- raise RuntimeError
304+ raise RuntimeError ( "BOOM" )
281305
282- async with serve (* args , process_response = process_response ) as server :
283- with self .assertRaises (InvalidStatus ) as raised :
284- async with connect (get_uri (server )):
285- self .fail ("did not raise" )
286- self .assertEqual (
287- str (raised .exception ),
288- "server rejected WebSocket connection: HTTP 500" ,
289- )
306+ with self .assertLogs ("websockets" , logging .ERROR ) as logs :
307+ async with serve (* args , process_response = process_response ) as server :
308+ with self .assertRaises (InvalidStatus ) as raised :
309+ async with connect (get_uri (server )):
310+ self .fail ("did not raise" )
311+ self .assertEqual (
312+ str (raised .exception ),
313+ "server rejected WebSocket connection: HTTP 500" ,
314+ )
315+ self .assertEqual (
316+ [record .getMessage () for record in logs .records ],
317+ ["opening handshake failed" ],
318+ )
319+ self .assertEqual (
320+ [str (record .exc_info [1 ]) for record in logs .records ],
321+ ["BOOM" ],
322+ )
290323
291324 async def test_async_process_response_raises_exception (self ):
292325 """Server returns an error if async process_response raises an exception."""
293326
294327 async def process_response (ws , request , response ):
295- raise RuntimeError
328+ raise RuntimeError ( "BOOM" )
296329
297- async with serve (* args , process_response = process_response ) as server :
298- with self .assertRaises (InvalidStatus ) as raised :
299- async with connect (get_uri (server )):
300- self .fail ("did not raise" )
301- self .assertEqual (
302- str (raised .exception ),
303- "server rejected WebSocket connection: HTTP 500" ,
304- )
330+ with self .assertLogs ("websockets" , logging .ERROR ) as logs :
331+ async with serve (* args , process_response = process_response ) as server :
332+ with self .assertRaises (InvalidStatus ) as raised :
333+ async with connect (get_uri (server )):
334+ self .fail ("did not raise" )
335+ self .assertEqual (
336+ str (raised .exception ),
337+ "server rejected WebSocket connection: HTTP 500" ,
338+ )
339+ self .assertEqual (
340+ [record .getMessage () for record in logs .records ],
341+ ["opening handshake failed" ],
342+ )
343+ self .assertEqual (
344+ [str (record .exc_info [1 ]) for record in logs .records ],
345+ ["BOOM" ],
346+ )
305347
306348 async def test_override_server (self ):
307349 """Server can override Server header with server_header."""
0 commit comments