§
    Ètºf<  ã                   óŒ  — d Z ddlZddlZddlmZ ddlmZ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 G d„ dej        ¦  «        Z G d„ de¦  «        Z G d„ dej        ¦  «        Z ej        dd¦  «        dd…         dk    rdZdZndZdZ G d„ dej        ¦  «        ZdS )z0
Test cases for twisted.protocols.ident module.
é    N)ÚStringIO)ÚdeferÚerror)ÚStringTransport)Úident)Úfailure)Úunittestc                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚClassParserTestsz*
    Test parsing of ident responses.
    c                 ó6   — t          j        ¦   «         | _        dS )z7
        Create an ident client used in tests.
        N)r   ÚIdentClientÚclient©Úselfs    úV/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/test/test_ident.pyÚsetUpzClassParserTests.setUp   s   € õ Ô'Ñ)Ô)ˆŒˆˆó    c                 óà   — t          j        ¦   «         }| j        j                             |ddf¦  «         | j                             d¦  «         |                      |t          j        ¦  «        S )zX
        'UNKNOWN-ERROR' error should map to the L{ident.IdentError} exception.
        é{   éÈ  z 123, 456 : ERROR : UNKNOWN-ERROR)	r   ÚDeferredr   ÚqueriesÚappendÚlineReceivedÚassertFailurer   Ú
IdentError©r   Úds     r   Útest_indentErrorz!ClassParserTests.test_indentError   s`   € õ ŒNÑÔˆØŒÔ×"Ò" A s¨C =Ñ1Ô1Ð1ØŒ× Ò Ð!CÑDÔDÐDØ×!Ò! !¥UÔ%5Ñ6Ô6Ð6r   c                 óà   — t          j        ¦   «         }| j        j                             |ddf¦  «         | j                             d¦  «         |                      |t          j        ¦  «        S )zN
        'NO-USER' error should map to the L{ident.NoUser} exception.
        éê   r   z234, 456 : ERROR : NO-USER)	r   r   r   r   r   r   r   r   ÚNoUserr   s     r   Útest_noUSerErrorz!ClassParserTests.test_noUSerError(   s_   € õ ŒNÑÔˆØŒÔ×"Ò" A s¨C =Ñ1Ô1Ð1ØŒ× Ò Ð!=Ñ>Ô>Ð>Ø×!Ò! !¥U¤\Ñ2Ô2Ð2r   c                 óà   — t          j        ¦   «         }| j        j                             |ddf¦  «         | j                             d¦  «         |                      |t          j        ¦  «        S )zX
        'INVALID-PORT' error should map to the L{ident.InvalidPort} exception.
        iY  é7  z 345, 567 :  ERROR : INVALID-PORT)	r   r   r   r   r   r   r   r   ÚInvalidPortr   s     r   Útest_invalidPortErrorz&ClassParserTests.test_invalidPortError1   s`   € õ ŒNÑÔˆØŒÔ×"Ò" A s¨C =Ñ1Ô1Ð1ØŒ× Ò Ð!CÑDÔDÐDØ×!Ò! !¥UÔ%6Ñ7Ô7Ð7r   c                 óà   — t          j        ¦   «         }| j        j                             |ddf¦  «         | j                             d¦  «         |                      |t          j        ¦  «        S )zV
        'HIDDEN-USER' error should map to the L{ident.HiddenUser} exception.
        r%   i  z567, 789 : ERROR : HIDDEN-USER)	r   r   r   r   r   r   r   r   Ú
HiddenUserr   s     r   Útest_hiddenUserErrorz%ClassParserTests.test_hiddenUserError:   s`   € õ ŒNÑÔˆØŒÔ×"Ò" A s¨C =Ñ1Ô1Ð1ØŒ× Ò Ð!AÑBÔBÐBØ×!Ò! !¥UÔ%5Ñ6Ô6Ð6r   c                 ó&  — t          j        ¦   «         }| j        j                             |ddf¦  «         | j                             t          j        t          j	        ¦   «         ¦  «        ¦  «         |  
                    |t          j        ¦  «        S )zy
        A pending query which failed because of a ConnectionLost should
        receive an L{ident.IdentError}.
        iý  i°  )r   r   r   r   r   ÚconnectionLostr   ÚFailurer   ÚConnectionLostr   r   r   r   s     r   Útest_lostConnectionz$ClassParserTests.test_lostConnectionC   sr   € õ
 ŒNÑÔˆØŒÔ×"Ò" A s¨C =Ñ1Ô1Ð1ØŒ×"Ò"¥7¤?µ5Ô3GÑ3IÔ3IÑ#JÔ#JÑKÔKÐKØ×!Ò! !¥UÔ%5Ñ6Ô6Ð6r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r#   r'   r*   r/   © r   r   r   r      sx   € € € € € ðð ð*ð *ð *ð7ð 7ð 7ð3ð 3ð 3ð8ð 8ð 8ð7ð 7ð 7ð7ð 7ð 7ð 7ð 7r   r   c                   ó   — e Zd Zd„ ZdS )ÚTestIdentServerc                 ó   — | j         S ©N)ÚresultValue©r   ÚserverAddressÚclientAddresss      r   ÚlookupzTestIdentServer.lookupO   s   € ØÔÐr   N©r0   r1   r2   r=   r4   r   r   r6   r6   N   s#   € € € € € ð ð  ð  ð  ð  r   r6   c                   ó   — e Zd Zd„ ZdS )ÚTestErrorIdentServerc                 ó*   — |                       ¦   «         ‚r8   )ÚexceptionTyper:   s      r   r=   zTestErrorIdentServer.lookupT   s   € Ø× Ò Ñ"Ô"Ð"r   Nr>   r4   r   r   r@   r@   S   s#   € € € € € ð#ð #ð #ð #ð #r   r@   c                   ó   — e Zd ZdS )ÚNewExceptionN)r0   r1   r2   r4   r   r   rD   rD   X   s   € € € € € Ø€Dr   rD   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚServerParserTestsc                 ó<  — t          ¦   «         }|                     t          ¦   «         ¦  «         g }|j        |_        t
          j        |_        |                     d¦  «         |  	                    |d         d¦  «         t
          j
        |_        |                     d¦  «         |  	                    |d         d¦  «         t
          j        |_        |                     d¦  «         |  	                    |d         d	¦  «         t
          j        |_        |                     d
¦  «         |  	                    |d         d¦  «         t          |_        |                     d¦  «         |  	                    |d         d¦  «         |                      t          ¦  «        }|  	                    t          |¦  «        d¦  «         dD ]Y}|d d …= |                     d|fz  ¦  «         |                     d|fz  ¦  «         |  	                    |d|fz  d|fz  g¦  «         ŒZd S )Nz123, 345r   z 123, 345 : ERROR : UNKNOWN-ERRORz432, 210é   z432, 210 : ERROR : NO-USERz987, 654é   z987, 654 : ERROR : INVALID-PORTz756, 827é   z756, 827 : ERROR : HIDDEN-USERz987, 789é   z 987, 789 : ERROR : UNKNOWN-ERROR)éÿÿÿÿr   i   i  z%d, 5z5, %dz%d, 5 : ERROR : INVALID-PORTz5, %d : ERROR : INVALID-PORT)r@   ÚmakeConnectionr   r   ÚsendLiner   r   rB   r   ÚassertEqualr"   r&   r)   rD   ÚflushLoggedErrorsÚlen)r   ÚpÚLÚerrsÚports        r   Ú
testErrorszServerParserTests.testErrors]   s  € Ý Ñ"Ô"ˆØ	×Ò�Ñ*Ô*Ñ+Ô+Ð+ØˆØ”XˆŒ
åÔ*ˆŒØ	�Š�zÑ"Ô"Ð"Ø×Ò˜˜1œÐAÑBÔBÐBåœ,ˆŒØ	�Š�zÑ"Ô"Ð"Ø×Ò˜˜1œÐ;Ñ<Ô<Ð<åÔ+ˆŒØ	�Š�zÑ"Ô"Ð"Ø×Ò˜˜1œÐ@ÑAÔAÐAåÔ*ˆŒØ	�Š�zÑ"Ô"Ð"Ø×Ò˜˜1œÐ?Ñ@Ô@Ð@å&ˆŒØ	�Š�zÑ"Ô"Ð"Ø×Ò˜˜1œÐAÑBÔBÐBØ×%Ò%¥lÑ3Ô3ˆØ×Ò�˜T™œ AÑ&Ô&Ð&à'ð 
	ð 
	ˆDØ�!�!�!�Ø�NŠN˜7 d WÑ,Ñ-Ô-Ð-Ø�NŠN˜7 d WÑ,Ñ-Ô-Ð-Ø×ÒØà2°d°WÑ<Ø2°d°WÑ<ðñô ð ð ð	
	ð 
	r   c                 óð   — t          ¦   «         }|                     t          ¦   «         ¦  «         g }|j        |_        d|_        |                     d¦  «         |                      |d         d¦  «         d S )N)ÚSYSÚUSERz123, 456r   z123, 456 : USERID : SYS : USER)r6   rM   r   r   rN   r9   r   rO   )r   rR   rS   s      r   ÚtestSuccesszServerParserTests.testSuccess…   so   € ÝÑÔˆØ	×Ò�Ñ*Ô*Ñ+Ô+Ð+ØˆØ”XˆŒ
à'ˆŒØ	�Š�zÑ"Ô"Ð"Ø×Ò˜˜1œÐ?Ñ@Ô@Ð@Ð@Ð@r   N)r0   r1   r2   rV   rZ   r4   r   r   rF   rF   \   s8   € € € € € ð&ð &ð &ðPAð Að Að Að Ar   rF   z=LrH   ó   Ú0100007FÚ04030201Ú7F000001Ú01020304c                   óN   — e Zd Zde›de›d�Zdez   Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdS )ÚProcMixinTestsz4: z:0019 z]:02FA 0A 00000000:00000000 00:00000000 00000000     0        0 10927 1 f72a5b80 3000 0 0 2 -1zd  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
   c                 óˆ   — t          j        ¦   «         }|                      |                     t          ¦  «        d¦  «         d S )Nú	127.0.0.1)r   ÚProcServerMixinrO   ÚdottedQuadFromHexStringÚ_addr1©r   rR   s     r   ÚtestDottedQuadFromHexStringz*ProcMixinTests.testDottedQuadFromHexString£   s:   € ÝÔ!Ñ#Ô#ˆØ×Ò˜×2Ò2µ6Ñ:Ô:¸KÑHÔHÐHÐHÐHr   c                 óŽ   — t          j        ¦   «         }|                      |                     t          dz   ¦  «        d¦  «         d S )Nz:0277)rc   iw  )r   rd   rO   ÚunpackAddressrf   rg   s     r   ÚtestUnpackAddressz ProcMixinTests.testUnpackAddress§   s>   € ÝÔ!Ñ#Ô#ˆØ×Ò˜Ÿš­°'Ñ)9Ñ:Ô:Ð<NÑOÔOÐOÐOÐOr   c                 óˆ   — t          j        ¦   «         }|                      |                     | j        ¦  «        d¦  «         d S )N)©rc   é   ©ú1.2.3.4éú  r   )r   rd   rO   Ú	parseLineÚlinerg   s     r   ÚtestLineParserzProcMixinTests.testLineParser«   sF   € ÝÔ!Ñ#Ô#ˆØ×ÒØ�KŠK˜œ	Ñ"Ô"Ð$Lñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óì   ‡ ‡— g Št          j        ¦   «         }ˆ fd„|_        ˆfd„|_        ‰                      |                     dd¦  «        |j        df¦  «         ‰                      ‰dg¦  «         d S )Nc                  ó.   •— t          ‰ j        g¦  «        S r8   ©Úiterrs   r   s   €r   ú<lambda>z4ProcMixinTests.testExistingAddress.<locals>.<lambda>´   ó   ø€ �D $¤) Ñ-Ô-€ r   c                 ó>   •— ‰                      | ¦  «        dfd         S )NÚrootrH   )r   )ÚuidÚusernames    €r   ry   z4ProcMixinTests.testExistingAddress.<locals>.<lambda>µ   s   ø€  X§_¢_°SÑ%9Ô%9¸6Ð$BÀ1Ô$E€ r   rm   ro   r|   r   )r   rd   ÚentriesÚgetUsernamerO   r=   ÚSYSTEM_NAME)r   rR   r~   s   ` @r   ÚtestExistingAddressz"ProcMixinTests.testExistingAddress±   s‹   øø€ ØˆÝÔ!Ñ#Ô#ˆØ-Ð-Ð-Ð-ˆŒ	ØEÐEÐEÐEˆŒØ×ÒØ�HŠHÐ&Ð(8Ñ9Ô9¸A¼MÈ6Ð;Rñ	
ô 	
ð 	
ð 	×Ò˜ A 3Ñ'Ô'Ð'Ð'Ð'r   c                 ó,  ‡ — t          j        ¦   «         }ˆ fd„|_        ‰                      t           j        |j        dd¦  «         ‰                      t           j        |j        dd¦  «         ‰                      t           j        |j        dd¦  «         d S )Nc                  ó.   •— t          ‰ j        g¦  «        S r8   rw   r   s   €r   ry   z7ProcMixinTests.testNonExistingAddress.<locals>.<lambda>½   rz   r   ©rc   é   ro   rm   )z1.2.3.5rq   )rp   iû  )r   rd   r   ÚassertRaisesr"   r=   rg   s   ` r   ÚtestNonExistingAddressz%ProcMixinTests.testNonExistingAddress»   s‡   ø€ ÝÔ!Ñ#Ô#ˆØ-Ð-Ð-Ð-ˆŒ	Ø×Ò�%œ,¨¬Ð2CÐEUÑVÔVÐVØ×Ò�%œ,¨¬Ð2CÐEUÑVÔVÐVØ×Ò�%œ,¨¬Ð2CÐEUÑVÔVÐVÐVÐVr   c                 óø   ‡ ‡— g Šˆˆ fd„}‰                       t          d|¦  «         t          j        ¦   «         }‰                      t          j        |j        dd¦  «         ‰                      di fg‰¦  «         dS )zS
        L{ident.ProcServerMixin.lookup} uses the Linux TCP process table.
        c                  óZ   •— ‰                      | |f¦  «         t          ‰j        ¦  «        S )z[
            Mock for the open call to prevent actually opening /proc/net/tcp.
            )r   r   Ú
sampleFile)ÚargsÚkwargsÚ
open_callsr   s     €€r   Úmocked_openz8ProcMixinTests.testLookupProcNetTcp.<locals>.mocked_openÈ   s-   ø€ ð ×Ò˜t V˜nÑ-Ô-Ð-Ý˜DœOÑ,Ô,Ð,r   Úopenr…   ro   )z/proc/net/tcpN)ÚpatchÚbuiltinsr   rd   r‡   r"   r=   rO   )r   r�   rR   rŽ   s   `  @r   ÚtestLookupProcNetTcpz#ProcMixinTests.testLookupProcNetTcpÂ   s”   øø€ ð ˆ
ð	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	�
Š
•8˜V [Ñ1Ô1Ð1åÔ!Ñ#Ô#ˆØ×Ò�%œ,¨¬Ð2CÐEUÑVÔVÐVØ×ÒÐ-¨rÐ2Ð3°ZÑ@Ô@Ð@Ð@Ð@r   N)r0   r1   r2   rf   Ú_addr2rs   r‹   rh   rk   rt   r‚   rˆ   r“   r4   r   r   ra   ra   ˜   s¦   € € € € € € ð
 
ˆˆ���ð	€Dð	6Ø8<ñ	=ð ð
Ið Ið IðPð Pð Pð
ð 
ð 
ð(ð (ð (ðWð Wð WðAð Að Að Að Ar   ra   )r3   r’   ÚstructÚior   Útwisted.internetr   r   Útwisted.internet.testingr   Útwisted.protocolsr   Útwisted.pythonr   Útwisted.trialr	   ÚTestCaser   ÚIdentServerr6   r@   ÚRuntimeErrorrD   rF   Úpackrf   r”   ra   r4   r   r   ú<module>r       sø  ðð
ð ð €€€Ø €€€Ø Ð Ð Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø #Ð #Ð #Ð #Ð #Ð #Ø "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "ð77ð 77ð 77ð 77ð 77�xÔ(ñ 77ô 77ð 77ðt ð  ð  ð  ð  �eÔ'ñ  ô  ð  ð
#ð #ð #ð #ð #˜5Ô,ñ #ô #ð #ð
	ð 	ð 	ð 	ð 	�<ñ 	ô 	ð 	ð1Að 1Að 1Að 1Að 1A˜Ô)ñ 1Aô 1Að 1Aðh €6„;ˆt�QÑÔ˜˜!˜Ô Ò'Ð'Ø€FØ€F€Fà€FØ€Fð;Að ;Að ;Að ;Að ;A�XÔ&ñ ;Aô ;Að ;Að ;Að ;Ar   