
=\•j69  ã               @   sü   d  Z  d d l Z d d l Z d d l m Z m Z m Z m Z e j d d k ru e j d d k  ru d d l	 Z
 n d d l
 Z
 d g e j d d … <Gd d	 „  d	 e
 j ƒ Z Gd
 d „  d e
 j ƒ Z Gd d „  d e
 j ƒ Z e d k rø e
 j ƒ  d S)aH  
websocket - WebSocket client library for Python

Copyright (C) 2010 Hiroki Ohtani(liris)

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

é    N)Úget_proxy_infoÚ	parse_urlÚ_is_address_in_networkÚ_is_no_proxy_hosté   é   é   Ú c               @   s(   e  Z d  Z d d „  Z d d „  Z d S)ÚUrlTestc             C   sF   |  j  t d d ƒ ƒ |  j  t d d ƒ ƒ |  j t d d ƒ ƒ d  S)Nz	127.0.0.1z127.0.0.0/8z	127.1.0.1z127.0.0.0/24)Ú
assertTruer   ÚassertFalse)Úself© r   úD/tmp/pip-build-jxowagp5/websocket-client/websocket/tests/test_url.pyÚtest_address_in_network&   s    zUrlTest.test_address_in_networkc             C   sí  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 j d d k ryt j d d k  ryd  St  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 ƒ d  S)Nzws://www.example.com/rr   zwww.example.comr   éP   r   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/rr   z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   ÚassertEqualZassertRaisesÚ
ValueErrorÚsysÚversion_info)r   Úpr   r   r   ÚtestParseUrl+   sˆ    &zUrlTest.testParseUrlN)Ú__name__Ú
__module__Ú__qualname__r   r   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)ÚIsNoProxyHostTestc             C   s5   t  j j d d  ƒ |  _ d t  j k r1 t  j d =d  S)NÚno_proxy)ÚosÚenvironÚgetr   )r   r   r   r   ÚsetUp�   s    zIsNoProxyHostTest.setUpc             C   s9   |  j  r |  j  t j d <n d t j k r5 t j d =d  S)Nr   )r   r   r    )r   r   r   r   ÚtearDown†   s    	zIsNoProxyHostTest.tearDownc             C   s®   |  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  ƒ ƒ d  S)Nzany.websocket.orgÚ*z192.168.0.1zother.websocket.orgr   zother.websocket.org, *)r   r   r   r    )r   r   r   r   ÚtestMatchAllŒ   s    zIsNoProxyHostTest.testMatchAllc             C   sà   |  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  ƒ ƒ d  S)Nz	127.0.0.1z	127.0.0.2zother.websocket.orgr   zother.websocket.org, 127.0.0.1)r   r   r   r   r    )r   r   r   r   ÚtestIpAddress–   s    zIsNoProxyHostTest.testIpAddressc             C   s«   |  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  ƒ ƒ d  S)Nz	127.0.0.1z127.0.0.0/8z	127.0.0.2z	127.1.0.1z127.0.0.0/24r   )r   r   r   r   r    )r   r   r   r   ÚtestIpAddressInRange¢   s    z&IsNoProxyHostTest.testIpAddressInRangec             C   s®   |  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  ƒ ƒ d  S)Nzmy.websocket.orgzother.websocket.orgr   z%other.websocket.org, my.websocket.org)r   r   r   r   r    )r   r   r   r   ÚtestHostnameMatch¬   s    z#IsNoProxyHostTest.testHostnameMatchc             C   sÝ   |  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  ƒ ƒ d  S)Nzany.websocket.orgz.websocket.orgzmy.other.websocket.orgzmy.websocket.orgzany.websocket.comr   z my.websocket.org, .websocket.org)r   r   r   r   r    )r   r   r   r   ÚtestHostnameMatchDomain¶   s    z)IsNoProxyHostTest.testHostnameMatchDomainN)
r   r   r   r"   r#   r%   r&   r'   r(   r)   r   r   r   r   r   €   s   


r   c               @   s@   e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 S)
ÚProxyInfoTestc             C   s—   t  j j d d  ƒ |  _ t  j j d d  ƒ |  _ t  j j d d  ƒ |  _ d t  j k ra t  j d =d t  j k rz t  j d =d t  j k r“ t  j d =d  S)NÚ
http_proxyÚhttps_proxyr   )r   r    r!   r+   r,   r   )r   r   r   r   r"   Ä   s    

zProxyInfoTest.setUpc             C   s£   |  j  r |  j  t j d <n d t j k r5 t j d =|  j rQ |  j t j d <n d t j k rj t j d =|  j r† |  j t j d <n d t j k rŸ t j d =d  S)Nr+   r,   r   )r+   r   r    r,   r   )r   r   r   r   r#   Ï   s    	
	
	zProxyInfoTest.tearDownc             C   s”  |  j  t d d d d ƒd ƒ |  j  t d d d d d d ƒd ƒ |  j  t d d d d ƒd ƒ |  j  t d d d d d d ƒd ƒ |  j  t d d d d d	 d ƒd ƒ |  j  t d d d d d d d	 d ƒd ƒ |  j  t d d d d d	 d ƒd ƒ |  j  t d d d d d d d	 d ƒd ƒ |  j  t d d d d d d d d g d	 d ƒd  ƒ |  j  t d d d d d d d d g d	 d! ƒd" ƒ d  S)#Nzecho.websocket.orgFZ
proxy_hostÚ	localhostr   Z
proxy_porté8  TÚ
proxy_authÚaÚbr   zexample.com)r-   r   N)r-   r.   N)r-   r   N)r-   r.   N)r0   r1   ©r0   r1   )r-   r   r2   )r0   r1   ©r0   r1   )r-   r.   r3   )r0   r1   ©r0   r1   )r-   r   r4   )r0   r1   ©r0   r1   )r-   r.   r5   )r0   r1   ©r0   r1   )r-   r.   r6   )r0   r1   )Nr   N)r   r   )r   r   r   r   ÚtestProxyFromArgsß   s,    zProxyInfoTest.testProxyFromArgsc             C   sM  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 <|  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	 <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 ƒ d0 ƒ d t  j d <d t  j d	 <d t  j d <|  j t d d ƒ d1 ƒ d t  j d <d t  j d	 <d t  j d <|  j t d d ƒ d2 ƒ |  j t d d ƒ d3 ƒ d  S)4Nzhttp://localhost/r+   zecho.websocket.orgFr-   zhttp://localhost:3128/é8  zhttp://localhost2/r,   zhttp://localhost2:3128/TÚ
localhost2zhttp://a:b@localhost/r0   r1   zhttp://a:b@localhost:3128/zhttp://a:b@localhost2/zhttp://a:b@localhost2:3128/zexample1.com,example2.comr   zexample.1.comz-example1.com,example2.com, echo.websocket.orgr   z)example1.com,example2.com, .websocket.orgz127.0.0.0/8, 192.168.0.0/16z	127.0.0.1z192.168.1.1)r-   NN)r-   r8   N)r-   NN)r-   r8   N)r9   NN)r9   r8   N©r0   r1   )r-   Nr:   ©r0   r1   )r-   r8   r;   ©r0   r1   )r-   Nr<   ©r0   r1   )r-   r8   r=   ©r0   r1   )r9   Nr>   ©r0   r1   )r9   r8   r?   ©r0   r1   )r9   Nr@   )Nr   N)Nr   N)Nr   N)Nr   N)r   r    r   r   )r   r   r   r   ÚtestProxyFromEnvù   sb    zProxyInfoTest.testProxyFromEnvN)r   r   r   r"   r#   r7   rA   r   r   r   r   r*   Ã   s   r*   Ú__main__)Ú__doc__r   r   Zwebsocket._urlr   r   r   r   r   Z	unittest2ZunittestÚpathZTestCaser
   r   r*   r   Úmainr   r   r   r   Ú<module>   s   "&\Cq