defmodule Fake.Router do @moduledoc "Application router for the `Fake` server" use Plug.Router require Logger plug Plug.Logger plug :fetch_query_params plug Plug.Parsers, parsers: [:urlencoded, :multipart, :json], pass: ["*/*"], json_decoder: Poison plug :match plug :dispatch @doc false def init(options), do: options def read_file(file) do File.read!(file) |> String.replace(~r/\n/m, "") end match "/" do send_resp(conn, 200, "received #{inspect(conn.params)}") end get "/v1/documents" do file = read_file("test/fixtures/all_documents.json") conn |> send_resp(200, file) # if !is_nil(conn.params["service"]) do # conn |> send_resp(200, "sss") # else # conn |> send_resp(404, "ticket not found") # end end post "/v1/documents" do IO.inspect conn # IO.inspect conn.body_params conn |> send_resp(200, "sss") # if !is_nil(conn.params["service"]) do # conn |> send_resp(200, Fake.valid_st) # else # conn |> send_resp(404, "ticket not found") # end end post "/v1/tickets/:_tgt" do conn |> send_resp(404, "ticket not found") end post "/v1/tickets" do if {conn.params["username"], conn.params["password"]} == {Fake.valid_username, Fake.valid_password} do conn |> put_resp_header("location", "#{url(conn)}/#{Fake.valid_tgt}") |> send_resp(201, Fake.valid_tgt) else conn |> send_resp(400, "bad credentials") end end post "/serviceValidate" do if conn.params["ticket"] == Fake.valid_st && conn.params["service"] do conn |> send_resp(200, Fake.Responses.success) else conn |> send_resp(200, Fake.Responses.failure) end end match _ do send_resp(conn, 404, "oops") end @spec url(Plug.Conn.t) :: Plug.Conn.t @doc false def url(conn) do query_string = conn.query_params |> URI.encode_query ["#{conn.scheme}://#{conn.host}:#{conn.port}#{conn.request_path}", query_string] |> Enum.reject(fn(v) -> is_nil(v) || v == "" end) |> Enum.join("?") end end