| """Tests for /system endpoints.""" | |
| import pytest | |
| async def test_version_endpoint(client): | |
| resp = await client.get("/api/v1/system/version") | |
| assert resp.status_code == 200 | |
| data = resp.json() | |
| assert "version" in data | |
| assert data["version"] # non-empty | |
| async def test_update_status_endpoint(client): | |
| resp = await client.get("/api/v1/system/update-status") | |
| assert resp.status_code == 200 | |
| data = resp.json() | |
| # Will return offline placeholder if GitHub unreachable / Redis missing — that's fine | |
| assert "current" in data | |
| assert "update_available" in data | |
| assert data["current"] | |
| async def test_admin_restart_requires_auth(client): | |
| resp = await client.post("/api/v1/admin/system/restart") | |
| assert resp.status_code in (401, 403) | |
| async def test_admin_restart_with_admin(client, admin_headers): | |
| resp = await client.post("/api/v1/admin/system/restart", headers=admin_headers) | |
| assert resp.status_code == 200 | |
| assert resp.json()["ok"] is True | |
| async def test_student_cannot_restart(client, auth_headers): | |
| resp = await client.post("/api/v1/admin/system/restart", headers=auth_headers) | |
| assert resp.status_code == 403 | |