From f67043801b81b7266635e367f3833b6c7d34509c Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Thu, 31 Jul 2025 09:35:16 +0200 Subject: [PATCH] Add a test for concurrent cli and dump --- crates/dump/src/reader/mod.rs | 8 ++- .../dump/tests/assets/v6-with-webhooks.dump | Bin 1693 -> 1913 bytes crates/meilisearch/tests/tasks/webhook.rs | 46 +++++++++++++++++- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/crates/dump/src/reader/mod.rs b/crates/dump/src/reader/mod.rs index a34365905..85e5df432 100644 --- a/crates/dump/src/reader/mod.rs +++ b/crates/dump/src/reader/mod.rs @@ -449,7 +449,7 @@ pub(crate) mod test { let dump = DumpReader::open(dump).unwrap(); // top level infos - insta::assert_snapshot!(dump.date().unwrap(), @"2025-07-30 14:06:57.240882 +00:00:00"); + insta::assert_snapshot!(dump.date().unwrap(), @"2025-07-31 7:28:28.091553 +00:00:00"); insta::assert_debug_snapshot!(dump.instance_uid().unwrap(), @r" Some( cb887dcc-34b3-48d1-addd-9815ae721a81, @@ -462,6 +462,12 @@ pub(crate) mod test { insta::assert_json_snapshot!(webhooks, @r#" { "webhooks": { + "_cli": { + "url": "https://defined-in-dump.com/", + "headers": { + "Authorization": "Bearer defined in dump" + } + }, "exampleName": { "url": "https://example.com/hook", "headers": { diff --git a/crates/dump/tests/assets/v6-with-webhooks.dump b/crates/dump/tests/assets/v6-with-webhooks.dump index 89b1f61be5a0cb74449d0f372aa388fb7f5ac1f1..83989f25c4cc882dafeea5c60d917d594867f019 100644 GIT binary patch literal 1913 zcmV-<2Zs0`iwFP!00000|Lt4bj@vd9_Vxc1`gK`YS{`-qMS(Qi0!4weXt%v+QKYm; z$7*EBl_+esi+!xVK%cBbO19VDb>vNKH);4`v9hQkDa~kR$eB@iF*-RAVkqVujtIq3 zcSMAB#||UR5hD@ijN0~?Aw1%vGoWp>s6B7=zF0lT>iCf$FQs~;n$aoobopZx!F4D9 z(_<=hHva(S&*R9+{|xBmfAL4FS{44@RAn(bHb9&xVr-xM8H3+D@~4R7(OH=IiOc`i zZ*%ES(Abwsi@a$3$*nKj#qvkf>=Q&diYW>(L!8qn=KkH-2bO6|s4Fds7t<@zyoPh! zU1{y5rp+>?q=Hc}bkR3UwI2IiP^>rjB=fTAnR zCWucs4I|JbPJV{LW_g)6^S6y%)ezkQv-3JTv%*8~fnib*|@LECu z6_Z^*QQmkJ2&lGWh5p_DdP9T{FhmiL2~9t6L&QRko??h-$ll8k5t1BkQSQCeaG!i} zs2Kw4lq}xG2+?S9xDARzGEBZPKqMw1i{8TkAslk{Bm+bvuz7rMm&a@n3vsm122mEq z$ssm~aRkZhyV^$<0@Jp;f(ZE|tEn>euV@S4x}p`Ff=7 zNz9U|YI3cF!K|%K? zRw2dF@$e4$Uk0%zm;XHjO!WCgY2P&l>_4IWf&4LvsI&iP0N8)kWOcsm(-uEA5LwqI zn%qEG7Xq%cx?0#UHvA~HDkZprQY?%cxKuL%TQKj3j`G=eUwhxE8@O&WIlfF&G8Ksm zlt@ItaGC~bmhnK&NF)gtl#2w2Mb_`?e(}30{a^c3jIxcNnR5tJG^2_Knc^g1oT@;i8RWxeOv)Ic zX-a3?-2CiljO3IY$VW@LmyPgN!DJFrH^9(^WtS(iy6O`p*Ym1?bP23Rr=n4N83|Ho zOxEl`c0wXS2H%=o!Q+fgW>ZQcf`cg)3K*M3K_UnWIO8lqsQ_i(Wo!tc3}~{p)BHRV zpCQvr=wXcRN#Dk4n=2Hhe1alBH(hr5!{Ri>(*(n)&M~PN%*Y^%t+u|YWZ*! z+ib?z>G08q$!zh!=(Kp3`d^BP+y9*bR{j^ABYio`i&K<>zk~cq%w7HWInc@fl-1uu z{vY=G5A(l-N5uL6GhkEyZHuC8v1PXoUsXe{&Q}$c_X;YzYRZSjl(&9Y)cA{wF5HhU zj9ql$7}15Xi!Pigx-fRpg@d9CcIHhTr72oHpsddBT<#USU)nn1&X)GWJofp`-FEry zK=uFeKSa1+s_%S;^BK-(IG^Es#)s)MR$odD_>7&;G*0lz$l7TT=QNzta8AQH4d*mI zAg5t&dB2mmU*(rDMDSiGu~iR<5{mabi7is_Jk(`r9UL4S&WV2jsh^k*08Rh^55LRg literal 1693 zcmV;O24eXiiwFP!00000|Ls~|lbbdW_j5i4p)=`SGSkUS(n&9QXr_}0 zB+m3OxFF_o_1wqm7w9MJN?`lWcMeW!J4vJ8gE3+yV3*ZOzg_oabZ~ec@j^=B=y_q# z9X+3P#||SzJ>nA|6A!8O5QpA~j*ft~k*v0?(SODAMV7~J1bNBD2hofUiBGpb@&bg7 z{f~fz$#nV^+Mj})vH#)G+yCUxR{$4k^6Yuzc^%(4_yV2XrI6b3dh! zfVe&y?$IwCpa;d#PCdkjxv2A*DB+v2GO$=%>;5DP-6$IFeRcUn~*AKT@P1#9( zKda9}J)#@n2j$gRUR!U61@8^K&4gU*a&PPXZQp(m`d41V%CeGH zvi!t&*N>IgRs{yC^;oWb^Jrx7C6Jf!sg|jD2VuZ%;b*je48(s}9+J)Y@6!OA_F}929qIp%dQmk48&*fQ_w(2Wse!70vmT9-z?yvXDgXURYNKvnv zOChhS`f_!CA*9+UtVX(f6SZusnp}#fvqW$%>h%+;<@f1o^}TMNwS~-Q6=y}?bTcye zMD#}5v&Y}XVEo7arvIbB3yuFD0kBaQMP^URwkXDSEoPO}`}7;*OWy@x_Gg?)cE|}} z$p4Z5fd7Yq@&6;BBjnydxb66}Hvv!vJXtp&7YGthHGh7%+H9O9w>jD$J|q7_{J`Y@jsZo3A1Lj!!chJP(|h&@0?0S>{}BN5zi84r zpZEEb*9}nnQjyvXFwDUHW_2~wR66`Ar6@Usf|AWt7&sFdgDsf#YbW{Sm!GZY;u@~& zl#G2rc-?oNC%%@!EM~DPEf`)l>nE zqIqxEI%Tc;^MiF(X&HF-sv8DUN6ebHNs*@?QRfpr%gcM(WIPEnEU1$T>N|vD;jlP` z#9T%=4?Qo5aduamkN2iXiv1n+s3o_m5xy$88Hd~vD0HUPWwErb`ee=3v??HF1FO-5 zHDaqG!3vE^-|eVQ$Z2rrrAk{otk@_^upjuyNiY+j*fek==6en$ltf<4z?nA{>jISl zO?vKBfA^$k$n^MlH%0fNAJeo>TC$RVf+L@*E}QxxVH~3*2%Ruuu|q@_IShG$lai48 zC?uF==&pV?`I_;b9h>?X)7|vci<UvmG4@jd<*zALl;I|df^I;{>#C;deib_*w}2RPsq=2p$rE^L^qr&XQ*wJgLqfBF3B3!Mws zdEVh6?+oA+kfpzK12q!N{58Knif&e8Y;-Uj)-ZGp!|1U1occcuN3;JsJhc5!x00G(F71bTsQmusZYA(Q_3!=*krn5ppAMOrVPb}f875|!nDG_G4E4xEF`_Hj nzy$6$5F>iYIE)5kL|+9Gg%}&c-N3-W;H$^K8)Yw;07L))oiSHZ diff --git a/crates/meilisearch/tests/tasks/webhook.rs b/crates/meilisearch/tests/tasks/webhook.rs index c271446d8..12a8228fa 100644 --- a/crates/meilisearch/tests/tasks/webhook.rs +++ b/crates/meilisearch/tests/tasks/webhook.rs @@ -2,6 +2,7 @@ //! post requests. The webhook handle starts a server and forwards all the //! received requests into a channel for you to handle. +use std::path::PathBuf; use std::sync::Arc; use actix_http::body::MessageBody; @@ -68,7 +69,7 @@ async fn create_webhook_server() -> WebhookHandle { } #[actix_web::test] -async fn test_cli_webhook() { +async fn cli_only() { let WebhookHandle { server_handle, url, mut receiver } = create_webhook_server().await; let db_path = tempfile::tempdir().unwrap(); @@ -144,6 +145,49 @@ async fn test_cli_webhook() { server_handle.abort(); } + +#[actix_web::test] +async fn cli_with_dumps() { + let db_path = tempfile::tempdir().unwrap(); + let server = Server::new_with_options(Opt { + task_webhook_url: Some(Url::parse("http://defined-in-test-cli.com").unwrap()), + task_webhook_authorization_header: Some(String::from("Bearer a-secret-token-defined-in-test-cli")), + import_dump: Some(PathBuf::from("../dump/tests/assets/v6-with-webhooks.dump")), + ..default_settings(db_path.path()) + }) + .await + .unwrap(); + + let (webhooks, code) = server.get_webhooks().await; + snapshot!(code, @"200 OK"); + snapshot!(webhooks, @r#" + { + "webhooks": { + "_cli": { + "url": "http://defined-in-test-cli.com/", + "headers": { + "Authorization": "Bearer a-secret-token-defined-in-test-cli" + } + }, + "exampleName": { + "url": "https://example.com/hook", + "headers": { + "authorization": "TOKEN" + } + }, + "otherName": { + "url": "https://example.com/authorization-less", + "headers": {} + }, + "third": { + "url": "https://third.com", + "headers": {} + } + } + } + "#); +} + #[actix_web::test] async fn reserved_names() { let server = Server::new().await;