mcrumm
ReqSandbox - Ecto SQL Sandbox requests for external HTTP clients

Photo by Takeshi Morisato on Unsplash
Req plugin for Phoenix.Ecto.SQL.Sandbox.
ReqSandbox simplifies making concurrent, transactional requests to a Phoenix server. Just before making a request, the sandbox metadata is applied via the specified request header. If there is no metadata available, then ReqSandbox creates a new sandbox session and saves the metadata for future requests. This is mostly useful in client test environments to ensure logical isolation between concurrent tests.
Usage
The Ecto SQL Sandbox Usage Guide included in the docs is a Livebook with an interactive demonstration of all the sandbox features.
Mix.install([
{:req, "~> 0.3.0"},
{:req_sandbox, "~> 0.1.0"}
])
req = Req.new(base_url: "http://localhost:4000" |> ReqSandbox.attach()
Req.post!(req, url: "/api/posts", json: %{"post" => %{"msg" => "Hello, world!"}}).body
# => %{"data" => %{"id" => 2, "msg" => "Hello, world!"}}
ReqSandbox.delete!(req)
# => "BeamMetadata (g2gCZAACdjF0AAAAA2QABW93bmVyWGQAInZ2ZXMzM2o1LWxpdmVib29...)"
Audience
If you are writing HTTP clients in Elixir to communicate with Phoenix/Plug + Ecto services, then this package is for you! Sandboxing client requests is an effective way to provide developers with an integration environment that can be operated concurrently while maintaining logical isolation between development sessions.
First Post!
ityonemo
im surprised this doesn’t just add $callers into the header, that way the http request also has access to mox, and whatever else in the ecosystem gets that kind of concurrency support, in stead of just ecto
Most Liked
LostKobrakai
There’s no long running pid to set $callers to for the phoenix sandbox. It’s meant to work for e2e tests for tools, which might not even run on the beam, which checkout and checkin db connections statelessly as far as the beam is concerned.
mcrumm
v0.1.2 (2022-12-22)
-
Removes POST body content before making the sandbox request.
-
Adds missing
content-lengthheader on the sandbox request. -
Adds
ReqSandbox.token/0to fetch the current token if it exists.
Popular in Announcing
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex









