|
"""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() |
|
|