defmodule TwilioSignaturePlug.TwilioTestHelper do
@doc """
Set the rquired twilio signature header in a Conn object
This is designed for testing requests to twilio-signature-plug protected routes.
"""
def sign_conn(%{} = conn) do
signature = TwilioSignaturePlug.expected_signature(conn)
case conn do
%{:req_headers => headers} ->
# update the headers
%{conn | "req_headers": set_twilio_signature_header(headers, signature)}
_ ->
# if no headers were set, we create them
%{conn | req_headers: [{"x-twilio-signature", signature}]}
end
end
defp set_twilio_signature_header(headers, signature) do
[{"x-twilio-signature", signature} | headers |> Enum.filter(fn x ->
case x do
{"x-twilio-signature", _} -> false
{_, _} -> true
end
end)]
end
end