| import json | |
| from unittest.mock import MagicMock | |
| import pytest | |
| from config.nim import NimSettings | |
| from providers.base import ProviderConfig | |
| from providers.common import ContentBlockManager | |
| from providers.nvidia_nim import NvidiaNimProvider | |
| async def test_task_tool_interception(): | |
| # Setup provider | |
| config = ProviderConfig(api_key="test") | |
| provider = NvidiaNimProvider(config, nim_settings=NimSettings()) | |
| # Mock request and sse builder with real ContentBlockManager | |
| request = MagicMock() | |
| request.model = "test-model" | |
| sse = MagicMock() | |
| sse.blocks = ContentBlockManager() | |
| # Tool call data (Task tool) | |
| tc = { | |
| "index": 0, | |
| "id": "tool_123", | |
| "function": { | |
| "name": "Task", | |
| "arguments": json.dumps( | |
| { | |
| "description": "test task", | |
| "prompt": "do something", | |
| "run_in_background": True, | |
| } | |
| ), | |
| }, | |
| } | |
| # Call the method (consume generator to trigger side effects) | |
| list(provider._process_tool_call(tc, sse)) | |
| # Find the emit_tool_delta call and check args | |
| calls = sse.emit_tool_delta.call_args_list | |
| assert len(calls) > 0 | |
| args_passed = json.loads(calls[0][0][1]) | |
| assert args_passed["run_in_background"] is False | |
| if __name__ == "__main__": | |
| import asyncio | |
| asyncio.run(test_task_tool_interception()) | |