omnigent-ai--omnigent
100 行
2.9 KiB
Python
100 行
2.9 KiB
Python
"""Tests for permission entity dataclasses."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from omnigent.entities.permission import ResolvedAccess, SessionPermission
|
|
|
|
# ── SessionPermission ─────────────────────────────────
|
|
|
|
|
|
def test_session_permission_construction() -> None:
|
|
perm = SessionPermission(
|
|
user_id="alice@example.com",
|
|
conversation_id="conv_abc123",
|
|
level=2,
|
|
)
|
|
assert perm.user_id == "alice@example.com"
|
|
assert perm.conversation_id == "conv_abc123"
|
|
assert perm.level == 2
|
|
|
|
|
|
def test_session_permission_public() -> None:
|
|
"""Public access uses the __public__ sentinel."""
|
|
perm = SessionPermission(
|
|
user_id="__public__",
|
|
conversation_id="conv_1",
|
|
level=1,
|
|
)
|
|
assert perm.user_id == "__public__"
|
|
assert perm.level == 1
|
|
|
|
|
|
def test_session_permission_is_mutable() -> None:
|
|
perm = SessionPermission(user_id="u", conversation_id="c", level=1)
|
|
perm.level = 3
|
|
assert perm.level == 3
|
|
|
|
|
|
# ── ResolvedAccess ────────────────────────────────────
|
|
|
|
|
|
def test_resolved_access_admin() -> None:
|
|
access = ResolvedAccess(
|
|
is_admin=True,
|
|
user_grant_level=None,
|
|
public_grant_level=None,
|
|
)
|
|
assert access.is_admin is True
|
|
assert access.user_grant_level is None
|
|
assert access.public_grant_level is None
|
|
|
|
|
|
def test_resolved_access_user_grant() -> None:
|
|
access = ResolvedAccess(
|
|
is_admin=False,
|
|
user_grant_level=2,
|
|
public_grant_level=None,
|
|
)
|
|
assert access.user_grant_level == 2
|
|
|
|
|
|
def test_resolved_access_public_grant() -> None:
|
|
access = ResolvedAccess(
|
|
is_admin=False,
|
|
user_grant_level=None,
|
|
public_grant_level=1,
|
|
)
|
|
assert access.public_grant_level == 1
|
|
|
|
|
|
def test_resolved_access_both_grants() -> None:
|
|
"""User may have both a direct grant and public access."""
|
|
access = ResolvedAccess(
|
|
is_admin=False,
|
|
user_grant_level=3,
|
|
public_grant_level=1,
|
|
)
|
|
assert access.user_grant_level == 3
|
|
assert access.public_grant_level == 1
|
|
|
|
|
|
def test_resolved_access_is_frozen() -> None:
|
|
access = ResolvedAccess(is_admin=False, user_grant_level=None, public_grant_level=None)
|
|
try:
|
|
access.is_admin = True # type: ignore[misc]
|
|
raise AssertionError("Expected FrozenInstanceError")
|
|
except AttributeError:
|
|
pass
|
|
|
|
|
|
def test_resolved_access_equality() -> None:
|
|
a = ResolvedAccess(is_admin=True, user_grant_level=3, public_grant_level=1)
|
|
b = ResolvedAccess(is_admin=True, user_grant_level=3, public_grant_level=1)
|
|
assert a == b
|
|
|
|
|
|
def test_resolved_access_inequality() -> None:
|
|
a = ResolvedAccess(is_admin=True, user_grant_level=3, public_grant_level=1)
|
|
b = ResolvedAccess(is_admin=False, user_grant_level=3, public_grant_level=1)
|
|
assert a != b
|