Packages
oaspec
0.63.0
0.68.0
0.67.0
0.66.0
0.65.0
0.64.0
0.63.0
0.62.0
0.61.0
0.60.0
0.59.0
0.58.1
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.0
0.7.0
0.6.3
0.6.1
0.6.0
0.5.0
0.4.0
0.3.0
0.1.3
Generate Gleam code from OpenAPI 3.x specifications
Current section
Files
Jump to
Current section
Files
src/oaspec/mock.gleam
//// Test helpers for `oaspec/transport`. The sync constructors return a
//// `transport.Send` value, and the `*_async` constructors return a
//// `transport.AsyncSend`, making it trivial to script fake responses in
//// tests without standing up a real HTTP runtime.
import oaspec/transport.{
type AsyncSend, type Request, type Response, type Send, type TransportError,
BytesBody, EmptyBody, Response, TextBody,
}
// Always respond with the given text body and status. Headers are empty.
pub fn text(status status: Int, body body: String) -> Send {
fn(_req: Request) {
Ok(Response(status: status, headers: [], body: TextBody(body)))
}
}
// Async variant of `text`.
pub fn text_async(status status: Int, body body: String) -> AsyncSend {
fn(_req: Request) {
transport.resolve(
Ok(Response(status: status, headers: [], body: TextBody(body))),
)
}
}
// Always respond with the given binary body and status. Headers are empty.
pub fn bytes(status status: Int, body body: BitArray) -> Send {
fn(_req: Request) {
Ok(Response(status: status, headers: [], body: BytesBody(body)))
}
}
// Async variant of `bytes`.
pub fn bytes_async(status status: Int, body body: BitArray) -> AsyncSend {
fn(_req: Request) {
transport.resolve(
Ok(Response(status: status, headers: [], body: BytesBody(body))),
)
}
}
// Always respond with the given status and an empty body.
pub fn empty(status status: Int) -> Send {
fn(_req: Request) {
Ok(Response(status: status, headers: [], body: EmptyBody))
}
}
// Async variant of `empty`.
pub fn empty_async(status status: Int) -> AsyncSend {
fn(_req: Request) {
transport.resolve(
Ok(Response(status: status, headers: [], body: EmptyBody)),
)
}
}
// Always fail with `transport.Timeout`.
pub fn timeout() -> Send {
fn(_req: Request) { Error(transport.Timeout) }
}
// Async variant of `timeout`.
pub fn timeout_async() -> AsyncSend {
fn(_req: Request) { transport.resolve(Error(transport.Timeout)) }
}
// Always fail with the given `TransportError`.
pub fn fail(error error: TransportError) -> Send {
fn(_req: Request) { Error(error) }
}
// Async variant of `fail`.
pub fn fail_async(error error: TransportError) -> AsyncSend {
fn(_req: Request) { transport.resolve(Error(error)) }
}
// Build a `Send` from an arbitrary handler — useful for asserting on
// the outbound request shape in tests.
pub fn from(
handler handler: fn(Request) -> Result(Response, TransportError),
) -> Send {
handler
}
// Build an `AsyncSend` from an arbitrary async handler.
pub fn from_async(
handler handler: fn(Request) ->
transport.Async(Result(Response, TransportError)),
) -> AsyncSend {
handler
}