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