| from fastapi.testclient import TestClient | |
| from ddgs_api.api import create_app | |
| def test_health_endpoint_returns_ok(monkeypatch): | |
| monkeypatch.setenv("API_BEARER_TOKEN", "secret-token") | |
| client = TestClient(create_app()) | |
| response = client.get("/health") | |
| assert response.status_code == 200 | |
| assert response.json() == {"status": "ok"} | |
| def test_search_requires_authorization_header(monkeypatch): | |
| monkeypatch.setenv("API_BEARER_TOKEN", "secret-token") | |
| client = TestClient(create_app()) | |
| response = client.post("/search", json={"query": "openai"}) | |
| assert response.status_code == 401 | |
| assert response.json() == {"detail": "Unauthorized"} | |
| def test_search_returns_results(monkeypatch): | |
| monkeypatch.setenv("API_BEARER_TOKEN", "secret-token") | |
| monkeypatch.setenv("DDGS_REGION", "wt-wt") | |
| captured = {} | |
| def fake_search(query, **kwargs): | |
| captured["query"] = query | |
| captured["kwargs"] = kwargs | |
| return [{"title": "Result", "href": "https://example.com", "markdown": "content"}] | |
| monkeypatch.setattr("ddgs_api.api.ddgs_search", fake_search) | |
| client = TestClient(create_app()) | |
| response = client.post( | |
| "/search", | |
| headers={"Authorization": "Bearer secret-token"}, | |
| json={"query": "openai", "max_results": 1}, | |
| ) | |
| assert response.status_code == 200 | |
| payload = response.json() | |
| assert payload["query"] == "openai" | |
| assert payload["count"] == 1 | |
| assert payload["results"][0]["title"] == "Result" | |
| assert captured["query"] == "openai" | |
| assert captured["kwargs"]["region"] == "wt-wt" | |
| assert captured["kwargs"]["max_results"] == 1 | |