blob: c7769451f4e04aa058d1a55e6b3689805d2b6680 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
use axum::{http::Uri, response::IntoResponse, routing::get};
use crate::state::AppState;
pub mod error;
pub mod users;
pub fn router() -> axum::Router<AppState> {
axum::Router::new()
.merge(users::router())
.route("/healthcheck", get(healthcheck))
.fallback(fallback)
}
pub async fn healthcheck() -> impl IntoResponse {
"success"
}
pub async fn fallback(uri: Uri) -> impl IntoResponse {
self::error::Error::RouteNotFound(uri)
}
#[cfg(test)]
mod tests {
use crate::tests::{setup_test_env, TestResult};
use super::*;
use axum::{
body::Body,
http::{Request, StatusCode},
Router,
};
use sqlx::PgPool;
use tower::ServiceExt;
#[sqlx::test]
async fn test_healthcheck_ok(pool: PgPool) -> TestResult {
setup_test_env();
let router = Router::new().merge(router()).with_state(AppState { pool });
let request = Request::builder().uri("/healthcheck").body(Body::empty())?;
let response = router.oneshot(request).await?;
assert_eq!(StatusCode::OK, response.status());
Ok(())
}
#[sqlx::test]
async fn test_fallback_not_found(pool: PgPool) -> TestResult {
setup_test_env();
let router = Router::new().merge(router()).with_state(AppState { pool });
let request = Request::builder()
.uri("/does-not-exist")
.body(Body::empty())?;
let response = router.oneshot(request).await?;
assert_eq!(StatusCode::NOT_FOUND, response.status());
Ok(())
}
}
|