fix(tests): accept verify in endpoint HTTP mocks
Updates endpoint/model-route test HTTP mocks to accept the verify keyword argument passed by endpoint probing code. Restores one focused part of the Python CI baseline tracked in #2580.
This commit is contained in:
committed by
GitHub
parent
1f00fff837
commit
3b292403dc
@@ -78,7 +78,7 @@ class TestProbeEndpointParsing:
|
|||||||
_patch_resolve(monkeypatch)
|
_patch_resolve(monkeypatch)
|
||||||
monkeypatch.setattr(
|
monkeypatch.setattr(
|
||||||
model_routes.httpx, "get",
|
model_routes.httpx, "get",
|
||||||
lambda url, headers=None, timeout=None: _resp(
|
lambda url, headers=None, timeout=None, verify=None, **kwargs: _resp(
|
||||||
200, json={"data": [{"id": "gpt-4o"}, {"id": "gpt-4o-mini"}]}),
|
200, json={"data": [{"id": "gpt-4o"}, {"id": "gpt-4o-mini"}]}),
|
||||||
)
|
)
|
||||||
assert _probe_endpoint("https://api.example.com/v1", "key") == ["gpt-4o", "gpt-4o-mini"]
|
assert _probe_endpoint("https://api.example.com/v1", "key") == ["gpt-4o", "gpt-4o-mini"]
|
||||||
@@ -89,7 +89,7 @@ class TestProbeEndpointParsing:
|
|||||||
# honoring both the "name" and "model" keys.
|
# honoring both the "name" and "model" keys.
|
||||||
monkeypatch.setattr(
|
monkeypatch.setattr(
|
||||||
model_routes.httpx, "get",
|
model_routes.httpx, "get",
|
||||||
lambda url, headers=None, timeout=None: _resp(
|
lambda url, headers=None, timeout=None, verify=None, **kwargs: _resp(
|
||||||
200, json={"models": [{"name": "llama3:8b"}, {"model": "qwen3:4b"}]}),
|
200, json={"models": [{"name": "llama3:8b"}, {"model": "qwen3:4b"}]}),
|
||||||
)
|
)
|
||||||
assert _probe_endpoint("https://api.example.com/v1") == ["llama3:8b", "qwen3:4b"]
|
assert _probe_endpoint("https://api.example.com/v1") == ["llama3:8b", "qwen3:4b"]
|
||||||
@@ -98,7 +98,7 @@ class TestProbeEndpointParsing:
|
|||||||
_patch_resolve(monkeypatch)
|
_patch_resolve(monkeypatch)
|
||||||
seen = []
|
seen = []
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
seen.append(url)
|
seen.append(url)
|
||||||
if url.endswith("/api/tags"):
|
if url.endswith("/api/tags"):
|
||||||
return _resp(200, json={"models": [{"name": "llama3:8b"}]})
|
return _resp(200, json={"models": [{"name": "llama3:8b"}]})
|
||||||
@@ -114,7 +114,7 @@ class TestProbeEndpointParsing:
|
|||||||
_patch_resolve(monkeypatch)
|
_patch_resolve(monkeypatch)
|
||||||
monkeypatch.setattr(
|
monkeypatch.setattr(
|
||||||
model_routes.httpx, "get",
|
model_routes.httpx, "get",
|
||||||
lambda url, headers=None, timeout=None: _resp(200, json={"data": []}),
|
lambda url, headers=None, timeout=None, verify=None, **kwargs: _resp(200, json={"data": []}),
|
||||||
)
|
)
|
||||||
assert _probe_endpoint("https://api.example.com/v1") == []
|
assert _probe_endpoint("https://api.example.com/v1") == []
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ class TestPingEndpoint:
|
|||||||
_patch_resolve(monkeypatch)
|
_patch_resolve(monkeypatch)
|
||||||
monkeypatch.setattr(
|
monkeypatch.setattr(
|
||||||
model_routes.httpx, "get",
|
model_routes.httpx, "get",
|
||||||
lambda url, headers=None, timeout=None: _resp(200),
|
lambda url, headers=None, timeout=None, verify=None, **kwargs: _resp(200),
|
||||||
)
|
)
|
||||||
assert _ping_endpoint("https://api.example.com/v1", "key") == {
|
assert _ping_endpoint("https://api.example.com/v1", "key") == {
|
||||||
"reachable": True, "status_code": 200, "error": None,
|
"reachable": True, "status_code": 200, "error": None,
|
||||||
@@ -137,7 +137,7 @@ class TestPingEndpoint:
|
|||||||
# A 401 means the server answered — surface the status, not "offline".
|
# A 401 means the server answered — surface the status, not "offline".
|
||||||
monkeypatch.setattr(
|
monkeypatch.setattr(
|
||||||
model_routes.httpx, "get",
|
model_routes.httpx, "get",
|
||||||
lambda url, headers=None, timeout=None: _resp(401),
|
lambda url, headers=None, timeout=None, verify=None, **kwargs: _resp(401),
|
||||||
)
|
)
|
||||||
assert _ping_endpoint("https://api.example.com/v1", "bad") == {
|
assert _ping_endpoint("https://api.example.com/v1", "bad") == {
|
||||||
"reachable": False, "status_code": 401, "error": "HTTP 401",
|
"reachable": False, "status_code": 401, "error": "HTTP 401",
|
||||||
@@ -146,7 +146,7 @@ class TestPingEndpoint:
|
|||||||
def test_detects_odysseus_login_redirect(self, monkeypatch):
|
def test_detects_odysseus_login_redirect(self, monkeypatch):
|
||||||
_patch_resolve(monkeypatch)
|
_patch_resolve(monkeypatch)
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
return _resp(302, headers={"location": "/login?next=/"})
|
return _resp(302, headers={"location": "/login?next=/"})
|
||||||
|
|
||||||
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
||||||
@@ -158,7 +158,7 @@ class TestPingEndpoint:
|
|||||||
def test_generic_redirect_reported(self, monkeypatch):
|
def test_generic_redirect_reported(self, monkeypatch):
|
||||||
_patch_resolve(monkeypatch)
|
_patch_resolve(monkeypatch)
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
return _resp(301, headers={"location": "https://elsewhere.example/"})
|
return _resp(301, headers={"location": "https://elsewhere.example/"})
|
||||||
|
|
||||||
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
||||||
@@ -169,7 +169,7 @@ class TestPingEndpoint:
|
|||||||
def test_transport_error_is_unreachable(self, monkeypatch):
|
def test_transport_error_is_unreachable(self, monkeypatch):
|
||||||
_patch_resolve(monkeypatch)
|
_patch_resolve(monkeypatch)
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
raise httpx.ConnectError("Connection refused")
|
raise httpx.ConnectError("Connection refused")
|
||||||
|
|
||||||
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
||||||
@@ -181,7 +181,7 @@ class TestPingEndpoint:
|
|||||||
def test_ollama_native_version_fallback(self, monkeypatch):
|
def test_ollama_native_version_fallback(self, monkeypatch):
|
||||||
_patch_resolve(monkeypatch)
|
_patch_resolve(monkeypatch)
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
if url.endswith("/api/version"):
|
if url.endswith("/api/version"):
|
||||||
return _resp(200)
|
return _resp(200)
|
||||||
# The OpenAI-compatible /v1/models surface is down on this build.
|
# The OpenAI-compatible /v1/models surface is down on this build.
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ class TestClassifyEndpoint:
|
|||||||
def fake_head(*args, **kwargs):
|
def fake_head(*args, **kwargs):
|
||||||
raise AssertionError("generic proxy health check should not use HEAD")
|
raise AssertionError("generic proxy health check should not use HEAD")
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
seen.append(("GET", url))
|
seen.append(("GET", url))
|
||||||
request = httpx.Request("GET", url)
|
request = httpx.Request("GET", url)
|
||||||
return httpx.Response(200, request=request)
|
return httpx.Response(200, request=request)
|
||||||
@@ -376,7 +376,7 @@ class TestSetupProbeSafety:
|
|||||||
monkeypatch.setattr(endpoint_resolver, "resolve_url", lambda url: url, raising=False)
|
monkeypatch.setattr(endpoint_resolver, "resolve_url", lambda url: url, raising=False)
|
||||||
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
request = httpx.Request("GET", url)
|
request = httpx.Request("GET", url)
|
||||||
response = httpx.Response(401, request=request)
|
response = httpx.Response(401, request=request)
|
||||||
raise httpx.HTTPStatusError("unauthorized", request=request, response=response)
|
raise httpx.HTTPStatusError("unauthorized", request=request, response=response)
|
||||||
@@ -389,7 +389,7 @@ class TestSetupProbeSafety:
|
|||||||
monkeypatch.setattr(endpoint_resolver, "resolve_url", lambda url: url, raising=False)
|
monkeypatch.setattr(endpoint_resolver, "resolve_url", lambda url: url, raising=False)
|
||||||
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
raise httpx.ConnectError("offline")
|
raise httpx.ConnectError("offline")
|
||||||
|
|
||||||
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
||||||
@@ -400,7 +400,7 @@ class TestSetupProbeSafety:
|
|||||||
monkeypatch.setattr(endpoint_resolver, "resolve_url", lambda url: url, raising=False)
|
monkeypatch.setattr(endpoint_resolver, "resolve_url", lambda url: url, raising=False)
|
||||||
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
raise httpx.ConnectError("offline")
|
raise httpx.ConnectError("offline")
|
||||||
|
|
||||||
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
||||||
@@ -412,7 +412,7 @@ class TestSetupProbeSafety:
|
|||||||
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
||||||
seen = []
|
seen = []
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
seen.append(url)
|
seen.append(url)
|
||||||
request = httpx.Request("GET", url)
|
request = httpx.Request("GET", url)
|
||||||
response = httpx.Response(
|
response = httpx.Response(
|
||||||
@@ -432,7 +432,7 @@ class TestSetupProbeSafety:
|
|||||||
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
||||||
seen = []
|
seen = []
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
seen.append((url, headers))
|
seen.append((url, headers))
|
||||||
request = httpx.Request("GET", url)
|
request = httpx.Request("GET", url)
|
||||||
response = httpx.Response(
|
response = httpx.Response(
|
||||||
@@ -451,7 +451,7 @@ class TestSetupProbeSafety:
|
|||||||
monkeypatch.setattr(endpoint_resolver, "resolve_url", lambda url: url, raising=False)
|
monkeypatch.setattr(endpoint_resolver, "resolve_url", lambda url: url, raising=False)
|
||||||
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
monkeypatch.setattr(model_routes, "_normalize_base", lambda url: url.rstrip("/"))
|
||||||
|
|
||||||
def fake_get(url, headers=None, timeout=None):
|
def fake_get(url, headers=None, timeout=None, verify=None, **kwargs):
|
||||||
raise httpx.ConnectError("offline")
|
raise httpx.ConnectError("offline")
|
||||||
|
|
||||||
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
monkeypatch.setattr(model_routes.httpx, "get", fake_get)
|
||||||
|
|||||||
Reference in New Issue
Block a user