Packages

A library for creating test simulators for external services.

Current section

Files

Jump to
sims priv templates sims.gen.http_basic simulator_test.exs.eex
Raw

priv/templates/sims.gen.http_basic/simulator_test.exs.eex

defmodule <%= inspect @module %> do
use ExUnit.Case, async: true
alias <%= inspect @simulator.namespace %>
<%= if @simulator_helpers_module do %>
setup [{<%= inspect(@simulator_helpers_module.module) %>, :configure_for_<%= @simulator.underscore_name %>_simulator}]
setup do
req = Req.new(base_url: <%= inspect(@swappable_config.namespace) %>.<%= @simulator.underscore_name %>_base_url(), retry: false)
[req: req]
end
<% else %>
setup do
sim = start_supervised!(<%= inspect @simulator.alias %>)
req = Req.new(base_url: <%= inspect @simulator.alias %>.base_url(sim), retry: false)
[<%= @simulator.underscore_name %>_simulator: sim, req: req]
end
<% end %>
test "simulator starts successfully", %{<%= @simulator.underscore_name %>_simulator: sim, req: req} do
response = Req.get!(req, url: "/hello")
assert response.body =~ "It works!"
assert response.status == 200
<%= inspect @simulator.alias %>.set_greeting(sim, "Hello world")
response = Req.get!(req, url: "/hello")
assert response.body =~ "Hello world"
assert response.status == 200
end
test "allows for closing and reopening a connection", %{<%= @simulator.underscore_name %>_simulator: sim, req: req} do
<%= inspect @simulator.alias %>.down(sim)
assert {:error, %Req.TransportError{reason: :econnrefused}} =
Req.request(req, url: "/hello", method: :get)
<%= inspect @simulator.alias %>.up(sim)
assert Req.get!(req, url: "/hello").status == 200
end
<%= if @simulator.options.response_stubs? do %>
test "triggering and clearing stubbed responses on specific endpoints", %{<%= @simulator.underscore_name %>_simulator: sim, req: req} do
<%= inspect @simulator.alias %>.trigger_internal_server_errors(sim, :greeting)
response = Req.get!(req, url: "/hello")
assert response.status == 500
assert response.body =~ "Internal Server Error"
<%= inspect @simulator.alias %>.clear_stubbed_responses(sim, :greeting)
response = Req.get!(req, url: "/hello")
assert response.status == 200
assert response.body =~ "It works!"
<%= inspect @simulator.alias %>.trigger_internal_server_errors(sim, :all)
response = Req.get!(req, url: "/hello")
assert response.status == 500
assert response.body =~ "Internal Server Error"
end
<% end %>
end