test: adapt tests for attribute-level default solution
This commit is contained in:
parent
e7bf777be2
commit
8f3fd9d0d7
4 changed files with 37 additions and 20 deletions
|
|
@ -354,9 +354,14 @@ defmodule Mv.Accounts.UserPoliciesTest do
|
|||
})
|
||||
|> Ash.Changeset.set_context(%{private: %{ash_authentication?: true}})
|
||||
|
||||
{:ok, user} = Ash.create(changeset)
|
||||
{:ok, user} = Ash.create(changeset, domain: Mv.Accounts)
|
||||
|
||||
assert user.email
|
||||
|
||||
# Verify that default "Mitglied" role was assigned
|
||||
{:ok, user_with_role} = Ash.load(user, :role, domain: Mv.Accounts, authorize?: false)
|
||||
assert user_with_role.role != nil
|
||||
assert user_with_role.role.name == "Mitglied"
|
||||
end
|
||||
|
||||
test "register_with_rauthy works without actor via AshAuthentication bypass" do
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ defmodule Mv.Helpers.SystemActorTest do
|
|||
"""
|
||||
use Mv.DataCase, async: false
|
||||
|
||||
import Ecto.Query
|
||||
|
||||
alias Mv.Helpers.SystemActor
|
||||
alias Mv.Authorization
|
||||
alias Mv.Accounts
|
||||
|
|
@ -266,13 +268,15 @@ defmodule Mv.Helpers.SystemActorTest do
|
|||
|
||||
describe "edge cases" do
|
||||
test "raises error if admin user has no role", %{admin_user: admin_user} do
|
||||
system_actor = SystemActor.get_system_actor()
|
||||
# Remove role from admin user by directly setting role_id to NULL in database
|
||||
# (We can't use Ash because allow_nil? false prevents setting role_id to nil)
|
||||
# Convert UUID to binary format for Postgrex
|
||||
admin_user_id = Ecto.UUID.cast!(admin_user.id)
|
||||
|
||||
# Remove role from admin user
|
||||
admin_user
|
||||
|> Ash.Changeset.for_update(:update, %{})
|
||||
|> Ash.Changeset.manage_relationship(:role, nil, type: :append_and_remove)
|
||||
|> Ash.update!(actor: system_actor)
|
||||
Mv.Repo.update_all(
|
||||
from(u in "users", where: u.id == type(^admin_user_id, :binary_id)),
|
||||
set: [role_id: nil]
|
||||
)
|
||||
|
||||
# Delete system user to force fallback
|
||||
system_actor = SystemActor.get_system_actor()
|
||||
|
|
@ -369,13 +373,15 @@ defmodule Mv.Helpers.SystemActorTest do
|
|||
end
|
||||
|
||||
test "raises error if system user has no role", %{system_user: system_user} do
|
||||
system_actor = SystemActor.get_system_actor()
|
||||
# Remove role from system user by directly setting role_id to NULL in database
|
||||
# (We can't use Ash because allow_nil? false prevents setting role_id to nil)
|
||||
# Convert UUID to binary format for Postgrex
|
||||
system_user_id = Ecto.UUID.cast!(system_user.id)
|
||||
|
||||
# Remove role from system user
|
||||
system_user
|
||||
|> Ash.Changeset.for_update(:update, %{})
|
||||
|> Ash.Changeset.manage_relationship(:role, nil, type: :append_and_remove)
|
||||
|> Ash.update!(actor: system_actor)
|
||||
Mv.Repo.update_all(
|
||||
from(u in "users", where: u.id == type(^system_user_id, :binary_id)),
|
||||
set: [role_id: nil]
|
||||
)
|
||||
|
||||
SystemActor.invalidate_cache()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue