From 595905f14a546b9c3d9a8ba0712394ccde117f95 Mon Sep 17 00:00:00 2001 From: Edinson Jim <4842086+edinsonjim@users.noreply.github.com> Date: Mon, 8 Dec 2025 23:38:29 +0100 Subject: [PATCH] test: add user detail retrieval tests --- src/om/mod.rs | 2 +- tests/users/detail.rs | 53 +++++++++++++++++++++++++++++++++++++++++++ tests/users/mod.rs | 1 + 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 tests/users/detail.rs diff --git a/src/om/mod.rs b/src/om/mod.rs index 66565cb..fb83471 100644 --- a/src/om/mod.rs +++ b/src/om/mod.rs @@ -27,7 +27,7 @@ pub struct UserPage { pub created_at: DateTime, } -#[derive(Serialize, ToSchema)] +#[derive(Serialize, Deserialize, ToSchema)] #[serde(rename_all = "camelCase")] pub struct UserDetail { pub id: i32, diff --git a/tests/users/detail.rs b/tests/users/detail.rs new file mode 100644 index 0000000..7b96019 --- /dev/null +++ b/tests/users/detail.rs @@ -0,0 +1,53 @@ +use axum::{ + body::Body, + http::{self, Request, StatusCode}, +}; +use f5a_services::om::UserDetail; +use tower::ServiceExt; + +use crate::{setup::TestContext, test_ext::IntoValue, users::migrations}; + +#[tokio::test] +async fn test_read_user_detail() { + let ctx = TestContext::new().await; + ctx.setup_schema().await; + + migrations::insert_idesoft_user(ctx.db.as_ref()) + .await + .unwrap(); + + let app = ctx.configure(); + + let req = Request::get("/api/users/1") + .header(http::header::CONTENT_TYPE, mime::APPLICATION_JSON.as_ref()) + .body(Body::empty()) + .unwrap(); + + let res = app.oneshot(req).await.unwrap(); + assert_eq!(res.status(), StatusCode::OK); + + let value = res.into_value::().await; + assert_eq!(value.id, 1); + assert_eq!(value.username, "idesoftd"); + assert_eq!(value.disabled, true); +} + +#[tokio::test] +async fn it_returns_not_found_for_missing_user() { + let ctx = TestContext::new().await; + ctx.setup_schema().await; + + migrations::insert_idesoft_user(ctx.db.as_ref()) + .await + .unwrap(); + + let app = ctx.configure(); + + let req = Request::get("/api/users/2") + .header(http::header::CONTENT_TYPE, mime::APPLICATION_JSON.as_ref()) + .body(Body::empty()) + .unwrap(); + + let res = app.oneshot(req).await.unwrap(); + assert_eq!(res.status(), StatusCode::NOT_FOUND); +} diff --git a/tests/users/mod.rs b/tests/users/mod.rs index f837ebf..ab2c68c 100644 --- a/tests/users/mod.rs +++ b/tests/users/mod.rs @@ -1,4 +1,5 @@ mod create; +mod detail; mod migrations; mod paginated; mod update;