blob: 6013a9852f9eca57e9e9ee27f96bff8b00c9d719 (
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
69
70
71
|
use crate::state::AppState;
pub mod account;
pub mod error;
pub mod tasks;
pub mod users;
pub fn router() -> axum::Router<AppState> {
use axum::routing::get;
axum::Router::new()
.nest("/account", account::router())
.merge(users::router())
.route("/healthcheck", get(healthcheck))
.fallback(fallback)
}
pub async fn healthcheck() -> &'static str {
"success"
}
pub async fn fallback(uri: axum::http::Uri) -> self::error::Error {
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(())
}
}
|