use axum::{body::Body, http::Request, routing::get, Router}; use axum_template::Key; use rstest::*; use speculoos::prelude::*; use tower::util::ServiceExt; #[rstest] #[case("/", "/")] #[case("/:hello", "/world")] #[case("/:hello", "/guys")] #[trace] #[tokio::test] async fn key_extracts_from_request_route_path( #[case] route: &'static str, #[case] uri: &'static str, ) -> anyhow::Result<()> { let router: Router = Router::new().route( route, get(move |Key(key): Key| async move { assert_that!(key.as_str()).is_equal_to(route) }), ); let _response = router .oneshot(Request::builder().uri(uri).body(Body::empty())?) .await?; Ok(()) } #[rstest] #[trace] #[tokio::test] async fn key_impl_asref_str() { fn inner(_: impl AsRef) {} inner(Key("Some String".into())); }