Current section
Files
Jump to
Current section
Files
test/__support/producers/audit_log_producer.ex
defmodule MQTest.Support.Producers.AuditLogProducer do
use MQ.Producer, exchange: "audit_log"
@valid_types ~w(login logout change_password update_profile)a
@spec publish_event(String.t(), atom(), keyword()) :: :ok
def publish_event(user_id, type, opts)
when is_binary(user_id)
when type in @valid_types and is_list(opts) do
routing_key = routing_key(type)
payload = payload(user_id)
opts = opts |> Keyword.put(:routing_key, routing_key)
publish(payload, opts)
end
defp payload(user_id), do: %{user_id: user_id} |> Jason.encode!()
defp routing_key(:login), do: "user_action.login"
defp routing_key(:logout), do: "user_action.logout"
defp routing_key(:change_password), do: "user_action.change_password"
defp routing_key(:update_profile), do: "user_action.update_profile"
end