Req application/octet-stream tar file mock test

Even if you end up not using req_hex, I’d still consider using hex_core to get more realistic tests. Here is an example:

Mix.install([
  :req,
  :plug,
  :hex_core
])

Req.Test.expect(Downloader, fn conn ->
  {:ok, %{tarball: tarball}} =
    :hex_tarball.create(
      %{
        "name" => "foo",
        "version" => "1.0.0"
      },
      [
        {~c"mix.exs",
         """
         defmodule Foo.MixProject do
           use Mix.Project
           def project do
             [app: :foo, version: "1.0.0"]
           end
         end
         """}
      ]
    )

  conn
  |> Plug.Conn.put_resp_content_type("application/octet-stream", nil)
  |> Plug.Conn.send_resp(200, tarball)
end)

Req.get!(url: "/foo.tar", plug: {Req.Test, Downloader})
|> IO.inspect()

Thanks @LostKobrakai for reporting the format detection bug btw. application/octet-stream; charset=utf-8 is not a proper content-type for tar, these bytes are not utf8. I’ll see if I can make any improvements anyway though.