from unittest.mock import patch
from src.api_hook_client import ApiHookClient

def test_api_ask_client_method() -> None:
 """Tests the request_confirmation method in ApiHookClient."""
 client = ApiHookClient()
 # Mock the internal _make_request method
 with patch.object(client, '_make_request') as mock_make:
  # Simulate a successful confirmation
  mock_make.return_value = {"response": True}
  
  args = {"script": "echo hello", "base_dir": "."}
  result = client.request_confirmation("run_powershell", args)
  
  assert result is True
  mock_make.assert_called_once_with(
   'POST', 
   '/api/ask', 
   data={'type': 'tool_approval', 'tool': 'run_powershell', 'args': args},
   timeout=60.0
  )

def test_api_ask_client_rejection() -> None:
 client = ApiHookClient()
 with patch.object(client, '_make_request') as mock_make:
  mock_make.return_value = {"response": False}
  result = client.request_confirmation("run_powershell", {})
  assert result is False

def test_api_ask_client_error() -> None:
 client = ApiHookClient()
 with patch.object(client, '_make_request') as mock_make:
  mock_make.return_value = None
  result = client.request_confirmation("run_powershell", {})
  assert result is None