
    `i5                         d dl Z d dlZd dlZd dlmZ d dlmZ  G d dej                  Z G d dej                  Z G d d	e	          Z
 G d
 de	          ZdS )    N)as_bytes)StringIOc                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
ListenerTestsc                     ddl m} |S )Nr   )Listener)supervisor.http_clientr   )selfr   s     u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/supervisor/tests/test_http_client.py_getTargetClasszListenerTests._getTargetClass	   s    333333    c                 :     |                                              S N)r   r
   s    r   _makeOnezListenerTests._makeOne   s    %t##%%'''r   c                     |                                  }|                     |                    d d           d            d S r   )r   assertEqualstatusr
   insts     r   test_statuszListenerTests.test_status   s9    }}T400$77777r   c                 Z   |                                  }	 t          j        }t                      }|t          _        |                     |                    dd          d            |                     |                                d           |t          _        d S # |t          _        w xY w)Nurlerrorz
url error
)r   sysstderrr   r   r   getvalue)r
   r   
old_stderrr   s       r   
test_errorzListenerTests.test_error   s    }}	$JZZFCJTZZw77>>>V__..>>>#CJJJCJ####s   A8B B*c                     |                                  }|                     |                    d d d           d            d S r   )r   r   response_headerr   s     r   test_response_headerz"ListenerTests.test_response_header   s=    }}--dD$??FFFFFr   c                     |                                  }|                     |                    d           d            d S r   )r   r   doner   s     r   	test_donezListenerTests.test_done#   s5    }}4$/////r   c                 2   |                                  }	 t          j        }t                      }|t          _        |                    dd           |                     |                                d           |t          _        d S # |t          _        w xY w)Nr   data)r   r   stdoutr   feedr   r   )r
   r   
old_stdoutr(   s       r   	test_feedzListenerTests.test_feed'   s}    }}	$JZZFCJIIeV$$$V__..777#CJJJCJ####s   A$B Bc                     |                                  }|                     |                    d           d            d S r   )r   r   closer   s     r   
test_closezListenerTests.test_close2   s7    }}D))400000r   N)__name__
__module____qualname__r   r   r   r   r"   r%   r+   r.    r   r   r   r      s          ( ( (8 8 8	$ 	$ 	$G G G0 0 0	$ 	$ 	$1 1 1 1 1r   r   c                       e Zd Zd Zd(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 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! Z!d" Z"d# Z#d$ Z$d% Z%d& Z&d' Z'dS ))HTTPHandlerTestsc                     ddl m} |S )Nr   )HTTPHandler)r	   r6   )r
   r6   s     r   r   z HTTPHandlerTests._getTargetClass7   s    666666r   N c                 t    ||                                  }i } |                                 ||||          S )N)map)_makeListenerr   )r
   listenerusernamepassword
socket_maps        r   r   zHTTPHandlerTests._makeOne;   sO    ))++H
%t##%%	   	r   c                 "    t                      }|S r   )DummyListener)r
   r;   s     r   r:   zHTTPHandlerTests._makeListenerF   s     ??r   c                 ~    |                                  }d|_        |                     t          |j        d           d S )Nabc)r   r   assertRaisesAssertionErrorgetr   s     r   test_get_url_not_Nonez&HTTPHandlerTests.test_get_url_not_NoneJ   s6    }}.$(E:::::r   c                 r    |                                  }|                     t          |j        dd           d S )Nznothttp://localhostz/abc)r   rC   NotImplementedErrorrE   r   s     r   test_get_bad_schemez$HTTPHandlerTests.test_get_bad_schemeO   s?    }}H!		 	 	 	 	r   c                 L   |                                  }g g fd|_        fd|_        |                    dd           |                     |j        d           |                     t          j        t          j        fg           |                     dg           d S )Nc                  .                         |           S r   appendargsocketss    r   <lambda>z;HTTPHandlerTests.test_get_implied_port_80.<locals>.<lambda>\       '..*=*= r   c                 .                         |           S r   rL   tupconnectss    r   rQ   z;HTTPHandlerTests.test_get_implied_port_80.<locals>.<lambda>]       8??3#7#7 r   zhttp://localhost/abc/defP   )	localhostrY   	r   create_socketconnectrE   r   portsocketAF_INETSOCK_STREAMr
   r   rV   rP   s     @@r   test_get_implied_port_80z)HTTPHandlerTests.test_get_implied_port_80X   s    }}====7777#Z000B'''FNF4F#G"HIII$5#677777r   c                 L   |                                  }g g fd|_        fd|_        |                    dd           |                     |j        d           |                     t          j        t          j        fg           |                     dg           d S )Nc                  .                         |           S r   rL   rN   s    r   rQ   z9HTTPHandlerTests.test_get_explicit_port.<locals>.<lambda>g   rR   r   c                 .                         |           S r   rL   rT   s    r   rQ   z9HTTPHandlerTests.test_get_explicit_port.<locals>.<lambda>h   rW   r   zhttp://localhost:8080rX     )rZ   rg   r[   rb   s     @@r   test_get_explicit_portz'HTTPHandlerTests.test_get_explicit_portc   s    }}====7777(*555D)))FNF4F#G"HIII$7#899999r   c                    |                                  }g g fd|_        fd|_        |                    dd           |                     t
          j        t
          j        fg           |                     dg           d S )Nc                  .                         |           S r   rL   rN   s    r   rQ   zGHTTPHandlerTests.test_get_explicit_unix_domain_socket.<locals>.<lambda>r   rR   r   c                 .                         |           S r   rL   rT   s    r   rQ   zGHTTPHandlerTests.test_get_explicit_unix_domain_socket.<locals>.<lambda>s   rW   r   zunix:///a/b/cr7   z/a/b/c)r   r\   r]   rE   r   r_   AF_UNIXra   rb   s     @@r   $test_get_explicit_unix_domain_socketz5HTTPHandlerTests.test_get_explicit_unix_domain_socketn   s    }}====7777"%%%FNF4F#G"HIIIH:.....r   c                    |                                  }g fd|_        t                      |_        |                                 |                     |j        j        d            |                     |j        d           |                     dg           | 	                    |j        j                   |                     |j
        d           d S )Nc                  .                          d          S NTrL   )delss   r   rQ   z-HTTPHandlerTests.test_close.<locals>.<lambda>{   s    4;;t#4#4 r   r   TCLOSED)r   del_channelDummySocketr_   r-   r   r;   closed	connected
assertTruer   )r
   r   rq   s     @r   r.   zHTTPHandlerTests.test_closex   s    }}4444!mm

-t444+++v&&&*+++8,,,,,r   c                     ddl m} |                                 }g fd|_        |                    dd           |                     d|g           d S )Nr   CRLFc                 .                         |           S r   rL   )valpushess    r   rQ   z.HTTPHandlerTests.test_header.<locals>.<lambda>   s    c 2 2 r   namer|   z	name: val)r	   rz   r   pushheaderr   )r
   rz   r   r}   s      @r   test_headerzHTTPHandlerTests.test_header   sl    //////}}2222	FE"""+t!455555r   c                     |                                  }d|_        |                     |                                d            d S rp   )r   error_handledr   handle_errorr   s     r   !test_handle_error_already_handledz2HTTPHandlerTests.test_handle_error_already_handled   s?    }}!**,,d33333r   c                    |                                  }g fd|_        d|_        |                     |                                d            |                     |j        j        d           |                     |j        j        d           |                     dg           |                     |j	                   d S )Nc                  .                          d          S rp   rL   ru   s   r   rQ   z4HTTPHandlerTests.test_handle_error.<locals>.<lambda>       V]]400 r   fooz"Cannot connect, error: None (None)T)
r   r-   r   r   r   r;   	error_url	error_msgrw   r   r
   r   ru   s     @r   test_handle_errorz"HTTPHandlerTests.test_handle_error   s    }}0000
**,,d3330%888M#0	 	 	 	$(((*+++++r   c                     |                                  }g fd|_        d|_        d|_        |                                 |                     |j                   |                     g d           d S )Nc                 H                         t          |                     S r   rM   r   r|   pusheds    r   rQ   zBHTTPHandlerTests.test_handle_connect_no_password.<locals>.<lambda>       hsmm < < r   /rZ   )   GET / HTTP/1.1   
   Host: localhostr      Accept-Encoding: chunkedr      Accept: */*r   "   User-agent: Supervisor HTTP Clientr   r   r   )r   r   pathhosthandle_connectrw   rv   r   r
   r   r   s     @r   test_handle_connect_no_passwordz0HTTPHandlerTests.test_handle_connect_no_password   s    }}<<<<			'''  	 	 	 	 	r   c                    |                                  }g fd|_        d|_        d|_        d|_        d|_        |                                 |                     |j                   | 	                    g d           d S )Nc                 H                         t          |                     S r   r   r   s    r   rQ   zDHTTPHandlerTests.test_handle_connect_with_password.<locals>.<lambda>   r   r   r   rZ   r=   r<   )r   r   r   r   r   r   r   r   r   r   s-   Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=r   r   r   )
r   r   r   r   r=   r<   r   rw   rv   r   r   s     @r   !test_handle_connect_with_passwordz2HTTPHandlerTests.test_handle_connect_with_password   s    }}<<<<			""'''  	 	 	 	 	r   c                     |                                  }|                    d           |                     |j        j        dg           d S )Nr'   )r   r)   r   r;   fed_datar   s     r   r+   zHTTPHandlerTests.test_feed   sD    }}		&/&:::::r   c                     |                                  }|j        |_        d|_        |                    d           |                     |j        j        dg           |                     |j        d           d S )NrB   r   abcfoor   )r   bodypartbuffercollect_incoming_datar   r;   r   r   s     r   'test_collect_incoming_data_part_is_bodyz8HTTPHandlerTests.test_collect_incoming_data_part_is_body   sn    }}I	""5)))/(<<<c*****r   c                     |                                  }d |_        d|_        |                    d           |                     |j        j        g            |                     |j        d           d S )NrB   r   r   )r   r   r   r   r   r;   r   r   s     r   +test_collect_incoming_data_part_is_not_bodyz<HTTPHandlerTests.test_collect_incoming_data_part_is_not_body   sj    }}	""5)))/444h/////r   c                     |                                  }g fd|_        d |_        |                                 |                     dg           |                     |j        d           d S )Nc                  .                          d          S rp   rL   )parteds   r   rQ   z8HTTPHandlerTests.test_found_terminator.<locals>.<lambda>   s    FMM$// r   Tr   )r   r   r   found_terminatorr   )r
   r   r   s     @r   test_found_terminatorz&HTTPHandlerTests.test_found_terminator   st    }}////	$(((c*****r   c                     |                                  }d |_        |                                 |                     |j        d           d S Nr   )r   r   ignorer   r   s     r   test_ignorezHTTPHandlerTests.test_ignore   sA    }}c*****r   c                 |    |                                  }d|_        |                     t          |j                   d S )Ns   NOTHTTP/1.0 200 OK)r   r   rC   
ValueErrorstatus_liner   s     r   $test_status_line_not_startswith_httpz5HTTPHandlerTests.test_status_line_not_startswith_http   s5    }}+*d&677777r   c                 0   |                                  }d|_        |                                \  }}}|                     |d           |                     |d           |                     |d           |                     |j        |j                   d S )Ns   HTTP/1.0 200 OK   HTTP/1.0      OK)r   r   r   r   r   headers)r
   r   versionr   reasons        r   test_status_line_200z%HTTPHandlerTests.test_status_line_200   s    }}("&"2"2"4"4+...%%%'''DL11111r   c                    |                                  }d|_        g fd|_        |                                \  }}}|                     |d           |                     |d           |                     |d           |                     |j        |j                   |                     |j        j        d           |                     dg           d S )Ns   HTTP/1.0 201 OKc                  .                          d          S rp   rL   r   s   r   rQ   z;HTTPHandlerTests.test_status_line_not_200.<locals>.<lambda>	  r   r   r      r   zCannot read, status code 201T)	r   r   r-   r   r   r   r   r;   r   )r
   r   r   r   r   ru   s        @r   test_status_line_not_200z)HTTPHandlerTests.test_status_line_not_200  s    }}(0000
"&"2"2"4"4+...%%%'''DK000M#*	 	 	 	$(((((r   c                    |                                  }d|_        d|_        d|_        g fd|_        |                                 |                     |j        |j                   |                     dg           d S )Nr   s   not chunked   c                 .                         |           S r   rL   )Ltermss    r   rQ   zEHTTPHandlerTests.test_headers_empty_line_nonchunked.<locals>.<lambda>      Q r   )	r   r   encodinglengthset_terminatorr   r   r   r   r
   r   r   s     @r   "test_headers_empty_line_nonchunkedz3HTTPHandlerTests.test_headers_empty_line_nonchunked  s    }}&7777DI...$$$$$r   c                     |                                  }d|_        d|_        |                                 |                     |j        |j                   d S )Nr      chunked)r   r   r   r   r   r   chunked_sizer   s     r   test_headers_empty_line_chunkedz0HTTPHandlerTests.test_headers_empty_line_chunked   sK    }}"D$566666r   c                     |                                  }d|_        |                     |                                d            d S )N   :)r   r   r   r   r   s     r   +test_headers_nonempty_line_no_name_no_valuez<HTTPHandlerTests.test_headers_nonempty_line_no_name_no_value'  s:    }}.....r   c                     |                                  }d|_        g fd|_        |                                 |                     |j        d           |                     dg           d S )Ns   Transfer-Encoding: chunkedc                 2                         | |f          S r   rL   nv	responsess     r   rQ   zOHTTPHandlerTests.test_headers_nonempty_line_transfer_encoding.<locals>.<lambda>0      I,<,<aV,D,D r   r   )s   transfer-encodingr   )r   r   r!   r   r   r   r
   r   r   s     @r   ,test_headers_nonempty_line_transfer_encodingz=HTTPHandlerTests.test_headers_nonempty_line_transfer_encoding,  sr    }}3	DDDD
333%G$HIIIIIr   c                     |                                  }d|_        g fd|_        |                                 |                     |j        d           |                     dg           d S )Ns   Content-Length: 3c                 2                         | |f          S r   rL   r   s     r   rQ   zLHTTPHandlerTests.test_headers_nonempty_line_content_length.<locals>.<lambda>9  r   r   r   )s   content-length   3)r   r   r!   r   r   r   r   s     @r   )test_headers_nonempty_line_content_lengthz:HTTPHandlerTests.test_headers_nonempty_line_content_length5  sr    }}*	DDDDa(((%>$?@@@@@r   c                     |                                  }d|_        g fd|_        |                                 |                     dg           d S )Ns   X-Test: abcc                 2                         | |f          S r   rL   r   s     r   rQ   zGHTTPHandlerTests.test_headers_nonempty_line_arbitrary.<locals>.<lambda>B  r   r   )s   x-tests   abc)r   r   r!   r   r   r   s     @r   $test_headers_nonempty_line_arbitraryz5HTTPHandlerTests.test_headers_nonempty_line_arbitrary>  sZ    }}$	DDDD%8$9:::::r   c                     |                                  }|                    dd           |                     |j        j        d           |                     |j        j        d           d S )N   a   b)r   r!   r   r;   response_header_nameresponse_header_valuer   s     r   r"   z%HTTPHandlerTests.test_response_headerF  sa    }}T4(((;TBBB<dCCCCCr   c                     |                                  }g fd|_        |                                 |                     dg           |                     |j        j                   d S )Nc                  .                          d          S rp   rL   r   s   r   rQ   z,HTTPHandlerTests.test_body.<locals>.<lambda>O  r   r   T)r   r-   r   r   rw   r;   r$   r   s     @r   	test_bodyzHTTPHandlerTests.test_bodyL  sg    }}0000
		$(((*+++++r   c                     |                                  }|                                 |                     |j        j                   d S r   )r   r$   rw   r;   r   s     r   r%   zHTTPHandlerTests.test_doneT  s9    }}		*+++++r   c                     |                                  }d|_        d|_        |                     |                                d            |                     |j        d           d S )Nr      )r   r   r   r   r   r   s     r   test_chunked_size_empty_linez-HTTPHandlerTests.test_chunked_size_empty_lineY  s]    }}**,,d333a(((((r   c                    |                                  }d|_        d|_        |                     |                                d            |                     |j        d           |                     |j        |j                   d S )N   0r   )r   r   r   r   r   r   trailerr   s     r   test_chunked_size_zero_sizez,HTTPHandlerTests.test_chunked_size_zero_size`  sw    }}**,,d333a(((DL11111r   c                 X   |                                  }d|_        d|_        g fd|_        |                     |                                d            |                     |j        |j                   |                     |j        d           |                     dg           d S )Ns   10r   c                 .                         |           S r   rL   )szr   s    r   rQ   zAHTTPHandlerTests.test_chunked_size_nonzero_size.<locals>.<lambda>m  s    b)9)9 r         )r   r   r   r   r   r   r   chunked_bodyr   s     @r   test_chunked_size_nonzero_sizez/HTTPHandlerTests.test_chunked_size_nonzero_sizeh  s    }}9999**,,d333D$5666b)))%%%%%r   c                 @   ddl m} |                                 }d|_        g g fd|_        fd|_        |                                 |                     |g           |                     dg           |                     |j        |j	                   d S )Nr   ry   s   bufferc                 .                         |           S r   rL   )r   r   s    r   rQ   z4HTTPHandlerTests.test_chunked_body.<locals>.<lambda>y  r   r   c                 .                         |           S r   rL   )r   liness    r   rQ   z4HTTPHandlerTests.test_chunked_body.<locals>.<lambda>z  s    ell1oo r   )
r	   rz   r   r   r   r)   r   r   r   r   )r
   rz   r   r  r   s      @@r   test_chunked_bodyz"HTTPHandlerTests.test_chunked_bodys  s    //////}}7777----	''',,,D$566666r   c                     |                                  }d|_        |                     |                                d            d S r   )r   r   r   r   r   s     r   test_trailer_line_not_crlfz+HTTPHandlerTests.test_trailer_line_not_crlf  s:    }}.....r   c                 (   ddl m} |                                 }||_        g g fd|_        fd|_        |                     |                                d            |                     dg           |                     dg           d S )Nr   ry   c                  .                          d          S rp   rL   )doness   r   rQ   z9HTTPHandlerTests.test_trailer_line_crlf.<locals>.<lambda>  s    ELL.. r   c                  .                          d          S rp   rL   )closess   r   rQ   z9HTTPHandlerTests.test_trailer_line_crlf.<locals>.<lambda>  r   r   T)r	   rz   r   r   r$   r-   r   r   )r
   rz   r   r  r
  s      @@r   test_trailer_line_crlfz'HTTPHandlerTests.test_trailer_line_crlf  s    //////}}....	0000
...'''$(((((r   )Nr7   N)(r/   r0   r1   r   r   r:   rF   rI   rc   rh   rm   r.   r   r   r   r   r   r+   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r   r%   r   r   r   r  r  r  r2   r   r   r4   r4   6   sM         	 	 	 	  ; ; ;
  	8 	8 	8	: 	: 	:/ / /
- 
- 
-6 6 64 4 4
, , ,  0  8; ; ;
+ + +0 0 0+ + ++ + +8 8 8
2 2 2) ) ) 	% 	% 	%7 7 7/ / /
J J JA A A; ; ;D D D, , ,, , ,
) ) )2 2 2	& 	& 	&7 7 7/ / /

) 
) 
) 
) 
)r   r4   c                   H    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S )
r@   NFc                     g | _         d S r   )r   r   s    r   __init__zDummyListener.__init__  s    r   c                     || _         d S r   r   r
   r   s     r   r-   zDummyListener.close  s    r   c                 "    || _         || _        d S r   )r   r   )r
   r   msgs      r   r   zDummyListener.error  s    r   c                 :    | j                             |           d S r   )r   rM   )r
   r   r'   s      r   r)   zDummyListener.feed  s    T"""""r   c                 "    || _         || _        d S r   )
status_url
status_int)r
   r   ints      r   r   zDummyListener.status  s    r   c                 "    || _         || _        d S r   )r   r   )r
   r   r~   values       r   r!   zDummyListener.response_header  s    $(!%*"""r   c                     d| _         d S rp   )r$   r  s     r   r$   zDummyListener.done  s    			r   )r/   r0   r1   ru   r   r   r$   r  r-   r   r)   r   r!   r2   r   r   r@   r@     s        FIID      # # #  + + +    r   r@   c                       e Zd ZdZd ZdS )rt   Fc                     d| _         d S rp   r   r   s    r   r-   zDummySocket.close  s    r   N)r/   r0   r1   ru   r-   r2   r   r   rt   rt     s(        F    r   rt   )r_   r   unittestsupervisor.compatr   r   TestCaser   r4   objectr@   rt   r2   r   r   <module>r#     s    



  & & & & & & & & & & & &,1 ,1 ,1 ,1 ,1H% ,1 ,1 ,1\Y) Y) Y) Y) Y)x( Y) Y) Y)v
    F   :    &     r   