Ë
    è×ïiý8  ã                   óÚ   — 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)Úget_proxy_infoÚ	parse_urlÚ_is_address_in_networkÚ_is_no_proxy_hostc                   ó   — 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    úR/var/www/html/aiagents/fe/lib/python3.12/site-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Ô$à×Ñœ*¤iÐ1KÔ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.setUpu   s5   € ÜŸ
™
Ÿ™ z°4Ó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.tearDownz   s8   € Ø�=Š=Ø%)§]¡]ŒB�J‰J�zÒ"Øœ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Ø�‰Ô)¨-¸#¸Ó?Ô@Ø�‰Ô)Ð*=Ð@UÐWZÐ?[Ó\Ô]Ø!$Œ�
‰
�:ÑØ�‰Ô)Ð*=¸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Ø�‰Ô)¨+Ð8MÈ{Ð7[Ó\Ô]Ø×ÑÔ*¨;Ð9NÐP[Ð8\Ó]Ô^Ø!,Œ�
‰
�:ÑØ�‰Ô)¨+°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Ø�‰Ô)Ð*<Ð?TÐVhÐ>iÓjÔkØ×ÑÔ*Ð+=Ð@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Ø�‰Ô)Ð*BÐEUÐDVÓWÔXØ�‰Ô)Ð*=Ð@RÐTdÐ?eÓfÔgØ×ÑÔ*Ð+>ÐAQÐ@RÓSÔTØ!1Œ�
‰
�:ÑØ�‰Ô)Ð*=¸tÓDÔEØ�‰Ô)Ð*BÀDÓIÔJØ×ÑÔ*Ð+>ÀÓEÔFØ!CŒ�
‰
�:ÑØ�‰Ô)Ð*=¸tÓDÕEr   N)
r    r!   r"   r,   r.   r3   r7   r9   r<   r>   r#   r   r   r%   r%   t   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Ó<ˆŒÜŸ:™:Ÿ>™>¨-¸Ó>ˆÔÜŸ
™
Ÿ™ z°4Ó8ˆŒØœ2Ÿ:™:Ñ%Ü—
‘
˜<Ð(ØœBŸJ™JÑ&Ü—
‘
˜=Ð)ØœŸ™Ñ#Ü—
‘
˜:Ñ&ð $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ž   € Ø�?Š?Ø'+§¡ŒB�J‰J�|Ò$ØœRŸZ™ZÑ'Ü—
‘
˜<Ð(à×ÒØ(,×(8Ñ(8ŒB�J‰J�}Ò%ØœbŸj™jÑ(Ü—
‘
˜=Ð)à�=Š=Ø%)§]¡]ŒB�J‰J�zÒ"Øœ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   Né8  )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Ó   sf  € Ø×ÑœÐ(?ÀÐS^Ô_ÐawÔxØ×ÑœÐ(?ÀÐS^ÐkoÔpØ2ô	4à×ÑœÐ(?ÀÐR]Ô^Ð`vÔwØ×ÑœÐ(?ÀÐR]ÐjnÔoØ2ô	4ð 	×ÑœÐ(?ÀÐS^ÐkuÔvØ5ô	7à×ÑÜÐ2°EÀkÐ^bÐoyÔzØ+ô	-ð 	×ÑœÐ(?ÀÐR]ÐjtÔuØ5ô	7à×ÑÜÐ2°DÀ[Ð]aÐnxÔyØ+ô	-ð 	×ÑœÐ(?ÀÐR]ÐjnØ2?°ÈZôYà8ô	:ð 	×ÑœÐ(?ÀÐR]ÐjnØ2IÐ1JÐWaôcà(õ	*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<   | 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   Nz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.eventsrR   z,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í   s™  € Ø#6Œ�
‰
�<Ñ Ø×ÑœÐ(?ÀÓGÐIbÔcØ#;Œ�
‰
�<Ñ Ø×ÑœÐ(?ÀÓGÐIbÔcà#6Œ�
‰
�<Ñ Ø$8Œ�
‰
�=Ñ!Ø×ÑœÐ(?ÀÓGÐIbÔcØ#;Œ�
‰
�<Ñ Ø$=Œ�
‰
�=Ñ!Ø×ÑœÐ(?ÀÓGÐIbÔcà#6Œ�
‰
�<Ñ Ø$8Œ�
‰
�=Ñ!Ø×ÑœÐ(?ÀÓFÐHbÔcØ#;Œ�
‰
�<Ñ Ø$=Œ�
‰
�=Ñ!Ø×ÑœÐ(?ÀÓFÐHbÔcà#:Œ�
‰
�<Ñ Ø×ÑœÐ(?ÀÓGÐIhÔiØ#?Œ�
‰
�<Ñ Ø×ÑœÐ(?ÀÓGÐIhÔià#:Œ�
‰
�<Ñ Ø$<Œ�
‰
�=Ñ!Ø×ÑœÐ(?ÀÓGÐIhÔiØ#?Œ�
‰
�<Ñ Ø$AŒ�
‰
�=Ñ!Ø×ÑœÐ(?ÀÓGÐIhÔià#:Œ�
‰
�<Ñ Ø$<Œ�
‰
�=Ñ!Ø×ÑœÐ(?ÀÓFÐHhÔiØ#?Œ�
‰
�<Ñ Ø$AŒ�
‰
�=Ñ!Ø×ÑœÐ(?ÀÓFÐHhÔià#YŒ�
‰
�<Ñ Ø$[Œ�
‰
�=Ñ!Ø×ÑœÐ(?ÀÓFÐH~Ôà#:Œ�
‰
�<Ñ Ø$<Œ�
‰
�=Ñ!Ø!<Œ�
‰
�:ÑØ×Ñœ¨¸Ó>Ð@`ÔaØ#?Œ�
‰
�<Ñ Ø$AŒ�
‰
�=Ñ!Ø!SŒ�
‰
�:ÑØ×ÑœÐ(?ÀÓFÈÔXØ#?Œ�
‰
�<Ñ Ø$AŒ�
‰
�=Ñ!Ø!OŒ�
‰
�:ÑØ×ÑœÐ(?ÀÓFÈÔXà#?Œ�
‰
�<Ñ Ø$AŒ�
‰
�=Ñ!Ø!>Œ�
‰
�:ÑØ×Ñœ¨°UÓ;¸_ÔMØ×Ñœ¨°uÓ=¸ÕOr   N)r    r!   r"   r,   r.   rS   rV   r#   r   r   r@   r@   ·   s   „ ò	'ò'ò *ó4<Pr   r@   Ú__main__)r)   ÚunittestÚwebsocket._urlr   r   r   r   ÚTestCaser   r%   r@   r    Úmainr#   r   r   ú<module>r\      su   ðó 
Û ß _Ó _ðô(V%ˆh×Ñô V%ôr@F˜×)Ñ)ô @FôFrP�H×%Ñ%ô rPðj ˆzÒØ€H‡M�M…Oð r   