Files
devplacepy/tests/api/admin/nodes/settings.py
T
retoor 6f80a820da
DevPlace CI / test (push) Failing after 3m13s
Zo doen wijdat in oost
2026-10-16 07:20:44 +02:00

37 lines
1.6 KiB
Python

# retoor <retoor@molodetz.nl>
from devplacepy.database import get_setting, set_setting
from devplacepy.database.nodes import LIMITS
from tests.api.admin.nodes.conftest import admin_headers
from tests.api.nodes.conftest import make_member
KEYS = ("nodes_max_total", "nodes_daily_quota_user", "nodes_social_via_nodes")
def test_member_cannot_change_settings(client):
member = make_member()
assert client.post("/admin/nodes/settings", json={"nodes_max_total": 1}, headers=admin_headers(member)).status_code == 403
def test_only_submitted_fields_change_and_ceilings_clamp(client, admin):
previous = {key: get_setting(key, "") for key in KEYS}
try:
response = client.post(
"/admin/nodes/settings",
json={"nodes_max_total": LIMITS.max_connected_nodes + 500, "nodes_social_via_nodes": "1"},
headers=admin_headers(admin),
)
data = response.json()["data"]
assert "nodes_max_total" in data["clamped"]
assert get_setting("nodes_max_total", "") == str(LIMITS.max_connected_nodes)
assert get_setting("nodes_social_via_nodes", "") == "1"
assert get_setting("nodes_daily_quota_user", "") == previous["nodes_daily_quota_user"]
finally:
for key, value in previous.items():
set_setting(key, value)
def test_negative_and_unknown_values_are_rejected(client, admin):
assert client.post("/admin/nodes/settings", json={"nodes_max_total": -1}, headers=admin_headers(admin)).status_code in (400, 422)
assert client.post("/admin/nodes/settings", json={"nodes_social_via_nodes": "2"}, headers=admin_headers(admin)).status_code in (400, 422)