Initial curated RAGcore source from c16667f0c9397e2bfc8dd0255b114fba23c8d05e

This commit is contained in:
Public Source Publisher committed 2026-10-01 01:34:21 +02:00
commit 7ca726caf2
659 files changed
+98171

No files matched your search

@@ -0,0 +1,109 @@
"""Negative and matrix tests for centralized authorization."""
from __future__ import annotations
from uuid import uuid4
import pytest
from ragcore.application.authorization import AuthorizationService
from ragcore.domain.authorization import (
ROLE_PERMISSIONS,
Permission,
PermissionDenied,
Principal,
PrincipalType,
ResourceNotFound,
)
from ragcore.domain.control import Role
def principal(*roles: Role, active: bool = True) -> Principal:
return Principal(uuid4(), uuid4(), PrincipalType.HUMAN, frozenset(roles), active)
@pytest.mark.security
def test_deny_by_default_for_empty_or_unknown_role_context() -> None:
service = AuthorizationService()
current = principal()
assert not service.can(current, Permission.SEARCH, resource_workspace_id=current.workspace_id)
with pytest.raises(PermissionDenied, match="permission denied"):
service.authorize(current, Permission.SEARCH, resource_workspace_id=current.workspace_id)
@pytest.mark.security
def test_role_permission_matrix_is_explicit() -> None:
assert ROLE_PERMISSIONS[Role.VIEWER] == frozenset({Permission.DOCUMENT_READ, Permission.SEARCH})
assert Permission.SOURCE_MANAGE in ROLE_PERMISSIONS[Role.EDITOR]
assert Permission.GRANT_MANAGE in ROLE_PERMISSIONS[Role.SPACE_MANAGER]
assert Permission.AUDIT_READ in ROLE_PERMISSIONS[Role.AUDITOR]
assert ROLE_PERMISSIONS[Role.PLATFORM_ADMIN] == frozenset(Permission)
@pytest.mark.security
def test_authorization_requires_active_principal_and_same_workspace() -> None:
service = AuthorizationService()
current = principal(Role.WORKSPACE_ADMIN)
assert service.can(
current, Permission.APPLICATION_MANAGE, resource_workspace_id=current.workspace_id
)
assert not service.can(current, Permission.APPLICATION_MANAGE, resource_workspace_id=uuid4())
assert not service.can(
principal(Role.WORKSPACE_ADMIN, active=False),
Permission.APPLICATION_MANAGE,
resource_workspace_id=current.workspace_id,
)
@pytest.mark.security
def test_hidden_resource_denial_does_not_leak_existence() -> None:
service = AuthorizationService()
viewer = principal(Role.VIEWER)
with pytest.raises(ResourceNotFound) as error:
service.authorize(
viewer, Permission.APPLICATION_MANAGE, resource_workspace_id=viewer.workspace_id
)
assert str(error.value) == "resource not found"
assert error.value.code == "RESOURCE_NOT_FOUND"
@pytest.mark.security
def test_resource_workspace_mismatch_is_hidden_when_requested() -> None:
service = AuthorizationService()
viewer = principal(Role.VIEWER)
with pytest.raises(ResourceNotFound):
service.authorize(
viewer,
Permission.DOCUMENT_READ,
resource_workspace_id=uuid4(),
)
@pytest.mark.security
def test_resource_workspace_context_is_mandatory_at_the_api_boundary() -> None:
service = AuthorizationService()
viewer = principal(Role.VIEWER)
with pytest.raises(TypeError):
service.authorize(viewer, Permission.SEARCH) # type: ignore[call-arg]
@pytest.mark.security
def test_malformed_active_state_is_rejected_instead_of_treated_as_truthy() -> None:
with pytest.raises(ValueError, match="active state must be a boolean"):
Principal(uuid4(), uuid4(), PrincipalType.HUMAN, frozenset({Role.VIEWER}), "false") # type: ignore[arg-type]
@pytest.mark.security
def test_action_denial_is_403_while_resource_denial_is_centrally_hidden() -> None:
service = AuthorizationService()
viewer = principal(Role.VIEWER)
with pytest.raises(PermissionDenied, match="permission denied"):
service.authorize(
viewer, Permission.ANSWER, resource_workspace_id=viewer.workspace_id
)