From bb3464ea8151553f63fe705e5bbe19ee8386078c Mon Sep 17 00:00:00 2001 From: Jordan Tunstill Date: Mon, 10 Nov 2025 14:17:12 -0800 Subject: [PATCH] Added tests for new .msg and .doc file types to skipArchiverMimeTypes (#4546) * Added Test for new .msg and .doc file types to skipArchiverMimeTypes * changed tests to align with code review --- pkg/handlers/handlers_test.go | 25 +++++++++++++++++++++++++ pkg/handlers/testdata/test.doc | Bin 0 -> 29696 bytes pkg/handlers/testdata/test.msg | Bin 0 -> 43520 bytes 3 files changed, 25 insertions(+) create mode 100644 pkg/handlers/testdata/test.doc create mode 100644 pkg/handlers/testdata/test.msg diff --git a/pkg/handlers/handlers_test.go b/pkg/handlers/handlers_test.go index 87908de59..2513a4cb6 100644 --- a/pkg/handlers/handlers_test.go +++ b/pkg/handlers/handlers_test.go @@ -17,6 +17,7 @@ import ( "time" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" diskbufferreader "github.com/trufflesecurity/disk-buffer-reader" "github.com/trufflesecurity/trufflehog/v3/pkg/context" @@ -294,6 +295,30 @@ func TestHandleFileAR(t *testing.T) { assert.Equal(t, wantChunkCount, len(reporter.Ch)) } +func TestHandleFileMSG(t *testing.T) { + wantChunkCount := 5 + reporter := sources.ChanReporter{Ch: make(chan *sources.Chunk, wantChunkCount)} + + file, err := os.Open("testdata/test.msg") + require.NoError(t, err) + + assert.Empty(t, reporter.Ch) + assert.NoError(t, HandleFile(context.Background(), file, &sources.Chunk{}, reporter)) + assert.Equal(t, wantChunkCount, len(reporter.Ch)) +} + +func TestHandleFileDOC(t *testing.T) { + wantChunkCount := 3 + reporter := sources.ChanReporter{Ch: make(chan *sources.Chunk, wantChunkCount)} + + file, err := os.Open("testdata/test.doc") + require.NoError(t, err) + + assert.Empty(t, reporter.Ch) + assert.NoError(t, HandleFile(context.Background(), file, &sources.Chunk{}, reporter)) + assert.Equal(t, wantChunkCount, len(reporter.Ch)) +} + func BenchmarkHandleAR(b *testing.B) { file, err := os.Open("testdata/test.deb") assert.Nil(b, err) diff --git a/pkg/handlers/testdata/test.doc b/pkg/handlers/testdata/test.doc new file mode 100644 index 0000000000000000000000000000000000000000..f5c6139419a0372bb3a99c7ae69fb0d83263285b GIT binary patch literal 29696 zcmeI52|$h6|Nqau?P)`jqMi~$t5BARELl>r@2=aeZo0SJdoxWK*<}pHSh7vXK4_3J z_I-CKIhz9&WVcoi+{1Z z%F4JFOpm=SHerUP!bLc4B%E6@=8Izrds|#wOu-ES4t4H7$O8A4?ZJ~a(Pyl%(k^<4 zjN!?`88fySM;2^I^pNPx*O{;R&<{RL^lg}j4P&QfUymj>%K9Wf+T{K766BPXOZF-41UaR{zUElS&zI!=yYkD^L69fpPbhD@ zQ+5~yhhCzFk#|D)aM&vhA;Ntn(aailpmN&-z88Edf8>PgDtc(o595BS4#K$*uZ{it zpMqRLlJLAJ9XA9Db{2dgec@d2h5O6%h3m@tLU|PY^6nSH&zIOkI4{pHn~rcU*jYF) z&llth&#|okrTDVf|NlA{o>zH#mlrPR`&a$)a)Elr$_@o|1=l=Iw zpmVHBrr_jp>Uaeg9vc&@;?!~tCsD{WZk#k$sg_AKGEKaSlZ4CTcQ^@IHI8G%BH*Q$GT+JzC)f!cNI44Vxsibm^L?e$?a`7=S5`{EYE152m ztL2muFH#oRKK^^3jld07*PAZRy5iEoZ#d8tyk#dQKQ<6eloJ56_c$Ej&HbE+j)5u^j zwH!8xl}aTtDXx>o$H~Jbkcw<6xj0pY7en$M;t|zW@E>s{a@bjTzf+ z!q^V56C_q(Yy=nyMu8^g7}bMj;JF23FThKXg;77fAA0$;=w(q6!Tc+fN zqC}3FIi6f*zQ0pux`8vOnUZec0%~P4Ry8w6Yzxd%a_DuY&i$XVfP-O8Rtc*(2_j2o zgp~mL$Cy4f3v4b}^aUDYf#^#NN4fbD<;iG)d&`UauLxg>{0egEEw^x7p1#DyJdZ1Rz70^0Y+=iTD1K+bP4EmD;yt1bs0|u}cAzJS0K>sVFdLM2AIWt^ z8s}l}Tj1Z7^H0Ce54P(KUI1g*(-!mu-+>g64l==RK>b7#$OnahniMO*0WS~$baDTE zcKKAh!Xf#Pj(RKtP5juWauKQoDn6m&In}zwHb3_t?MBHS17L!Zgg8t`d|-=&cb?I{hBkOudOG&muRz9`g`kG{;TM#XZ|@ZrpO=3&Q?2SDlg0|M>%52QbG<+x171}arYw&4p`}FBU ztEEQow5?LEWZH#N8CMG03X%=WYRk*)j*$&%+Z`6LDOaW+WYW|~D^shf(Wf=7Q>PBq z5))o3YDtZ%_!x@Yy?=M!X!3bw+w>K5a4ICXfbiJs%Ypkp{4jwzgY* zqPBA^5ZY627<2eS_14N1i6B!XE>~s)%8&ZHDpMn3OB2$p?~3YeO=+ zvlc>IU|o%uk&afcJ4&&JuOHL~*s@CDg}93P28D|V@&YD5D-P`FhaRr_Cpri})B-B= zsiMv(^R^{YO-o5FT`s>YEsS;Kbwp{mw&$f~qFw5SHed*}e6Ohqvty>UMHSki2GxL$ zmY?ol_%=|h;V-;~b|o^+KayEmPdi@X$K{>G1+Y!Lh5^v91}`lKrL`+GjD?0W=wpU4 zfgW|^=}h8+d8W2^LeCTz6%Y`>m>+MklOjL@NGftlB;gdOfbdz2kxn0mij%k3BT) z(2|k652v}<967&XMUOw9cRtm<^-9hr#_fX7^F__Bt9CdVW$l~0U`5CEk6PDvxoh8k zz_Kg8As5#6Odexr+g!5Da_*C@JGZ;~PD<*KJTGk7h?{Ydoj3STOHnzdWSn~CC(dp( zymr!?B#YzmT`$?*O-}W@ekAZ*f!^lK8om7=6ug}4axG=k)|QRC{M<3nc-+R_GtS&w z`Lf*+o7Nsjf2;Gf6uas=I?CBT&;D*+ z$RR`1ZN}p>9zI{?|90K?FR%XiFV1G(YQufk0$XNBT^;VfYxLM76EarRGVYfUH*x8R zysSanLr*Ske%#xBSZW}ypAmj*)w{*TR~fWrSFfO$g+m4i#vejoCaJy^ix0Ooh!IL&iD5#*17XLnfGy9U}Qc;cHCp~uZ1JsR@kq+ z7*zd$Tg=r%Rc_u+usyQrhsswv99DN7RWmnb!rH7qxU*UHbDbW#{W0)2muUa*+xNP4 z`gz@JZSU5vZ7TNrwDNnC_N=*zHxIvHFC@K1Dy6nI3*Mymy*|g4_P$m-tKMqn_Uv-+ z8Hx)HoQ-DJIu!hRQc#D~>%Er@m#gPgn6Y7LztjbZbwfG##HggpiLO%&qmm4FJdv3B zMV+2>E2aM0pyVl|2V1w2{JEsyJD=BnKFxfZjd*@}<9LHQZGw)TPVBw2o2lN6;onYQ z-qnBPr3iw5>mDt-IS{507!% z_xa4YwxdN=6W8t5CtHW?u6rl=eCuW1S9`bwoc0QGYL)fpn-=$Hq%Z9;@vgMMed3%| zGZGhPx9PX0_O$VPo=wZPbDE@@nVhfR+kgM4#Mhew7p?Ld%vHI(a#F3wRXu*bG9W1{ z)vB91-2FHA$G$V{O`c4v9}!ZqhRyuheP`t^Q!T#2=FU5i)${4-#V1&L-hr7n`^PLS zD2SG4HQ3uX{q>6W-zb)Czje+1&G$YFva_O>Zn$yFH@$!HDYKoMdJJter^a?s!Ha@w zuiLFUwbH$5g5J@h+-k4GhDw*6QWY9n`^vRkmFX{1NLdx8bpPqdD~8GWmtF4mj0`M z%(hMJw5(%MteeG9eK+~>3TcPaY8|hWGN6@D4@<}NvpHiI>>4%V+3VvM9$z^zaJ%1# zw?i`nm-a4LUHvyjP|bc1-h^Cv{rFCH{=+NZjVylDujRmtFTU9|^67)=En8+dIA$f+ z{e9PnHxG{Aef)6O+q?go<8a?zY@tY)RJ)Dgh#L(P_E&D6?mZ#f+1U4b+h-?cN?gu=}9D*stjR4wF^a3(j);s&^Vy&sTaar}^NNdXs}Xc29p;ByHV% z#fXlpq~``)tkVC{PSZuF(nV*6&am*;ERj2J3aKFGcR#ZA+bxMDK^W!6K#pm5z8#u;t>7>0a?mFb{_MhU<9sK^B>z|e4d++h@ zb+?sS7t!f+rySP@UVZVf!3o2iCi==#KK{)#W4R1$!huxgIN@=M`jW+%xsU$oRaImxedITD)^<+VkdDo_Rms z`a@oe+WX&L+dRG64?UI3r>AZ5IG=l~sCA2*-hn@bKRC7`q}tFmPBojInmWp5=kX_- zS+?aVPM~bi@WWdCapJX>6-dW+a5o0tXt}OiG7;)-MLA# zcbJ+C^_jDO$)x>96NiwFPd6ZE5UkU;?o8V*WI~$asM(4e}(Br$AizuA3SU zdd}i@GZR-%AGBr6vf7hul?A4?$4{T#-~9B^L+vaUK4_Zux z$JTDGT0x%Or-M4oXW`FF)+}%NeUoNWvv>dKzP{HD_ny+q(k>h8k6g5MMK`5l!QJJr z#xLoZzNf;U1J*z3cc%9ICTAL6ztHe!^|PqlwKcBm4Gg&7pzYqHuX2C6Sa(~MMtir_ z@EEw}(b7wrGuOgKU+QJoX@2a@XOW8U62>1{nmph^QeAofWc2{i`B_=PAz>NjHMhR? zM3?t*k8XZ4<)_Vvu}6Q8cP1ZnirQfe-%Xb4*Gq;q!KQn?tj9ke`;BpI?CGsmskQ%@ zoU`_f-uN4h%p13K>3Z+J`8qdak4ci9Y4UAz79OcAZE)E;YPFql)7!I#&D*2ca&KBd zm`#`D3(dka2alZ=>wCXSWNIhZ;My)>t{&cVRTgzR&Rmc)rTfdIb$&~y_q^e}ba|`8 z+j4@Q$B#-cnlBo8z-7k}s}Z@Z+U(GI#T(!F*(FDMI@%0)+qISY!UO}?B?ph?*POq) zv;NV3Tet4N@-FKlu{-wlmp9JEWu@FFM!lh(J`_-P;P?J+FW9rxFtF^6Wd~C4Z>)w9 z=0_uwQsyr!sqCocy`;0BlEja3%E~BP2;R%Mi`^%swfRhu2<>Em!4+*aH(&#h`aY1!YoNB4H_e$Jd)BT9zqQKv-h5gR8{A}%6UrI2WFs*3asS4qBs zU`32)123<}o(hRv>C6p@^!9g-(Re#^ngkq$55>`t$OaVFfWmMTJ`_h1sT6Y@Tv2i$ zgdkoU^6nZRA;d?xrlAnhPzY%xgftRD8Vezfow=wOxpF9SM4mGj5gQYv4G@l;JzJ3V z=*wFjw4+t+SEq1Jn?CSV-hCO2%#5#a71HZbEX@_tf}I%41bF(G_P&SC1DHb*tr%#( zgjLLvl9JeSdXH(z#Dy~uVa1FKX%5KW2qBhCuh0wUmQ26Ul@B*5e7EF)bHRz3DSsbc zedF%Qb{;oy3yCx@IIqLA$^5w7ZR{y*^~?`#-}mU*P~3e)T5OMe4nO}Zs4Qg z(`ele(3FE3Dbj>i3g}Hfy=e{r?LiR0+6W5)cvX#c0LJ#e-2G70d-`U@=$%R)SSvEyx1f z!5MHKTm%K+CMX0&;3;?u3{XA{ff+CdRROIh+JOeZ5BP&tpcCi{x`AGxHy8vIKm+2z zNH7+R2NS?lkOF3anP4864>G_SupVTBEU*h413BOVxCpL*0&o{R22a5=@EW`UV!RF4 z0~LTdumM$pJ*W;`KrP?_d_Xf00(yd8U=SD#B0wY<3e+GG%mi~l8pr_4zr zKR5ug!7*?aoC6m?5qJ(>1F9jWzzS3XHlQkS0B*nsGz85+D-a0UfKDI;bOm9c59kY| zAQ~t^EYN`O!1rJ}mJD>su|Q6LVefEs)Y62WMY1SW$iU?%tx%mry+F<1iDfK0Fj90RAp8E^^w0j`4^;1(zZ z&w-^8-ot?^fCEmTK5zqGpa}>7tw4Ja1j0Z!&;uxd8YF;`U?P|brhyq?CYT3Sg7qL1 z{0eq}U0^pj1hT<#@H@x_XTcS46WjrJK_PerjL?l#0M?)iumc>Z4LpDs@CLrX5BP%? zpdAPTT|pS=33`D+U@(vaB^VB-fK)I8%meemVz2}(2kSr<*aD2ud+5;FKvxFJD+B18 zFkVA#1vwZIoCed;W6c1;Xh}ms1=MT{KsEGz&GJFbDvLhC$O%_{>Kp>8JLFd#3g}`u zbmi%>R?7&qiLPwNM9OZX@|p9m&rjnRvaJ}2BS1mPSMAhGJr<66luhIVA*3R zh-Kg4lR``GMXYcY`IKnMh`7`-+FjP(AqAquVnaOxeFL$cez6D3@0Y-K^W$%lK?%Xp z@}vR_ENVu}_cEl%VR=24-;AR~d?U!grWON{SY%`D9-{PJjxRbW< z_;~QCS1{BUlPfp%R#@VZV+rj2JtRx(CW-kSUcxE+sYK&eST@rj9a=IA6Jz7iY8^BVAdeGI7nVp?jX4&Ka}5^o7;{EZ z7-pPg%L-}O7scz@rFq^8f^?(pLyUFCM>Omw<_nHK(@VkJr%Wh?kaN;w{A8sh%i2KQ z=T}-F-5}jy6PA(3jA=kKz*24lsuA&b998oY*J)fudQQgdHLcrx+8GCgQiMq%eyzmB z1;;cL#h3O+mj^W)R77Z+__1@MR;P@!!t9b7B&|z;M+hz*QN0&7b)e-vay0!TZHtSk z$t>+GSv2aEiiM+OD;bB<9S@(j;K)&1Vlb8de0*tHy5oPO1>T|?GUa>153^4NE`P#L zk6wmES*^jqw|9CGO?w66;8XfkLFrA8P}9mD z(>>9#s&I*t)5I&)8hn@kv)7Z3UFcOGdO4Eyx%;Wo(>3%eELbj8#j0Z?G+YRMiC@O` zLZS!{0Ic1SEf0at}@;E^A z{gHs?`{MzpDn(LEK zF9)@AWGg-m1eNPMAaT;0;J?mFiO}SolbePubX&s!_>1l1A=I``(o@ky~M9>&mwN)uzd`A_^DQ7M=6tM)JB_#rH*B-|St8in5@Ds|~sA6hUmpFWja(&KAx zq<2ihUr*^(vVp1%d?~h1(bh`g_mjRxmL1ZkIwaWOYwn?I=9=LRULU^_`~Q{vyHUa= z>El~UrOck7ymoye_rBWi~T$4Q`yzEk)Fc3`r(Bn9yE&AN_j}rCGaJ{$*BxJX_2JsYO5+vy3M)T02<}F42;wU>9eW7z V9)9delMTcET6xx8{oiMS{|C6b#G(KI literal 0 HcmV?d00001 diff --git a/pkg/handlers/testdata/test.msg b/pkg/handlers/testdata/test.msg new file mode 100644 index 0000000000000000000000000000000000000000..10be497768f3fd484422c9e301659b50cdf9a308 GIT binary patch literal 43520 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 N#`rV~-zDRl^?!@YtndH; literal 0 HcmV?d00001