From 874dad5cc1886ed79cddbc4d12c8cc62f8f3db5e Mon Sep 17 00:00:00 2001 From: Mind-Dragon <262945885+Mind-Dragon@users.noreply.github.com> Date: Sat, 16 May 2026 16:49:28 +0200 Subject: [PATCH] test(delegation): add regression test for runtime missing 'provider' key Addresses reviewer feedback: when resolve_runtime_provider returns a dict without the 'provider' key, the result must be None regardless of configured_provider. This guards against malformed runtime responses. Test: test_runtime_missing_provider_key_returns_none --- tests/tools/test_delegate.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/tools/test_delegate.py b/tests/tools/test_delegate.py index 4a40f82b9aa..72c4c67f570 100644 --- a/tests/tools/test_delegate.py +++ b/tests/tools/test_delegate.py @@ -1079,6 +1079,24 @@ class TestDelegationCredentialResolution(unittest.TestCase): # Empty provider → early return with None (child inherits parent) self.assertIsNone(creds["provider"]) + @patch("hermes_cli.runtime_provider.resolve_runtime_provider") + def test_runtime_missing_provider_key_returns_none(self, mock_resolve): + """When resolve_runtime_provider returns a dict without 'provider' key, + the result must be None regardless of configured_provider. + This protects against malformed runtime responses. + """ + mock_resolve.return_value = { + # deliberately missing "provider" + "model": "some-model", + "base_url": "https://example.com/v1", + "api_key": "key-123", + "api_mode": "chat_completions", + } + parent = _make_mock_parent(depth=0) + cfg = {"model": "some-model", "provider": "crof.ai"} + creds = _resolve_delegation_credentials(cfg, parent) + self.assertIsNone(creds["provider"]) + class TestDelegationProviderIntegration(unittest.TestCase): """Integration tests: delegation config → _run_single_child → AIAgent construction."""