| """Tests for malformed proxy env var and base URL validation. |
| |
| Salvaged from PR #6403 by MestreY0d4-Uninter — validates that the agent |
| surfaces clear errors instead of cryptic httpx ``Invalid port`` exceptions |
| when proxy env vars or custom endpoint URLs are malformed. |
| """ |
| from __future__ import annotations |
|
|
| import os |
|
|
| import pytest |
|
|
| from agent.auxiliary_client import _validate_base_url, _validate_proxy_env_urls |
|
|
|
|
| |
|
|
|
|
| def test_proxy_env_accepts_normal_values(monkeypatch): |
| monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:6153") |
| monkeypatch.setenv("HTTPS_PROXY", "https://proxy.example.com:8443") |
| monkeypatch.setenv("ALL_PROXY", "socks5://127.0.0.1:1080") |
| _validate_proxy_env_urls() |
|
|
|
|
| def test_proxy_env_accepts_empty(monkeypatch): |
| monkeypatch.delenv("HTTP_PROXY", raising=False) |
| monkeypatch.delenv("HTTPS_PROXY", raising=False) |
| monkeypatch.delenv("ALL_PROXY", raising=False) |
| monkeypatch.delenv("http_proxy", raising=False) |
| monkeypatch.delenv("https_proxy", raising=False) |
| monkeypatch.delenv("all_proxy", raising=False) |
| _validate_proxy_env_urls() |
|
|
|
|
| def test_proxy_env_normalizes_socks_alias(monkeypatch): |
| monkeypatch.setenv("ALL_PROXY", "socks://127.0.0.1:1080/") |
| _validate_proxy_env_urls() |
| assert os.environ["ALL_PROXY"] == "socks5://127.0.0.1:1080/" |
|
|
|
|
| @pytest.mark.parametrize("key", [ |
| "HTTP_PROXY", "HTTPS_PROXY", "ALL_PROXY", |
| "http_proxy", "https_proxy", "all_proxy", |
| ]) |
| def test_proxy_env_rejects_malformed_port(monkeypatch, key): |
| monkeypatch.setenv(key, "http://127.0.0.1:6153export") |
| with pytest.raises(RuntimeError, match=rf"Malformed proxy environment variable {key}=.*6153export"): |
| _validate_proxy_env_urls() |
|
|
|
|
| |
|
|
|
|
| @pytest.mark.parametrize("url", [ |
| "https://api.example.com/v1", |
| "http://127.0.0.1:6153/v1", |
| "acp://copilot", |
| "", |
| None, |
| ]) |
| def test_base_url_accepts_valid(url): |
| _validate_base_url(url) |
|
|
|
|
| def test_base_url_rejects_malformed_port(): |
| with pytest.raises(RuntimeError, match="Malformed custom endpoint URL"): |
| _validate_base_url("http://127.0.0.1:6153export") |
|
|