§
    Ètºf¦  ã                   ó  — d Z ddlmZmZmZmZ ddlmZ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 G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )z+
Test cases for twisted.protocols package.
é    )ÚaddressÚdeferÚprotocolÚreactor)ÚportforwardÚwire)Ú	iterbytes)Úproto_helpers)Úunittestc                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )Ú	WireTestsz
    Test wire protocols.
    c                 óž  — t          j        ¦   «         }t          j        ¦   «         }|                     |¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         |                      |                     ¦   «         d¦  «         dS )zT
        Test wire.Echo protocol: send some data and check it send it back.
        ó   helloó   worldó   howó   areó   yous   helloworldhowareyouN)r
   ÚStringTransportr   ÚEchoÚmakeConnectionÚdataReceivedÚassertEqualÚvalue©ÚselfÚtÚas      úZ/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/test/test_protocols.pyÚ	test_echozWireTests.test_echo   s°   € õ Ô)Ñ+Ô+ˆÝŒI‰KŒKˆØ	×Ò˜ÑÔÐØ	�Š�xÑ Ô Ð Ø	�Š�xÑ Ô Ð Ø	�Š�vÑÔÐØ	�Š�vÑÔÐØ	�Š�vÑÔÐØ×Ò˜Ÿš™œÐ$:Ñ;Ô;Ð;Ð;Ð;ó    c                 óÌ   — t          j        ¦   «         }t          j        ¦   «         }|                     |¦  «         |                      |                     ¦   «         d¦  «         dS )z)
        Test wire.Who protocol.
        s   root
N)r
   r   r   ÚWhor   r   r   r   s      r   Útest_whozWireTests.test_who"   sU   € õ Ô)Ñ+Ô+ˆÝŒH‰JŒJˆØ	×Ò˜ÑÔÐØ×Ò˜Ÿš™œ KÑ0Ô0Ð0Ð0Ð0r    c                 óÌ   — t          j        ¦   «         }t          j        ¦   «         }|                     |¦  «         |                      |                     ¦   «         d¦  «         dS )z*
        Test wire.QOTD protocol.
        s'   An apple a day keeps the doctor away.
N)r
   r   r   ÚQOTDr   r   r   r   s      r   Ú	test_QOTDzWireTests.test_QOTD+   sV   € õ Ô)Ñ+Ô+ˆÝŒI‰KŒKˆØ	×Ò˜ÑÔÐØ×Ò˜Ÿš™œÐ$PÑQÔQÐQÐQÐQr    c                 óž  — t          j        ¦   «         }t          j        ¦   «         }|                     |¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         |                      |                     ¦   «         d¦  «         dS )z-
        Test wire.Discard protocol.
        r   r   r   r   r   r    N)r
   r   r   ÚDiscardr   r   r   r   r   s      r   Útest_discardzWireTests.test_discard4   s¯   € õ Ô)Ñ+Ô+ˆÝŒL‰NŒNˆØ	×Ò˜ÑÔÐØ	�Š�xÑ Ô Ð Ø	�Š�xÑ Ô Ð Ø	�Š�vÑÔÐØ	�Š�vÑÔÐØ	�Š�vÑÔÐØ×Ò˜Ÿš™œ CÑ(Ô(Ð(Ð(Ð(r    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r#   r&   r)   © r    r   r   r      s]   € € € € € ðð ð<ð <ð <ð1ð 1ð 1ðRð Rð Rð)ð )ð )ð )ð )r    r   c                   ó   — e Zd ZdZd„ ZdS )ÚTestableProxyClientFactoryzÃ
    Test proxy client factory that keeps the last created protocol instance.

    @ivar protoInstance: the last instance of the protocol.
    @type protoInstance: L{portforward.ProxyClient}
    c                 óT   — t           j                             | |¦  «        }|| _        |S )zE
        Create the protocol instance and keeps track of it.
        )r   ÚProxyClientFactoryÚbuildProtocolÚprotoInstance©r   ÚaddrÚprotos      r   r3   z(TestableProxyClientFactory.buildProtocolK   s)   € õ Ô.×<Ò<¸TÀ4ÑHÔHˆØ"ˆÔØˆr    N©r*   r+   r,   r-   r3   r.   r    r   r0   r0   C   s-   € € € € € ðð ðð ð ð ð r    r0   c                   ó   — e Zd ZdZd„ ZdS )ÚTestableProxyFactoryal  
    Test proxy factory that keeps the last created protocol instance.

    @ivar protoInstance: the last instance of the protocol.
    @type protoInstance: L{portforward.ProxyServer}

    @ivar clientFactoryInstance: client factory used by C{protoInstance} to
        create forward connections.
    @type clientFactoryInstance: L{TestableProxyClientFactory}
    c                 ó�   ‡ — t           j                             ‰ |¦  «        }t          ¦   «         ‰ _        ˆ fd„|_        |‰ _        |S )z‡
        Create the protocol instance, keeps track of it, and makes it use
        C{clientFactoryInstance} as client factory.
        c                  ó   •— ‰ j         S ©N)ÚclientFactoryInstance©r   s   €r   ú<lambda>z4TestableProxyFactory.buildProtocol.<locals>.<lambda>h   s
   ø€ ¨dÔ.H€ r    )r   ÚProxyFactoryr3   r0   r>   ÚclientProtocolFactoryr4   r5   s   `  r   r3   z"TestableProxyFactory.buildProtocol`   sI   ø€ õ
 Ô(×6Ò6°t¸TÑBÔBˆÝ%?Ñ%AÔ%AˆÔ"à&HÐ&HÐ&HÐ&HˆÔ#Ø"ˆÔØˆr    Nr8   r.   r    r   r:   r:   T   s-   € € € € € ð	ð 	ð
ð 
ð 
ð 
ð 
r    r:   c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚPortforwardingTestsz
    Test port forwarding.
    c                 ót   — t          j        ¦   «         | _        t          j        ¦   «         | _        g | _        d S r=   )r   r   ÚserverProtocolr   ÚProtocolÚclientProtocolÚ	openPortsr?   s    r   ÚsetUpzPortforwardingTests.setUpr   s,   € Ý"œi™kœkˆÔÝ&Ô/Ñ1Ô1ˆÔØˆŒˆˆr    c                 óê  — 	 | j         j        j                             ¦   «          n# t          $ r Y nw xY w	 | j         j        j        }|j                             ¦   «          n# t          $ r Y nw xY w	 | j        j                             ¦   «          n# t          $ r Y nw xY w	 | j        j                             ¦   «          n# t          $ r Y nw xY wt          j	        d„ | j
        D ¦   «         ¦  «        S )Nc                 ó@   — g | ]}t          j        |j        ¦  «        ‘ŒS r.   )r   ÚmaybeDeferredÚstopListening)Ú.0Úps     r   ú
<listcomp>z0PortforwardingTests.tearDown.<locals>.<listcomp>Š   s%   € ÐJÐJÐJ°a�UÔ  ¤Ñ1Ô1ÐJÐJÐJr    )ÚproxyServerFactoryr4   Ú	transportÚloseConnectionÚAttributeErrorr>   rH   rF   r   ÚgatherResultsrI   )r   Úpis     r   ÚtearDownzPortforwardingTests.tearDownw   s7  € ð	ØÔ#Ô1Ô;×JÒJÑLÔLÐLÐLøÝð 	ð 	ð 	ØˆDð	øøøð	ØÔ(Ô>ÔLˆBØŒL×'Ò'Ñ)Ô)Ð)Ð)øÝð 	ð 	ð 	ØˆDð	øøøð	ØÔÔ)×8Ò8Ñ:Ô:Ð:Ð:øÝð 	ð 	ð 	ØˆDð	øøøð	ØÔÔ)×8Ò8Ñ:Ô:Ð:Ð:øÝð 	ð 	ð 	ØˆDð	øøøåÔ"ØJÐJ¸4¼>ÐJÑJÔJñ
ô 
ð 	
sA   ‚#& ¦
3²3·*A" Á"
A/Á.A/Á3B Â
BÂBÂ#C Ã
CÃCc                 ó|  ‡ ‡‡‡	— t          j        ¦   «         }ˆ fd„|_         t          j        d|d¬¦  «        }‰ j                             |¦  «         t          d|                     ¦   «         j        ¦  «        ‰ _	        t          j        d‰ j	        d¬¦  «        }‰ j                             |¦  «         dŠg Š	t          j        ¦   «         Šˆˆˆ	ˆ fd„}|‰ j        _        ˆˆ fd„}|‰ j        _        t          j        ¦   «         }ˆ fd„|_         t          j        d|                     ¦   «         j        |¦  «         ‰S )	z=
        Test port forwarding through Echo protocol.
        c                  ó   •— ‰ j         S r=   )rF   r?   s   €r   r@   z6PortforwardingTests.test_portforward.<locals>.<lambda>’   s
   ø€ ¨TÔ-@€ r    r   ú	127.0.0.1)Ú	interfaceiè  c                 óø   •— ‰                      t          | ¦  «        ¦  «         t          ‰¦  «        ‰k    rC‰                     d                     ‰¦  «        d‰z  ¦  «         ‰                     d ¦  «         d S d S )Nr    ó   x)Úextendr	   Úlenr   ÚjoinÚcallback)ÚdataÚdÚnBytesÚreceivedr   s    €€€€r   ÚtestDataReceivedz>PortforwardingTests.test_portforward.<locals>.testDataReceived¡   sr   ø€ Ø�OŠO�I d™OœOÑ,Ô,Ð,Ý�8‰}Œ} Ò&Ð&Ø× Ò  §¢¨(Ñ!3Ô!3°T¸F±]ÑCÔCÐCØ—
’
˜4Ñ Ô Ð Ð Ð ð 'Ð&r    c                  óL   •— ‰j         j                             d‰ z  ¦  «         d S )Nr^   )rH   rS   Úwrite)re   r   s   €€r   ÚtestConnectionMadez@PortforwardingTests.test_portforward.<locals>.testConnectionMade©   s'   ø€ ØÔÔ)×/Ò/°°v±Ñ>Ô>Ð>Ð>Ð>r    c                  ó   •— ‰ j         S r=   )rH   r?   s   €r   r@   z6PortforwardingTests.test_portforward.<locals>.<lambda>¯   s
   ø€ ¨Ô)<€ r    )r   ÚServerFactoryr   Ú	listenTCPrI   Úappendr:   ÚgetHostÚportrR   r   ÚDeferredrH   r   ÚconnectionMadeÚClientFactoryÚ
connectTCP)
r   ÚrealServerFactoryÚrealServerPortÚproxyServerPortrg   rj   ÚclientFactoryrd   re   rf   s
   `      @@@r   Útest_portforwardz$PortforwardingTests.test_portforward�   sx  øøøø€ õ %Ô2Ñ4Ô4ÐØ%@Ð%@Ð%@Ð%@ÐÔ"Ý Ô*¨1Ð.?È;ÐWÑWÔWˆØŒ×Ò˜nÑ-Ô-Ð-Ý"6Ø˜×/Ò/Ñ1Ô1Ô6ñ#
ô #
ˆÔõ "Ô+ØˆtÔ&°+ð
ñ 
ô 
ˆð 	Œ×Ò˜oÑ.Ô.Ð.àˆØˆÝŒNÑÔˆð	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð ,<ˆÔÔ(ð	?ð 	?ð 	?ð 	?ð 	?ð 	?ð .@ˆÔÔ*å Ô.Ñ0Ô0ˆØ!<Ð!<Ð!<Ð!<ˆÔåÔ˜;¨×(?Ò(?Ñ(AÔ(AÔ(FÈÑVÔVÐVàˆr    c                 ó
  — t          j        ddd¦  «        }t          j        dd¦  «                             |¦  «        }t          j        ¦   «         }||_        t          j        ¦   «         }| 	                    |¦  «         |  
                    t          |j        ¦  «        d¦  «         |j        d         \  }}}}}	|                      |t          j        ¦  «         |                     |¦  «        }
t          j        ¦   «         }|
 	                    |¦  «         |                      |j        |¦  «         |                      |j        |¦  «         |                      |j        ¦  «         |                      |j        ¦  «         dS )zm
        The proxy client registers itself as a producer of the proxy server and
        vice versa.
        ÚTCPr[   r   é   N)r   ÚIPv4Addressr   rA   r3   r
   ÚMemoryReactorr   r   r   r   r`   Ú
tcpClientsÚassertIsInstancer2   ÚassertIsÚproducerÚ
assertTrueÚ	streaming)r   r6   Úserverr   ÚserverTransportÚhostrp   rx   ÚtimeoutÚ_ÚclientÚclientTransports               r   Útest_registerProducersz*PortforwardingTests.test_registerProducersµ   s^  € õ Ô" 5¨+°qÑ9Ô9ˆÝÔ)¨+°qÑ9Ô9×GÒGÈÑMÔMˆõ  Ô-Ñ/Ô/ˆØ ˆŒõ (Ô7Ñ9Ô9ˆØ×Ò˜oÑ.Ô.Ð.ð 	×Ò�˜WÔ/Ñ0Ô0°!Ñ4Ô4Ð4à07Ô0BÀ1Ô0EÑ-ˆˆd�M 7¨AØ×Ò˜m­[Ô-KÑLÔLÐLð ×,Ò,¨TÑ2Ô2ˆÝ'Ô7Ñ9Ô9ˆØ×Ò˜oÑ.Ô.Ð.ð 	�Š�oÔ.°Ñ@Ô@Ð@Ø�Š�oÔ.°Ñ@Ô@Ð@à�Š˜Ô1Ñ2Ô2Ð2Ø�Š˜Ô1Ñ2Ô2Ð2Ð2Ð2r    N)r*   r+   r,   r-   rJ   rX   ry   rŒ   r.   r    r   rD   rD   m   s[   € € € € € ðð ðð ð ð

ð 
ð 
ð,&ð &ð &ðP!3ð !3ð !3ð !3ð !3r    rD   c                   ó   — e Zd ZdZd„ ZdS )ÚStringTransportTestszA
    Test L{proto_helpers.StringTransport} helper behaviour.
    c                 ón   — t          j        ¦   «         }|                      t          |j        d¦  «         dS )zY
        Test that L{proto_helpers.StringTransport} doesn't accept unicode data.
        ÚfooN)r
   r   ÚassertRaisesÚ	TypeErrorri   )r   Úss     r   Útest_noUnicodez#StringTransportTests.test_noUnicodeÞ   s2   € õ Ô)Ñ+Ô+ˆØ×Ò�) Q¤W¨eÑ4Ô4Ð4Ð4Ð4r    N)r*   r+   r,   r-   r”   r.   r    r   rŽ   rŽ   Ù   s-   € € € € € ðð ð5ð 5ð 5ð 5ð 5r    rŽ   N)r-   Útwisted.internetr   r   r   r   Útwisted.protocolsr   r   Útwisted.python.compatr	   Útwisted.testr
   Útwisted.trialr   ÚTestCaser   r2   r0   rA   r:   rD   rŽ   r.   r    r   ú<module>r›      sx  ððð ð ?Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø +Ð +Ð +Ð +Ð +Ð +Ø &Ð &Ð &Ð &Ð &Ð &Ø "Ð "Ð "Ð "Ð "Ð "ð1)ð 1)ð 1)ð 1)ð 1)�Ô!ñ 1)ô 1)ð 1)ðhð ð ð ð  Ô!?ñ ô ð ð"ð ð ð ð ˜;Ô3ñ ô ð ð2i3ð i3ð i3ð i3ð i3˜(Ô+ñ i3ô i3ð i3ðX
5ð 
5ð 
5ð 
5ð 
5˜8Ô,ñ 
5ô 
5ð 
5ð 
5ð 
5r    