§
    Ìtºf'  ã                   óN  — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlZd dl	m
Z
 d dl	mZ d dl	mZ d dl	mZ d d	l	mZ d d
lmZ d dlmZ d dlmZ  G d„ dej        ¦  «        Z G d„ dej        ¦  «        Ze j                             dd¦  «        r G d„ dej        ¦  «        ZdS dS )é    N)Úsha1)Ú	b64encode)ÚMock©ÚWebSocketServerProtocol©ÚWebSocketServerFactory)ÚWebSocketClientProtocol)ÚWebSocketClientFactory)ÚWebSocketProtocol)ÚConnectingRequest)ÚFakeTransport)ÚTransportDetailsc                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚWebSocketClientProtocolTestsc                 óf  — t          ¦   «         }t          ¦   «         }t          j        ¦   «         |_        t          ¦   «         }t          j        ¦   «         |_        ||_        ||_        t          ¦   «         |_	        | 
                    ¦   «          |j        |_        d|_        || _        || _        d S ©Né   )r   r   ÚtxaioÚmake_loggerÚlogr
   ÚfactoryÚ	transportr   Ú_transport_detailsÚ_connectionMadeÚ
STATE_OPENÚstateÚwebsocket_versionÚprotocol©ÚselfÚtÚfÚps       ún/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/websocket/test/test_websocket_protocol.pyÚsetUpz"WebSocketClientProtocolTests.setUp/   s’   € Ý‰OŒOˆÝ"Ñ$Ô$ˆÝÔ!Ñ#Ô#ˆŒÝ#Ñ%Ô%ˆÝÔ!Ñ#Ô#ˆŒØˆŒ	ØˆŒÝ/Ñ1Ô1ˆÔà	×ÒÑÔÐØ”,ˆŒØ ˆÔàˆŒØˆŒˆˆó    c                 ó”   — | j         j        | j         j        | j         j        | j         j        fD ]}|�|                     ¦   «          Œd S ©N©r   ÚautoPingPendingCallÚautoPingTimeoutCallÚopenHandshakeTimeoutCallÚcloseHandshakeTimeoutCallÚcancel©r!   Úcalls     r%   ÚtearDownz%WebSocketClientProtocolTests.tearDown@   óS   € à”Ô1Ø”Ô1Ø”Ô6Ø”Ô7ð	
ð 	ð 	ˆDð ÐØ—’‘”�øð	ð 	r'   c                 ó   — d| j         _        t          ¦   «         g| j         _        g | j         _        d„ | j         _        d| j         _        t          ¦   «         | j         _        t          ¦   «         | j         _        t          ¦   «         | j         _	        | j          
                    t          ddd¬¦  «        ¦  «         | j         j        t          j        z   }dt          t!          |¦  «                             ¦   «         ¦  «        z   d	z   | j         _        | j                              ¦   «          |                      | j         j        d u¦  «         d S )
Né   c                  ó   — d S r)   © r7   r'   r%   ú<lambda>z=WebSocketClientProtocolTests.test_auto_ping.<locals>.<lambda>N   ó   € ¨€ r'   Ú000000000000000000000000zexample.coméP   z/ws)ÚhostÚportÚresourcesa   HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: upgrade
Sec-Websocket-Accept: s   

)r   ÚautoPingIntervalr   Úwebsocket_protocolsÚwebsocket_extensionsÚ_onOpenÚ_wskeyÚpeerÚ
_onConnectÚ_closeConnectionÚ_actuallyStartHandshaker   Úwebsocket_keyr   Ú	_WS_MAGICr   r   ÚdigestÚdataÚprocessHandshakeÚ
assertTruer+   )r!   Úkeys     r%   Útest_auto_pingz+WebSocketClientProtocolTests.test_auto_pingJ   s-  € Ø)*ˆŒÔ&Ý-1©V¬V¨HˆŒÔ)Ø-/ˆŒÔ*Ø , ˆŒÔØ'ˆŒÔÝ!™VœVˆŒÔõ $(¡6¤6ˆŒÔ Ý)-©¬ˆŒÔ&ð 	Œ×-Ò-ÝØ"ØØðñ ô ñ	
ô 	
ð 	
ð ŒmÔ)Õ,=Ô,GÑGˆð&õ )2µ$°s±)´)×2BÒ2BÑ2DÔ2DÑ(EÔ(EñFð I\ñ\ð 	ŒÔð 	Œ×&Ò&Ñ(Ô(Ð(à�Š˜œÔ9ÀÐEÑFÔFÐFÐFÐFr'   N)Ú__name__Ú
__module__Ú__qualname__r&   r2   rO   r7   r'   r%   r   r   -   sF   € € € € € ðð ð ð"ð ð ðGð Gð Gð Gð Gr'   r   c                   óT   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ ZdS )ÚWebSocketServerProtocolTestszB
    Tests for autobahn.websocket.protocol.WebSocketProtocol.
    c                 ó@  — t          ¦   «         }t          ¦   «         }t          j        ¦   «         |_        t          ¦   «         }t          j        ¦   «         |_        ||_        ||_        |                     ¦   «          |j	        |_
        d|_        || _        || _        d S r   )r   r	   r   r   r   r   r   r   r   r   r   r   r   r    s       r%   r&   z"WebSocketServerProtocolTests.setUpp   s„   € Ý‰OŒOˆÝ"Ñ$Ô$ˆÝÔ!Ñ#Ô#ˆŒÝ#Ñ%Ô%ˆÝÔ!Ñ#Ô#ˆŒØˆŒ	ØˆŒà	×ÒÑÔÐØ”,ˆŒØ ˆÔàˆŒØˆŒˆˆr'   c                 ó”   — | j         j        | j         j        | j         j        | j         j        fD ]}|�|                     ¦   «          Œd S r)   r*   r0   s     r%   r2   z%WebSocketServerProtocolTests.tearDown€   r3   r'   c                 ó>  — t          ¦   «         }t          d¬¦  «        |_        d| j        _        |g| j        _        g | j        _        d„ | j        _        d| j        _        | j                             |¦  «         |  	                    | j        j
        d u¦  «         d S )Nr5   )Úreturn_valuec                  ó   — d S r)   r7   r7   r'   r%   r8   z=WebSocketServerProtocolTests.test_auto_ping.<locals>.<lambda>�   r9   r'   r:   )r   Ú_get_secondsr   r?   r@   rA   rB   rC   ÚsucceedHandshakerM   r+   )r!   Úprotos     r%   rO   z+WebSocketServerProtocolTests.test_auto_pingŠ   sŒ   € Ý‘”ˆÝ!¨qÐ1Ñ1Ô1ˆÔØ)*ˆŒÔ&Ø-2¨GˆŒÔ)Ø-/ˆŒÔ*Ø , ˆŒÔØ'ˆŒÔØŒ×&Ò& uÑ-Ô-Ð-à�Š˜œÔ9ÀÐEÑFÔFÐFÐFÐFr'   c                 óÌ   — | j                              ¦   «          |                      | j        j        d¦  «         |                      | j         j        | j         j        ¦  «         dS )z9
        sendClose with no code or reason works.
        s   ˆ N©r   Ú	sendCloseÚassertEqualr   Ú_writtenr   ÚSTATE_CLOSING©r!   s    r%   Útest_sendClose_nonez0WebSocketServerProtocolTests.test_sendClose_none–   s[   € ð 	Œ×ÒÑ!Ô!Ð!ð 	×Ò˜œÔ0°+Ñ>Ô>Ð>Ø×Ò˜œÔ,¨d¬mÔ.IÑJÔJÐJÐJÐJr'   c                 óâ   — | j                              dd¬¦  «         |                      | j        j        dd…         d¦  «         |                      | j         j        | j         j        ¦  «         dS )z4
        sendClose with a str reason works.
        éè  úoh no©ÚcodeÚreasoné   Nó   èoh nor^   rc   s    r%   Útest_sendClose_str_reasonz6WebSocketServerProtocolTests.test_sendClose_str_reason    ól   € ð 	Œ×Ò T°'ÐÑ:Ô:Ð:ð 	×Ò˜œÔ0°°°Ô4Ð6FÑGÔGÐGØ×Ò˜œÔ,¨d¬mÔ.IÑJÔJÐJÐJÐJr'   c                 óâ   — | j                              dd¬¦  «         |                      | j        j        dd…         d¦  «         |                      | j         j        | j         j        ¦  «         dS )z8
        sendClose with a unicode reason works.
        rf   rg   rh   rk   Nrl   r^   rc   s    r%   Útest_sendClose_unicode_reasonz:WebSocketServerProtocolTests.test_sendClose_unicode_reasonª   rn   r'   c                 óâ   — | j                              dd¬¦  «         |                      | j        j        dd…         d¦  «         |                      | j         j        | j         j        ¦  «         dS )zD
        sendClose with a too-long reason will truncate it.
        rf   Á¸  abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcrh   rk   Ns}   èabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcr^   rc   s    r%   Útest_sendClose_toolongz3WebSocketServerProtocolTests.test_sendClose_toolong´   sr   € ð 	Œ×Ò T°,ÐÑ?Ô?Ð?ð 	×Ò˜œÔ0°°°Ô4Ø4ñ	6ô 	6ð 	6à×Ò˜œÔ,¨d¬mÔ.IÑJÔJÐJÐJÐJr'   c                 ó„  — |                       t          ¦  «        5 }| j                             d¬¦  «         ddd¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                      | j        j	        d¦  «         |                      | j        j
        | j        j        ¦  «         dS )zX
        Trying to sendClose with a reason but no code will raise an Exception.
        Úabc)rj   Nzclose reason without close coder'   ©ÚassertRaisesÚ	Exceptionr   r_   ÚassertInÚstrÚ	exceptionr`   r   ra   r   r   ©r!   Úes     r%   Ú"test_sendClose_reason_with_no_codez?WebSocketServerProtocolTests.test_sendClose_reason_with_no_code¿   sç   € ð ×Ò�yÑ)Ô)ð 	2¨QØŒM×#Ò#¨5Ð#Ñ1Ô1Ð1ð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2ð 	�ŠÐ7½¸Q¼[Ñ9IÔ9IÑJÔJÐJð 	×Ò˜œÔ0°#Ñ6Ô6Ð6Ø×Ò˜œÔ,¨d¬mÔ.FÑGÔGÐGÐGÐGó   ›AÁAÁ
Ac                 ó„  — |                       t          ¦  «        5 }| j                             d¬¦  «         ddd¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                      | j        j	        d¦  «         |                      | j        j
        | j        j        ¦  «         dS )zR
        Trying to sendClose with a non-int code will raise an Exception.
        Ú134©ri   Nzinvalid typer'   rv   r|   s     r%   Ú test_sendClose_invalid_code_typez=WebSocketServerProtocolTests.test_sendClose_invalid_code_typeÌ   sæ   € ð ×Ò�yÑ)Ô)ð 	0¨QØŒM×#Ò#¨Ð#Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	�Š�n¥c¨!¬+Ñ&6Ô&6Ñ7Ô7Ð7ð 	×Ò˜œÔ0°#Ñ6Ô6Ð6Ø×Ò˜œÔ,¨d¬mÔ.FÑGÔGÐGÐGÐGr   c                 ó„  — |                       t          ¦  «        5 }| j                             d¬¦  «         ddd¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                      | j        j	        d¦  «         |                      | j        j
        | j        j        ¦  «         dS )zX
        Trying to sendClose with a non-valid int code will raise an Exception.
        é
   r‚   Nzinvalid close code 10r'   rv   r|   s     r%   Ú!test_sendClose_invalid_code_valuez>WebSocketServerProtocolTests.test_sendClose_invalid_code_valueÙ   sç   € ð ×Ò�yÑ)Ô)ð 	-¨QØŒM×#Ò#¨Ð#Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	�ŠÐ-­s°1´;Ñ/?Ô/?Ñ@Ô@Ð@ð 	×Ò˜œÔ0°#Ñ6Ô6Ð6Ø×Ò˜œÔ,¨d¬mÔ.FÑGÔGÐGÐGÐGr   c                 óÚ   — ddl m} |                     d d¦  «        }|                      t	          |¦  «        t
          ¦  «         |                      t          |¦  «        dk    ¦  «         d S )Nr   )Ú_SERVER_STATUS_TEMPLATEz0.0.0)Úautobahn.websocket.protocolrˆ   Úformatr`   Útyperz   rM   Úlen)r!   rˆ   Úss      r%   Ú'test_interpolate_server_status_templatezDWebSocketServerProtocolTests.test_interpolate_server_status_templateæ   sg   € ØGÐGÐGÐGÐGÐGØ#×*Ò*¨4°Ñ9Ô9ˆØ×Ò�˜a™œ¥#Ñ&Ô&Ð&Ø�Š�˜A™œ š
Ñ#Ô#Ð#Ð#Ð#r'   N)rP   rQ   rR   Ú__doc__r&   r2   rO   rd   rm   rp   rs   r~   rƒ   r†   rŽ   r7   r'   r%   rT   rT   l   sÛ   € € € € € ðð ðð ð ð ð ð ð
Gð 
Gð 
GðKð Kð KðKð Kð KðKð Kð Kð	Kð 	Kð 	KðHð Hð HðHð Hð HðHð Hð Hð$ð $ð $ð $ð $r'   rT   ÚUSE_TWISTEDFc                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚTwistedProtocolTestszy
        Tests which require a specific framework's protocol class to work
        (in this case, using Twisted)
        c                 óè   — ddl m} ddl m} t          ¦   «         } |¦   «         } |¦   «         }||_        ||_        |                     ¦   «          |j        |_        d|_	        || _
        || _        d S )Nr   r   r   r   )Úautobahn.twisted.websocketr   r	   r   r   r   r   r   r   r   r   )r!   r   r	   r"   r#   r$   s         r%   r&   zTwistedProtocolTests.setUpó   sŽ   € ØJÐJÐJÐJÐJÐJØIÐIÐIÐIÐIÐIÝ‘”ˆAØ&Ð&Ñ(Ô(ˆAØ'Ð'Ñ)Ô)ˆAØˆAŒIØˆAŒKà×ÒÑÔÐØ”lˆAŒGØ"$ˆAÔàˆDŒMØˆDŒNˆNˆNr'   c                 ó”   — | j         j        | j         j        | j         j        | j         j        fD ]}|�|                     ¦   «          Œd S r)   r*   r0   s     r%   r2   zTwistedProtocolTests.tearDown  sS   € à”MÔ5Ø”MÔ5Ø”MÔ:Ø”MÔ;ð	ð "ð "�ð Ð#Ø—K’K‘M”M�Møð"ð "r'   c                 óº   — | j                              t          j        t	          d¦  «        ¦  «        ¦  «         |                      | j         j        du ¦  «         dS )zs
            If we lose our connection before openHandshakeTimeout fires, it is
            cleaned up
            ÚtestingN)r   Ú_connectionLostr   Úcreate_failureÚRuntimeErrorrM   r-   rc   s    r%   Útest_loseConnectionz(TwistedProtocolTests.test_loseConnection  sO   € ð ŒM×)Ò)­%Ô*>½|ÈIÑ?VÔ?VÑ*WÔ*WÑXÔXÐXØ�OŠO˜DœMÔBÀdÐJÑKÔKÐKÐKÐKr'   c                 ó8   — | j                              ¦   «          d S r)   )r   ÚsendServerStatusrc   s    r%   Útest_send_server_statusz,TwistedProtocolTests.test_send_server_status  s   € ØŒM×*Ò*Ñ,Ô,Ð,Ð,Ð,r'   N)rP   rQ   rR   r�   r&   r2   r›   rž   r7   r'   r%   r’   r’   î   s]   € € € € € ð	ð 	ð	ð 	ð 	ð 	"ð 	"ð 	"ð		Lð 		Lð 		Lð	-ð 	-ð 	-ð 	-ð 	-r'   r’   )ÚosÚunittestÚhashlibr   Úbase64r   Úunittest.mockr   r   r‰   r   r	   r
   r   r   Úautobahn.websocket.typesr   Úautobahn.testutilr   Úautobahn.wamp.typesr   ÚTestCaser   rT   ÚenvironÚgetr’   r7   r'   r%   ú<module>rª      s¯  ðð6 
€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø >Ð >Ð >Ð >Ð >Ð >Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø >Ð >Ð >Ð >Ð >Ð >Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø +Ð +Ð +Ð +Ð +Ð +Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ð<Gð <Gð <Gð <Gð <G 8Ô#4ñ <Gô <Gð <Gð~~$ð ~$ð ~$ð ~$ð ~$ 8Ô#4ñ ~$ô ~$ð ~$ðB „:‡>‚>�- Ñ'Ô'ð ,-ð+-ð +-ð +-ð +-ð +-˜xÔ0ñ +-ô +-ð +-ð +-ð +-ð,-ð ,-r'   