"""Contains tests for networking.py and app.py""" import os from fastapi.testclient import TestClient from gradio import Interface, networking from gradio.route_utils import API_PREFIX os.environ["GRADIO_ANALYTICS_ENABLED"] = "False" class TestInterfaceErrors: def test_processing_error(self): io = Interface(lambda x: 1 / x, "number", "number") app, _, _ = io.launch(show_error=True, prevent_thread_lock=True) client = TestClient(app) response = client.post( f"{API_PREFIX}/api/predict/", json={"data": [0], "fn_index": 0} ) assert response.status_code == 500 assert "error" in response.json() io.close() def test_validation_error(self): io = Interface(lambda x: 1 / x, "number", "number") app, _, _ = io.launch(show_error=True, prevent_thread_lock=True) client = TestClient(app) response = client.post(f"{API_PREFIX}/api/predict/", json={"fn_index": [0]}) assert response.status_code == 422 io.close() class TestURLs: def test_url_ok(self): res = networking.url_ok("https://www.gradio.app") assert res def test_start_server_app_kwargs(): """ Test that start_server accepts app_kwargs and they're propagated to FastAPI. """ io = Interface(lambda x: x, "number", "number") app, _, _ = io.launch( show_error=True, prevent_thread_lock=True, app_kwargs={ "docs_url": f"{API_PREFIX}/docs", }, ) client = TestClient(app) assert client.get(f"{API_PREFIX}/docs").status_code == 200 io.close()