use axum::response::{IntoResponse, Redirect}; use crate::{AuthSession, MainPage}; pub async fn handle_slash_redir() -> impl IntoResponse { Redirect::to("/") } #[axum::debug_handler] pub async fn handle_slash(auth: AuthSession) -> impl IntoResponse { if let Some(ref user) = auth.user { let name = &user.username; tracing::debug!("Logged in as: {name}"); } else { tracing::debug!("Not logged in."); } MainPage { user: auth.user } } #[cfg(test)] mod test { use tokio::runtime::Runtime; use crate::{get_db_pool, test_utils::server_with_pool}; #[test] fn slash_is_ok() { let db = get_db_pool(); let rt = Runtime::new().unwrap(); rt.block_on(async { let server = server_with_pool(&db).await; server.get("/").await }) .assert_status_ok(); } #[test] fn not_found_is_303() { let rt = Runtime::new().unwrap(); let db = get_db_pool(); assert_eq!( rt.block_on(async { let server = server_with_pool(&db).await; server.get("/no-actual-route").expect_failure().await }) .status_code(), 303 ); } }