@@ -0,0 +1,36 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user