doido-controller 0.0.14

Action Controller + routing + Tower middleware for Doido: handlers, Context, responses, filters, routes! DSL, sessions, and middleware stacks.
Documentation
use doido_controller::axum::body::Body;
use http::{Request, StatusCode};
use tower::ServiceExt;

async fn home() -> &'static str {
    "home"
}

#[tokio::test]
async fn root_route_serves_the_slash_path() {
    let app = doido_controller::routes! {
        root!(home);
        get!("/about", home);
    };

    let resp = app
        .clone()
        .oneshot(Request::builder().uri("/").body(Body::empty()).unwrap())
        .await
        .unwrap();
    assert_eq!(resp.status(), StatusCode::OK);

    // A non-root path still 404s (root is only `/`).
    let missing = app
        .oneshot(Request::builder().uri("/nope").body(Body::empty()).unwrap())
        .await
        .unwrap();
    assert_eq!(missing.status(), StatusCode::NOT_FOUND);
}