use axum::response::{IntoResponse, Redirect}; use crate::{templates::Index, AuthContext}; pub async fn handle_slash_redir() -> impl IntoResponse { Redirect::to("/") } pub async fn handle_slash(auth: AuthContext) -> impl IntoResponse { if let Some(ref user) = auth.current_user { let name = &user.username; tracing::debug!("Logged in as: {name}"); } else { tracing::debug!("Not logged in."); } Index { user: auth.current_user, } } #[cfg(test)] mod tests { use axum_test::TestServer; use crate::db; #[tokio::test] async fn slash_is_ok() { let pool = db::get_pool().await; let secret = [0u8; 64]; let app = crate::app(pool.clone(), &secret).await.into_make_service(); let server = TestServer::new(app).unwrap(); server.get("/").await.assert_status_ok(); } #[tokio::test] async fn not_found_is_303() { let pool = db::get_pool().await; let secret = [0u8; 64]; let app = crate::app(pool, &secret).await.into_make_service(); let server = TestServer::new(app).unwrap(); assert_eq!( server .get("/no-actual-route") .expect_failure() .await .status_code(), 303 ); } }