mirror of
https://github.com/lnbits/lnbits.git
synced 2025-03-29 11:12:11 +01:00
* [FEAT] improve update_admin_settings while working on the push notification pr i found it very hard just to update 2 settings inside the db, so i improved upon update_admin_settings. now you just need to provide a dict with key/values you want to update inside db. also debugging the endpoints for update_settings i found despite the type of `EditableSettings` fastapi did in fact pass a dict. * t * use `EditableSettings` as param in update_settings * fix settings model validation we previously overrode the pydantic validation with our own method * make `LnbitsSettings` a `BaseModel` and only add `BaseSettings` later this allows us to instantiate `EditableSettings` without the environment values being loaded in * add test * forbid extra fields in update api * fixup * add test * test datadir * move UpdateSettings * fix compat * fixup webpush --------- Co-authored-by: jacksn <jkranawetter05@gmail.com>
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
import pytest
|
|
|
|
from lnbits.settings import settings
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
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.asyncio
|
|
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.asyncio
|
|
async def test_admin_update_settings(client, superuser):
|
|
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.asyncio
|
|
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
|