Fix PyPI proxy tests to use ORCHARD_TEST_URL env var directly
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user