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.






















