Add actor parameter to all tests requiring authorization

This commit adds actor: system_actor to all Ash operations in tests that
require authorization.
This commit is contained in:
Moritz 2026-01-23 20:00:24 +01:00
parent 686f69c9e9
commit 0f48a9b15a
Signed by: moritz
GPG key ID: 1020A035E5DD0824
75 changed files with 4686 additions and 2859 deletions

View file

@ -35,7 +35,7 @@ defmodule MvWeb.RoleLive.ShowTest do
end
# Helper to create admin user with admin role
defp create_admin_user(conn) do
defp create_admin_user(conn, actor) do
# Create admin role
admin_role =
case Authorization.list_roles() do
@ -69,14 +69,14 @@ defmodule MvWeb.RoleLive.ShowTest do
email: "admin#{System.unique_integer([:positive])}@mv.local",
password: "testpassword123"
})
|> Ash.create()
|> Ash.create(actor: actor)
# Assign admin role using manage_relationship
{:ok, user} =
user
|> Ash.Changeset.for_update(:update, %{})
|> Ash.Changeset.manage_relationship(:role, admin_role, type: :append_and_remove)
|> Ash.update()
|> Ash.update(actor: actor)
# Load role for authorization checks (must be loaded for can?/3 to work)
user_with_role = Ash.load!(user, :role, domain: Mv.Accounts)
@ -88,8 +88,9 @@ defmodule MvWeb.RoleLive.ShowTest do
describe "mount and display" do
setup %{conn: conn} do
{conn, _user, _admin_role} = create_admin_user(conn)
%{conn: conn}
system_actor = Mv.Helpers.SystemActor.get_system_actor()
{conn, _user, _admin_role} = create_admin_user(conn, system_actor)
%{conn: conn, actor: system_actor}
end
test "mounts successfully with valid role ID", %{conn: conn} do
@ -135,7 +136,7 @@ defmodule MvWeb.RoleLive.ShowTest do
assert html =~ gettext("Permission Set")
end
test "displays system role badge when is_system_role is true", %{conn: conn} do
test "displays system role badge when is_system_role is true", %{conn: conn, actor: actor} do
system_role =
Role
|> Ash.Changeset.for_create(:create_role, %{
@ -143,7 +144,7 @@ defmodule MvWeb.RoleLive.ShowTest do
permission_set_name: "own_data"
})
|> Ash.Changeset.force_change_attribute(:is_system_role, true)
|> Ash.create!()
|> Ash.create!(actor: actor)
{:ok, _view, html} = live(conn, "/admin/roles/#{system_role.id}")
@ -172,8 +173,9 @@ defmodule MvWeb.RoleLive.ShowTest do
describe "navigation" do
setup %{conn: conn} do
{conn, _user, _admin_role} = create_admin_user(conn)
%{conn: conn}
system_actor = Mv.Helpers.SystemActor.get_system_actor()
{conn, _user, _admin_role} = create_admin_user(conn, system_actor)
%{conn: conn, actor: system_actor}
end
test "back button navigates to role list", %{conn: conn} do
@ -209,8 +211,9 @@ defmodule MvWeb.RoleLive.ShowTest do
describe "error handling" do
setup %{conn: conn} do
{conn, _user, _admin_role} = create_admin_user(conn)
%{conn: conn}
system_actor = Mv.Helpers.SystemActor.get_system_actor()
{conn, _user, _admin_role} = create_admin_user(conn, system_actor)
%{conn: conn, actor: system_actor}
end
test "redirects to role list with error for invalid role ID", %{conn: conn} do
@ -226,11 +229,12 @@ defmodule MvWeb.RoleLive.ShowTest do
describe "delete functionality" do
setup %{conn: conn} do
{conn, _user, _admin_role} = create_admin_user(conn)
%{conn: conn}
system_actor = Mv.Helpers.SystemActor.get_system_actor()
{conn, _user, _admin_role} = create_admin_user(conn, system_actor)
%{conn: conn, actor: system_actor}
end
test "delete button is not shown for system roles", %{conn: conn} do
test "delete button is not shown for system roles", %{conn: conn, actor: actor} do
system_role =
Role
|> Ash.Changeset.for_create(:create_role, %{
@ -238,7 +242,7 @@ defmodule MvWeb.RoleLive.ShowTest do
permission_set_name: "own_data"
})
|> Ash.Changeset.force_change_attribute(:is_system_role, true)
|> Ash.create!()
|> Ash.create!(actor: actor)
{:ok, _view, html} = live(conn, "/admin/roles/#{system_role.id}")
@ -258,8 +262,9 @@ defmodule MvWeb.RoleLive.ShowTest do
describe "page title" do
setup %{conn: conn} do
{conn, _user, _admin_role} = create_admin_user(conn)
%{conn: conn}
system_actor = Mv.Helpers.SystemActor.get_system_actor()
{conn, _user, _admin_role} = create_admin_user(conn, system_actor)
%{conn: conn, actor: system_actor}
end
test "sets correct page title", %{conn: conn} do