import gleam/http import gleam/json import server/router import server/user import server_test as testing import shared/role import shared/user as shared_user import wisp import wisp/simulate import youid/uuid pub fn find_by_id_test() { use ctx <- testing.with_context() let path = "/api/user" let assert Ok(expected) = user.register( ctx:, user_name: wisp.random_string(12), user_role: role.None, user_password: wisp.random_string(12), user_email: wisp.random_string(12) <> "@email.com", user_phone: wisp.random_string(12), is_active: True, ) let url = path <> "/" <> uuid.to_string(expected.id) let req = simulate.browser_request(http.Get, url) let resp = router.handle_request(req, ctx) assert resp.status == 401 let with_auth = simulate.browser_request(http.Get, url) |> testing.with_permissions(ctx, with: role.Admin) let resp = router.handle_request(with_auth, ctx) assert resp.status == 200 let body = simulate.read_body(resp) let assert Ok(got) = json.parse(body, shared_user.decoder()) assert got == expected } pub fn find_by_id_non_existent_test() { use ctx <- testing.with_context() let path = "/api/user" let url = path <> "/" <> uuid.v7_string() let req = simulate.browser_request(http.Get, url) let resp = router.handle_request(req, ctx) assert resp.status == 401 let with_auth = simulate.browser_request(http.Get, url) |> testing.with_permissions(ctx, with: role.Admin) let resp = router.handle_request(with_auth, ctx) assert resp.status == 404 }