reactor_req/test/reactor/req/run_test.exs

43 lines
1 KiB
Elixir

defmodule Reactor.Req.RunTest do
@moduledoc false
use ExUnit.Case, async: true
defmodule RunReactor do
@moduledoc false
use Reactor, extensions: [Reactor.Req]
input :url
req_new :new do
url input(:url)
method value("GET")
end
req_run :run do
request result(:new)
http_errors value(:raise)
end
return :run
end
setup context do
port = Enum.random(1000..0xFFFF)
start_link_supervised!({Support.HttpServer, id: context.test, port: port})
{:ok, base_url: "http://localhost:#{port}/"}
end
test "it successfully performs an HTTP request", %{base_url: base_url} do
assert {:ok, {_request, response}} = Reactor.run(RunReactor, %{url: base_url <> "file.txt"})
assert response.status == 200
assert response.body =~ "Marty"
end
test "it can fail when the request fails", %{base_url: base_url} do
assert {:error, error} = Reactor.run(RunReactor, %{url: base_url <> "no_file.txt"})
assert Exception.message(error) =~ "The requested URL returned error: 404"
end
end