ó
    vÉj
  ã                   óì   • S r SSKrSSKJs  Jr  SSKrSSKrSSK	r	SSK
r
SSKJr  SSKrSSKJr  SSKJrJrJrJr  S\4S jr\
R.                  S 5       r\S	S
4S jrS rS rS rS rS rS rS r S r!g)ud   Photo magique : garde-fous (consentement, quota, thÃ¨me) et gÃ©nÃ©ration simulÃ©e via MockTransport.é    N)ÚImage)Úconfig)Ú	DEMO_CODEÚNOCONSENT_CODEÚSCHOOLÚ
family_dirÚreturnc                  óœ   • [         R                  " 5       n [        R                  " SSS5      R	                  U S5        U R                  5       $ )NÚRGB)i   iX  )éÈ   é(   r   ÚJPEG)ÚioÚBytesIOr   ÚnewÚsaveÚgetvalue)Úbufs    ÚPD:\Ingenieria\TRABAJOS ONLINE\Projects\11- Photo School\backend\tests\test_ia.pyÚ_jpegr      s6   € Ü
�*Š*‹,€CÜ	‡I‚Iˆe�Z Ó/×4Ñ4°S¸&ÔAØ�<‰<‹>Ðó    c           	   #   ó6  ^^^#   • SS0mS[         R                  S[         R                  4U4S jjm[         R                  mUU4S jnU R	                  [
        SS5        U R	                  [        S	[        R                  " U[         R                  S
95        U R                  [        R                  S/ 5        U R                  [        R                  SS5        Tv •  [        [        [        5      R                  S5       H  nUR!                  5         M     g7f)z?Active l'IA et remplace storyface.ai par un faux serveur local.Úgenerater   Úrequestr	   c                 óš  >• U R                   R                  nUR                  S5      (       a  [        R                  " SSSSSS./0S9$ UR                  S	5      (       a$  TS
==   S-  ss'   [        R                  " SSS0S9$ UR                  S5      (       a  [        R                  " S[        5       S9$ [        R                  " S5      $ )Nz/api/v2/themesr   ÚthemesÚ91Ú	AstronautÚ
Astronaute)ÚidÚnameÚname_fr©Újsonz/picasso-fast-seedr   é   Ú
result_urlzhttps://cdn.test/result.jpgz/result.jpg)Úcontenté”  )ÚurlÚpathÚendswithÚhttpxÚResponser   )r   r*   Úcallss     €r   ÚhandlerÚstoryface.<locals>.handler   s«   ø€ Ø�{‰{×ÑˆØ�=‰=Ð)×*Ñ*Ü—>’> #¨X¸tÈ[ÐeqÑ8rÐ7sÐ,tÑuÐuØ�=‰=Ð-×.Ñ.Ø�*Ó Ñ"ÓÜ—>’> #¨\Ð;XÐ,YÑZÐZØ�=‰=˜×'Ñ'Ü—>’> #¬u«wÑ7Ð7Ü�~Š~˜cÓ"Ð"r   c                  óF   >• [         R                  " T5      US'   T" U 0 UD6$ )NÚ	transport)r,   ÚMockTransport)ÚaÚkwr/   Úreals     €€r   ÚfactoryÚstoryface.<locals>.factory&   s%   ø€ Ü×-Ò-¨gÓ6ˆˆ;‰Ù�Qˆ~˜"‰~Ðr   ÚSTORYFACE_API_KEYÚsf_testr,   )ÚAsyncClientÚ	HTTPErrorr   Úatg        zia_*N)r,   ÚRequestr-   r;   Úsetattrr   ÚiaÚtypesÚSimpleNamespacer<   ÚsetitemÚ_themes_cacher   r   r   ÚglobÚunlink)Úmonkeypatchr7   Úfr.   r/   r6   s      @@@r   Ú	storyfacerI      sÓ   úé € ð ˜ˆO€Eð	#œŸ™ð 	#¬5¯>©>÷ 	#ô ×Ñ€Döð ×ÑœÐ 3°YÔ?Ø×Ñœ˜G¤U×%:Ò%:ÀwÔZ_×ZiÑZiÑ%jÔkØ×Ñœ×(Ñ(¨(°BÔ7Ø×Ñœ×(Ñ(¨$°Ô4Ø
‚KÜœ¤	Ó*×/Ñ/°Ö7ˆØ	�‰Ž
ò 8ùs   …DDzportrait.jpgr   c                 ó   • XUS.$ )N)Úfamily_codeÚphoto_filenameÚtheme_id© )ÚcodeÚphotoÚthemes      r   Ú_bodyrR   3   s   € ØÀeÑLÐLr   c              ƒ   ó”  #   • U R                  S[        5       S9I S h  v•N oR                  nSo2U:H  oD(       d„  [        R                  " SU4SX#45      [        R
                  " U5      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pCg  N§7f)	Nú/api/portal/magicr#   i÷  ©ú==©z3%(py3)s
{%(py3)s = %(py1)s.status_code
} == %(py6)s©Úpy1Úpy3Úpy6úassert %(py8)sÚpy8©ÚpostrR   Ústatus_codeÚ
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanation)ÚclientÚ@py_assert0Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9s          r   Ú test_ia_disabled_without_api_keyrm   7   s~   é € Ø—+‘+Ð1¼»�+Ð@×@ÐT×MÑMÐTÐQTÐTÐQTÑT×T×T×TÒTÐM×T×TÔTÐ@×T×TÓTÐM×T×TÓTÐQT×T×T×T×T×T×TÖTÑ@ùs   ‚CžCŸB(Cc              ƒ   ó´  #   • SSK Jn  U" 5        nUR                  S[        45        UR	                  5         S S S 5        U R                  S[        [        S5      S9I S h  v•N nUR                  nSoeU:H  ow(       dº  [        R                  " SU4S	XV45      S
[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS
[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=pvUS   n
SozU:H  o»(       do  [        R                  " SU4SX§45      [        R                  " U
5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n
=p·g ! , (       d  f       GN’= f GNt7f)Nr   ©Úget_dbz0UPDATE families SET consent_at=NULL WHERE code=?rT   zsolo.jpgr#   é“  rU   ©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚr©Úpy0Úpy2Úpy5zassert %(py7)sÚpy7r   ©z%(py1)s == %(py4)s©rY   Úpy4úassert %(py6)sr[   )Úcore.dbrp   Úexecuter   Úcommitr_   rR   r`   ra   rb   Ú@py_builtinsÚlocalsÚ_should_repr_global_namerc   rd   re   )rf   rI   rp   Úconnrs   Ú@py_assert1rj   Ú@py_assert3Ú@py_format6Ú@py_format8rg   rh   Ú@py_format5rk   s                 r   Útest_ia_requires_consentr‰   ;   s  é € ÝÙ	Œ�TØ�‰ÐGÌ.ÐIZÔ[Ø�‰Œ÷ 
ð �k‰kÐ-´E¼.È*Ó4UˆkÐV×V€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØ�ZÑ Ð% AÐ% AÑ%×%×%×%Ò%Ð ×%×%Ô%Ð ×%×%Ó% A×%×%×%×%×%×%Ô%÷ 
Žúò 	Wùs(   ‚G�(G¸)GÁ!GÁ"E!GÇ
GÇ	Gc              ƒ   ó²  #   • U R                  S[        S5      S9I S h  v•N o"R                  nSoCU:H  oU(       d„  [        R                  " SU4SX445      [        R
                  " U5      [        R
                  " U5      [        R
                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS =n=n=pTU R                  S[        S
S9S9I S h  v•N o"R                  nSoCU:H  oU(       d„  [        R                  " SU4SX445      [        R
                  " U5      [        R
                  " U5      [        R
                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS =n=n=pTU R                  S[        SS9S9I S h  v•N o"R                  nSoCU:H  oU(       d„  [        R                  " SU4SX445      [        R
                  " U5      [        R
                  " U5      [        R
                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS =n=n=pTUS   nSo‚U:H  o3(       do  [        R                  " SU4SX(45      [        R
                  " U5      [        R
                  " U5      S.-  n	SSU	0-  n[        [        R                  " U5      5      eS =n=p8g  GN¯ GNñ GN37f)NrT   zZZZ-0000r#   r(   rU   rW   rX   r\   r]   z../../x.jpg)rP   Ú999©rQ   i�  r   r   ry   rz   r|   r[   r^   )
rf   rI   rg   rh   ri   rj   rk   rl   r…   rˆ   s
             r   Ú.test_ia_rejects_unknown_family_photo_and_themer�   E   sÌ  é € Ø—+‘+Ð1¼¸jÓ8I�+ÐJ×JÐ^×WÑWÐ^Ð[^Ð^Ð[^Ñ^×^×^×^Ò^ÐW×^×^Ô^ÐJ×^×^Ó^ÐW×^×^Ó^Ð[^×^×^×^×^×^×^Õ^Ø—+‘+Ð1¼ÀMÑ8R�+ÐS×SÐg×`Ñ`ÐgÐdgÐgÐdgÑg×g×g×gÒgÐ`×g×gÔgÐS×g×gÓgÐ`×g×gÓgÐdg×g×g×g×g×g×gÕgØ—+‘+Ð1¼ÀEÑ8J�+ÐK×KÐ_×XÑXÐ_Ð\_Ð_Ð\_Ñ_×_×_×_Ò_ÐX×_×_Ô_ÐK×_×_Ó_ÐX×_×_Ó_Ð\_×_×_×_×_×_×_Õ_Ø�ZÑ Ð% AÐ% AÑ%×%×%×%Ò%Ð ×%×%Ô%Ð ×%×%Ó% A×%×%×%×%×%×%Ô%ò KÚSÚKùs6   ‚KŸK C KÃ KÃ!C KÆ!KÆ"D-KËKËKc           
   ƒ   ó²  ^#   • U R                  S[        5       S9I S h  v•N nUR                  nSoCU:H  oU(       dÛ  [        R                  " SU4SX445      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  n[        R                  " UR                  5      S-   S	U0-  n[        [        R                  " U5      5      eS =n=pTUR                  5       S
   mTS   oˆR                  n	SoI" U5      oª(       dy  S[        R                  " U5      [        R                  " U	5      [        R                  " U5      [        R                  " U
5      S.-  n[        [        R                  " U5      5      eS =n=n	=pJTS   oˆR                  n	SoI" U5      oª(       dy  S[        R                  " U5      [        R                  " U	5      [        R                  " U5      [        R                  " U
5      S.-  n[        [        R                  " U5      5      eS =n=n	=pJ[        [         ["        5      nTS   oµU-  oÌR$                  oÝ" 5       oî(       Gdr  SS[
        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS[
        R                  " 5       ;   d  [        R                  " [         5      (       a  [        R                  " [         5      OSS[
        R                  " 5       ;   d  [        R                  " ["        5      (       a  [        R                  " ["        5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  n[        [        R                  " U5      5      eS =n=n=n=pÞU R'                  TS   5      I S h  v•N oˆR                  n	So¹U:H  oD(       d„  [        R                  " SU4SX›45      [        R                  " U5      [        R                  " U	5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n	=pKU R'                  S["         35      I S h  v•N R                  5       nU4S jUS    5       n[)        U5      oU(       d¢  SS[
        R                  " 5       ;   d  [        R                  " [(        5      (       a  [        R                  " [(        5      OS[        R                  " U5      [        R                  " U5      S.-  n[        [        R                  " U5      5      eS =p5g  GN° GNž NÞ7f) NrT   r#   r   rU   rr   rs   rt   ú
>assert %(py7)srx   rP   ÚfilenameÚia_91_zLassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
})rY   rZ   rw   rx   r)   z/api/media/preview/zvassert %(py11)s
{%(py11)s = %(py9)s
{%(py9)s = (%(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
} / %(py6)s).exists
}()
}r   r   r   )ru   rY   rv   r{   r[   Úpy9Úpy11rW   rX   r\   r]   z/api/portal/photos?code=c              3   óV   >#   • U  H  oS    TS    :H  =(       a    SUS   ;   v •  M      g7f)r�   r   Ú
child_nameNrN   )Ú.0ÚprP   s     €r   Ú	<genexpr>ÚQtest_ia_generates_a_watermarked_preview_and_saves_the_original.<locals>.<genexpr>V   s1   øé € ÐqÒ_pÐZ[�‰}  jÑ 1Ñ1×U°lÀaÈÁoÑ6UÔUÒ_pùs   ƒ&)Úphotosz,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úany)ru   rv   r{   )r_   rR   r`   ra   rb   r€   r�   r‚   rc   Ú_format_assertmsgÚtextrd   re   r$   Ú
startswithr   r   r   ÚexistsÚgetr›   )rf   rI   rs   r„   rj   r…   r†   r‡   rg   rh   Ú@py_assert6ri   Ú@py_assert7Ú@py_assert8Ú@py_assert10Ú@py_format12rk   rl   Úgalleryrˆ   rP   s                       @r   Ú>test_ia_generates_a_watermarked_preview_and_saves_the_originalr§   L   sk  øé € Ø�k‰kÐ-´E³GˆkÐ<×<€AØ�=‰=Ð'˜CÐ'˜CÑ×'×'×'Ò'ˆ=×'×'×'×'×'Õ'ˆ1×'×'×'Ñ'ˆ1×'×'Õ'ˆ=×'×'Ó'˜C×'×'×'Ð' §¡×'×'×'×'×'×'Ð'Ø�F‰F‹H�WÑ€EØ�ÑÐ1×'Ñ'Ð1¨Ð1Ð'¨Ó1Ð1Õ1×1×1Ð1Ð×1×1Ó1Ð'×1×1Ó1¨×1×1Ó1Ð1×1×1×1×1×1Ö1Ø�‰<Ð9×"Ñ"Ð9Ð#8Ð9Ð"Ð#8Ó9Ð9Õ9×9×9Ð9ˆ<×9×9Ó9Ð"×9×9Ó9Ð#8×9×9Ó9Ð9×9×9×9×9×9Ö9Ü”vœyÓ)ÐG¨E°*Ñ,=ÐGÐ,=Ñ=ÐG×EÑEÐGÐEÓGÐGÖG×G×G×G×G×GÑGŒJ×G×G×GÑGŒJ×G×G×G×G×GÖG”v×G×G×GÑG”v×G×G×G×G×GÖGœy×G×G×GÑGœy×G×GÕGÐ)×G×GÓGÐ,=×G×GÓGÐE×G×GÓGÐG×G×G×G×G×G×GÐGØ—*‘*˜U 5™\Ó*×*Ð>×7Ñ7Ð>¸3Ð>¸3Ñ>×>×>×>Ò>Ð7×>×>Ô>Ð*×>×>Ó>Ð7×>×>Ó>¸3×>×>×>×>×>×>Õ>à—Z‘ZÐ":¼9¸+Ð FÓG×G×MÑMÓO€GÜqÐ_fÐgoÒ_pÓqÐqŒ3ÐqÓqÐqÕq×q×q×q×q×qÑqŒ3×q×q×qÑqŒ3×q×qÕqÐq×q×qÓqÐq×q×q×q×q×qÓqò 	=ò +áGùs6   ƒWŸW PWÐ4WÐ5CWÓ6WÓ7CW×W×Wc              ƒ   óð  #   • U R                  SSSS00US9I S h  v•N    U R                  S[        5       S9I S h  v•N o3R                  nSoTU:H  of(       d„  [        R
                  " S	U4S
XE45      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=peU R                  S[        5       S9I S h  v•N o3R                  nSoTU:H  of(       d„  [        R
                  " S	U4S
XE45      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=peUS   nSo“U	:H  oD(       do  [        R
                  " S	U4SX945      [        R                  " U5      [        R                  " U	5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=pIU R                  SSSS00US9I S h  v•N   g  GN- GN GNP N! U R                  SSSS00US9I S h  v•N    f = f7f)Nú/api/admin/settingsÚsettingsÚai_max_per_familyr%   ©r$   ÚheadersrT   r#   r   rU   rW   rX   r\   r]   rq   r   ry   rz   r|   r[   é   ©	Úputr_   rR   r`   ra   rb   rc   rd   re   )rf   rI   Úadmin_headersrg   rh   ri   rj   rk   rl   r…   rˆ   s              r   Ú$test_ia_quota_per_family_is_enforcedr²   Y   sË  é € Ø
�*‰*Ð*°*Ð?RÐTUÐ>VÐ1WÐanˆ*Ð
o×oÐoðtØ—k‘kÐ"5¼E»G�kÐD×DÐX×QÑQÐXÐUXÐXÐUXÑX×X×X×XÒXÐQ×X×XÔXÐD×X×XÓXÐQ×X×XÓXÐUX×X×X×X×X×X×XÕXØ—k‘kÐ"5¼E»G�kÐD×DÐX×QÑQÐXÐUXÐXÐUXÑX×X×X×XÒXÐQ×X×XÔXÐD×X×XÓXÐQ×X×XÓXÐUX×X×X×X×X×X×XÕXØ˜Ñ$Ð)¨Ð)¨Ñ)×)×)×)Ò)Ð$×)×)Ô)Ð$×)×)Ó)¨×)×)×)×)×)×)Ó)à�j‰jÐ.°jÐCVÐXYÐBZÐ5[ÐerˆjÐs×sÑsò pâDÚDñ 	tøˆf�j‰jÐ.°jÐCVÐXYÐBZÐ5[ÐerˆjÐs×sÒsüsh   ‚I6›IœI6¡I ¼I½CI Ã>IÃ?D+I È*I6ÉIÉI6ÉI ÉI ÉI6ÉI3É,I/É-I3É3I6c              ƒ   óX  #   • U R                  SSSS00US9I S h  v•N    U R                  S[        5       S9I S h  v•N o3R                  nSoTU:H  of(       d„  [        R
                  " S	U4S
XE45      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=peU R                  SSSS00US9I S h  v•N   g  Nå NÆ N	! U R                  SSSS00US9I S h  v•N    f = f7f)Nr©   rª   Ú
ai_enabledFr¬   rT   r#   rq   rU   rW   rX   r\   r]   Tr¯   )	rf   rI   r±   rg   rh   ri   rj   rk   rl   s	            r   Ú"test_ia_can_be_disabled_per_schoolrµ   c   sû   é € Ø
�*‰*Ð*°*¸|ÈUÐ>SÐ1TÐ^kˆ*Ð
l×lÐlðpØ—k‘kÐ"5¼E»G�kÐD×DÐX×QÑQÐXÐUXÐXÐUXÑX×X×X×XÒXÐQ×X×XÔXÐD×X×XÓXÐQ×X×XÓXÐUX×X×X×X×X×X×XÕXà�j‰jÐ.°jÀ<ÐQUÐBVÐ5WÐanˆjÐo×oÑoñ	 máDáoøˆf�j‰jÐ.°jÀ<ÐQUÐBVÐ5WÐanˆjÐo×oÒoüsU   ‚D*›DœD*¡D ¼D½B&D Ã#D*Ã;DÃ<D*ÄD ÄD*ÄD'Ä D#Ä!D'Ä'D*c           
   ƒ   ó  #   • [        S5       Vs/ s H+  o R                  S[        SS9S9I S h  v•N R                  PM-     nnSoDU;   oU(       d¥  [        R
                  " SU4SXC45      [        R                  " U5      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	S
.-  nSSU0-  n[        [        R                  " U5      5      eS =pEg  NÉs  snf 7f)Né   rT   r‹   rŒ   r#   i­  )Úin)z%(py1)s in %(py3)sÚstatuses)rY   rZ   zassert %(py5)srw   )Úranger_   rR   r`   ra   rb   rc   r€   r�   r‚   rd   re   )rf   rI   Ú_r¹   rg   rh   Ú@py_format4r†   s           r   Útest_ia_is_rate_limited_per_ipr½   k   sŸ   é € ÜglÐmoÔgpÓqÒgpÐbc—{‘{Ð#6¼UÈÑ=O�{ÐP×P×]Ô]Ñgp€HÐqØÐ�(‰?×××Òˆ3××Ôˆ3×××××Ô�(×××Ñ�(××××××Ôñ QùÒqùs'   ‚D �C;¯C9
°C;ÁB7D Ã9C;Ã;D c              ƒ   óŒ  ^#   • SSK JnJn  SS KnU R	                  S[        5       S9I S h  v•N R                  5       S   n[        SSSUS	   S
SSSSSS./S.nU R	                  SUS9I S h  v•N mTR                  nSo‡U:H  o™(       dÛ  [        R                  " SU	4SXx45      S[        R                  " 5       ;   d  [        R                  " T5      (       a  [        R                  " T5      OS[        R                  " U5      [        R                  " U5      S.-  n
[        R                  " TR                   5      S-   SU
0-  n[#        [        R$                  " U5      5      eS =n=p˜SSKJn  U" 5        nUR+                  STR                  5       S   45        UR-                  5         S S S 5        U R/                  S[         35      I S h  v•N R                  5       S   n[1        U4S jU 5       5      S   n/ n[3        U5      nSnUU:H  nUnU(       a4  U R/                  US   S    5      I S h  v•N nUR                  nSnUU:H  nUnU(       Gd¾  [        R                  " SU4S!UU45      S"[        R                  " 5       ;   d  [        R                  " [2        5      (       a  [        R                  " [2        5      OS"S#[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS#[        R                  " U5      [        R                  " U5      S$.-  nS%S&U0-  nUR5                  U5        U(       aw  [        R                  " SW4S'WW45      [        R                  " W5      [        R                  " U5      [        R                  " U5      S(.-  nS)S*U0-  nUR5                  U5        [        R6                  " US5      0 -  nS+S,U0-  n[#        [        R$                  " U5      5      eS =n=n=n=n=n=n=n=nng  GNû GN½! , (       d  f       GNˆ= f GNp GN7f)-Nr   )Úinsert_orderÚitemrT   r#   rP   ÚTestzt@example.comg      "@r�   zmagic-digitalu   NumÃ©rique magiquer%   Tr   )rL   Ú	format_idÚformat_labelÚquantityÚ
unit_priceÚis_magicÚ	job_label)rK   Úcustomer_nameÚcustomer_emailÚtotalÚitemsz/api/portal/ordersr   rU   rr   rs   rt   r�   rx   ro   z2UPDATE orders SET payment_status='paid' WHERE id=?Úorder_idz/api/portal/orders?code=Úordersc              3   ó^   >#   • U  H"  oS    TR                  5       S   :X  d  M  Uv •  M$     g7f)r    rÌ   Nr#   )r–   Úors   s     €r   r˜   ÚNtest_generated_photo_can_be_ordered_as_magic_and_downloaded.<locals>.<genexpr>€   s'   øé € ÐCš�A T¡7¨a¯f©f«h°zÑ.BÑ#B�a‰ašùs   ƒ-¤	-Ú	downloadsr)   )z0%(py5)s
{%(py5)s = %(py2)s(%(py3)s)
} == %(py8)sÚlenÚdl)rv   rZ   rw   r]   z%(py10)sÚpy10)z7%(py15)s
{%(py15)s = %(py13)s.status_code
} == %(py18)s)Úpy13Úpy15Úpy18z%(py20)sÚpy20zassert %(py23)sÚpy23)Úconftestr¿   rÀ   Úuuidr_   rR   r$   r   r`   ra   rb   r€   r�   r‚   rc   rœ   r�   rd   re   r}   rp   r~   r   r    ÚnextrÒ   ÚappendÚ_format_boolop)rf   rI   r¿   rÀ   rÛ   rP   Úorderr„   rj   r…   r†   r‡   rp   rƒ   rÍ   rÓ   r¢   r¡   rg   Ú@py_assert12Ú@py_assert14Ú@py_assert17Ú@py_assert16rl   Ú@py_format11Ú@py_format19Ú@py_format21Ú@py_format22Ú@py_format24rs   s                                @r   Ú;test_generated_photo_can_be_ordered_as_magic_and_downloadedré   p   sµ  øé € ß+ÛØ—;‘;Ð2¼»�;ÐA×A×GÑGÓIÈ'ÑR€Eä °6È_ÐgjØ%*¨:Ñ%6À_ÐfzØ °ÀÐT`ñbð cñ€Eð
 �k‰kÐ.°UˆkÐ;×;€AØ�=‰=Ð'˜CÐ'˜CÑ×'×'×'Ò'ˆ=×'×'×'×'×'Õ'ˆ1×'×'×'Ñ'ˆ1×'×'Õ'ˆ=×'×'Ó'˜C×'×'×'Ð' §¡×'×'×'×'×'×'Ð'ÝÙ	Œ�TØ�‰ÐIÈAÏFÉFËHÐU_ÑL`ÐKbÔcØ�‰Œ÷ 
ð —J‘JÐ!9¼)¸ÐEÓF×F×LÑLÓNÈxÑX€FÜ	ÔC™ÓCÓ	CÀKÑ	P€BÙOŒ3ˆr‹7ÐO�aÐOˆ7�a‰<×OÑO 6§:¡:¨b°©e°E©lÓ#;×;ÐOÐ;×HÑHÐOÈCÐOÐHÈCÑO×O×O×OÖOˆ7�a×O×O×O×O×OÕOŒ3×O×O×OÑOŒ3×O×O×O×O×OÖOˆr×O×O×OÑOˆr×O×OÕOˆ7×O×OÓO�a×O×O×O×O×O×O×OÓOÐHÈC×O×OÔOÐ;×O×OÓOÐH×O×OÓOÈC×O×O×O×O×O×O×O×O×O×O×O×O×O×OÓOò Bò 	<÷ 
Žúò Gâ;ùs[   ƒ(Q«P&¬A QÁ,P)Á-D	QÅ65P,Æ+#QÇP>ÇA$QÈ3QÈ4G3QÐ)QÐ,
P;Ð6	QÑQ)"Ú__doc__Úbuiltinsr€   Ú_pytest.assertion.rewriteÚ	assertionÚrewritera   r   rA   r,   ÚpytestÚPILr   r@   Úcorer   rÚ   r   r   r   r   Úbytesr   ÚfixturerI   rR   rm   r‰   r�   r§   r²   rµ   r½   ré   rN   r   r   Ú<module>rô      s‡   ðÙ jß  „ ƒ	Û ã Û Ý ã 	Ý ß BÓ Bðˆuô ð ‡�ñó ðð<  °dô MòUò&ò&ò
ròtòpòó
Pr   