35 lines
844 B
Elixir
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
|