42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
import os
|
|
from typing import Generator
|
|
import pytest
|
|
from fastapi.testclient import TestClient
|
|
from decnet.web.api import app
|
|
from decnet.web.dependencies import repo
|
|
from decnet.env import DECNET_ADMIN_USER, DECNET_ADMIN_PASSWORD
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def setup_db() -> Generator[None, None, None]:
|
|
repo.db_path = "test_bounty_decnet.db"
|
|
if os.path.exists(repo.db_path):
|
|
os.remove(repo.db_path)
|
|
repo.reinitialize()
|
|
yield
|
|
if os.path.exists(repo.db_path):
|
|
os.remove(repo.db_path)
|
|
|
|
@pytest.fixture
|
|
def auth_token():
|
|
with TestClient(app) as client:
|
|
resp = client.post("/api/v1/auth/login", json={"username": DECNET_ADMIN_USER, "password": DECNET_ADMIN_PASSWORD})
|
|
return resp.json()["access_token"]
|
|
|
|
def test_add_and_get_bounty(auth_token):
|
|
with TestClient(app) as client:
|
|
# We can't directly call add_bounty from API yet (it's internal to ingester)
|
|
# But we can test the repository if we want, or mock a log line that triggers it.
|
|
# For now, let's test the endpoint returns 200 even if empty.
|
|
resp = client.get("/api/v1/bounty", headers={"Authorization": f"Bearer {auth_token}"})
|
|
assert resp.status_code == 200
|
|
data = resp.json()
|
|
assert "total" in data
|
|
assert "data" in data
|
|
assert isinstance(data["data"], list)
|
|
|
|
def test_bounty_pagination(auth_token):
|
|
with TestClient(app) as client:
|
|
resp = client.get("/api/v1/bounty?limit=1&offset=0", headers={"Authorization": f"Bearer {auth_token}"})
|
|
assert resp.status_code == 200
|
|
assert resp.json()["limit"] == 1
|