Plug test messing up body request

some extra modifyings I did
check_request_fields:

def call(%Plug.Conn{request_path: path} = conn, opts) do
    {:ok, body_as_json, conn} = Plug.Conn.read_body(conn, opts)
    if path in opts[:paths] do
      verify_tuple = verify_request_fields!(body_as_json, opts[:fields], MyApp.Validate.CustomRules.get_rules(conn.request_path)) ##cuidado com essa linha ao começar muitos roteamentos
      
      conn = case verify_tuple do
        {:ok, body} -> 
          conn
          |> Conn.assign(:status, 200)
          |> Conn.assign(:resp, verify_tuple)
          |> Conn.assign(:resp_body_as_json, body_as_json)
        {:error, error_body_as_json} -> 
          conn
          |> Conn.assign(:status, 400)
          |> Conn.assign(:resp, verify_tuple)
          |> Conn.assign(:resp_body_as_json, error_body_as_json)
      end
      conn
    else
      conn = Conn.assign(conn, :resp, {:error, %{"msg" => "algo deu errado em call check request fields"}})
      conn
    end
  end

router file:

defmodule TestesPay.MyRouter do
  use Plug.Router
  alias MyApp.PlugServer.Plugs.CheckRequestFields
  
  plug CheckRequestFields, fields: ["chain", "coin", "coin", "transaction_value", "transaction_charged", "ref", "ref_fee", "payload"], paths: ["/api/create_contract"]
  plug :match
  plug :dispatch


  post "/api/create_contract" do
    with {:ok, response} <- conn.assigns.resp,
    {:ok, changeset} = MyApp.ControllerCreateContract.create(response)
     do
      IO.inspect(conn)
      conn
      |> put_resp_content_type("application/json")
      |> send_resp(conn.assigns.status, conn.assigns.resp_body_as_json)
    else
      {:error, json_response} ->    
        conn
        |> put_resp_content_type("application/json")
        |> send_resp(conn.assigns.status, json_response)
    end
  end

  match _ do
    send_resp(conn, 404, "oops")
  end


end