WealthFromAI's picture
FORGE-X: Upload source (cc89b44f-api.zip)
7995fd6 verified
Raw
History Blame Contribute Delete
2.74 kB
"""
Tests for QR Code Generator with Analytics API API.
"""
import pytest
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
def test_health():
r = client.get("/health")
assert r.status_code == 200
data = r.json()
assert data["status"] == "healthy"
assert "version" in data
def test_unauthorized():
r = client.get("/items")
assert r.status_code == 403
def test_login():
r = client.post("/auth/token", params={"username": "admin", "password": "admin123"})
assert r.status_code == 200
assert "access_token" in r.json()
def _auth_headers():
r = client.post("/auth/token", params={"username": "admin", "password": "admin123"})
token = r.json()["access_token"]
return {"Authorization": f"Bearer {token}"}
def test_create_item():
headers = _auth_headers()
payload = {"name": "Test Item", "description": "A test", "tags": ["test"]}
r = client.post("/items", json=payload, headers=headers)
assert r.status_code == 201
data = r.json()
assert data["name"] == "Test Item"
assert "id" in data
def test_list_items():
headers = _auth_headers()
r = client.get("/items", headers=headers)
assert r.status_code == 200
assert isinstance(r.json(), list)
def test_get_item():
headers = _auth_headers()
# Create
payload = {"name": "Get Test", "tags": []}
r = client.post("/items", json=payload, headers=headers)
item_id = r.json()["id"]
# Get
r = client.get(f"/items/{item_id}", headers=headers)
assert r.status_code == 200
assert r.json()["id"] == item_id
def test_update_item():
headers = _auth_headers()
payload = {"name": "Update Test", "tags": []}
r = client.post("/items", json=payload, headers=headers)
item_id = r.json()["id"]
r = client.patch(f"/items/{item_id}", json={"name": "Updated"}, headers=headers)
assert r.status_code == 200
assert r.json()["name"] == "Updated"
def test_delete_item():
headers = _auth_headers()
payload = {"name": "Delete Test", "tags": []}
r = client.post("/items", json=payload, headers=headers)
item_id = r.json()["id"]
r = client.delete(f"/items/{item_id}", headers=headers)
assert r.status_code == 204
r = client.get(f"/items/{item_id}", headers=headers)
assert r.status_code == 404
def test_stats():
headers = _auth_headers()
r = client.get("/stats", headers=headers)
assert r.status_code == 200
assert "total_items" in r.json()
def test_openapi_docs():
r = client.get("/openapi.json")
assert r.status_code == 200
assert "openapi" in r.json()