From 37f4163870f59b2b75064631635a1c09516f6227 Mon Sep 17 00:00:00 2001 From: GW_MC <72297530+GWMCwing@users.noreply.github.com> Date: Mon, 29 Dec 2025 19:16:53 +0800 Subject: [PATCH] added mock for require_auth middleware --- apps/api/src/middlewares/require_auth.rs | 39 ++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/apps/api/src/middlewares/require_auth.rs b/apps/api/src/middlewares/require_auth.rs index 5cf3a6f..3c5db09 100644 --- a/apps/api/src/middlewares/require_auth.rs +++ b/apps/api/src/middlewares/require_auth.rs @@ -68,3 +68,42 @@ async fn handle_unauthenticated() -> Result { // TODO: log unauthenticated access attempts Err(StatusCode::UNAUTHORIZED) } + +#[cfg(test)] +pub mod mock { + + use super::*; + + pub const REQUEST_AUTH_USER_ID_HEADER: &str = "x-mock-authenticated-user-id"; + pub const REQUEST_AUTH_USER_INVALID_HEADER: &str = "x-mock-authenticated-invalid"; + + pub async fn mock_require_auth( + req: Request, + next: Next, + ) -> Result { + let mut req = req; + let invalid_present = req + .headers() + .get(REQUEST_AUTH_USER_INVALID_HEADER) + .is_some(); + let user_id_header = req.headers().get(REQUEST_AUTH_USER_ID_HEADER).cloned(); + + if invalid_present { + return handle_unauthenticated().await; + } + + let user = req + .extensions_mut() + .get_or_insert_with(|| RequestInfo { user_id: None }); + user.user_id = Some(if let Some(user_id_header) = user_id_header { + let user_id_str = user_id_header + .to_str() + .map_err(|_| StatusCode::UNAUTHORIZED)?; + Uuid::parse_str(user_id_str).map_err(|_| StatusCode::UNAUTHORIZED)? + } else { + Uuid::new_v4() + }); + + Ok(next.run(req).await) + } +}