diff options
Diffstat (limited to 'src/server/routes/mod.rs')
| -rw-r--r-- | src/server/routes/mod.rs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/server/routes/mod.rs b/src/server/routes/mod.rs new file mode 100644 index 0000000..edd6fdf --- /dev/null +++ b/src/server/routes/mod.rs @@ -0,0 +1,49 @@ +#[cfg(feature = "oauth")] +pub mod auth; + +pub(super) const HEALTH: &str = "HEALTH"; + +#[utoipa::path( + method(get), + path = "/", + tag = HEALTH, + responses( + (status = OK, description = "Checks if the server is running", body = str, content_type = "text/plain") + ) +)] +pub async fn health_check() -> impl axum::response::IntoResponse { + let name = env!("CARGO_PKG_NAME"); + let version = env!("CARGO_PKG_VERSION"); + + format!("{name} v{version} is live") +} + +#[cfg(test)] +mod tests { + use crate::{ + config::Config, + server::{self, bootstrap::TestDriver, state::AppState}, + }; + + use axum::{ + body::Body, + http::{Request, StatusCode}, + }; + use tower::ServiceExt; + + #[tokio::test] + async fn health_check() { + let config = Config::default(); + let driver = TestDriver::default(); + let state = AppState::new(&config, driver).await.unwrap(); + + let app = server::router(&config, state).await.unwrap(); + + let response = app + .oneshot(Request::builder().uri("/").body(Body::empty()).unwrap()) + .await + .unwrap(); + + assert_eq!(response.status(), StatusCode::OK); + } +} |
