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

@ -75,11 +75,14 @@ defmodule MvWeb.UserLive.FormTest do
|> form("#user-form", user: %{email: "storetest@example.com"})
|> render_submit()
system_actor = Mv.Helpers.SystemActor.get_system_actor()
user =
Ash.get!(
Mv.Accounts.User,
[email: Ash.CiString.new("storetest@example.com")],
domain: Mv.Accounts
domain: Mv.Accounts,
actor: system_actor
)
assert to_string(user.email) == "storetest@example.com"
@ -101,11 +104,14 @@ defmodule MvWeb.UserLive.FormTest do
)
|> render_submit()
system_actor = Mv.Helpers.SystemActor.get_system_actor()
user =
Ash.get!(
Mv.Accounts.User,
[email: Ash.CiString.new("passwordstoretest@example.com")],
domain: Mv.Accounts
domain: Mv.Accounts,
actor: system_actor
)
assert user.hashed_password != nil
@ -181,7 +187,8 @@ defmodule MvWeb.UserLive.FormTest do
assert_redirected(view, "/users")
updated_user = Ash.reload!(user, domain: Mv.Accounts)
system_actor = Mv.Helpers.SystemActor.get_system_actor()
updated_user = Ash.reload!(user, domain: Mv.Accounts, actor: system_actor)
assert to_string(updated_user.email) == "new@example.com"
assert updated_user.hashed_password == original_password
end
@ -204,7 +211,8 @@ defmodule MvWeb.UserLive.FormTest do
assert_redirected(view, "/users")
updated_user = Ash.reload!(user, domain: Mv.Accounts)
system_actor = Mv.Helpers.SystemActor.get_system_actor()
updated_user = Ash.reload!(user, domain: Mv.Accounts, actor: system_actor)
assert updated_user.hashed_password != original_password
assert String.starts_with?(updated_user.hashed_password, "$2b$")
end
@ -285,17 +293,24 @@ defmodule MvWeb.UserLive.FormTest do
describe "member linking - display" do
test "shows linked member with unlink button when user has member", %{conn: conn} do
system_actor = Mv.Helpers.SystemActor.get_system_actor()
# Create member
{:ok, member} =
Mv.Membership.create_member(%{
first_name: "John",
last_name: "Doe",
email: "john@example.com"
})
Mv.Membership.create_member(
%{
first_name: "John",
last_name: "Doe",
email: "john@example.com"
},
actor: system_actor
)
# Create user linked to member
user = create_test_user(%{email: "user@example.com"})
{:ok, _updated_user} = Mv.Accounts.update_user(user, %{member: %{id: member.id}})
{:ok, _updated_user} =
Mv.Accounts.update_user(user, %{member: %{id: member.id}}, actor: system_actor)
# Load form
{:ok, view, html} = setup_live_view(conn, "/users/#{user.id}/edit")
@ -322,13 +337,18 @@ defmodule MvWeb.UserLive.FormTest do
describe "member linking - workflow" do
test "selecting member and saving links member to user", %{conn: conn} do
system_actor = Mv.Helpers.SystemActor.get_system_actor()
# Create unlinked member
{:ok, member} =
Mv.Membership.create_member(%{
first_name: "Jane",
last_name: "Smith",
email: "jane@example.com"
})
Mv.Membership.create_member(
%{
first_name: "Jane",
last_name: "Smith",
email: "jane@example.com"
},
actor: system_actor
)
# Create user without member
user = create_test_user(%{email: "user@example.com"})
@ -345,22 +365,35 @@ defmodule MvWeb.UserLive.FormTest do
assert_redirected(view, "/users")
# Verify member is linked
updated_user = Ash.get!(Mv.Accounts.User, user.id, domain: Mv.Accounts, load: [:member])
system_actor = Mv.Helpers.SystemActor.get_system_actor()
updated_user =
Ash.get!(Mv.Accounts.User, user.id,
domain: Mv.Accounts,
actor: system_actor,
load: [:member]
)
assert updated_user.member.id == member.id
end
test "unlinking member and saving removes member from user", %{conn: conn} do
system_actor = Mv.Helpers.SystemActor.get_system_actor()
# Create member
{:ok, member} =
Mv.Membership.create_member(%{
first_name: "Bob",
last_name: "Wilson",
email: "bob@example.com"
})
Mv.Membership.create_member(
%{
first_name: "Bob",
last_name: "Wilson",
email: "bob@example.com"
},
actor: system_actor
)
# Create user linked to member
user = create_test_user(%{email: "user@example.com"})
{:ok, _} = Mv.Accounts.update_user(user, %{member: %{id: member.id}})
{:ok, _} = Mv.Accounts.update_user(user, %{member: %{id: member.id}}, actor: system_actor)
{:ok, view, _html} = setup_live_view(conn, "/users/#{user.id}/edit")
@ -375,7 +408,15 @@ defmodule MvWeb.UserLive.FormTest do
assert_redirected(view, "/users")
# Verify member is unlinked
updated_user = Ash.get!(Mv.Accounts.User, user.id, domain: Mv.Accounts, load: [:member])
system_actor = Mv.Helpers.SystemActor.get_system_actor()
updated_user =
Ash.get!(Mv.Accounts.User, user.id,
domain: Mv.Accounts,
actor: system_actor,
load: [:member]
)
assert is_nil(updated_user.member)
end
end