From 52e5e9da5d4e6bf8bc9888811982c4344ed1af9a Mon Sep 17 00:00:00 2001 From: sephrat <34862846+sephrat@users.noreply.github.com> Date: Sat, 1 May 2021 23:35:46 +0200 Subject: [PATCH] Remove former profile image upon new upload (#381) * Remove former profile image upon new upload * Fix test --- mealie/routes/users/crud.py | 5 +--- tests/conftest.py | 9 ++++++-- tests/data/{ => images}/test_image.jpg | Bin tests/data/images/test_image.png | Bin 0 -> 12378 bytes tests/integration_tests/test_user_routes.py | 24 ++++++++++++++++++++ 5 files changed, 32 insertions(+), 6 deletions(-) rename tests/data/{ => images}/test_image.jpg (100%) create mode 100644 tests/data/images/test_image.png diff --git a/mealie/routes/users/crud.py b/mealie/routes/users/crud.py index bd8101de59e7..3398545d81b2 100644 --- a/mealie/routes/users/crud.py +++ b/mealie/routes/users/crud.py @@ -105,10 +105,7 @@ async def update_user_image( app_dirs.USER_DIR.joinpath(id).mkdir(parents=True, exist_ok=True) - try: - [x.unlink() for x in app_dirs.USER_DIR.join(id).glob("profile_image.*")] - except Exception: - pass + [x.unlink() for x in app_dirs.USER_DIR.joinpath(id).glob("profile_image.*")] dest = app_dirs.USER_DIR.joinpath(id, f"profile_image.{extension}") diff --git a/tests/conftest.py b/tests/conftest.py index f12b327f674f..02d66d50667d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -47,8 +47,13 @@ def api_routes(): @fixture(scope="session") -def test_image(): - return TEST_DATA.joinpath("test_image.jpg") +def test_image_jpg(): + return TEST_DATA.joinpath("images", "test_image.jpg") + + +@fixture(scope="session") +def test_image_png(): + return TEST_DATA.joinpath("images", "test_image.png") @fixture(scope="session") diff --git a/tests/data/test_image.jpg b/tests/data/images/test_image.jpg similarity index 100% rename from tests/data/test_image.jpg rename to tests/data/images/test_image.jpg diff --git a/tests/data/images/test_image.png b/tests/data/images/test_image.png new file mode 100644 index 0000000000000000000000000000000000000000..1f89847e5a254c0591293ba5d406b33a652445e2 GIT binary patch literal 12378 zcmV-gFs09lP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXfFYif2K~#8NZJP(2 zRMq+ZzthXk%=X^dU3QnHEG$Sz5dj+-8*1!{u_ZAvYOFD){}Q8#CMFuA#@Izfjba2* z1VM3u1u47B_TKCC{(sL56G=Y*vs~`I=eBd6^S;mfyyxE0xZM6|I1&YohG;Y*3usZh zvO!eV+LQHaUn7e;7GEbyBoa}VOVP#l26M5pr;^m_3JLYQ<#Xe^`r?A~9q z{+j2o{rgwk`OClY_;Wv{W8bH&yY@B)dpdDs72qH1!V@$w(c8i7(^v72>u)4GJCoq* z>sh&BBUuA$Fl+mWX01bGPes%By0lM+e<*_caFp>09S1XS!dQI;n$PweP~B3!R{yCj z)jJ~L@X1X9L5`^-AbXyo35y@NP%4LGfT=E9mkGTwHS&z}7Y2ir$E z{ql=hdEO=Xy+J}rZQOdp{ZwYJqU!j&d~U7c2bV4c9N4v; zq|7q1a#Ps->K5jvM%nyf1J|74XXg1}OqX_+-^}>#zcbmS#XG3O-5cWFZao9DuVuxC z%PA~OK{Glw88sSBVh!Q{>b$@evmAw0C>$j$9Scim6=){usIm}sEF!?D>r}@>vaSBq zzqpkNurZ5^0~AqKC2MUYECV9@a$jO#Dht-gxiVOCOg%%jM<@3UOTATZ<@tT*arNTg z()H3)9RJgkv`j*m*2eZ87oWE5#Aw&jKmBjMbKx!?`pycPUU;0U8y=uE6(-%&oObRd z9NWDOgU3VPgrBnc3vss{#4mQz@aAUbSLLyD>ld8ALPzeZ00DB?|B;^N_7HQ5jZC@x zWTolIFVAGWtDne%Z;*58BWMiCr@qZ-bYPwErI4b!DuwZyqBeh=ADPl#_zQ5>j_sb|GZ@?=r_s$Tu+G3*X;*iPS=f!)U@S+S%7t1TIiX@IT&JVrr&KBcE$!f>RJ@6L+w$G`mx zOI8}=!xI$DU5;;b5My8xw`+n~YcJw>+Ysd?xx9905MN#z6{lD8`71}*_CW^$QsGDhF_Gu~PFR!L}VI_g709l&Jm{CbluA>^R`Y4^(s!qniQQNB1v9nHgJPw*V z=W8$$MS-jlw^go~03vaY3P`Fb98ax}fv6TaU*V|H>D9@xdi7^d$`?26C4b48OgZvt z`rrd5M|$vy*Iabdjp*$f-r2l^?zSn)XD=Wv)kNj5cTh3Aj*)ja;hOf7nVW<@;KJ#e z#1|D8UbK|vhC?*|?RSj$qjbpgUc7e!Uu-$XiO~ROXBc^^#?I>62(t=w6go6y1ScpQ zZX+Yrg}pkNXp#lZ_=NN8p+8wv)QuNqL26rd^b|{ql?1RV@+P)Vc3QYhouOos zvj3E?kHulqqqka#I>lAmTe0VrV9U-SBvIBm>1F$|>)9wA=$oEq&(CjRXlRsz%Wh`n zH#RcNCoIajjk|8YjoWU%5uI-=7QFn@w()nL;;F|slegh~PFqq(c8Y_f6gzLdv6X|{ zb~8K6#3M}s8h&2Mt1lcz-|J;y zjZa5aM`LbuvLyDE#b`9~XdEwbU{t^3V5+*fbcq8UKPGkE3(sqnSeaEx!P zx{Sx}{uMI|GuX4~1@vJL_M8GT3bVvg)(|*xm}l?$F^wrRS-Nug%+qZXdOO1uhasvT}7L#zdK^u{PqQxRX$}=QA3+OTAN?&AP19NMH!=(d? z>;AXI-Bfj6t(Clpg%Ig*+;Y@$1*n`M#}nYhIZy4!X+YJhdnc^;)Dl0Yk^2}7X7>E% zUb2^!v;4+Ov7`&mjhJn)R z9A>PUk2ToFu`Q1wB94@0S8>PoF-q3e&|6o>Gwq@n!Uk@>>N4zh1A~1LR*IEb^M#A0 zU5+vVQi6y!O)GR@!X&y-(1s*&-Dx>5T?}tXl!=ldA(0x1h@0r>sU^Ojs7nBs0O{n; ze@Z+UBqF)OR*7Pz7h~2d`w76+r7B|gH+{+Ci!LA%$dC-d!^l7n!EiEN%?CN-%1h|^ zatB*pcp1B}#azE0*VaC!-`>p)GXh+_vVxZW4zAo#!HZiCQeHimmxRkY4-ZgSCJ`H1 zbQWy7N$z{{EN0!gku&ev$eTN^XWbdgnOjv#Uq=rXaVSTs7Jo$4gc@9Bh2!GNeI7X= za!f4Ipl~n-Fr`MA9+eD9s7H72eGfdWOhEymAX1>H^1mRe?#8Vr9)VGT;y*4MyE1kx zcIGLAprW$UivhoYCOoO4ttzpV+#_nzGj*&L*W_U=CUG01q)s6(_Ov`wMSk=)4RN%w zOYB_B+4JDlpZ;2ok1#$qfJx(`=};@?R5LSXWV3Q*8m$NVu!QwEGEFo$_A+aJsknUs z0g)VsTX)mEJIvIOg=zl)E6z31_xTjg=6alsQ_L?Dkc`r%Eb$ltF)$RyJUf-(co2=G ziw2`K+N2}w3}Q8lJ1ZTl`WXXF0U@qtG#Z7I3^7foTrakWmFRSmDV$s@aI~^k^>F}W zn8ZMdM_@U2@>*3)0+L<$#bh$b{UzG!4RRm3zl@-$Z7Nrvj&D+NVF;UOI)BK=)L<*4 z-JKZ3WsZ+US-*B3`?tI=qS(fwRVDbvsxq?-ED_SLNekefnr5nhn)=>pj9D6v9T?!; z+pgi@mu-?cIryx89|t}Tam96)bNO{Qv3pY&lb&7*GDc}^711v#qkmK~Er+WWoU4O>4^!3hlXitIzfATJFTs)bai#n z*(pnVCoL@rs z(WW!X<}x|lMQW-6ue4`idP0%}6K%pRrWA2mzj%#PgWo67wkV2s#DqpK)|VlDni9a= zA)*c|rVKHjH1V|2F{zD}lliBzij(fD>S9q;S*e(G+``n7;7XMz%c#kQnk-P%rmR$P zoJ!vmza|8=nsCtT3@4wVELST4I%DU#M8eooGl?Gl1ZU4NTtn@6Tv|HDw6umDoVI2S z=btm1Jr7*Z>TBk+cheWlsVg8DaFbV-$?^IgPP<|ukKD1D3(uZId+!tu6#z_rmR$1) zm);_7Z$H6;+A~EX8ii+FlrJ%|u(q13Pk)-nHq7UZ=eBWuo`LLjdQ77IyuASoAtOR0DjG93E)(T10AnRoTrKc zORtZ+t{fFNj-RKBI!C#!nw^Q?Q(dDbCggt+(MnQA!~%v#MwuS>;hJ)io@yZ_GXt~E z$MCy73-logG~By}KFlg!%qm z|HpMVe1~PLPGe9!r@i$c2HPJMuV~Q zR8gE5@VaH>%yO|#>ct%-GDnP7`dxForsxP61+<{F zMFNOUfb`eRRzc)zP!hzSs5^C?*j6CL<%yaMjR%mEhfeOR9cisr2zYWt4kiLkT>BZV zc8SCi)#Tiea&Hx1#T9)YzsSqiUxK8TG5)iqIfT1RGMEN6Wh543#++Zyg1aB*x}V&| z^G_coZFZq#2ObW6(n;2gR8Ff*=g;qV5jM;sD=Ujoa(N6q#lcgfV@!>Y;&n|kK0HEN zaUMT=`cX;U8c4qM9N zbas`a#EP<;;Ev9+XG#?Hzc9J}!M%+~fMtIERNQn*7bjt}ItesEVnH%`U%g^Ea$t^Ut!TydzoLI1k zy7wAby?!PWdJoxmT!qFzMO32t$lxfWjXiwQe1cnl^Cb3}3-L&lRn!y;hEB>ZCCdaD zv3$M3h;y)u>o2{5^*8>EsfG`@uJ9}N?``MbpAAzea%e-1S=?Vo?}%tZ$;oY*Hu6o= z^mfXiWM;9KmRps45NDSsX;iI`A}X zqvvqFNFFD-1tnykejZ7)mkFo%(WuE=;X|#O>DHStT8xa1Op$c-C@Brk@z0OP7_D#R z`O#+Fa^5fV=F=lWIyp(A&e1N(rRpR8R>VV;A&ubSxjYJdrs=u@kK4B^A#A{}X^ zg|v@|XI8F>1E?PG{{u0;{(7oE{?Pxny2SpeMd7KO+hDfi`rwaz@Zt-Y3(6^3u@ za&T)(GGiJGUCuBI%X9F~7c#&22HXQf3=B`;I`|^@zqT!wt@tG%g~RIoias`5t&>4Y z^h5PeE74`?tU{9Of|M>qG@^ztx0zU$l*N^6XEL)WopO;%5oxzpyr@Hj`X>i^7&Odd z_OjE_-F^2x51$HJ9Dq0%s$B(!vcgk2GI4%lQ6+J$RLG8me~X>rm+oil$9q|S*8?m# z_fkeX+X#3jn6+>b`rFiZ6WQO-lg-x#=B*CXx@tD@gu8BdW&02PKH&OM?TS?2yA|)-A(&}=YCyub-oDKMVZai)g+2X3P z_cO}Eg}W7aF%V5Ax(_w*>}xM@?T^-oSnd(6C*I%*(a@@;aY_P3-zfVAoB2Gcp9cL1 z^^yqax+Ta2eL_nai69aO;8cL(fT*c9XBPRJ-VGw>kqT>#}A7f zn4bUb^fbTlgB*~fyve8>ZPj$&W9kk|k9B|kgx z5g&IQ;c&#uH91w-gBMAb&M%uUZ{4OVoA4oR?>!0Yv5vzy46vxuHUpJB2jD+Z4B zLH#A#u8MjulbVvkwpad+CI#vioP{kZL~^PYO9qq*|2uGxC_Z z$V1XvCrk2sxFO@yIDo3-36oCjC+ZUWsuA+clYquSiTSk9HpuJ^*9hMPIr8rh35dp;v0y%VGxG^K!&nu+B zQbUp<4Z9_a8L4MrDNf?P1G~7rev{lwKvKk-06>Z8m_?lgFEOc*m}yZ(onw%+My=JP zfL_wHga%YEpMrxO47xR>rKjWbdvK)LNs@?V5f1YDreiW9v!IytqDpb=cASPh!tGx& z?e@j8A;|!-q=tF31LIsUQCk_t+>Y*;&|9QZXmlNRoh&lAgvt@A@8hf9DGN#VFE~B_NCr zNgxo3;`ig1xMMYB;)?|7Z|y~64A3@un3vvvnJu5a!j6xcn6)AqLxmO1r@QN;vG6V~ z5mc`q10e!pYDNW;fM=AEQv;`fGK*eQZlV{m4+#irW<`Om0FEyLpvgj}tCL5+cOAF> z?oUKQ9?a6Q*j6FV7liKEnHNyv4!6X~|-ynOB-iMe!uF%99wF9A?K6H)h*X zjJ{-UvK`_P>o}_~$;T^EF)Vy)&rmZ`sdP4~ENU9f^puc~Dlq{ZcgV!VfZ`3M(Gsq# zYEGUJv&gs?E6a=5NlX?GmJFo*AWz+M6PG;nD8`5now!g(OCz~?CHUPgB0&!YbC=@t zPBPuw1tU%L_fKLv?N+Mh7RTP|X(gbzAO9U0O}n}M?PeKF6EiX#?3C!;tuwMdC5uAg zuo|P0$Fd9gs(uG|Rpm;MIZWwdEoO^Y@|2nWo*ahfUPi-U1e*k%Kw2R-gO!r-K~`0p z2uw;FMtvA<8muC@Jk!%09X4?^Ydvd{`grPwn7@3vxu}caURxjUO9`vi$GV<9c zEKipFG`EBjqmEf~%h`FPl^f?QpvDyC&ABV+AMK?s-AYZMfd${lK$o6`$sWa$<7O z9Qo`pO(N$qa)V@MrQjFo6POSewg%AMbI*Mb3j$IUAPS_o9*j?*sz7owIQ*CO$)5Zd zuUFf#m4G3EM$WTkq!T)_k3*6X6js*?uSrT6HK3F9&Lr-f>d*=|iUo^2@ri2$TkH9- zahf$7Hi}kL6RX0bY8p-W&UVq2c!et+y=^4*_mURSQf~<1x5CzGCzD2l(21U!=p@S} zYU=Y$5}<{Gv>q8Cy>OnN6iYh$IxWmeo1iFgfIWML(S|+bRn=h6%piO5IarG3pq*%t zXUf1O=^1YsBP)1>!PO5lcc_uYTH9zu_1j z83=>u#x$po^NaEss8~kEa3hx#e1vU|WEEnuYTDl|R-);d#E^R$N2V*O&UJJAP&Z>f zGb`@>6&B%gt6lPJu|h|F6;a{!=D*xbvTl^|DM(4lqf3)bW8RHucRfvH@*VaRhj0Zl zu$1(Pw}jFC_@o6Y9*f}>+fJ;Nm8l4=_Tm!<39F0YEJbQ!>v*JA$E8kyHl*fIR(Beo z{ofDqh*q=OjMyZ=80;2lunUvf$iQ1quw(xhgp1d4(bX5wJ#vSnNZTaO+>hB%i&3n^ zYLf__Q^5Yme#7&xzE0So(lH}?$(Kj%q;>Z+eGcKjd?lbeCIe&)=b z$&Gj4ONqhDiIxCoN3xmrb+M~Mq?y6|^<+YPb|sEV0;GfmCNMj-D8P(5b8Ox&6!x9u z#CTEHi~XWE+wcyw()IH1=stQt?&o99>eIzDMf7_7e9{Lwwdb<(?4>k~UO>>8Dq3)Y z@I*Vq^(9R7oyDyW|COjd%p+&7;Pn&jA~~!AkQlM##QCY20{9^37v_;xC%N_hO{AGy zSiVxt-H8;@q|)18giS1TGB`@}u0zz_^9QnX)1-YyvCv`6)-*H*p)2XDTLvZBk&G{> zXX@?y2zi{6OFMXS+kQ6IWHD|ME!w4Lw%#RzzMEeh9uo`v@x2en0gD3|2lBtmser0& zMf?aq?rz>hbKhZdQ%i7|QwW3tvFl^!$@u|~D>kK-wc;Z3R&OM2-kAi_XW_|TiNAa; z^VeR+{JK?q)wf;*aTt?Ws79#5rIAb}bDZOQ8kmv*P_twmdtP{o0|Qg!3P0&ZQdvb_ zbxlr-t`uGs%1L(ENm+9x)^Rs2yT@@*MBh+0pARIlKyuonAAQbf@(gB5hU1-dqBEPt z0K&4}FK(QQHYpveQKVcz+AINY^7!7EOtVPT)q6uMxZ`)szv_0nc5UX3jxbdVR&i;T zKkmXYP+~54(l1XIReusYDYBvd3CG#2Nj&h@YPL1}lcPf)^ZQLdW#)`xs?z5WC59E2`4(NW)aUP=!-lj+EOe=Uq?~W!+4^*@kR!) z7e%T6Xg7!Ve8s|9XV6gpIUY#|r@TQ*vQn8AOB{8&c<}VaY;9>Jvv@A6fAu7pD=#9b z^N_W$iZeFU#NP8BJ2AmypLOy6r!CSJShZ@tXkJkq9vN(DhnS&A9~*v;Xgf9CP zb&8!zpeSBM^?6rg@QY4-cQe;q^9{cB&`){iuulcfIIk(IiFs_yb`py!>R5a`QLEy_ zkrNGMrKjMKyfnpVicT^&x zR%D7Monp%aa>z|6G9p%H#*_>dYqhj>ZlQSnWz03&u#3AH#4@@krbP;kb9G56Ng}KV zMJiP-T#U7C2jT5MqPMAmPd@mZy?X|^;I>z2O`FfM+W9>6ozp2QE|ef_hkHl0n#B~d#dl4jaR+1wve zI)5%HNA^<~)w57U^fhHw;@(U7)rUJd|B73gmlMYQ@ndY+(Z*N9KF+xQ7KzB2WS7ol zW@!%Jz3qC6X4X(#lqFydNYDI|;^pF#EGF#nVREF&;HY#{Qp)Z_qD9AvSj_Bw^KFdd z-Q4rwqujK%n2irSOkqVSg^p1)!y^;X#2YpRqH<-mR#v1y`#J|!{3zrsE~ya!4)nai zUp~1WlO~VUbdyBTc7A6>wOHUhI{RK?xU~y=a0&bCmosr}E32|a#E$vVSFE9E^`&%; zj*_37L+!#EJg?lyzjk-BrFoQL!weQyOCa)S`S}mdBRwmN6o*w7BW9CGm#~%Tkv6=d zMU%73&`4cqyboJ(4X)k}LdW05H{8#Gj#2)+H;g6XVbG`L@kIkvR1}F0&0y$6Kbnb2 zw+f`OD5_jo0jJ*Oey#K3b%_9?vJ;==%XY~-J0^E>p#LrG)G;T&mSaP&aAw7WVrOw3 z>G%7DgpvjsCrn0@Un$buTb~V#3bfFV{77dlr-QGp8 z*Ud=#b?n>zA$Q$$8I=o`N&45x2TwkMfA-~EeeXl0N%j&v^bZbfd5PmEoIKYY=G?WX z^W>wqfhmQ>E3cxncZ`e9nlD3W;-iC|-2eTHIseRsgf$XKByUbDsAPI#5L;$G{ck=h z>6DkuR5N$IxQ+J@o}jjR9oK&69$XVG?0D=a7y{Dv>iKB)?AaexpK>U-RWl(8OS9RM z;xjS2XzZJ31+qG>bf5Z2NKNnC1st84VOH-nlyDKk7@9mvin&4}vX`L8D~Wj$Q&ZE} zELw_EeC(?~fum#rNmGZ&DJT(1)5Az8olk}@5U?e;6zt`)*awaNQ6Z4XkE!1~#lPNu zn)jZ1fYOR8NueYyl;xwJ-a=pQMJ)g34b1BME3Z8J3H9A0Ocbu+srxVC_Fuow8-KWl z+kW~6pEvbMKYT1NN#~C5UWQf%uCy$Z)KtlTz0uf9ev8E_G0#tzJZoGmf5GCJlzsmR z@~Vqiea;%DC5U7crsABMA~cc8g5nF&J@$t`KAfJBCOKYue38^9BQp(0vK^Z}DRxtb z!y${EWT~^q*0$Kb(QLqCHHqFch%h!w2B8t1RzQ-~7(34>17j4|NV3{UH%`#j@FBC8 ztS2ocm8iFa@wP8X&CX(YOv}2Z|D>gLKfR4@q${$$~b-9S%m7}5iwj# zWo4l}$Bfo9PQ|**34QrjCiHX2cORg>zKwQm0gYXK)VDZUI=7VCd6is#$yzzTpNyQbyY4bJ6$y%jhM7y(ba-h{eKX*A$F=%F5zP{Bt+8!~=`S5XoiZ+aYmfwWv345sA2F+Q;{B zsO#0(PZBiZ<|^WD zw+UJ2;SHKe6D!vS4PsqdOsT~fr}ojh{ZY}4@Yf%F3&->U{_ym@ys&K(4}Jdvp1NIt zH)XK&&gba)*ON?15OSpE67;&Ur(}_L)-~dil2%C$U7V!h;R~u*wqy>^zI%Wqy_4aQ z0V<30c;f!csjR8w>dRMi_5~NQ`}2Ah&aI?pbP}D>!em>AaPA2#$p)Gl+bLW>LxNKU z9_Jvv-V`R?8n(YTM(Ip1o$b3h=kkkA%|zlQ0cIj_#Dj$w3Yjs?dTnO*wWG% z9Eyq+WU+JmK1NS`%6I?pXL*j~;38-6smuH#u zI;^Q#qT42Mk4SD9(hC)I@!OAt^L&!Iq@?l9i5W1M^K)r19T zHKgiCIe|c!vK6Zd^ft2d-48LB)RKSY%XGhXKV4sJ#pRw9y*7+v_Bzg3vxMf}A!-X9 zEU}ETCO5>G*Uxu<{x*Fg{IA_m$KfN5T(V&W-+u5N_I|#H%P-!*w=SyVx!?bg@y`8t z$GtL`xqLd(gVmHI{TWAZ)nJuA&&)l+vei|5eq3afZj4~4JN{Zz+WH^h6xW@)ucB)> zI*Q3);Y9CMjE?4!olzs;3KwXS@c0h#Mdx!A=S3;Wy;uyOg(l~dxIzce`|Y%za8XoN zhPH1%jUTI?30& z$jC6uAc_S|c(`Is4Q{=I%}@WBtL}P+7oOdOd2k;~=j39xr|{9SdIk)sEL@aAR;q~; z-CFW9y^Oj_#A18NPb=rZmq(a$S|+-?1i+Zfi3KJ=J5>X!ZI8PhXYd1DlPyB}3n(tA z7WWd_6Ln%TX0c@EEfglb#O{Veq-A(TG`ER;mgRG6d3 z+vyr~;T#>t)c7tgLw@{?ohL}|r(395f4+>oNwNZqq+B}s-}x)gf6|Iu__eS&m!_8A z;I%X}nUTYhtsmkSy=dv#j(5z%Uw3r!#4oPl-RLc*MLwu{k%7OwTM~ucsxdWF>6b>?I}eQmE=9p!uEzoFb0>gxavZ3vh3o5>Y$d%$p%Tc z`{`_YmJ!c6tX_I6LsNI+^XG|`fu(PVclLIXm7B}7(}Pw5idCdhy2B!wh%oACAD5n< zfq&i|%wAZ@eV1)yMrjJG&tH#!sE^@&J9wjhgk#eo^7E^hcfo$XbH(4Vh4TsPLJS1= z^U~k8V{S3CB)pAR8^X9!%X#vybJ+LBn*>FF_D_azjksbH77nrYn#wfB2M6fX6k&ID zQkkwLsk9VJULFy>jivWJ$5pqUDOpP)0Z9TnJ3r*xH=M&KdqxTS)0m!g^6Ab`sGKJm z%&7pXl9<<1K&lxO^&yb@+{+}w)8*^IqR$e37pWtHQx`SGW}ipK_A@#jBHccdba554 zA%$_bB>TIc;qiZLrFzaBeA82mk4|8=S|}?oqfa!I`cgoRX0C38IkSXMH{4Ht)W;h? zx}5>Z0)lQo!K_kDNkvFVVrcXYZh7cZ$%WU&h+T3BvC?FwqKDbKtA%RwV)Q%j=Jsbg z$(&usBa*E+#t#q@Y2uQB3JIUOwI+fhc~m#edLLu`6X*kOQZpUQJMUbce*a5eZ|PzE zhO^L^-Hi41&^WCE}Us6L(rzs$()*j#eyg{@-7~`q@4*FTI*&x8KR!8cE#6#hu3Y zSy6c%L6?i(?te(OHH^WMgISx0!QMdEcs6;JD;eCo1KrdBPe1cCv%c{I%GQ08Xpv+R z8Fd&&n;07(lPGQ?ptn-BppxV{bIF)71G~-2v!8rHD9t9WoX>Rgn|$laGe{~SlR=Jmn@Ms6`zPTm#L8aa(1n%7*)_&1Z|X3o%6Z%-bTC$!jgIIi&^VeQM>%=G{qiN!O zMzP>#vaB9->(-wCaBoi^J+h3Bj58wUt(J+2DH*9LA^Itfx}Kt3tSjhkrK8Esp`%tY z{T#yjetP{cqnVE4AIW3a-WG}0rq~Yw{X;D=J(etKTfexgn)c5StrrakMfVMpB%_@! z8m+yjSGH3~36FDhFpQ?JoBZR4i7sA-ZT*=fz4lLb1(F%GO;TQ-j=||>dg?INj7qWI zDm0et_|%2aOme!1cV62`)vArW`sZJeU$#&NO2<2IzkBykV0;z zMA<9{=|U@3Q#rt0^P9@ZYRHCsNnpwZSi}|xQaJ=^mu{_b0o-yGcNinq^ z5#>n&pIi7;G8{`KrSm-0E?Les4?V%|y<17OILJ%Mq{P@k>tK*sCCRaDDJ?r&ICg{? znaMcPl1LJuT^=9Vg~jOny&ZKk5QTH2E(_iB>hQh-6L7o{KrpvjTv ziikJ1Gu&n7{EgqhmNkR!))S-^lu}n@lpts%PkmupQi5}8jP_1R@n%(Xtg(fx6blaZ z{dUkN0}U(B*+4)Bq`75}q@O{C21P0fC0w!e*HmP#6anIr*bwIb0ZGcc4AU$^ssI20 M07*qoM6N<$g5h62a{vGU literal 0 HcmV?d00001 diff --git a/tests/integration_tests/test_user_routes.py b/tests/integration_tests/test_user_routes.py index fe234ef33e85..aebd4233226e 100644 --- a/tests/integration_tests/test_user_routes.py +++ b/tests/integration_tests/test_user_routes.py @@ -1,6 +1,8 @@ import json +from pathlib import Path from fastapi.testclient import TestClient +from mealie.core.config import app_dirs from mealie.schema.user import UserOut from pytest import fixture from tests.app_routes import AppRoutes @@ -84,3 +86,25 @@ def test_delete_user(api_client: TestClient, api_routes: AppRoutes, token): response = api_client.delete(api_routes.users_id(2), headers=token) assert response.status_code == 200 + + +def test_update_user_image( + api_client: TestClient, api_routes: AppRoutes, test_image_jpg: Path, test_image_png: Path, token +): + response = api_client.post( + api_routes.users_id_image(2), files={"profile_image": test_image_jpg.open("rb")}, headers=token + ) + + assert response.status_code == 200 + + response = api_client.post( + api_routes.users_id_image(2), files={"profile_image": test_image_png.open("rb")}, headers=token + ) + + assert response.status_code == 200 + + directory = app_dirs.USER_DIR.joinpath("2") + assert directory.joinpath("profile_image.png").is_file() + + # Old profile images are removed + assert 1 == len([file for file in directory.glob("profile_image.*") if file.is_file()])