o
    þâf  ã                   @   s   d dl Z d dlZd dlmZ d dlmZ G dd„ dejƒZG dd„ dejƒZG dd	„ d	ejƒZG d
d„ dƒZ	dd„ Z
edkrFejdd dS dS )é    N)ÚDummySupervisor)ÚDummyRequestc                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚDeferredWebProducerTestsc                 C   ó   ddl m} |S )Nr   )ÚDeferredWebProducer)Úsupervisor.webr   )Úselfr   © r	   úL/var/www/html/venv/lib/python3.10/site-packages/supervisor/tests/test_web.pyÚ_getTargetClass   ó   z(DeferredWebProducerTests._getTargetClassc                 C   s   |   ¡ ||ƒ}|S ©N©r   ©r   ÚrequestÚcallbackÚproducerr	   r	   r
   Ú_makeOne   s   z!DeferredWebProducerTests._makeOnec                 C   sd   t dg ddƒ}dd„ }d|_|  ||¡}|  |j|¡ |  |j|¡ |  |jd¡ |  |jd¡ d S )Nú/index.htmlÚ c                  W   ó   d S r   r	   ©Úxr	   r	   r
   Ú<lambda>   ó    z4DeferredWebProducerTests.test_ctor.<locals>.<lambda>é   F)r   Údelayr   ÚassertEqualr   r   Úfinishedr   r	   r	   r
   Ú	test_ctor   s   z"DeferredWebProducerTests.test_ctorc                    sL   t dg ddƒ}ddlm‰  ‡ fdd„}d|_|  ||¡}|  | ¡ ˆ ¡ d S )Nr   r   r   ©ÚNOT_DONE_YETc                     s   ˆ S r   r	   r   r    r	   r
   r      r   zADeferredWebProducerTests.test_more_not_done_yet.<locals>.<lambda>r   )r   Úsupervisor.httpr!   r   r   r   Úmorer   r	   r    r
   Útest_more_not_done_yet   s   z/DeferredWebProducerTests.test_more_not_done_yetc                 C   sX   t dg ddƒ}dd„ }d|_|  ||¡}|  | ¡ d ¡ |  |j¡ |  | ¡ d¡ d S )Nr   r   c                  W   s   dS )NÚdoner	   r   r	   r	   r
   r   $   r   z=DeferredWebProducerTests.test_more_finished.<locals>.<lambda>r   )r   r   r   r   r#   Ú
assertTruer   r   r	   r	   r
   Útest_more_finished"   s   z+DeferredWebProducerTests.test_more_finishedc                 C   s¦   t dg ddƒ}dd„ }d|_|  ||¡}|  | ¡ d ¡ |jjjj}|  t	|ƒd¡ |d }|  |d d¡ |  
|d  d¡|d ¡ |  |jd	¡ |  |jd
¡ d S )Nr   r   c                  W   s   t dƒ‚)NÚfoo)Ú
ValueError©Úargr	   r	   r
   r   -   s   zEDeferredWebProducerTests.test_more_exception_caught.<locals>.callbackr   r   zWeb interface errorÚ	TracebackTiô  )r   r   r   r   r#   ÚchannelÚserverÚloggerÚloggedÚlenr&   Ú
startswithr   Ú_error)r   r   r   r   Úlogdatar0   r	   r	   r
   Útest_more_exception_caught+   s   z3DeferredWebProducerTests.test_more_exception_caughtc                 C   s€   t dg ddƒ}dd„ }d|_|  ||¡}dddii}| |¡}|  |d ¡ |  |jd	¡ |  |jd
 d¡ |  |jd d¡ d S )Nr   r   c                  W   r   r   r	   r*   r	   r	   r
   r   <   r   zEDeferredWebProducerTests.test_sendresponse_redirect.<locals>.<lambda>r   ÚheadersÚLocationÚabci-  úContent-Typez
text/plainúContent-Lengthr   )r   r   r   Úsendresponser   r3   r6   ©r   r   r   r   ÚresponseÚresultr	   r	   r
   Útest_sendresponse_redirect:   s   
z3DeferredWebProducerTests.test_sendresponse_redirectc                 C   s†   t dg ddƒ}dd„ }d|_|  ||¡}dddid	œ}| |¡}|  |d ¡ |  |jd d¡ |  |jd
 d¡ |  |jd d¡ d S )Nr   r   c                  W   r   r   r	   r*   r	   r	   r
   r   H   r   zVDeferredWebProducerTests.test_sendresponse_withbody_and_content_type.<locals>.<lambda>r   r8   r9   z	text/html)Úbodyr6   r:   é   r   )r   r   r   r;   r   r6   Ú	producersr<   r	   r	   r
   Ú+test_sendresponse_withbody_and_content_typeF   s   
zDDeferredWebProducerTests.test_sendresponse_withbody_and_content_typeN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r$   r'   r5   r?   rC   r	   r	   r	   r
   r      s    
	r   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚUIHandlerTestsc                 C   r   )Nr   )Úsupervisor_ui_handler)r   rH   )r   rH   r	   r	   r
   r   S   r   zUIHandlerTests._getTargetClassc                 C   s   t ƒ }|  ¡ |ƒ}|S r   )r   r   )r   ÚsupervisordÚhandlerr	   r	   r
   r   W   s   zUIHandlerTests._makeOnec                 C   s6   t dg ddddiƒ}|  ¡ }| |¡}|  |d ¡ d S )Nz/foo.cssr   Ú	PATH_INFO)r   r   Úhandle_requestr   )r   r   rJ   Údatar	   r	   r
   Ú"test_handle_request_no_view_method\   s   
z1UIHandlerTests.test_handle_request_no_view_methodc                 C   sh   t dg ddddiƒ}|  ¡ }| |¡}|  |d ¡ |  |jjj|¡ ddlm} |  |jjj	j
|¡ d S )Nr   r   rK   r   ©Ú
StatusView)r   r   rL   r   r-   r   r   r   rP   r   Ú	__class__)r   r   rJ   rM   rP   r	   r	   r
   Útest_handle_request_defaultb   s   
ÿ
z*UIHandlerTests.test_handle_request_defaultc                 C   ó^   t dg ddddiƒ}|  ¡ }| |¡ ddlm} |jjj}|  |j	|¡ |  |j
jd¡ d S )Nr   r   rK   r   rO   úui/status.html)r   r   rL   r   rP   r-   r   r   r   rQ   ÚcontextÚtemplate)r   r   rJ   rP   Úviewr	   r	   r
   Útest_handle_request_index_htmll   ó   
ÿ

z-UIHandlerTests.test_handle_request_index_htmlc                 C   rS   )Nú
/tail.htmlr   rK   r   )ÚTailViewzui/tail.html)r   r   rL   r   r[   r-   r   r   r   rQ   rU   rV   )r   r   rJ   r[   rW   r	   r	   r
   Útest_handle_request_tail_htmlv   rY   z,UIHandlerTests.test_handle_request_tail_htmlc                 C   s^   t dg ddddiƒ}|  ¡ }| |¡ ddlm} |jjj}|  |j	|¡ |  |j
jd ¡ d S )NrZ   r   rK   z/ok.htmlr   )ÚOKView)r   r   rL   r   r]   r-   r   r   r   rQ   rU   rV   )r   r   rJ   r]   rW   r	   r	   r
   Útest_handle_request_ok_html€   rY   z*UIHandlerTests.test_handle_request_ok_htmlN)
rD   rE   rF   r   r   rN   rR   rX   r\   r^   r	   r	   r	   r
   rG   R   s    


rG   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚStatusViewTestsc                 C   r   )Nr   rO   )r   rP   )r   rP   r	   r	   r
   r   Œ   r   zStatusViewTests._getTargetClassc                 C   s   |   ¡ }||ƒS r   r   )r   rU   Úklassr	   r	   r
   r      s   zStatusViewTests._makeOnec                 C   s:   t ƒ }tƒ |_d|_i |_|  |¡}|  t|jdd ¡ d S )NrT   Úprocess)	ÚDummyContextr   rI   rV   Úformr   ÚassertRaisesr)   Úmake_callback)r   rU   rW   r	   r	   r
   Útest_make_callback_noaction”   s   
z+StatusViewTests.test_make_callback_noactionc                 C   sX   t ƒ }tƒ |_d|_tdg ddƒ|_i |_i |_|  |¡}| 	¡ }|  
| d¡|¡ d S )NrT   z/foor   z<!DOCTYPE html PUBLIC)rb   r   rI   rV   r   r   rc   r=   r   Úrenderr&   r2   )r   rU   rW   rM   r	   r	   r
   Útest_render_noactionœ   s   
z$StatusViewTests.test_render_noactionc                 C   sV   t ƒ }tƒ |_d|_i |_ddi|_|  |¡}| ¡ }ddlm	} |  
||u |¡ d S )NrT   ÚactionÚrefreshr   r    )rb   r   rI   rV   r=   rc   r   rg   r"   r!   r&   )r   rU   rW   rM   r!   r	   r	   r
   Útest_render_refresh§   s   

z#StatusViewTests.test_render_refreshN)rD   rE   rF   r   r   rf   rh   rk   r	   r	   r	   r
   r_   ‹   s    r_   c                   @   s   e Zd ZdS )rb   N)rD   rE   rF   r	   r	   r	   r
   rb   ²   s    rb   c                   C   s   t  tjt ¡S r   )ÚunittestÚfindTestCasesÚsysÚmodulesrD   r	   r	   r	   r
   Ú
test_suiteµ   s   rp   Ú__main__)ÚdefaultTest)rn   rl   Úsupervisor.tests.baser   r   ÚTestCaser   rG   r_   rb   rp   rD   Úmainr	   r	   r	   r
   Ú<module>   s    K9'ÿ