
    Zi\G                         d dl Z d dlZd dlmZmZmZmZ d dlmZ 	  G d dej	                  Z
 G d dej	                  Z G d d	ej	                  Zed
k    r ej                     dS dS )    N)_is_address_in_network_is_no_proxy_hostget_proxy_info	parse_url)WebSocketProxyExceptionc                       e Zd Zd Zd ZdS )UrlTestc                 d   |                      t          dd                     |                      t          dd                     |                     t          dd                     |                      t          dd                     |                     t          dd                     d S )N	127.0.0.1127.0.0.0/8	127.1.0.1127.0.0.0/242001:db8::12001:db8::/642001:db8:1::1)
assertTruer   assertFalseselfs    S/root/projects/butler/venv/lib/python3.11/site-packages/websocket/tests/test_url.pytest_address_in_networkzUrlTest.test_address_in_network#   s    .{MJJKKK.{MJJKKK/^LLMMM.}oNNOOO/QQRRRRR    c                 .   t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d	           t          d
          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d	           t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d	           t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d	           t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d	           t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d	           t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d	           t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d           t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d           |                     t          t           d           t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d	           t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d	           t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d           t          d          }|                     |d         d           |                     |d         d           |                     |d         d           |                     |d         d           d S )Nzws://www.example.com/rr   zwww.example.com   P      z/r   Fzws://www.example.com/r/z/r/zws://www.example.com//zws://www.example.comzws://www.example.com:8080/ri  zws://www.example.com:8080/zws://www.example.com:8080zwss://www.example.com:8080/rTz&wss://www.example.com:8080/r?key=valuez/r?key=valuezhttp://www.example.com/rzws://[2a03:4000:123:83::3]/rz2a03:4000:123:83::3z!ws://[2a03:4000:123:83::3]:8080/rzwss://[2a03:4000:123:83::3]/ri  z"wss://[2a03:4000:123:83::3]:8080/r)r   assertEqualassertRaises
ValueError)r   ps     r   test_parse_urlzUrlTest.test_parse_url*   s,   .//101111r"""1t$$$1u%%%/00101111r"""1u%%%1u%%%-..101111r"""1s###1u%%%,--101111r"""1s###1u%%%344101111t$$$1t$$$1u%%%233101111t$$$1s###1u%%%122101111t$$$1s###1u%%%455101111t$$$1t$$$1t$$$>??101111t$$$1~...1t$$$*i1KLLL455145551r"""1t$$$1u%%%9::145551t$$$1t$$$1u%%%566145551s###1t$$$1t$$$:;;145551t$$$1t$$$1t$$$$$r   N)__name__
__module____qualname__r   r#    r   r   r	   r	   "   s:        S S SO% O% O% O% O%r   r	   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	IsNoProxyHostTestc                     t           j                            dd           | _        dt           j        v rt           j        d= d S d S Nno_proxy)osenvirongetr,   r   s    r   setUpzIsNoProxyHostTest.setUp}   s>    
z488##
:&&& $#r   c                 z    | j         r| j         t          j        d<   d S dt          j        v rt          j        d= d S d S r+   )r,   r-   r.   r   s    r   tearDownzIsNoProxyHostTest.tearDown   sE    = 	'%)]BJz"""2:%%
:&&& &%r   c                 ~   |                      t          ddg                     |                      t          ddg                     |                     t          ddg                     |                     t          ddg                     |                      t          dddg                     dt          j        d<   |                      t          dd                      |                      t          dd                      dt          j        d<   |                      t          dd                      d S )Nany.websocket.org*z192.168.0.1192.168.1.1other.websocket.orgr,   zother.websocket.org, *r   r   r   r-   r.   r   s    r   test_match_allz IsNoProxyHostTest.test_match_all   s1   )*=uEEFFF)-#??@@@*==/JJKKK14I3JKK	
 	
 	
 	14I33OPP	
 	
 	
 "%
:)*=tDDEEE)->>???!9
:)*=tDDEEEEEr   c                 ~   |                      t          ddg                     |                     t          ddg                     |                      t          dddg                     |                     t          dddg                     dt          j        d<   |                      t          dd                      |                     t          dd                      dt          j        d<   |                      t          dd                      |                     t          dd                      d S )Nr   	127.0.0.2r7   r,   zother.websocket.org, 127.0.0.1r8   r   s    r   test_ip_addressz!IsNoProxyHostTest.test_ip_address   s0   )+}EEFFF*;FFGGGk,A;+OPP	
 	
 	
 	k,A;+OPP	
 	
 	
 "-
:)+t<<===*;==>>>!A
:)+t<<===*;==>>>>>r   c                 N   |                      t          ddg                     |                      t          ddg                     |                     t          ddg                     |                      t          ddg                     |                     t          ddg                     d	t          j        d
<   |                      t          dd                      |                      t          dd                      |                      t          dd                      |                     t          dd                      dt          j        d
<   |                     t          dd                      |                     t          dd                      d S )Nr   r   r;   r   r   r   r   r   z127.0.0.0/8,2001:db8::/64r,   z127.0.0.0/24,2001:db8::/64r8   r   s    r   test_ip_address_in_rangez*IsNoProxyHostTest.test_ip_address_in_range   sv   )+GGHHH)+GGHHH*;8HIIJJJ)-/9JKKLLL*?_<MNNOOO!<
:)+t<<===)+t<<===)->>???*?DAABBB!=
:*;==>>>*?DAABBBBBr   c                    |                      t          ddg                     |                      t          dddg                     |                     t          ddg                     dt          j        d<   |                      t          dd                      |                     t          dd                      dt          j        d<   |                      t          dd                      d S )Nmy.websocket.orgr7   r,   z%other.websocket.org, my.websocket.orgr8   r   s    r   test_hostname_matchz%IsNoProxyHostTest.test_hostname_match   s    )*<?Q>RSSTTT"%:<N$O 	
 	
 	

 	*+=@U?VWWXXX!3
:)*<dCCDDD*+@$GGHHH!H
:)*<dCCDDDDDr   c                 |   |                      t          ddg                     |                      t          ddg                     |                      t          dddg                     |                     t          ddg                     dt          j        d<   |                      t          dd                      |                      t          dd                      |                     t          dd                      dt          j        d<   |                      t          dd                      d S )Nr4   z.websocket.orgzmy.other.websocket.orgr@   zany.websocket.comr,   z my.websocket.org, .websocket.orgr8   r   s    r   test_hostname_match_domainz,IsNoProxyHostTest.test_hostname_match_domain   s3   )*=@P?QRRSSS)*BEUDVWWXXX#&8:J%K 	
 	
 	

 	*+>AQ@RSSTTT!1
:)*=tDDEEE)*BDIIJJJ*+>EEFFF!C
:)*=tDDEEEEEr   N)
r$   r%   r&   r0   r2   r9   r<   r>   rA   rC   r'   r   r   r)   r)   |   s        ' ' '
' ' 'F F F ? ? ? C C CE E EF F F F Fr   r)   c                   &    e Zd Zd Zd Zd Zd ZdS )ProxyInfoTestc                    t           j                            dd           | _        t           j                            dd           | _        t           j                            dd           | _        dt           j        v rt           j        d= dt           j        v rt           j        d= dt           j        v rt           j        d= d S d S N
http_proxyhttps_proxyr,   )r-   r.   r/   rH   rI   r,   r   s    r   r0   zProxyInfoTest.setUp   s    *..t<<:>>->>
z4882:%%
<(BJ&&
=)##
:&&& $#r   c                 V   | j         r| j         t          j        d<   ndt          j        v rt          j        d= | j        r| j        t          j        d<   ndt          j        v rt          j        d= | j        r| j        t          j        d<   d S dt          j        v rt          j        d= d S d S rG   )rH   r-   r.   rI   r,   r   s    r   r2   zProxyInfoTest.tearDown   s    ? 	)'+BJ|$$RZ''
<( 	*(,(8BJ}%%bj((
=)= 	'%)]BJz"""2:%%
:&&& &%r   c           
      $   |                      t          t          ddd           |                     t          dddd          d           |                     t          dddd          d           |                     t          dddd	d
          d           |                     t          ddddd
          d           |                     t          ddddd
          d           |                     t          ddddd
          d           |                     t          dddddgd
          d           |                     t          dddddgd
          d           |                     t          dddddg          d           d S )Necho.websocket.eventsF	localhost)
proxy_host8  )rN   
proxy_portrM   rO   NT)#  ab)rN   rP   
proxy_auth)rM   rR   rS   rM   rO   rS   ="  )rM   rX   rS   zexample.com)rN   rP   r,   rV   Nr   Nz.websocket.events)rN   rP   r,   )r    r   r   r   r   s    r   test_proxy_from_argsz"ProxyInfoTest.test_proxy_from_args   s|   ##" 	 	
 	
 	
 	';SW   &		
 	
 	
 	'+RV   &		
 	
 	
 	'&%   ,		
 		
 		
 	'&%   ,		
 		
 		
 	'&%   ,		
 		
 		
 	'&%   ,		
 		
 		
 	'&'%   ,
	
 
	
 
	
 	'&12%   
	
 
	
 
	
 	'&-.   		
 		
 		
 		
 		
r   c                 B   dt           j        d<   |                     t          dd          d           dt           j        d<   |                     t          dd          d           dt           j        d<   dt           j        d	<   |                     t          dd          d           dt           j        d<   d
t           j        d	<   |                     t          dd          d           dt           j        d<   dt           j        d	<   |                     t          dd          d           dt           j        d<   d
t           j        d	<   |                     t          dd          d           dt           j        d<   dt           j        d	<   |                     t          dd          d           |                     t          dd          d           dt           j        d<   d
t           j        d	<   |                     t          dd          d           |                     t          dd          d           dt           j        d<   dt           j        d	<   |                     t          dd          d           |                     t          dd          d           dt           j        d<   dt           j        d	<   |                     t          dd          d           |                     t          dd          d           dt           j        d<   |                     t          dd          d           dt           j        d<   |                     t          dd          d           dt           j        d<   dt           j        d	<   |                     t          dd          d           dt           j        d<   dt           j        d	<   |                     t          dd          d           dt           j        d<   dt           j        d	<   |                     t          dd          d           dt           j        d<   dt           j        d	<   |                     t          dd          d           dt           j        d<   dt           j        d	<   |                     t          dd          d           dt           j        d<   dt           j        d	<   dt           j        d<   |                     t          dd          d           dt           j        d<   dt           j        d	<   dt           j        d<   |                     t          dd          d           dt           j        d<   dt           j        d	<   dt           j        d<   |                     t          dd          d           dt           j        d<   dt           j        d	<   d t           j        d<   |                     t          d!d          d           |                     t          d"d          d           d S )#Nzhttp://localhost/rH   rL   F)rM   NNzhttp://localhost:3128/rQ   zhttp://localhost2/rI   zhttp://localhost2:3128/T)
localhost2NN)r\   rO   N rY   zhttp://a:b@localhost/)rM   NrS   zhttp://a:b@localhost:3128/rW   zhttp://a:b@localhost2/zhttp://a:b@localhost2:3128/)r\   NrS   )r\   rO   rS   z4http://john%40example.com:P%40SSWORD@localhost:3128/z5http://john%40example.com:P%40SSWORD@localhost2:3128/)r\   rO   )zjohn@example.comzP@SSWORDzexample1.com,example2.comr,   zexample.1.comz0example1.com,example2.com, echo.websocket.eventsz,example1.com,example2.com, .websocket.eventsz127.0.0.0/8, 192.168.0.0/16r   r6   )r-   r.   r   r   r   s    r   test_proxy_from_envz!ProxyInfoTest.test_proxy_from_envR  s-   #6
< 2E::<U	
 	
 	
 $<
< 2E::<U	
 	
 	
 $7
< $8
=!2E::<U	
 	
 	
 $<
< $=
=!2E::<U	
 	
 	
 $7
< $8
=!2D99;U	
 	
 	
 $<
< $=
=!2D99;U	
 	
 	
 $&
< $8
=!2D99;U	
 	
 	
 	2E::O	
 	
 	
 $&
< $=
=!2D99;U	
 	
 	
 	2E::O	
 	
 	
 $7
< $&
=!(?FFXXX2E::<U	
 	
 	
 $<
< $&
=!(?FFXXX2E::<U	
 	
 	
 $;
< 2E::+	
 	
 	
 $@
< 2E::+	
 	
 	

 $;
< $<
=!2E::+	
 	
 	
 $@
< $A
=!2E::+	
 	
 	

 $;
< $<
=!2D99,	
 	
 	
 $@
< $A
=!2D99,	
 	
 	
 C 	
<  D 	
=! 	2D99B	
 	
 	

 $;
< $<
=!!<
:?D113S	
 	
 	
 $@
< $A
=!!S
:(?FFXXX#?
< $A
=!!O
:(?FFXXX#?
< $A
=!!>
:U;;_MMMu==OOOOOr   N)r$   r%   r&   r0   r2   rZ   r^   r'   r   r   rE   rE      s^        	' 	' 	'' ' ' ^
 ^
 ^
@AP AP AP AP APr   rE   __main__)r-   unittestwebsocket._urlr   r   r   r   websocket._exceptionsr   TestCaser	   r)   rE   r$   mainr'   r   r   <module>re      sF   
			             : 9 9 9 9 9(W% W% W% W% W%h W% W% W%tWF WF WF WF WF) WF WF WFt}P }P }P }P }PH% }P }P }P@ zHMOOOOO r   