22
33from unittest .mock import AsyncMock , MagicMock , patch
44
5+ import aiohttp
56import socketio_v4
67import pytest
78
@@ -26,15 +27,28 @@ async def test_sio_connect_without_session():
2627
2728@pytest .mark .asyncio
2829async def test_sio_connect_with_session ():
29- """Test that sio_connect passes the caller's session as http_session."""
30+ """Test that sio_connect creates a new session sharing the caller's
31+ connector and passes it as http_session, so engineio can safely close
32+ it without affecting the caller's session."""
33+ mock_connector = MagicMock ()
3034 mock_session = MagicMock ()
35+ mock_session .connector = mock_connector
3136 ws = C4Websocket ("192.168.1.1" , session_no_verify_ssl = mock_session )
3237 with patch .object (
3338 socketio_v4 .AsyncClient , "__init__" , return_value = None
3439 ) as mock_init , patch .object (
3540 socketio_v4 .AsyncClient , "register_namespace"
3641 ), patch .object (
3742 socketio_v4 .AsyncClient , "connect" , new_callable = AsyncMock
38- ):
43+ ), patch .object (
44+ aiohttp , "ClientSession"
45+ ) as mock_session_cls :
46+ mock_http_session = MagicMock ()
47+ mock_session_cls .return_value = mock_http_session
3948 await ws .sio_connect ("test-token" )
40- mock_init .assert_called_once_with (ssl_verify = False , http_session = mock_session )
49+ mock_session_cls .assert_called_once_with (
50+ connector = mock_connector , connector_owner = False
51+ )
52+ mock_init .assert_called_once_with (
53+ ssl_verify = False , http_session = mock_http_session
54+ )
0 commit comments