Files
odysseus/tests/test_set_privileges_validation.py
T

43 lines
1.2 KiB
Python

"""set_privileges rejects mistyped values instead of storing them (issue #6829)."""
import pytest
from tests.test_set_admin import _fresh_auth_manager
@pytest.mark.parametrize("privs", [
{"can_use_bash": "no"},
{"can_use_bash": 1},
{"max_messages_per_day": "abc"},
{"max_messages_per_day": True},
{"allowed_models": "gpt"},
{"block_all_models": None},
])
def test_set_privileges_rejects_mistyped_values(tmp_path, privs):
_, mgr = _fresh_auth_manager(tmp_path)
mgr.create_user("bob", "pw-123456")
before = dict(mgr.get_privileges("bob"))
with pytest.raises(ValueError):
mgr.set_privileges("bob", privs)
assert mgr.get_privileges("bob") == before
def test_set_privileges_accepts_well_typed_values(tmp_path):
_, mgr = _fresh_auth_manager(tmp_path)
mgr.create_user("bob", "pw-123456")
assert mgr.set_privileges("bob", {
"can_use_bash": True,
"max_messages_per_day": 25,
"allowed_models": ["gpt"],
"unknown_key": "ignored",
}) is True
privs = mgr.get_privileges("bob")
assert privs["can_use_bash"] is True
assert privs["max_messages_per_day"] == 25
assert privs["allowed_models"] == ["gpt"]
assert "unknown_key" not in privs