test: add unit tests for roles, web deps, use cases, VO boundaries — reach 70% coverage
Some checks failed
ci/woodpecker/pr/pipeline Pipeline failed
Some checks failed
ci/woodpecker/pr/pipeline Pipeline failed
This commit is contained in:
131
tests/unit/presentation/test_web_deps.py
Normal file
131
tests/unit/presentation/test_web_deps.py
Normal file
@@ -0,0 +1,131 @@
|
||||
"""Tests for web dependencies."""
|
||||
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from app.domain.roles import Role
|
||||
from app.presentation.web.deps import (
|
||||
can_create_post,
|
||||
can_delete_post,
|
||||
can_edit_post,
|
||||
can_see_draft,
|
||||
get_user_role,
|
||||
)
|
||||
|
||||
|
||||
class TestGetUserRole:
|
||||
"""Test get_user_role function."""
|
||||
|
||||
def test_none_returns_guest(self) -> None:
|
||||
"""Test None user returns GUEST role."""
|
||||
assert get_user_role(None) == Role.GUEST
|
||||
|
||||
def test_admin_roles(self) -> None:
|
||||
"""Test admin role detection."""
|
||||
user = MagicMock()
|
||||
user.roles = ["admin"]
|
||||
assert get_user_role(user) == Role.ADMIN
|
||||
|
||||
def test_user_roles(self) -> None:
|
||||
"""Test user role detection."""
|
||||
user = MagicMock()
|
||||
user.roles = ["user"]
|
||||
assert get_user_role(user) == Role.USER
|
||||
|
||||
def test_empty_roles_returns_guest(self) -> None:
|
||||
"""Test empty roles list returns GUEST."""
|
||||
user = MagicMock()
|
||||
user.roles = []
|
||||
assert get_user_role(user) == Role.GUEST
|
||||
|
||||
|
||||
class TestCanCreatePost:
|
||||
"""Test can_create_post function."""
|
||||
|
||||
def test_guest_cannot_create(self) -> None:
|
||||
"""Test guest cannot create posts."""
|
||||
assert can_create_post(None) is False
|
||||
|
||||
def test_user_can_create(self) -> None:
|
||||
"""Test user can create posts."""
|
||||
user = MagicMock()
|
||||
user.roles = ["user"]
|
||||
assert can_create_post(user) is True
|
||||
|
||||
def test_admin_can_create(self) -> None:
|
||||
"""Test admin can create posts."""
|
||||
user = MagicMock()
|
||||
user.roles = ["admin"]
|
||||
assert can_create_post(user) is True
|
||||
|
||||
|
||||
class TestCanEditPost:
|
||||
"""Test can_edit_post function."""
|
||||
|
||||
def test_guest_cannot_edit(self) -> None:
|
||||
"""Test guest cannot edit any post."""
|
||||
assert can_edit_post(None, "author-1") is False
|
||||
|
||||
def test_user_can_edit_own(self) -> None:
|
||||
"""Test user can edit own post."""
|
||||
user = MagicMock()
|
||||
user.roles = ["user"]
|
||||
user.user_id = "author-1"
|
||||
assert can_edit_post(user, "author-1") is True
|
||||
|
||||
def test_user_cannot_edit_other(self) -> None:
|
||||
"""Test user cannot edit other's post."""
|
||||
user = MagicMock()
|
||||
user.roles = ["user"]
|
||||
user.user_id = "user-2"
|
||||
assert can_edit_post(user, "author-1") is False
|
||||
|
||||
def test_admin_can_edit_any(self) -> None:
|
||||
"""Test admin can edit any post."""
|
||||
user = MagicMock()
|
||||
user.roles = ["admin"]
|
||||
user.user_id = "admin-1"
|
||||
assert can_edit_post(user, "author-1") is True
|
||||
|
||||
|
||||
class TestCanDeletePost:
|
||||
"""Test can_delete_post function."""
|
||||
|
||||
def test_delegates_to_can_edit(self) -> None:
|
||||
"""Test can_delete_post delegates to can_edit_post logic."""
|
||||
user = MagicMock()
|
||||
user.roles = ["user"]
|
||||
user.user_id = "author-1"
|
||||
assert can_delete_post(user, "author-1") is True
|
||||
|
||||
def test_guest_cannot_delete(self) -> None:
|
||||
"""Test guest cannot delete posts."""
|
||||
assert can_delete_post(None, "author-1") is False
|
||||
|
||||
|
||||
class TestCanSeeDraft:
|
||||
"""Test can_see_draft function."""
|
||||
|
||||
def test_guest_cannot_see(self) -> None:
|
||||
"""Test guest cannot see drafts."""
|
||||
assert can_see_draft(None, "author-1") is False
|
||||
|
||||
def test_user_can_see_own(self) -> None:
|
||||
"""Test user can see own draft."""
|
||||
user = MagicMock()
|
||||
user.roles = ["user"]
|
||||
user.user_id = "author-1"
|
||||
assert can_see_draft(user, "author-1") is True
|
||||
|
||||
def test_user_cannot_see_other(self) -> None:
|
||||
"""Test user cannot see other's draft."""
|
||||
user = MagicMock()
|
||||
user.roles = ["user"]
|
||||
user.user_id = "user-2"
|
||||
assert can_see_draft(user, "author-1") is False
|
||||
|
||||
def test_admin_can_see_any(self) -> None:
|
||||
"""Test admin can see any draft."""
|
||||
user = MagicMock()
|
||||
user.roles = ["admin"]
|
||||
user.user_id = "admin-1"
|
||||
assert can_see_draft(user, "author-1") is True
|
||||
Reference in New Issue
Block a user