o
    ®_a©8  ã                   @   sz   d Z ddlZddlZddlmZmZmZmZ G dd„ dejƒZ	G dd„ dejƒZ
G dd	„ d	ejƒZed
kr;e ¡  dS dS )ab  
test_url.py
websocket - WebSocket client library for Python

Copyright 2021 engn33r

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
é    N)Úget_proxy_infoÚ	parse_urlÚ_is_address_in_networkÚ_is_no_proxy_hostc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚUrlTestc                 C   s4   |   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)Ú
assertTruer   ÚassertFalse©Úself© r   ú:/usr/lib/python3/dist-packages/websocket/tests/test_url.pyÚtest_address_in_network   s   zUrlTest.test_address_in_networkc                 C   sº  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   ÚassertEqualZassertRaisesÚ
ValueError)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   s*   t j dd ¡| _dt jv rt jd= d S d S ©NÚno_proxy)ÚosÚenvironÚgetr    r   r   r   r   ÚsetUpu   s   
ÿzIsNoProxyHostTest.setUpc                 C   s0   | 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   r   r   r   ÚtearDownz   s
   
ÿzIsNoProxyHostTest.tearDownc                 C   s€   |   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úother.websocket.orgr    zother.websocket.org, *)r   r   r!   r"   r   r   r   r   ÚtestMatchAll€   s   

zIsNoProxyHostTest.testMatchAllc                 C   s¤   |   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.2r(   r    zother.websocket.org, 127.0.0.1©r   r   r   r!   r"   r   r   r   r   ÚtestIpAddressŠ   s   

zIsNoProxyHostTest.testIpAddressc                 C   s~   |   tddgƒ¡ |   t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 )Nr   r   r*   r	   r
   r    r+   r   r   r   r   ÚtestIpAddressInRange–   s   

z&IsNoProxyHostTest.testIpAddressInRangec                 C   s€   |   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.orgr(   r    z%other.websocket.org, my.websocket.orgr+   r   r   r   r   ÚtestHostnameMatch    s   

z#IsNoProxyHostTest.testHostnameMatchc                 C   s¢   |   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 )Nr&   z.websocket.orgzmy.other.websocket.orgr.   zany.websocket.comr    z my.websocket.org, .websocket.orgr+   r   r   r   r   ÚtestHostnameMatchDomainª   s   

z)IsNoProxyHostTest.testHostnameMatchDomainN)
r   r   r   r$   r%   r)   r,   r-   r/   r0   r   r   r   r   r   t   s    


r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚProxyInfoTestc                 C   sn   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 r5t jd= d S d S ©NÚ
http_proxyÚhttps_proxyr    )r!   r"   r#   r3   r4   r    r   r   r   r   r$   ¸   s   


ÿzProxyInfoTest.setUpc                 C   s|   | 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r1| jtjd< d S dtjv r<tjd= d S d S r2   )r3   r!   r"   r4   r    r   r   r   r   r%   Ã   s   


ÿzProxyInfoTest.tearDownc              
   C   s   |   tddddd¡ |   td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d¡ |   tdd	dd
dd¡ |   tdd	ddd
dd¡ |   tdd	dddgd
dd¡ |   tdd	dddgd
dd¡ d S )Núecho.websocket.orgFÚ	localhost)Ú
proxy_host)r6   r   Né8  )r7   Ú
proxy_port©r6   r8   NT©ÚaÚb)r7   Ú
proxy_auth)r6   r   r;   )r7   r9   r>   ©r6   r8   r;   zexample.com)r7   r9   r    r>   ©Nr   N)r   r   r   r   r   r   ÚtestProxyFromArgsÓ   s@   ÿÿÿþÿþÿþÿþzProxyInfoTest.testProxyFromArgsc                 C   sœ  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< |  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/r3   r5   F)r6   NNzhttp://localhost:3128/r:   zhttp://localhost2/r4   zhttp://localhost2:3128/T)Ú
localhost2NN)rB   r8   Nzhttp://a:b@localhost/)r6   Nr;   zhttp://a:b@localhost:3128/r?   zhttp://a:b@localhost2/zhttp://a:b@localhost2:3128/)rB   Nr;   )rB   r8   r;   z4http://john%40example.com:P%40SSWORD@localhost:3128/z5http://john%40example.com:P%40SSWORD@localhost2:3128/)rB   r8   )zjohn@example.comzP@SSWORDz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/16r   z192.168.1.1)r!   r"   r   r   r   r   r   r   ÚtestProxyFromEnví   sh   

































zProxyInfoTest.testProxyFromEnvN)r   r   r   r$   r%   rA   rC   r   r   r   r   r1   ·   s
    r1   Ú__main__)Ú__doc__r!   ZunittestZwebsocket._urlr   r   r   r   ZTestCaser   r   r1   r   Úmainr   r   r   r   Ú<module>   s   YCuÿ