You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.0 KiB
2.0 KiB
| title | status | type | priority | created_at | updated_at |
|---|---|---|---|---|---|
| [TRIAGE] HTTP client selection for integration tests — reqwest vs hyper vs ureq (tokio vs blocking) | completed | task | high | 2026-03-10T23:32:05Z | 2026-03-10T23:32:05Z |
The API server is Axum + Tokio. reqwest is the idiomatic async HTTP client in this stack:
#[tokio::test]+reqwestis the standard Rust integration-testing pattern for Axum services.features = ["json"]enables ergonomic.json()request bodies and.json::<T>()response deserialization — essential for testing JSON API endpoints.- Dev-dependency only: the weight of the crate does not affect the production binary size.
Options 2 (hyper) and 3 (ureq) were ruled out:
- hyper 1.x has a complex, low-level API that adds boilerplate with no test-writing benefit.
- ureq is synchronous; using it with an async Axum server would require spawning a background thread for the server in every test, adding avoidable setup complexity.
Implementation ticket 5f5ba0 (already exists and is correctly specified) captures all
necessary work: adds reqwest = { version = "0.12", features = ["json"] }, tokio, serde_json,
and tempfile to [dev-dependencies] in Cargo.toml. No new ticket is required.