CFV policies test: system_actor for setup, verify destroy with actor
- create_linked_member_for_user and create_unlinked_member use actor (system_actor) directly instead of creating admin user per call - Remove create_admin_user helper - After destroy, verify with Ash.get(..., actor: actor) to avoid false positive from Forbidden vs NotFound
This commit is contained in:
parent
185ccb0217
commit
6e01af10f5
1 changed files with 24 additions and 17 deletions
|
|
@ -60,13 +60,7 @@ defmodule Mv.Membership.CustomFieldValuePoliciesTest do
|
|||
user_with_role
|
||||
end
|
||||
|
||||
defp create_admin_user(actor) do
|
||||
create_user_with_permission_set("admin", actor)
|
||||
end
|
||||
|
||||
defp create_linked_member_for_user(user, actor) do
|
||||
admin = create_admin_user(actor)
|
||||
|
||||
{:ok, member} =
|
||||
Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
|
|
@ -74,19 +68,17 @@ defmodule Mv.Membership.CustomFieldValuePoliciesTest do
|
|||
last_name: "Member",
|
||||
email: "linked#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: admin, return_notifications?: false)
|
||||
|> Ash.create(actor: actor, return_notifications?: false)
|
||||
|
||||
user
|
||||
|> Ash.Changeset.for_update(:update, %{})
|
||||
|> Ash.Changeset.force_change_attribute(:member_id, member.id)
|
||||
|> Ash.update(actor: admin, domain: Mv.Accounts, return_notifications?: false)
|
||||
|> Ash.update(actor: actor, domain: Mv.Accounts, return_notifications?: false)
|
||||
|
||||
member
|
||||
end
|
||||
|
||||
defp create_unlinked_member(actor) do
|
||||
admin = create_admin_user(actor)
|
||||
|
||||
{:ok, member} =
|
||||
Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
|
|
@ -94,7 +86,7 @@ defmodule Mv.Membership.CustomFieldValuePoliciesTest do
|
|||
last_name: "Member",
|
||||
email: "unlinked#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: admin)
|
||||
|> Ash.create(actor: actor)
|
||||
|
||||
member
|
||||
end
|
||||
|
|
@ -201,11 +193,16 @@ defmodule Mv.Membership.CustomFieldValuePoliciesTest do
|
|||
assert cfv.custom_field_id == custom_field2.id
|
||||
end
|
||||
|
||||
test "can destroy custom field value of linked member", %{user: user, cfv_linked: cfv_linked} do
|
||||
test "can destroy custom field value of linked member", %{
|
||||
user: user,
|
||||
cfv_linked: cfv_linked,
|
||||
actor: actor
|
||||
} do
|
||||
result = Ash.destroy(cfv_linked, actor: user, domain: Mv.Membership)
|
||||
assert :ok = result
|
||||
|
||||
assert {:error, _} = Ash.get(CustomFieldValue, cfv_linked.id, domain: Mv.Membership)
|
||||
assert {:error, _} =
|
||||
Ash.get(CustomFieldValue, cfv_linked.id, domain: Mv.Membership, actor: actor)
|
||||
end
|
||||
|
||||
test "cannot read custom field values of unlinked member", %{
|
||||
|
|
@ -408,10 +405,15 @@ defmodule Mv.Membership.CustomFieldValuePoliciesTest do
|
|||
assert %Ash.Union{value: "updated", type: :string} = updated.value
|
||||
end
|
||||
|
||||
test "can destroy any custom field value", %{user: user, cfv_unlinked: cfv_unlinked} do
|
||||
test "can destroy any custom field value", %{
|
||||
user: user,
|
||||
cfv_unlinked: cfv_unlinked,
|
||||
actor: actor
|
||||
} do
|
||||
:ok = Ash.destroy(cfv_unlinked, actor: user, domain: Mv.Membership)
|
||||
|
||||
assert {:error, _} = Ash.get(CustomFieldValue, cfv_unlinked.id, domain: Mv.Membership)
|
||||
assert {:error, _} =
|
||||
Ash.get(CustomFieldValue, cfv_unlinked.id, domain: Mv.Membership, actor: actor)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -478,10 +480,15 @@ defmodule Mv.Membership.CustomFieldValuePoliciesTest do
|
|||
assert %Ash.Union{value: "updated", type: :string} = updated.value
|
||||
end
|
||||
|
||||
test "can destroy any custom field value", %{user: user, cfv_unlinked: cfv_unlinked} do
|
||||
test "can destroy any custom field value", %{
|
||||
user: user,
|
||||
cfv_unlinked: cfv_unlinked,
|
||||
actor: actor
|
||||
} do
|
||||
:ok = Ash.destroy(cfv_unlinked, actor: user, domain: Mv.Membership)
|
||||
|
||||
assert {:error, _} = Ash.get(CustomFieldValue, cfv_unlinked.id, domain: Mv.Membership)
|
||||
assert {:error, _} =
|
||||
Ash.get(CustomFieldValue, cfv_unlinked.id, domain: Mv.Membership, actor: actor)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue