Fix PyPI proxy tests to use ORCHARD_TEST_URL env var directly

This commit is contained in:
Mondo Diaz
2026-01-29 16:00:56 -06:00
parent aa3bd05d46
commit b4e23d9899

View File

@@ -1,6 +1,13 @@
"""Integration tests for PyPI transparent proxy.""" """Integration tests for PyPI transparent proxy."""
import os
import pytest import pytest
import httpx
def get_base_url():
"""Get the base URL for the Orchard server from environment."""
return os.environ.get("ORCHARD_TEST_URL", "http://localhost:8080")
class TestPyPIProxyEndpoints: class TestPyPIProxyEndpoints:
@@ -10,24 +17,27 @@ class TestPyPIProxyEndpoints:
""" """
@pytest.mark.integration @pytest.mark.integration
def test_pypi_simple_index_no_sources(self, unauthenticated_client): def test_pypi_simple_index_no_sources(self):
"""Test that /pypi/simple/ returns 503 when no sources configured.""" """Test that /pypi/simple/ returns 503 when no sources configured."""
response = unauthenticated_client.get("/pypi/simple/") with httpx.Client(base_url=get_base_url(), timeout=30.0) as client:
response = client.get("/pypi/simple/")
# Should return 503 when no PyPI upstream sources are configured # Should return 503 when no PyPI upstream sources are configured
assert response.status_code == 503 assert response.status_code == 503
assert "No PyPI upstream sources configured" in response.json()["detail"] assert "No PyPI upstream sources configured" in response.json()["detail"]
@pytest.mark.integration @pytest.mark.integration
def test_pypi_package_no_sources(self, unauthenticated_client): def test_pypi_package_no_sources(self):
"""Test that /pypi/simple/{package}/ returns 503 when no sources configured.""" """Test that /pypi/simple/{package}/ returns 503 when no sources configured."""
response = unauthenticated_client.get("/pypi/simple/requests/") with httpx.Client(base_url=get_base_url(), timeout=30.0) as client:
response = client.get("/pypi/simple/requests/")
assert response.status_code == 503 assert response.status_code == 503
assert "No PyPI upstream sources configured" in response.json()["detail"] assert "No PyPI upstream sources configured" in response.json()["detail"]
@pytest.mark.integration @pytest.mark.integration
def test_pypi_download_missing_upstream_param(self, unauthenticated_client): def test_pypi_download_missing_upstream_param(self):
"""Test that /pypi/simple/{package}/{filename} requires upstream param.""" """Test that /pypi/simple/{package}/{filename} requires upstream param."""
response = unauthenticated_client.get("/pypi/simple/requests/requests-2.31.0.tar.gz") with httpx.Client(base_url=get_base_url(), timeout=30.0) as client:
response = client.get("/pypi/simple/requests/requests-2.31.0.tar.gz")
assert response.status_code == 400 assert response.status_code == 400
assert "upstream" in response.json()["detail"].lower() assert "upstream" in response.json()["detail"].lower()
@@ -64,19 +74,20 @@ class TestPyPIPackageNormalization:
"""Tests for PyPI package name normalization.""" """Tests for PyPI package name normalization."""
@pytest.mark.integration @pytest.mark.integration
def test_package_name_normalized(self, unauthenticated_client): def test_package_name_normalized(self):
"""Test that package names are normalized per PEP 503.""" """Test that package names are normalized per PEP 503."""
# These should all be treated the same: # These should all be treated the same:
# requests, Requests, requests_, requests- # requests, Requests, requests_, requests-
# The endpoint normalizes to lowercase with hyphens # The endpoint normalizes to lowercase with hyphens
with httpx.Client(base_url=get_base_url(), timeout=30.0) as client:
# Without upstream sources, we get 503, but the normalization # Without upstream sources, we get 503, but the normalization
# happens before the source lookup # happens before the source lookup
response = unauthenticated_client.get("/pypi/simple/Requests/") response = client.get("/pypi/simple/Requests/")
assert response.status_code == 503 # No sources, but path was valid assert response.status_code == 503 # No sources, but path was valid
response = unauthenticated_client.get("/pypi/simple/some_package/") response = client.get("/pypi/simple/some_package/")
assert response.status_code == 503 assert response.status_code == 503
response = unauthenticated_client.get("/pypi/simple/some-package/") response = client.get("/pypi/simple/some-package/")
assert response.status_code == 503 assert response.status_code == 503