Fix Credo Design in test support and member index test

Add aliases in fixtures, conn_case, data_case. Use aliases
in index_test.exs. Remove empty placeholder test files.
This commit is contained in:
Moritz 2026-03-03 19:04:07 +01:00
parent 7a8b069834
commit e537f4eb31
Signed by: moritz
GPG key ID: 1020A035E5DD0824
6 changed files with 132 additions and 118 deletions

View file

@ -17,6 +17,14 @@ defmodule MvWeb.ConnCase do
use ExUnit.CaseTemplate
alias AshAuthentication.Plug.Helpers, as: AuthPlugHelpers
alias Mv.Accounts
alias Mv.Authorization.Actor
alias Mv.DataCase
alias Mv.Fixtures
alias Mv.Helpers.SystemActor
alias Phoenix.ConnTest
using do
quote do
# The default endpoint for testing
@ -92,8 +100,8 @@ defmodule MvWeb.ConnCase do
def sign_in_user_via_oidc(conn, user) do
# Mock OIDC sign-in by creating a token directly
conn
|> Phoenix.ConnTest.init_test_session(%{})
|> AshAuthentication.Plug.Helpers.store_in_session(user)
|> ConnTest.init_test_session(%{})
|> AuthPlugHelpers.store_in_session(user)
end
@doc """
@ -114,8 +122,8 @@ defmodule MvWeb.ConnCase do
user = create_test_user(Map.merge(default_attrs, user_attrs))
# Create admin role and assign it
admin_role = Mv.Fixtures.role_fixture("admin")
system_actor = Mv.Helpers.SystemActor.get_system_actor()
admin_role = Fixtures.role_fixture("admin")
system_actor = SystemActor.get_system_actor()
{:ok, user} =
user
@ -124,7 +132,7 @@ defmodule MvWeb.ConnCase do
|> Ash.update(actor: system_actor)
# Load role for authorization
user_with_role = Ash.load!(user, :role, domain: Mv.Accounts, actor: system_actor)
user_with_role = Ash.load!(user, :role, domain: Accounts, actor: system_actor)
sign_in_user_via_oidc(conn, user_with_role)
end
@ -134,8 +142,8 @@ defmodule MvWeb.ConnCase do
"""
def conn_with_password_user(conn, user) do
conn
|> Phoenix.ConnTest.init_test_session(%{})
|> AshAuthentication.Plug.Helpers.store_in_session(user)
|> ConnTest.init_test_session(%{})
|> AuthPlugHelpers.store_in_session(user)
end
@doc """
@ -143,14 +151,14 @@ defmodule MvWeb.ConnCase do
This is useful for tests that need full access to resources.
"""
def conn_with_admin_user(conn) do
admin_user = Mv.Fixtures.user_with_role_fixture("admin")
admin_user = Fixtures.user_with_role_fixture("admin")
conn_with_password_user(conn, admin_user)
end
setup tags do
pid = Mv.DataCase.setup_sandbox(tags)
pid = DataCase.setup_sandbox(tags)
conn = Phoenix.ConnTest.build_conn()
conn = ConnTest.build_conn()
# Set metadata for Phoenix.Ecto.SQL.Sandbox plug to allow LiveView processes
# to share the test's database connection in async tests
conn = Plug.Conn.put_private(conn, :ecto_sandbox, pid)
@ -164,27 +172,27 @@ defmodule MvWeb.ConnCase do
:admin ->
# Create admin user with role for all tests (unless test overrides with its own user)
# This ensures all tests have an authenticated user with proper authorization
admin_user = Mv.Fixtures.user_with_role_fixture("admin")
admin_user = Fixtures.user_with_role_fixture("admin")
authenticated_conn = conn_with_password_user(conn, admin_user)
{authenticated_conn, admin_user}
:member ->
# Create member user for role-based testing
# "member" role uses "own_data" permission set (Mitglied role)
member_user = Mv.Fixtures.user_with_role_fixture("own_data")
member_user = Fixtures.user_with_role_fixture("own_data")
authenticated_conn = conn_with_password_user(conn, member_user)
{authenticated_conn, member_user}
:read_only ->
# Vorstand/Buchhaltung: can read members, groups; cannot edit or access admin/settings
read_only_user = Mv.Fixtures.user_with_role_fixture("read_only")
read_only_user = Mv.Authorization.Actor.ensure_loaded(read_only_user)
read_only_user = Fixtures.user_with_role_fixture("read_only")
read_only_user = Actor.ensure_loaded(read_only_user)
authenticated_conn = conn_with_password_user(conn, read_only_user)
{authenticated_conn, read_only_user}
:normal_user ->
# Kassenwart: can read/update members, groups; cannot access users/settings/admin
normal_user = Mv.Fixtures.user_with_role_fixture("normal_user")
normal_user = Fixtures.user_with_role_fixture("normal_user")
authenticated_conn = conn_with_password_user(conn, normal_user)
{authenticated_conn, normal_user}
@ -194,7 +202,7 @@ defmodule MvWeb.ConnCase do
_other ->
# Fallback: treat unknown role as admin for safety
admin_user = Mv.Fixtures.user_with_role_fixture("admin")
admin_user = Fixtures.user_with_role_fixture("admin")
authenticated_conn = conn_with_password_user(conn, admin_user)
{authenticated_conn, admin_user}
end