ETS-backed store for captured inbound API requests during tests.
The request spy supports end-to-end assertions on what was sent to PaperTiger, including method, path, parsed params, and selected headers.
Summary
Functions
Returns a specification to start this module under a supervisor.
Clears all requests from the store (all namespaces).
Clears all requests for a specific namespace.
Counts total requests in current namespace.
Deletes a request from the store.
Returns captured requests filtered by method/path and optional param match.
Retrieves a request by ID.
Inserts a request into the store.
Lists all requests with optional pagination.
Returns all captured requests for the current namespace.
Returns all items in a specific namespace.
Returns the ID prefix for this resource.
Records an inbound request for later inspection.
Starts the request store GenServer.
Returns the ETS table name for this store.
Updates a request in the store.
Types
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec clear() :: :ok
Clears all requests from the store (all namespaces).
Serialized write - goes through GenServer.
Useful for test cleanup. Note: This clears ALL data, not just
the current namespace. For namespace-specific cleanup, use
clear_namespace/1.
Clears all requests for a specific namespace.
Used by PaperTiger.Test to clean up after each test.
@spec count() :: non_neg_integer()
Counts total requests in current namespace.
Direct ETS access - does not go through GenServer.
@spec delete(String.t()) :: :ok
Deletes a request from the store.
Serialized write - goes through GenServer. Data is scoped to the current test namespace.
Returns captured requests filtered by method/path and optional param match.
Retrieves a request by ID.
Direct ETS access - does not go through GenServer. Data is scoped to the current test namespace.
Inserts a request into the store.
Serialized write - goes through GenServer to prevent race conditions. Data is scoped to the current test namespace.
@spec list(keyword() | map()) :: PaperTiger.List.t()
Lists all requests with optional pagination.
Direct ETS access - does not go through GenServer. Data is scoped to the current test namespace.
Options
:limit- Number of items (default: 10, max: 100):starting_after- Cursor for pagination:ending_before- Reverse cursor
@spec list_all() :: [map()]
Returns all captured requests for the current namespace.
Returns all items in a specific namespace.
Useful for debugging test isolation.
@spec prefix() :: String.t() | nil
Returns the ID prefix for this resource.
@spec record(Plug.Conn.t()) :: map()
Records an inbound request for later inspection.
@spec start_link(keyword()) :: GenServer.on_start()
Starts the request store GenServer.
@spec table_name() :: atom()
Returns the ETS table name for this store.
Updates a request in the store.
Serialized write - goes through GenServer. Data is scoped to the current test namespace.