import pytest

from lnbits.core.models import User
from lnbits.settings import Settings


@pytest.mark.anyio
async def test_admin_get_settings_permission_denied(client, from_user):
    response = await client.get(f"/admin/api/v1/settings?usr={from_user.id}")
    assert response.status_code == 401


@pytest.mark.anyio
async def test_admin_get_settings(client, superuser):
    response = await client.get(f"/admin/api/v1/settings?usr={superuser.id}")
    assert response.status_code == 200
    result = response.json()
    assert "super_user" not in result


@pytest.mark.anyio
async def test_admin_update_settings(client, superuser: User, settings: Settings):
    new_site_title = "UPDATED SITETITLE"
    response = await client.put(
        f"/admin/api/v1/settings?usr={superuser.id}",
        json={"lnbits_site_title": new_site_title},
    )
    assert response.status_code == 200
    result = response.json()
    assert "status" in result
    assert result.get("status") == "Success"
    assert settings.lnbits_site_title == new_site_title


@pytest.mark.anyio
async def test_admin_update_noneditable_settings(client, superuser):
    response = await client.put(
        f"/admin/api/v1/settings?usr={superuser.id}",
        json={"super_user": "UPDATED"},
    )
    assert response.status_code == 400
