
     ke3C                         d dl Z d dlZd dlmZmZmZ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                          yy)
    N)_is_address_in_network_is_no_proxy_hostget_proxy_info	parse_urlc                       e Zd Zd Zd Zy)UrlTestc                     | j                  t        dd             | j                  t        dd             | j                  t        dd             y )N	127.0.0.1127.0.0.0/8	127.1.0.1127.0.0.0/24)
assertTruer   assertFalseselfs    :/usr/lib/python3/dist-packages/websocket/tests/test_url.pytest_address_in_networkzUrlTest.test_address_in_network"   s@    .{MJK.{MJK/^LM    c                 	   t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d	       t        d
      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d	       t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d	       t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d	       t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d	       t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d	       t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d	       t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  t        t         d       t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d	       t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d	       t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       t        d      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       y )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   testParseUrlzUrlTest.testParseUrl'   s   ./1011r"1t$1u%/01011r"1u%1u%-.1011r"1s#1u%,-1011r"1s#1u%341011t$1t$1u%231011t$1s#1u%121011t$1s#1u%451011t$1t$1t$>?1011t$1~.1t$*i1KL451451r"1t$1u%9:1451t$1t$1u%561451s#1t$1t$:;1451t$1t$1t$r   N)__name__
__module____qualname__r   r    r   r   r   r   !   s    N
O%r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	IsNoProxyHostTestc                     t         j                  j                  dd       | _        dt         j                  v rt         j                  d= y y Nno_proxy)osenvirongetr(   r   s    r   setUpzIsNoProxyHostTest.setUpz   s5    

z48#

:& $r   c                     | j                   r| j                   t        j                  d<   y dt        j                  v rt        j                  d= y y r'   )r(   r)   r*   r   s    r   tearDownzIsNoProxyHostTest.tearDown   s8    ==%)]]BJJz"2::%

:& &r   c                    | j                  t        ddg             | j                  t        ddg             | j                  t        dddg             dt        j                  d<   | j                  t        dd              | j                  t        dd              dt        j                  d<   | j                  t        dd              y )Nany.websocket.org*z192.168.0.1other.websocket.orgr(   zother.websocket.org, *)r   r   r)   r*   r   s    r   testMatchAllzIsNoProxyHostTest.testMatchAll   s    )*=uEF)-#?@14I33OP	
 "%

:)*=tDE)->?!9

:)*=tDEr   c                    | j                  t        ddg             | j                  t        ddg             | j                  t        dddg             | j                  t        dddg             dt        j                  d<   | j                  t        dd              | j                  t        dd              dt        j                  d<   | j                  t        dd              | j                  t        dd              y )Nr
   	127.0.0.2r2   r(   zother.websocket.org, 127.0.0.1r   r   r   r)   r*   r   s    r   testIpAddresszIsNoProxyHostTest.testIpAddress   s    )+}EF*;FGk,A;+OP	
 	k,A;+OP	
 "-

:)+t<=*;=>!A

:)+t<=*;=>r   c                    | j                  t        ddg             | j                  t        ddg             | j                  t        ddg             dt        j                  d<   | j                  t        dd              | j                  t        dd              dt        j                  d<   | j                  t        dd              y )Nr
   r   r5   r   r   r(   r6   r   s    r   testIpAddressInRangez&IsNoProxyHostTest.testIpAddressInRange   s    )+GH)+GH*;8HIJ!.

:)+t<=)+t<=!/

:*;=>r   c                    | j                  t        ddg             | j                  t        dddg             | j                  t        ddg             dt        j                  d<   | j                  t        dd              | j                  t        dd              dt        j                  d<   | j                  t        dd              y )Nmy.websocket.orgr2   r(   z%other.websocket.org, my.websocket.orgr6   r   s    r   testHostnameMatchz#IsNoProxyHostTest.testHostnameMatch   s    )*<?Q>RST"%:<N$O	

 	*+=@U?VWX!3

:)*<dCD*+@$GH!H

:)*<dCDr   c                 
   | j                  t        ddg             | j                  t        ddg             | j                  t        dddg             | j                  t        ddg             dt        j                  d<   | j                  t        dd              | j                  t        dd              | j                  t        dd              dt        j                  d<   | j                  t        dd              y )Nr0   z.websocket.orgzmy.other.websocket.orgr;   zany.websocket.comr(   z my.websocket.org, .websocket.orgr6   r   s    r   testHostnameMatchDomainz)IsNoProxyHostTest.testHostnameMatchDomain   s    )*=@P?QRS)*BEUDVWX#&8:J%K	

 	*+>AQ@RST!1

:)*=tDE)*BDIJ*+>EF!C

:)*=tDEr   N)
r    r!   r"   r,   r.   r3   r7   r9   r<   r>   r#   r   r   r%   r%   y   s(    '
'
F? ?EFr   r%   c                   $    e Zd Zd Zd Zd Zd Zy)ProxyInfoTestc                    t         j                  j                  dd       | _        t         j                  j                  dd       | _        t         j                  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= y y N
http_proxyhttps_proxyr(   )r)   r*   r+   rC   rD   r(   r   s    r   r,   zProxyInfoTest.setUp   s    **..t<::>>->

z482::%

<(BJJ&

=)#

:& $r   c                    | 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<   y dt        j                  v rt        j                  d= y y rB   )rC   r)   r*   rD   r(   r   s    r   r.   zProxyInfoTest.tearDown   s    ??'+BJJ|$RZZ'

<((,(8(8BJJ}%bjj(

=)==%)]]BJJz"2::%

:& &r   c           
      |   | j                  t        ddd      d       | j                  t        dddd      d       | j                  t        dd	d      d       | j                  t        dd	dd      d       | j                  t        dddd
      d       | j                  t        ddddd
      d       | j                  t        dd	dd
      d       | j                  t        dd	ddd
      d       | j                  t        dd	dddgd
      d       | j                  t        dd	dddgd
      d       y )Necho.websocket.eventsF	localhost)
proxy_host)rH   r   N8  )rI   
proxy_portrH   rJ   NTab)rI   
proxy_auth)rH   r   rM   )rI   rK   rP   rH   rJ   rM   zexample.com)rI   rK   r(   rP   Nr   N)r   r   r   s    r   testProxyFromArgszProxyInfoTest.testProxyFromArgs   s   2EkR"	
 	';SW &		
 	2D[Q"	
 	'+RV &		
 	'&%	 )	
 	'&% ,		
 	'&%	 )	
 	'&% ,		
 	'&'% ,
	
 	'&12% 
	
r   c                    dt         j                  d<   | j                  t        dd      d       dt         j                  d<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   | j                  t        dd      d       dt         j                  d<   d
t         j                  d	<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   | j                  t        dd      d       dt         j                  d<   d
t         j                  d	<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   | j                  t        dd      d       | j                  t        dd      d       dt         j                  d<   d
t         j                  d	<   | j                  t        dd      d       | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   | j                  t        dd      d       | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   | j                  t        dd      d       | j                  t        dd      d       dt         j                  d<   | j                  t        dd      d       dt         j                  d<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   dt         j                  d<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   dt         j                  d<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   dt         j                  d<   | j                  t        dd      d       dt         j                  d<   dt         j                  d	<   d t         j                  d<   | j                  t        d!d      d       | j                  t        d"d      d       y )#Nzhttp://localhost/rC   rG   F)rH   NNzhttp://localhost:3128/rL   zhttp://localhost2/rD   zhttp://localhost2:3128/T)
localhost2NN)rU   rJ   N rR   zhttp://a:b@localhost/)rH   NrM   zhttp://a:b@localhost:3128/rQ   zhttp://a:b@localhost2/zhttp://a:b@localhost2:3128/)rU   NrM   )rU   rJ   rM   z4http://john%40example.com:P%40SSWORD@localhost:3128/z5http://john%40example.com:P%40SSWORD@localhost2:3128/)rU   rJ   )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
   z192.168.1.1)r)   r*   r   r   r   s    r   testProxyFromEnvzProxyInfoTest.testProxyFromEnv:  sG   #6

< 2E:<U	
 $<

< 2E:<U	
 $7

< $8

=!2E:<U	
 $<

< $=

=!2E:<U	
 $7

< $8

=!2D9;U	
 $<

< $=

=!2D9;U	
 $&

< $8

=!2D9;U	
 	2E:O	
 $&

< $=

=!2D9;U	
 	2E:O	
 $7

< $&

=!(?FX2E:<U	
 $<

< $&

=!(?FX2E:<U	
 $;

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

< 2E:+	

 $;

< $<

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

< $A

=!2E:+	

 $;

< $<

=!2D9,	
 $@

< $A

=!2D9,	
 C 	

	

 D 	

	
 	2D9B	

 $;

< $<

=!!<

:?D13S	
 $@

< $A

=!!S

:(?FX#?

< $A

=!!O

:(?FX#?

< $A

=!!>

:U;_Mu=Or   N)r    r!   r"   r,   r.   rS   rW   r#   r   r   r@   r@      s    	'' R
hAPr   r@   __main__)r)   unittestwebsocket._urlr   r   r   r   TestCaser   r%   r@   r    mainr#   r   r   <module>r]      sy    
  (U%h U%pNF)) NFbqPH%% qPh zHMMO r   