From 828fe4e8bdaa02444ca6817ab56ae549a217b2e1 Mon Sep 17 00:00:00 2001 From: Cameron Alexander Date: Tue, 15 Nov 2016 09:59:48 -0600 Subject: [PATCH] Fix bug with broken requests --- lib/plug/forward_request.ex | 2 +- test/plug/forward_request_test.exs | 47 +++++++++++++++++++----------- test/test_router.ex | 5 ++++ 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/lib/plug/forward_request.ex b/lib/plug/forward_request.ex index b05feda..e58582d 100644 --- a/lib/plug/forward_request.ex +++ b/lib/plug/forward_request.ex @@ -21,7 +21,7 @@ defmodule Heimdall.Plug.ForwardRequest do def init(opts), do: opts defp build_request_path(path_info) do - "/" <> Enum.join(path_info) + "/" <> Enum.join(path_info, "/") end defp build_query_string(query_string) do diff --git a/test/plug/forward_request_test.exs b/test/plug/forward_request_test.exs index 6b066d8..be5d462 100644 --- a/test/plug/forward_request_test.exs +++ b/test/plug/forward_request_test.exs @@ -16,26 +16,39 @@ defmodule Heimdall.Test.Plug.ForwardRequestTest do :ok end - test "call sends request to configured forward location" do - forward_url = %{"forward_url" => "http://localhost:8088"} - conn = - :get - |> conn("http://localhost/forward-test") - |> ForwardRequest.call(ForwardRequest.init(forward_url)) + describe "call" do + test "sends request to configured forward location" do + forward_url = %{"forward_url" => "http://localhost:8088"} + conn = + :get + |> conn("http://localhost/forward-test") + |> ForwardRequest.call(ForwardRequest.init(forward_url)) - assert conn.status == 200 - assert conn.resp_body == "forwarded" - end + assert conn.status == 200 + assert conn.resp_body == "forwarded" + end - test "call with opts sends request to passed forward location" do - forward_url = %{"forward_url" => "http://localhost:8088"} - conn = - :get - |> conn("http://wrong-place.com/forward-test") - |> ForwardRequest.call(ForwardRequest.init(forward_url)) + test "with opts sends request to passed forward location" do + forward_url = %{"forward_url" => "http://localhost:8088"} + conn = + :get + |> conn("http://wrong-place.com/forward-test") + |> ForwardRequest.call(ForwardRequest.init(forward_url)) - assert conn.status == 200 - assert conn.resp_body == "forwarded" + assert conn.status == 200 + assert conn.resp_body == "forwarded" + end + + test "properly creates request with extended path" do + forward_url = %{"forward_url" => "http://localhost:8088"} + conn = + :get + |> conn("http://localhost/forward-test/with/more") + |> ForwardRequest.call(ForwardRequest.init(forward_url)) + + assert conn.status == 200 + assert conn.resp_body == "forwarded" + end end test "changing the path info changes the request path" do diff --git a/test/test_router.ex b/test/test_router.ex index f371773..7149910 100644 --- a/test/test_router.ex +++ b/test/test_router.ex @@ -9,6 +9,11 @@ defmodule Heimdall.Test.TestRouter do |> resp(200, "forwarded") end + get "/forward-test/with/more" do + conn + |> resp(200, "forwarded") + end + get "/test" do conn |> resp(200, "ok")