Files

35 lines
844 B
Elixir

defmodule Dexi.AccountsFixtures do
alias Dexi.Accounts
def unique_public_key do
{pubkey, _key_pair} = :hz_key_master.make_key(:crypto.strong_rand_bytes(32))
to_string(pubkey)
end
def user_fixture(attrs \\ %{}) do
pubkey = Map.get(attrs, :pubkey, unique_public_key())
{:ok, user} = Accounts.get_or_create_user(pubkey)
profile_attrs = Map.take(attrs, [:name, :email])
user =
if profile_attrs == %{} do
user
else
{:ok, updated_user} = Accounts.update_profile(user, profile_attrs)
updated_user
end
case Map.get(attrs, :role, :user) do
:admin ->
{:ok, admin} = Accounts.create_or_promote_admin(user.pubkey)
admin
:user ->
user
end
end
def admin_fixture(attrs \\ %{}), do: user_fixture(Map.put(attrs, :role, :admin))
end