From fad63fcf4bcda3e2338b4839bb74564cca9b37eb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 18:22:48 +0000 Subject: [PATCH] test: add endpoint registration verification tests Add comprehensive tests to verify critical API endpoints are registered, including the /api/process-url endpoint. These tests will prevent future regressions where endpoints might not be properly registered in the app. Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- tests/test_endpoint_registration.py | 64 +++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tests/test_endpoint_registration.py diff --git a/tests/test_endpoint_registration.py b/tests/test_endpoint_registration.py new file mode 100644 index 00000000..bd0a1b01 --- /dev/null +++ b/tests/test_endpoint_registration.py @@ -0,0 +1,64 @@ +""" +Tests to verify that all critical API endpoints are properly registered. + +This test module serves as a regression prevention mechanism to ensure +that endpoints remain accessible after code refactoring or reorganization. +""" + +import pytest + + +@pytest.mark.unit +class TestEndpointRegistration: + """Verify that critical API endpoints are registered in the FastAPI app""" + + def test_process_url_endpoint_exists(self, client): + """Verify that /api/process-url endpoint is registered and accessible""" + # Make a request to the endpoint - it should not return 404 + response = client.post( + "/api/process-url", + json={"url": "https://example.com/test.pdf"} + ) + + # The endpoint exists if we don't get a 404 + # We may get other errors (401, 400, 500, etc.) due to validation or missing mocks, + # but 404 specifically means the endpoint is not registered + assert response.status_code != 404, ( + f"Endpoint /api/process-url returned 404 (not found). " + f"This indicates the router is not properly registered in the application. " + f"Verify that url_upload_router is included in app/api/__init__.py" + ) + + def test_process_url_endpoint_accepts_post(self, client): + """Verify that /api/process-url accepts POST requests""" + # Try POST request + response = client.post( + "/api/process-url", + json={"url": "https://example.com/test.pdf"} + ) + + # Should not return 405 (Method Not Allowed) + assert response.status_code != 405, ( + f"Endpoint /api/process-url returned 405 (Method Not Allowed) for POST. " + f"Verify the endpoint is decorated with @router.post()" + ) + + def test_api_router_included_in_app(self, client): + """Verify that the main API router is included in the FastAPI app""" + # Test a few known API endpoints to ensure the /api prefix works + endpoints_to_check = [ + ("/api/process-url", "post"), + ("/api/diagnostic/settings", "get"), + ] + + for endpoint, method in endpoints_to_check: + if method == "get": + response = client.get(endpoint) + else: + response = client.post(endpoint, json={"url": "https://example.com/test.pdf"}) + + # None of these should return 404 + assert response.status_code != 404, ( + f"Endpoint {endpoint} returned 404. " + f"Verify that api_router is included in app/main.py with prefix='/api'" + )