ó
    Â¿Íj  ã                   ó´   • S SK rS SKJs  Jr  S SKrS SKJrJrJ	r	  S SK
Jr  S SKrS SKJr  S SKJr  S SKJrJrJr  SS jrS rS	 rS
 rS rS rS rS rS rg)é    N)ÚdatetimeÚ	timedeltaÚtimezone)ÚBytesIO)Úposts)ÚValidationError)Úparse_scheduled_timeÚpublish_nowÚvalidate_post_fieldsc                 ó.   • SSK Jn  U" [        U5      U S9$ )Nr   )ÚFileStorage)ÚstreamÚfilename)Úwerkzeug.datastructuresr   r   )ÚnameÚcontentr   s      ÚKF:\Solutions\Thinkera\Publishers\TikTokManager\tests\services\test_posts.pyÚ_filer      s   € Ý3Ùœg gÓ.¸Ñ>Ð>ó    c                  ó†   • [         R                  " [        5         [        SS05        S S S 5        g ! , (       d  f       g = f)NÚtitleÚhello)ÚpytestÚraisesr   r   © r   r   Útest_validate_requires_a_videor      s'   € Ü	�Š”Õ	'Ü˜g wÐ/Ô0÷ 
(×	'Ö	'ús	   ›2²
A c                  ód  • [         R                  " [        5         [        S[        R
                  S-   -  SS.5        S S S 5        [         R                  " [        5         [        SSS.5        S S S 5        [         R                  " [        5         [        SSS.5        S S S 5        [         R                  " [        5         [        S	S
05        S S S 5        [         R                  " [        5         [        S[        5       S.5        S S S 5        [         R                  " [        5         [        S[        S5      05        S S S 5        g ! , (       d  f       GN= f! , (       d  f       Nô= f! , (       d  f       NÔ= f! , (       d  f       Nµ= f! , (       d  f       N�= f! , (       d  f       g = f)NÚxé   úhttps://x/v.mp4)r   Ú	video_urlÚEVERYONE)r!   Úprivacy_levelÚstory)r!   Úmoder!   zftp://x/v.mp4)r!   Ú
video_filer&   zclip.exe)r   r   r   r   Úposts_serviceÚTITLE_MAX_CHARSr   r   r   r   Ú test_validate_rejects_bad_fieldsr)      s   € Ü	�Š”Õ	'Ü s¬m×.KÑ.KÈaÑ.OÑ'PÐ_pÑqÔr÷ 
(ä	�Š”Õ	'ÜÐ+<ÈzÑZÔ[÷ 
(ä	�Š”Õ	'ÜÐ+<ÀgÑNÔO÷ 
(ä	�Š”Õ	'Ü˜k¨?Ð;Ô<÷ 
(ä	�Š”Õ	'ÜÐ+<ÌEËGÑTÔU÷ 
(ä	�Š”Õ	'Ü˜l¬E°*Ó,=Ð>Ô?÷ 
(Ð	'÷ 
(Ö	'úç	'Õ	'úç	'Õ	'úç	'Õ	'úç	'Õ	'úç	'Õ	'úsG   ›#EÁ EÂE.ÃE?Ã2FÄ+F!Å
EÅ
E+Å.
E<Å?
FÆ
FÆ!
F/c                  ó:  • [        SS05      n U 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=p2U 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=p2U S   nS o!UL 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=p2g )Nr!   r    r#   Ú	SELF_ONLY©ú==©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6r%   Údirectr   ©Úis©z%(py1)s is %(py4)s)r   Ú
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanation)ÚfieldsÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7s         r   Útest_validate_defaultsrC   %   sü   € Ü! ;Ð0AÐ"BÓC€FØ�/Ñ"Ð1 kÐ1 kÑ1×1×1×1Ò1Ð"×1×1Ô1Ð"×1×1Ó1 k×1×1×1×1×1×1Ó1Ø�&‰>Ð%˜XÐ%˜XÑ%×%×%×%Ò%ˆ>×%×%Ô%ˆ>×%×%Ó%˜X×%×%×%×%×%×%Ó%Ø�'‰?Ð"˜dÐ"˜dÐ"×"×"×"Ò"ˆ?×"×"Ô"ˆ?×"×"Ó"˜d×"×"×"×"×"×"Ô"r   c                 ó*  ^
• 0 m
U R                  [        SSU
4S jj5        U R                  [        SS 5        [        S[        SSS.5      S	5      nS
SSS.o!U:H  o3(       d¥  [        R
                  " SU4SX45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =p2T
S   nSovU:H  o"(       do  [        R
                  " SU4SXg45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=p'T
S   nSovU:H  o"(       do  [        R
                  " SU4SXg45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=p'g )NÚinit_video_pullc                 ó8   >• TR                  XS9=(       d    SS0$ )N)Úurlr   Ú
publish_idÚpub_1)Úupdate)ÚtokenrG   r   r#   r%   Úcallss        €r   Ú<lambda>Ú1test_publish_now_pulls_from_url.<locals>.<lambda>.   sL   ø€ Ðx}÷  yEñ  yEð  JMð  yEð  y[÷  yvð  `lð  nuð  _vð  yvr   Úwait_for_publishc                 ó   • SSS.$ )NÚPUBLISH_COMPLETEÚv_1©Úpublish_statusÚvideo_idr   ©rK   Úpids     r   rM   rN   /   ó   € Ðasð  BGò  OHr   Útokr    Úcap)r!   r   z/tmprI   rQ   rR   )rH   rT   rU   r,   )z%(py0)s == %(py3)sÚresult)Úpy0Úpy3zassert %(py5)sÚpy5rG   r.   r/   r2   r3   r   ©NNN)Úsetattrr'   r
   r   r8   r9   Ú@py_builtinsÚlocalsÚ_should_repr_global_namer:   r;   r<   )Úmonkeypatchr[   r@   Ú@py_assert1Ú@py_format4Ú@py_format6r>   r?   rA   rB   rL   s             @r   Útest_publish_now_pulls_from_urlrh   ,   s[  ø€ Ø€EØ×ÑœÐ'8ö  ;vô  wØ×ÑœÐ'9ñ  <Hô  IÜ˜Ô 4ÐCTÐ_dÑ5eÓ fÐhnÓo€FØ$+Ð?QÐ_dÑeÐeÐeÑe×e×e×eÒeˆ6×e×e×e×e×eÕeˆ6×e×e×eÑeˆ6×e×eÕeÐe×e×e×e×e×e×eÑeØ�‰<Ð,Ð,Ð,Ð,Ñ,×,×,×,Ò,ˆ<×,×,Ô,ˆ<×,×,Ó,Ð,×,×,×,×,×,×,Ó,Ø�‰>Ð"˜UÐ"˜UÑ"×"×"×"Ò"ˆ>×"×"Ô"ˆ>×"×"Ó"˜U×"×"×"×"×"×"Ô"r   c           
      ól  ^• 0 mU R                  [        SSU4S jj5        U R                  [        SS 5        [        S[        S[	        5       05      [        U5      5      nUS   nSoCU:H  oU(       do  [        R                  " S	U4S
X445      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pTTS   nSoCUL oU(       do  [        R                  " SU4SX445      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pT[        R                  oˆR                  nTS   o”" U	5      oª(       + o»(       dÌ  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«[        R"                  n[        U5      o˜" U	5      n
/ oÚU:H  o»(       GdŠ  [        R                  " S	U4SX­45      S[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      S[        R                  " 5       ;   d  [        R                   " [
        5      (       a  [        R                  " [
        5      OSS[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R                  " U5      OS[        R                  " U	5      [        R                  " U
5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n	=n
=p½g )NÚpublish_video_filec                 ót   >• TR                  U[        R                  R                  U5      S9=(       d    SS0$ )N)ÚpathÚexistedrH   Úpub_2)rJ   Úosrl   Úisfile)rK   rl   r   r#   r%   Úseens        €r   rM   Ú=test_publish_now_uploads_file_and_cleans_up.<locals>.<lambda>:   sI   ø€ ÀtÇ{Á{ÐX\Ôfh×fmÑfm×ftÑftÐuyÓfzÀ{ÐG{÷  HWð  AMð  OVð  @Wð  HWr   rO   c                 ó   • SSS.$ )NrQ   Úv_2rS   r   rV   s     r   rM   rr   <   rX   r   rY   r&   rH   rn   r,   r.   r/   r2   r3   rm   Tr5   r7   rl   úfassert not %(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.path
}.exists
}(%(py6)s)
}ro   ©r\   Úpy2r1   r3   Úpy8©zl%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.listdir
}(%(py6)s
{%(py6)s = %(py3)s(%(py4)s)
})
} == %(py11)sÚstrÚtmp_path©r\   rw   r]   r1   r3   rx   Úpy11úassert %(py13)sÚpy13r_   )r`   r'   r
   r   r   rz   r8   r9   r:   r;   r<   ro   rl   Úexistsra   rb   rc   Úlistdir)rd   r{   r[   r>   r?   r@   rA   rB   re   Ú@py_assert5Ú@py_assert7Ú@py_assert9Ú@py_format10Ú@py_assert10Ú@py_format12Ú@py_format14rq   s                   @r   Ú+test_publish_now_uploads_file_and_cleans_upr‰   6   sm  ø€ Ø€DØ×ÑÜÐ+ö 	Wôð ×ÑœÐ'9ñ  <Hô  IÜ˜Ô 4°lÄEÃGÐ5LÓ MÌsÐS[Ë}Ó]€FØ�,ÑÐ* 7Ð* 7Ñ*×*×*×*Ò*Ð×*×*Ô*Ð×*×*Ó* 7×*×*×*×*×*×*Ó*Ø�	‰?Ð"˜dÐ"˜dÐ"×"×"×"Ò"ˆ?×"×"Ô"ˆ?×"×"Ó"˜d×"×"×"×"×"×"Ó"Ü�w‰wÐ+�~‰~Ð+˜d 6™lÐ+ˆ~˜lÓ+Ð+Ô+Ð+Õ+×+×+×+×+×+Ñ+Œr×+×+×+Ñ+Œr×+×+Õ+ˆw×+×+Ó+ˆ~×+×+Ó+˜l×+×+Ó+Ð+×+×+×+×+×+×+Ð+Ü�:‰:Ð*”c˜(“mÐ*ˆ:�mÓ$Ð*¨Ð*¨Ñ*×*×*×*Ó*Ð$×*×*×*×*×*Õ*Œ2×*×*×*Ñ*Œ2×*×*Õ*ˆ:×*×*×*×*×*Ô*”c×*×*×*Ñ*”c×*×*×*×*×*Ö*˜(×*×*×*Ñ*˜(×*×*Õ*�m×*×*Ó*Ð$×*×*Ó*¨×*×*×*×*×*×*×*Ð*r   c           
      óœ  ^^• SSK Jm  0 mU R                  [        SSUU4S jj5        [        R
                  " T5         [        S[        S[        5       05      [        U5      5        S S S 5        [        R                  o"R                  nTS   oC" U5      oU(       + of(       dÌ  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=pV[        R(                  n[        U5      oB" U5      n/ o…U:H  of(       GdŠ  [        R*                  " SU4SXX45      S	[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OS	[        R"                  " U5      S[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OSS[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R"                  " U5      OS[        R"                  " U5      [        R"                  " U5      [        R"                  " U5      S.-  n	SSU	0-  n
[%        [        R&                  " U
5      5      eS =n=n=n=phg ! , (       d  f       GNÚ= f)Nr   )ÚTikTokAPIErrorrj   c                 ón   >• TR                  US9=(       d    S S 5       R                  T" SS5      5      $ )N)rl   c              3   ó$   #   • U  H  ov •  M     g 7f)Nr   )Ú.0Ú_s     r   Ú	<genexpr>ÚQtest_publish_now_cleans_up_when_tiktok_fails.<locals>.<lambda>.<locals>.<genexpr>I   s   é € ÐapÒmoÐhiÔbcÒmoùs   ‚r   i“  zTikTok refused the request.)rJ   Úthrow)rK   rl   r   r#   r%   r‹   rq   s        €€r   rM   Ú>test_publish_now_cleans_up_when_tiktok_fails.<locals>.<lambda>I   sQ   ø€ ÀtÇ{Á{ÐX\À{ÐG]÷  HkÑapÑmoÓap×avÑavñ  xFð  GJð  Lió  xjó  bkð  Hkr   rY   r&   rl   ru   ro   rv   r,   ry   rz   r{   r|   r~   r   r_   )Úapp.tiktok_apir‹   r`   r'   r   r   r
   r   r   rz   ro   rl   r€   ra   rb   r8   rc   r:   r;   r<   r�   r9   )rd   r{   re   r?   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‹   rq   s              @@r   Ú,test_publish_now_cleans_up_when_tiktok_failsr•   D   sÐ  ù€ Ý-Ø€DØ×ÑÜÐ+÷ 	kôô 
�Š�~Õ	&Ü�EÔ/°¼u»wÐ0GÓHÌ#ÈhË-ÔX÷ 
'ä�w‰wÐ+�~‰~Ð+˜d 6™lÐ+ˆ~˜lÓ+Ð+Ô+Ð+Õ+×+×+×+×+×+Ñ+Œr×+×+×+Ñ+Œr×+×+Õ+ˆw×+×+Ó+ˆ~×+×+Ó+˜l×+×+Ó+Ð+×+×+×+×+×+×+Ð+Ü�:‰:Ð*”c˜(“mÐ*ˆ:�mÓ$Ð*¨Ð*¨Ñ*×*×*×*Ó*Ð$×*×*×*×*×*Õ*Œ2×*×*×*Ñ*Œ2×*×*Õ*ˆ:×*×*×*×*×*Ô*”c×*×*×*Ñ*”c×*×*×*×*×*Ö*˜(×*×*×*Ñ*˜(×*×*Õ*�m×*×*Ó*Ð$×*×*Ó*¨×*×*×*×*×*×*×*Ð*÷ 
'Ö	&ús   ¿*L<Ì<
Mc                 óÄ  • U R                  [        SSS j5        U R                  [        SS 5        [        S[        S[	        5       05      [        U5      5      nUS   nSoCU:H  oU(       do  [        R                  " S	U4S
X445      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pTg )Nrj   c                 ó
   • SS0$ )NrH   Úpub_3r   )rK   rl   r   r#   r%   s        r   rM   Ú=test_publish_now_reports_processing_failure.<locals>.<lambda>R   s   € ð  ~Jð  LSñ  }Tr   rO   c                 ó   • SS S.$ )NÚFAILEDrS   r   rV   s     r   rM   r™   S   s   € ÐaiÐw{ÒN|r   rY   r&   rT   r›   r,   r.   r/   r2   r3   r_   )r`   r'   r
   r   r   rz   r8   r9   r:   r;   r<   )rd   r{   r[   r>   r?   r@   rA   rB   s           r   Ú+test_publish_now_reports_processing_failurerœ   Q   s¡   € Ø×ÑœÐ';ó  >Tô  UØ×ÑœÐ'9Ñ;|Ô}Ü˜Ô 4°lÄEÃGÐ5LÓ MÌsÐS[Ë}Ó]€FØÐ"Ñ#Ð/ xÐ/ xÑ/×/×/×/Ò/Ð#×/×/Ô/Ð#×/×/Ó/ x×/×/×/×/×/×/Ô/r   c            	      ó^	  • [         R                  " [        R                  5      [	        SS9-   n U R
                  o" 5       n[        U5      o3U :H  oD(       Gdm  [        R                  " SU4SX045      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS[        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U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 =n=n=p4S
n[        U5      nS o8UL o™(       d×  [        R                  " SU	4SXƒ45      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=n=p“S n[        U5      nS o8UL o™(       d×  [        R                  " SU	4SXƒ45      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=n=p“[        R                   " ["        5         [        S5        S S S 5        [        R                   " ["        5         [        [         R                  " [        R                  5      [	        SS9-
  R                  5       5        S S S 5        [        R                   " ["        5         [        S5        S S S 5        g ! , (       d  f       N¥= f! , (       d  f       NN= f! , (       d  f       g = f)Né   )Úhoursr,   )zf%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.isoformat
}()
})
} == %(py9)sr	   Úfuture)r\   r0   r]   r^   Úpy7Úpy9zassert %(py11)sr}   Ú r5   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} is %(py7)s)r\   rw   r1   r¡   zassert %(py9)sr¢   z
not-a-dater   i90  )r   Únowr   Úutcr   Ú	isoformatr	   r8   r9   ra   rb   rc   r:   r;   r<   r   r   r   )r    r@   Ú@py_assert4Ú@py_assert6Ú@py_assert8r…   r‡   re   r?   r‚   Ú@py_format8s              r   Útest_parse_scheduled_timer«   X   sƒ  € Ü�\Š\œ(Ÿ,™,Ó'¬)¸!Ñ*<Ñ<€FØ &× 0Ñ 0Ð=Ð 0Ó 2Ð=ÔÐ 2Ó3Ð=°vÑ=×=×=×=Ó=Ð3×=×=×=×=×=Õ=Ô×=×=×=Ñ=Ô×=×=×=×=×=Ö= ×=×=×=Ñ= ×=×=Õ=Ð 0×=×=Ó=Ð 2×=×=Ó=Ð3×=×=×=×=×=Ô=°v×=×=×=Ñ=°v×=×=×=×=×=×=×=Ø "Ð+Ô Ó#Ð+ tÐ+ tÐ+×+×+×+Ò+Ð#×+×+×+×+×+Õ+Ô×+×+×+Ñ+Ô×+×+Õ+ ×+×+Ó+Ð#×+×+Ó+ t×+×+×+×+×+×+Õ+Ø $Ð-Ô Ó%Ð-¨Ð-¨Ð-×-×-×-Ò-Ð%×-×-×-×-×-Õ-Ô×-×-×-Ñ-Ô×-×-Õ- ×-×-Ó-Ð%×-×-Ó-¨×-×-×-×-×-×-Õ-Ü	�Š”Õ	'Ü˜\Ô*÷ 
(ä	�Š”Õ	'ÜœhŸlšl¬8¯<©<Ó8¼9È1Ñ;MÑM×XÑXÓZÔ[÷ 
(ä	�Š”Õ	'Ü˜UÔ#÷ 
(Ð	'÷	 
(Õ	'úç	'Õ	'úç	'Õ	'ús%   ÏQ<Ï?ARÑ'RÑ<
R
Ò
RÒ
R,)zclip.mp4s	   fakevideo)Úbuiltinsra   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter8   ro   r   r   r   Úior   r   Úapp.servicesr   r'   Úapp.services.errorsr   Úapp.services.postsr	   r
   r   r   r   r)   rC   rh   r‰   r•   rœ   r«   r   r   r   Ú<module>r´      sR   ðß  „ ƒ	ß 2Ñ 2Ý ã å /Ý /ß VÑ Vô?ò
1ò
@ò#ò#ò+ò
+ò0ó
$r   