37 lines
1.6 KiB
Python
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)
|