use insta::{assert_debug_snapshot, with_settings}; use loco_rs::testing; use nixin_farm::app::App; use serial_test::serial; use super::prepare_data; // TODO: see how to dedup / extract this to app-local test utils // not to framework, because that would require a runtime dep on insta macro_rules! configure_insta { ($($expr:expr),*) => { let mut settings = insta::Settings::clone_current(); settings.set_prepend_module_to_snapshot(false); settings.set_snapshot_suffix("auth_request"); let _guard = settings.bind_to_scope(); }; } #[tokio::test] #[serial] async fn can_get_current_user() { configure_insta!(); testing::request::(|request, ctx| async move { let user = prepare_data::init_user_login(&request, &ctx).await; let (auth_key, auth_value) = prepare_data::auth_header(&user.token); let response = request .get("/api/user/current") .add_header(auth_key, auth_value) .await; with_settings!({ filters => testing::cleanup_user_model() }, { assert_debug_snapshot!((response.status_code(), response.text())); }); }) .await; }