How do you set the headers in a Phoenix.ConnTest unit test?

I’m trying to set the header with an addition value in a phoenix unit (integration) test:

 @tag integration: true
  test "should record the incoming request made to forwarding service" do
    conn_with_api_header = build_conn()
      |> Plug.Conn.put_req_header("x-mashape-key", "some_test_key" )

    conn = post(conn_with_api_header, "/api/cards")
  end

When I run the test I’m getting the following error:
** (ArgumentError) argument error
code: conn = post(conn_with_api_header, “/api/cards”)
stacktrace:
:erlang.iolist_to_binary([{“x-mashape-key”, “some_test_key”}])

Does anyone know how to set or add entries to the header when testing endpoints? I didn’t see anything in the docs that allows this option.

2 Likes

:wave:

I don’t see any errors with your posted code … Can you post the full stacktrace? Maybe the error comes from your application code.

1 Like

Wow, you nailed it without even seeing the code! My test was actually doing the correct thing and I was assuming my test was wrong shakes head. After looking at the rest of the call stack I realize I was looking in the wrong place:

(httpoison) lib/httpoison/base.ex:787: HTTPoison.Base.request/6
(proxy_host) lib/proxy_host_web/controllers/proxy_controller.ex:65: ProxyHostWeb.ProxyController.make_http_call/3
(proxy_host) lib/proxy_host_web/controllers/proxy_controller.ex:101: ProxyHostWeb.ProxyController.respond_by_mode/4
(proxy_host) lib/proxy_host_web/controllers/proxy_controller.ex:123: ProxyHostWeb.ProxyController.index/4
(proxy_host) lib/proxy_host_web/controllers/proxy_controller.ex:1: ProxyHostWeb.ProxyController.action/2
(proxy_host) lib/proxy_host_web/controllers/proxy_controller.ex:1: ProxyHostWeb.ProxyController.phoenix_controller_pipeline/2
(proxy_host) lib/proxy_host_web/endpoint.ex:1: ProxyHostWeb.Endpoint.instrument/4
(phoenix) lib/phoenix/router.ex:275: Phoenix.Router.call/1
(proxy_host) lib/proxy_host_web/endpoint.ex:1: ProxyHostWeb.Endpoint.plug_builder_call/2
(proxy_host) lib/proxy_host_web/endpoint.ex:1: ProxyHostWeb.Endpoint.call/2
(phoenix) lib/phoenix/test/conn_test.ex:235: Phoenix.ConnTest.dispatch/5
test/integration_test.exs:23: (test)

I guess I was looking at it myopically when I saw the argument error.

1 Like