diff --git a/src/main.rs b/src/main.rs index 44997aa..28ec8bf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use axum::{extract::State, handler::Handler, response::IntoResponse}; +use axum::{extract::State, response::IntoResponse, routing::get, Router}; use axum_extra::extract::cookie::{Cookie, CookieJar}; use clap::Parser; use morethantext::MoreThanText; @@ -26,13 +26,17 @@ async fn main() { let args = Args::parse(); let addr = format!("{}:{}", args.address, args.port); let state = MoreThanText::new(); - let app = mtt_conn.with_state(state); + let app = create_app(state).await; let listener = tokio::net::TcpListener::bind(&addr).await.unwrap(); axum::serve(listener, app.into_make_service()) .await .unwrap(); } +async fn create_app(state: MoreThanText) -> Router { + Router::new().route("/", get(mtt_conn)).with_state(state) +} + async fn mtt_conn(jar: CookieJar, state: State) -> impl IntoResponse { let sid = match jar.get(SESSION_KEY) { Some(cookie) => Some(cookie.value().to_string()), @@ -60,7 +64,7 @@ mod servers { #[tokio::test] async fn get_home_page() { - let app = mtt_conn.with_state(MoreThanText::new()); + let app = create_app(MoreThanText::new()).await; let response = app .oneshot(Request::builder().uri("/").body(Body::empty()).unwrap()) .await @@ -72,7 +76,7 @@ mod servers { #[tokio::test] async fn session_ids_are_unique() { - let app = mtt_conn.with_state(MoreThanText::new()); + let app = create_app(MoreThanText::new()).await; let mut holder: Vec = Vec::new(); for _ in 0..5 { let response = app @@ -89,4 +93,19 @@ mod servers { holder.push(sessid); } } + + #[tokio::test] + async fn receive_file_not_found() { + let app = create_app(MoreThanText::new()).await; + let response = app + .oneshot( + Request::builder() + .uri("/isomething") + .body(Body::empty()) + .unwrap(), + ) + .await + .unwrap(); + assert_eq!(response.status(), StatusCode::NOT_FOUND); + } }