§
    jHÇj§  ã                   ó$  — d dl Z d dlZd dlZd dlmZ  ee¦  «                             ¦   «         j        Zej        j        j        Z	ej
                             d  ee¦  «        ¦  «         ej
                             d  ee	¦  «        ¦  «         ej
                             d  ee	dz  ¦  «        ¦  «         ej
                             d  ee	dz  ¦  «        ¦  «         d dlmZ d dlZ G d„ de j        ¦  «        Zedk    r e j        ¦   «          dS dS )	é    N)ÚPathÚ05_Production_PipelineÚ
web_review)Ú
TestClientc                   ó\   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ ZdS )ÚTestProposedServerc                 óB   — t          t          j        ¦  «        | _        d S )N)r   ÚsrvÚappÚclient©Úselfs    úLC:\Projects\KieuStory\.agents/teamwork/explorer_m4_1\test_proposed_server.pyÚsetUpzTestProposedServer.setUp   s   € Ý ¥¤Ñ)Ô)ˆŒˆˆó    c                 óÐ   — |                       t          j        d¦  «         |                       t          j        d¦  «         |                       t          j        j        d¦  «         d S )Nië  z0.0.0.0u(   Tháº­p NgÅ© NiÃªn - Cinema Review Studio)ÚassertEqualr
   ÚDEFAULT_PORTÚDEFAULT_HOSTr   Útitler   s    r   Útest_01_constants_and_app_metaz1TestProposedServer.test_01_constants_and_app_meta   sU   € Ø×Ò�Ô)¨4Ñ0Ô0Ð0Ø×Ò�Ô)¨9Ñ5Ô5Ð5Ø×Ò�œœÐ(RÑSÔSÐSÐSÐSr   c                 óð   — | j                              d¦  «        }|                      |j        d¦  «         |                     ¦   «         }|                      d|¦  «         |                      d|¦  «         d S )Nz/api/statuséÈ   ÚstatusÚlogs©r   Úgetr   Ústatus_codeÚjsonÚassertIn©r   ÚrespÚdatas      r   Útest_02_status_endpointz*TestProposedServer.test_02_status_endpoint   si   € ØŒ{�Š˜}Ñ-Ô-ˆØ×Ò˜Ô)¨3Ñ/Ô/Ð/Ø�yŠy‰{Œ{ˆØ�Š�h Ñ%Ô%Ð%Ø�Š�f˜dÑ#Ô#Ð#Ð#Ð#r   c                 ó  — | j                              d¦  «        }|                      |j        d¦  «         |                     ¦   «         }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d S )Nz/api/libraryr   ÚsummaryÚfeature_mastersÚ
raw_scenesr   r!   s      r   Útest_03_library_endpointz+TestProposedServer.test_03_library_endpoint!   s~   € ØŒ{�Š˜~Ñ.Ô.ˆØ×Ò˜Ô)¨3Ñ/Ô/Ð/Ø�yŠy‰{Œ{ˆØ�Š�i Ñ&Ô&Ð&Ø�ŠÐ'¨Ñ.Ô.Ð.Ø�Š�l DÑ)Ô)Ð)Ð)Ð)r   c                 óH  — | j                              d¦  «        }|                      |j        d¦  «         |                     ¦   «         }|                      d|¦  «         |                      t          |d         ¦  «        d¦  «         | j                              d¦  «        }|                      |j        d¦  «         |                     ¦   «         d         }|                      t          |¦  «        d¦  «         |                      t          d„ |D ¦   «         ¦  «        ¦  «         | j                              d¦  «        }|                      |j        d¦  «         |                     ¦   «         d         }|                      t          d	„ |D ¦   «         ¦  «        ¦  «         d S )
Nz
/api/shotsr   Úshotséd   z/api/shots?episode=ep01é¼   c              3   ó@   K  — | ]}|                      d ¦  «        V — ŒdS )Úep01N)Ú
startswith©Ú.0Úks     r   ú	<genexpr>z<TestProposedServer.test_04_shots_endpoint.<locals>.<genexpr>5   s.   è è € ÐCÐC°Q˜AŸLšL¨Ñ0Ô0ÐCÐCÐCÐCÐCÐCr   z/api/shots?scene=ep01_scene05c              3   ó   K  — | ]}d |v V — Œ	dS )Úep01_scene05N© r1   s     r   r4   z<TestProposedServer.test_04_shots_endpoint.<locals>.<genexpr>;   s'   è è € ÐBÐB°A˜N¨aÐ/ÐBÐBÐBÐBÐBÐBr   )
r   r   r   r   r   r    ÚassertGreaterÚlenÚ
assertTrueÚall)r   r"   r#   Úresp_epÚshots_epÚresp_scÚshots_scs          r   Útest_04_shots_endpointz)TestProposedServer.test_04_shots_endpoint)   sg  € ØŒ{�Š˜|Ñ,Ô,ˆØ×Ò˜Ô)¨3Ñ/Ô/Ð/Ø�yŠy‰{Œ{ˆØ�Š�g˜tÑ$Ô$Ð$Ø×Ò�3˜t Gœ}Ñ-Ô-¨sÑ3Ô3Ð3ð ”+—/’/Ð";Ñ<Ô<ˆØ×Ò˜Ô,¨cÑ2Ô2Ð2Ø—<’<‘>”> 'Ô*ˆØ×Ò�˜X™œ¨Ñ,Ô,Ð,Ø�Š�ÐCÐC¸(ÐCÑCÔCÑCÔCÑDÔDÐDð ”+—/’/Ð"AÑBÔBˆØ×Ò˜Ô,¨cÑ2Ô2Ð2Ø—<’<‘>”> 'Ô*ˆØ�Š�ÐBÐB¸ÐBÑBÔBÑBÔBÑCÔCÐCÐCÐCr   c                 ó.  — | j                              d¦  «        }|                      |j        d¦  «         |                     ¦   «         }|                      d|¦  «         | j                              d¦  «        }|                      |j        d¦  «         d S )Nz/api/scenesr   Úscenesz/api/scenes?episode=ep01r   )r   r"   r#   r<   s       r   Útest_05_scenes_endpointz*TestProposedServer.test_05_scenes_endpoint=   s‚   € ØŒ{�Š˜}Ñ-Ô-ˆØ×Ò˜Ô)¨3Ñ/Ô/Ð/Ø�yŠy‰{Œ{ˆØ�Š�h Ñ%Ô%Ð%à”+—/’/Ð"<Ñ=Ô=ˆØ×Ò˜Ô,¨cÑ2Ô2Ð2Ð2Ð2r   c                 ó¶  — | j                              d¦  «        }|                      |j        d¦  «         |                     ¦   «         }|                      d|¦  «         |                      d|¦  «         | j                              d¦  «        }|                      |j        d¦  «         |                      |                     ¦   «         d         g ¦  «         d S )Nz/api/videosr   Úvideosr&   z$/api/videos?category=nonexistent_xyzr   )r   r"   r#   Ú
resp_emptys       r   Útest_06_videos_endpointz*TestProposedServer.test_06_videos_endpointF   s»   € ØŒ{�Š˜}Ñ-Ô-ˆØ×Ò˜Ô)¨3Ñ/Ô/Ð/Ø�yŠy‰{Œ{ˆØ�Š�h Ñ%Ô%Ð%Ø�Š�i Ñ&Ô&Ð&à”[—_’_Ð%KÑLÔLˆ
Ø×Ò˜Ô/°Ñ5Ô5Ð5Ø×Ò˜ŸšÑ*Ô*¨8Ô4°bÑ9Ô9Ð9Ð9Ð9r   c                 óÀ   — | j                              d¦  «        }|                      |j        d¦  «         |                      d|                     ¦   «         ¦  «         d S )Nz/api/charactersr   Úgroups©r   r   r   r   r    r   ©r   r"   s     r   Útest_07_characters_endpointz.TestProposedServer.test_07_characters_endpointQ   sQ   € ØŒ{�ŠÐ0Ñ1Ô1ˆØ×Ò˜Ô)¨3Ñ/Ô/Ð/Ø�Š�h §	¢	¡¤Ñ,Ô,Ð,Ð,Ð,r   c                 óÀ   — | j                              d¦  «        }|                      |j        d¦  «         |                      d|                     ¦   «         ¦  «         d S )Nz/api/promptsr   Úmotion_promptsrJ   rK   s     r   Útest_08_prompts_endpointz+TestProposedServer.test_08_prompts_endpointV   sQ   € ØŒ{�Š˜~Ñ.Ô.ˆØ×Ò˜Ô)¨3Ñ/Ô/Ð/Ø�ŠÐ&¨¯	ª	©¬Ñ4Ô4Ð4Ð4Ð4r   c                 óD  — | j                              d¦  «        }|                      |j        d¦  «         | j                              d¦  «        }|                      |j        d¦  «         | j                              d¦  «        }|                      |j        d¦  «         d S )Nz/api/episodesr   zC/api/episode/TAP_01_XUAN_SAC_THE_NGUYEN_VA_GIONG_BAO_DOAN_TRUONG.mdz+/api/episode/../../windows/system32/cmd.exei”  )r   r   r   r   )r   r"   Ú
resp_validÚ	resp_travs       r   Ú#test_09_episodes_and_path_traversalz6TestProposedServer.test_09_episodes_and_path_traversal[   s’   € ØŒ{�Š˜Ñ/Ô/ˆØ×Ò˜Ô)¨3Ñ/Ô/Ð/ð ”[—_’_Ð%jÑkÔkˆ
Ø×Ò˜Ô/°Ñ5Ô5Ð5ð ”K—O’OÐ$QÑRÔRˆ	Ø×Ò˜Ô.°Ñ4Ô4Ð4Ð4Ð4r   c                 ó"  — t          j        d¬¦  «        }|                      |j        d¦  «         t          j        d¬¦  «        }|                      |j        d¦  «         t          j        dd¬¦  «        }|                      |j        d¦  «         | j                             di ¬	¦  «        }|                      |j        d
¦  «         t           j	        d         }	 dt           j	        d<   | j                             dddi¬	¦  «        }|                      |j        d¦  «         dt           j	        d<   | j                             dddi¬	¦  «        }|                      |j        d¦  «         |t           j	        d<   d S # |t           j	        d<   w xY w)Nzvalid prompt)ÚpromptÚep01_scene01_shot01)Úshot_idzTest promptÚep01_scene01)rU   Úscene_idz/api/generate©r   é¦  r   Ú
generatingrU   Útesté™  Úconcatenating)
r
   ÚGenerateRequestr   rU   rW   rY   r   Úpostr   Ú	gen_state)r   Úreq1Úreq2Úreq3rF   Úprev_statusÚresÚres2s           r   Ú0test_10_generate_request_validation_and_conflictzCTestProposedServer.test_10_generate_request_validation_and_conflictg   s€  € åÔ"¨.Ð9Ñ9Ô9ˆØ×Ò˜œ nÑ5Ô5Ð5ÝÔ"Ð+@ÐAÑAÔAˆØ×Ò˜œÐ'<Ñ=Ô=Ð=ÝÔ"¨-À.ÐQÑQÔQˆØ×Ò˜œ¨Ñ7Ô7Ð7ð ”[×%Ò% o¸BÐ%Ñ?Ô?ˆ
Ø×Ò˜Ô/°Ñ5Ô5Ð5õ ”m HÔ-ˆð		2Ø&2�CŒM˜(Ñ#Ø”+×"Ò" ?¸(ÀFÐ9KÐ"ÑLÔLˆCØ×Ò˜Sœ_¨cÑ2Ô2Ð2à&5�CŒM˜(Ñ#Ø”;×#Ò# O¸8ÀVÐ:LÐ#ÑMÔMˆDØ×Ò˜TÔ-¨sÑ3Ô3Ð3à&1�CŒM˜(Ñ#Ð#Ð#ø k�CŒM˜(Ñ#Ð1Ð1Ð1Ð1s   ÃBE= Å=Fc                 óì  — | j                              di ¬¦  «        }|                      |j        d¦  «         t          j        d         }	 dt          j        d<   | j                              dddi¬¦  «        }|                      |j        d¦  «         d	t          j        d<   | j                              dddi¬¦  «        }|                      |j        d¦  «         d
t          j        d<   | j                              dddi¬¦  «        }|                      |j        d¦  «         |                      |                     ¦   «         d         d¦  «         |t          j        d<   d S # |t          j        d<   w xY w)Nz/api/concatrZ   r[   r   r\   rY   rX   r^   r_   Úidler   Úaccepted)r   ra   r   r   r
   rb   r   )r   rF   rf   rg   rh   Úres3s         r   Útest_11_concat_endpointz*TestProposedServer.test_11_concat_endpoint�   s`  € à”[×%Ò% m¸"Ð%Ñ=Ô=ˆ
Ø×Ò˜Ô/°Ñ5Ô5Ð5õ ”m HÔ-ˆð	2Ø&2�CŒM˜(Ñ#Ø”+×"Ò" =¸
ÀNÐ7SÐ"ÑTÔTˆCØ×Ò˜Sœ_¨cÑ2Ô2Ð2à&5�CŒM˜(Ñ#Ø”;×#Ò# M¸À^Ð8TÐ#ÑUÔUˆDØ×Ò˜TÔ-¨sÑ3Ô3Ð3à&,�CŒM˜(Ñ#Ø”;×#Ò# M¸À^Ð8TÐ#ÑUÔUˆDØ×Ò˜TÔ-¨sÑ3Ô3Ð3Ø×Ò˜TŸYšY™[œ[¨Ô2°JÑ?Ô?Ð?à&1�CŒM˜(Ñ#Ð#Ð#ø k�CŒM˜(Ñ#Ð1Ð1Ð1Ð1s   ÁDE" Å"E3c                 óL   — |                       t          j        dk    ¦  «         d S )Nr   )r:   r
   Ú_cache_timer   s    r   Ú!test_12_cache_invalidation_windowz4TestProposedServer.test_12_cache_invalidation_window˜   s!   € Ø�Š�œ¨1Ò,Ñ-Ô-Ð-Ð-Ð-r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r$   r)   r@   rC   rG   rL   rO   rS   ri   rn   rq   r7   r   r   r   r      sÝ   € € € € € ð*ð *ð *ðTð Tð Tð
$ð $ð $ð*ð *ð *ðDð Dð Dð(3ð 3ð 3ð	:ð 	:ð 	:ð-ð -ð -ð
5ð 5ð 5ð

5ð 
5ð 
5ð2ð 2ð 2ð42ð 2ð 2ð..ð .ð .ð .ð .r   r   Ú__main__)ÚunittestÚsysÚosÚpathlibr   Ú__file__ÚresolveÚparentÚTHIS_DIRÚWORKSPACE_DIRÚpathÚinsertÚstrÚstarlette.testclientr   Úproposed_serverr
   ÚTestCaser   rr   Úmainr7   r   r   ú<module>r†      s`  ðØ €€€Ø 
€
€
€
Ø 	€	€	€	Ø Ð Ð Ð Ð Ð ð ˆ4�‰>Œ>×!Ò!Ñ#Ô#Ô*€Ø”Ô&Ô-€Ø „‡‚��3�3�x‘=”=Ñ !Ô !Ð !Ø „‡‚��3�3�}Ñ%Ô%Ñ &Ô &Ð &Ø „‡‚��3�3�}Ð'?Ñ?Ñ@Ô@Ñ AÔ AÐ AØ „‡‚��3�3�} |Ñ3Ñ4Ô4Ñ 5Ô 5Ð 5à +Ð +Ð +Ð +Ð +Ð +Ø Ð Ð Ð ðH.ð H.ð H.ð H.ð H.˜Ô*ñ H.ô H.ð H.ðT ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   