From 6ecaca88e050852b74ff0acfd3a36cf006af67c1 Mon Sep 17 00:00:00 2001 From: Cyber MacGeddon Date: Sat, 12 Jul 2025 17:15:16 +0100 Subject: [PATCH] Gateway tests --- .../test_gateway/test_dispatch_requestor.py | 9 +++++--- .../test_gateway/test_endpoint_manager.py | 20 +++++++++------- .../unit/test_gateway/test_endpoint_socket.py | 23 +++++++++++++------ 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/tests/unit/test_gateway/test_dispatch_requestor.py b/tests/unit/test_gateway/test_dispatch_requestor.py index 3d3a396b..e9c89e1d 100644 --- a/tests/unit/test_gateway/test_dispatch_requestor.py +++ b/tests/unit/test_gateway/test_dispatch_requestor.py @@ -74,7 +74,9 @@ class TestServiceRequestor: """Test ServiceRequestor start method""" mock_pulsar_client = MagicMock() mock_sub_instance = AsyncMock() + mock_pub_instance = AsyncMock() mock_subscriber.return_value = mock_sub_instance + mock_publisher.return_value = mock_pub_instance requestor = ServiceRequestor( pulsar_client=mock_pulsar_client, @@ -87,8 +89,9 @@ class TestServiceRequestor: # Call start await requestor.start() - # Verify subscriber start was called + # Verify both subscriber and publisher start were called mock_sub_instance.start.assert_called_once() + mock_pub_instance.start.assert_called_once() assert requestor.running is True @patch('trustgraph.gateway.dispatch.requestor.Publisher') @@ -96,8 +99,8 @@ class TestServiceRequestor: def test_service_requestor_attributes(self, mock_subscriber, mock_publisher): """Test ServiceRequestor has correct attributes""" mock_pulsar_client = MagicMock() - mock_pub_instance = MagicMock() - mock_sub_instance = MagicMock() + mock_pub_instance = AsyncMock() + mock_sub_instance = AsyncMock() mock_publisher.return_value = mock_pub_instance mock_subscriber.return_value = mock_sub_instance diff --git a/tests/unit/test_gateway/test_endpoint_manager.py b/tests/unit/test_gateway/test_endpoint_manager.py index a4d0490a..4766f8d7 100644 --- a/tests/unit/test_gateway/test_endpoint_manager.py +++ b/tests/unit/test_gateway/test_endpoint_manager.py @@ -22,7 +22,8 @@ class TestEndpointManager: mock_dispatcher_manager.dispatch_flow_service.return_value = MagicMock() mock_dispatcher_manager.dispatch_flow_import.return_value = MagicMock() mock_dispatcher_manager.dispatch_flow_export.return_value = MagicMock() - mock_dispatcher_manager.dispatch_flow_stream.return_value = MagicMock() + mock_dispatcher_manager.dispatch_core_import.return_value = MagicMock() + mock_dispatcher_manager.dispatch_core_export.return_value = MagicMock() manager = EndpointManager( dispatcher_manager=mock_dispatcher_manager, @@ -47,7 +48,8 @@ class TestEndpointManager: mock_dispatcher_manager.dispatch_flow_service.return_value = MagicMock() mock_dispatcher_manager.dispatch_flow_import.return_value = MagicMock() mock_dispatcher_manager.dispatch_flow_export.return_value = MagicMock() - mock_dispatcher_manager.dispatch_flow_stream.return_value = MagicMock() + mock_dispatcher_manager.dispatch_core_import.return_value = MagicMock() + mock_dispatcher_manager.dispatch_core_export.return_value = MagicMock() manager = EndpointManager( dispatcher_manager=mock_dispatcher_manager, @@ -62,13 +64,14 @@ class TestEndpointManager: mock_dispatcher_manager = MagicMock() mock_auth = MagicMock() - # Mock dispatcher methods + # Mock dispatcher methods that are actually called mock_dispatcher_manager.dispatch_global_service.return_value = MagicMock() mock_dispatcher_manager.dispatch_socket.return_value = MagicMock() mock_dispatcher_manager.dispatch_flow_service.return_value = MagicMock() mock_dispatcher_manager.dispatch_flow_import.return_value = MagicMock() mock_dispatcher_manager.dispatch_flow_export.return_value = MagicMock() - mock_dispatcher_manager.dispatch_flow_stream.return_value = MagicMock() + mock_dispatcher_manager.dispatch_core_import.return_value = MagicMock() + mock_dispatcher_manager.dispatch_core_export.return_value = MagicMock() EndpointManager( dispatcher_manager=mock_dispatcher_manager, @@ -78,8 +81,9 @@ class TestEndpointManager: # Verify all dispatcher methods were called during initialization mock_dispatcher_manager.dispatch_global_service.assert_called_once() - mock_dispatcher_manager.dispatch_socket.assert_called() + mock_dispatcher_manager.dispatch_socket.assert_called() # Called twice mock_dispatcher_manager.dispatch_flow_service.assert_called_once() - mock_dispatcher_manager.dispatch_flow_import.assert_called() - mock_dispatcher_manager.dispatch_flow_export.assert_called() - mock_dispatcher_manager.dispatch_flow_stream.assert_called() \ No newline at end of file + mock_dispatcher_manager.dispatch_flow_import.assert_called_once() + mock_dispatcher_manager.dispatch_flow_export.assert_called_once() + mock_dispatcher_manager.dispatch_core_import.assert_called_once() + mock_dispatcher_manager.dispatch_core_export.assert_called_once() \ No newline at end of file diff --git a/tests/unit/test_gateway/test_endpoint_socket.py b/tests/unit/test_gateway/test_endpoint_socket.py index 7c7a127c..a6cdc66a 100644 --- a/tests/unit/test_gateway/test_endpoint_socket.py +++ b/tests/unit/test_gateway/test_endpoint_socket.py @@ -61,8 +61,8 @@ class TestSocketEndpoint: async def async_iter(): yield mock_msg - mock_ws = MagicMock() - mock_ws.__aiter__ = lambda: async_iter() + mock_ws = AsyncMock() + mock_ws.__aiter__ = lambda self: async_iter() mock_running = MagicMock() # Call listener method @@ -70,6 +70,9 @@ class TestSocketEndpoint: # Verify dispatcher.receive was called with the message mock_dispatcher.receive.assert_called_once_with(mock_msg) + # Verify cleanup methods were called + mock_running.stop.assert_called_once() + mock_ws.close.assert_called_once() @pytest.mark.asyncio async def test_listener_method_with_binary_message(self): @@ -87,8 +90,8 @@ class TestSocketEndpoint: async def async_iter(): yield mock_msg - mock_ws = MagicMock() - mock_ws.__aiter__ = lambda: async_iter() + mock_ws = AsyncMock() + mock_ws.__aiter__ = lambda self: async_iter() mock_running = MagicMock() # Call listener method @@ -96,6 +99,9 @@ class TestSocketEndpoint: # Verify dispatcher.receive was called with the message mock_dispatcher.receive.assert_called_once_with(mock_msg) + # Verify cleanup methods were called + mock_running.stop.assert_called_once() + mock_ws.close.assert_called_once() @pytest.mark.asyncio async def test_listener_method_with_close_message(self): @@ -113,12 +119,15 @@ class TestSocketEndpoint: async def async_iter(): yield mock_msg - mock_ws = MagicMock() - mock_ws.__aiter__ = lambda: async_iter() + mock_ws = AsyncMock() + mock_ws.__aiter__ = lambda self: async_iter() mock_running = MagicMock() # Call listener method await endpoint.listener(mock_ws, mock_dispatcher, mock_running) # Verify dispatcher.receive was NOT called for close message - mock_dispatcher.receive.assert_not_called() \ No newline at end of file + mock_dispatcher.receive.assert_not_called() + # Verify cleanup methods were called after break + mock_running.stop.assert_called_once() + mock_ws.close.assert_called_once() \ No newline at end of file