ó
    ôÁÍj}  ã                   ó„  • S SK rS SKJs  Jr  S SKrS SKrS SKJrJ	r	J
r
  S SKrS SKJr  S SKJrJr  S SKJrJr  S SKJr  S SKJrJr  Sr\R4                  " 5       R7                  5       rS	 r\R<                  S
 5       r\R<                  S 5       r\R<                  S 5       r SS jr!\R<                  S 5       r"SS jr#S r$g)é    N)ÚdatetimeÚ	timedeltaÚtimezone)ÚFernet)Ú	downgradeÚupgrade)Ú
create_appÚdb)Údatabase_uri)ÚAccountÚScheduledPostztest-api-keyc                 ó$  • U S-  nU S-  nUR                  SS9  UR                  SS9  U S-  n[        R                  R                  SS5      R	                  5       S:X  a  [        [        R                  5      nOS	UR                  5        3n[        S)0 S
S_SS_SS_S[        _SS_SS_SS_S/ SQ_S[        U5      _SU_SS_SS_SS_S [        U5      _S!S"_S#S$_S%[        U5      _S&S_S'[        _6nUR                  U5        [        S(S)U5      $ )*zSBuild a config class for one test app; every folder and the DB live under tmp_path.ÚuploadsÚmediaT)Úexist_okztest.dbÚ	DB_ENGINEÚsqliteÚpostgresz
sqlite:///ÚTESTINGÚ	FLASK_ENVÚtestingÚ
SECRET_KEYztest-secret-keyÚAPI_KEYÚTIKTOK_CLIENT_KEYztest-client-keyÚTIKTOK_CLIENT_SECRETztest-client-secretÚTIKTOK_REDIRECT_URIz$https://localhost:5002/auth/callbackÚTIKTOK_SCOPES)zuser.info.basiczuser.info.statsz
video.listzvideo.publishÚDATABASE_PATHÚSQLALCHEMY_DATABASE_URIÚSQLALCHEMY_TRACK_MODIFICATIONSFÚMAX_UPLOAD_SIZE_MBé
   ÚMAX_CONTENT_LENGTHi    ÚMEDIA_FOLDERÚSCHEDULER_INTERVAL_SECONDSé   ÚAPP_NAMEzTikTok Manager (test)ÚUPLOAD_FOLDERÚWTF_CSRF_ENABLEDÚTOKEN_ENCRYPTION_KEYÚ
TestConfig© )ÚmkdirÚosÚenvironÚgetÚlowerr   Úas_posixÚdictÚTEST_API_KEYÚstrÚTEST_ENCRYPTION_KEYÚupdateÚtype)Útmp_pathÚ	overridesr   r   Údb_pathÚuriÚvaluess          Ú@F:\Solutions\Thinkera\Publishers\TikTokManager\tests\conftest.pyÚmake_configr?      so  € à˜Ñ"€GØ�wÑ€EØ‡M�M˜4€MÑ Ø	‡K�K˜€KÑØ˜Ñ"€GÜ	‡z�z‡~�~�k 8Ó,×2Ñ2Ó4¸
ÓBÜœ2Ÿ:™:Ó&‰à˜7×+Ñ+Ó-Ð.Ð/ˆÜò Ùðáðñ %ðõ ð	ñ
 ,ðñ 2ðñ Cðó \ðô ˜'”lðñ !$ðñ (-ðñ ðñ ,ðô ˜”Zðñ $&ðñ  )ð!ô" ˜'”lð#ñ$ ð%õ& 1ð'€Fð* ‡M�M�)ÔÜ�˜b &Ó)Ð)ó    c              #   ó‚  #   • [        [        U 5      5      nUR                  5          [        5         SSS5        Uv •  UR                  5          [        R
                  R                  5         [        SS9  [        R                  R                  5         SSS5        g! , (       d  f       Nq= f! , (       d  f       g= f7f)zXOne app per test; the schema comes from the migrations (both engines), never create_all.NÚbase)Úrevision)
r	   r?   Úapp_contextr   r
   ÚsessionÚremover   ÚengineÚdispose)r9   Úapplications     r>   ÚapprJ   5   s   é € ô œ[¨Ó2Ó3€KØ	×	 Ñ	 Õ	"ÜŒ	÷ 
#à
ÒØ	×	 Ñ	 Õ	"Ü
�
‰
×ÑÔÜ˜6Ò"Ü
�	‰	×ÑÔ÷ 
#Ð	"÷ 
#Õ	"ú÷ 
#Õ	"üs4   ‚%B?§B²B?ÁAB.Â	B?Â
B+Â'B?Â.
B<Â8B?c                 ó"   • U R                  5       $ )N)Útest_client©rJ   s    r>   ÚclientrN   B   s   € à�?‰?ÓÐr@   c                  ó   • S[         0$ )Nz	X-API-Key)r4   r,   r@   r>   Úapi_headersrP   G   s   € àœÐ&Ð&r@   c                 óf  • U R                  5          [        UUSSS[        R                  " [        R
                  5      [        SS9-   SSSS	S
9
n[        R                  R                  U5        [        R                  R                  5         UR                  sSSS5        $ ! , (       d  f       g= f)zPInsert one connected account into the given app's DB and return its database id.zaccess-token-plainzrefresh-token-plainz(user.info.basic,video.list,video.publishé   ©Úhoursiè  éd   iˆ  é   )
Úopen_idÚdisplay_nameÚaccess_tokenÚrefresh_tokenÚscopesÚ
expires_atÚfollower_countÚfollowing_countÚlikes_countÚvideo_countN)rD   r   r   Únowr   Úutcr   r
   rE   ÚaddÚcommitÚid)rJ   rW   ÚnameÚaccounts       r>   Úadd_accountrh   L   s€   € à	�‰Õ	ÜØØØ-Ø/Ø=Ü—|’|¤H§L¡LÓ1´IÀBÑ4GÑGØØØØñ
ˆô 	�
‰
�‰�wÔÜ
�
‰
×ÑÔØ�z‰z÷ 
×	×	ús   ‘BB"Â"
B0c                 ó   • [        U 5      $ )z/One connected account; returns its database id.)rh   rM   s    r>   rg   rg   `   s   € ô �sÓÐr@   c                 ó  • U R                  5          U=(       d.    [        R                  " [        R                  5      [        SS9-   nUR                  (       a,  UR                  [        R                  5      R                  S S9n[        USSSUU=(       d    SUUS9n[        R                  R                  U5        [        R                  R                  5         UR                  sS S S 5        $ ! , (       d  f       g = f)	Né   rS   )Útzinfozscheduled titleÚ	SELF_ONLYÚdirectzhttps://example.com/video.mp4)Ú
account_idÚtitleÚprivacy_levelÚmodeÚ
video_pathÚ	video_urlÚscheduled_atÚstatus)rD   r   ra   r   rb   r   rl   Ú
astimezoneÚreplacer   r
   rE   rc   rd   re   )rJ   ro   ru   rv   rs   rt   ÚatÚposts           r>   Úadd_scheduled_postr{   f   s±   € Ø	�‰Õ	Ø×LœXŸ\š\¬(¯,©,Ó7¼)È!Ñ:LÑLˆØ�9�9Ø—‘œxŸ|™|Ó,×4Ñ4¸DÐ4ÐAˆBÜØ!Ø#Ø%ØØ!Ø×BÐ#BØØñ	
ˆô 	�
‰
�‰�tÔÜ
�
‰
×ÑÔØ�w‰w÷! 
×	×	ús   ‘CC1Ã1
C?c                 ó`   • U R                  5        nXS'   S S S 5        g ! , (       d  f       g = f)NÚactive_account_id)Úsession_transaction)rN   Úaccount_db_idÚss      r>   Úloginr�   z   s%   € Ø	×	#Ñ	#Ô	%¨Ø!.Ð
Ñ÷ 
&×	%Ö	%ús   ‘Ÿ
-)Úopen_id_0001zTest Account)NÚpendingNN)%ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arÚjsonr.   r   r   r   ÚpytestÚcryptography.fernetr   Úflask_migrater   r   rJ   r	   r
   Ú
app.configr   Ú
app.modelsr   r   r4   Úgenerate_keyÚdecoder6   r?   ÚfixturerN   rP   rh   rg   r{   r�   r,   r@   r>   Ú<module>r“      s¹   ðß  „ ƒÛ 	ß 2Ñ 2ã Ý &ß ,ç Ý #ß -à€Ø×)Ò)Ó+×2Ñ2Ó4Ð ò!*ðH ‡�ñ	ó ð	ð ‡�ñó ðð ‡�ñ'ó ð'ôð( ‡�ñó ðô
ó(/r@   