
    h<                        S r SSKrSSKrSSKJr  SSKJrJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr   " S	 S
\R                   5      r " S S\R$                  5      r " S S\R$                  5      r " S S\5      r " S S\R                   5      r\R0                  " SS5      SS S:X  a  SrSrOSrSr " S S\R                   5      rg)z0
Test cases for twisted.protocols.ident module.
    N)StringIO)defererror)StringTransport)ident)failure)unittestc                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)ClassParserTests   z"
Test parsing of ident responses.
c                 8    [         R                  " 5       U l        g)z'
Create an ident client used in tests.
N)r   IdentClientclientselfs    ^/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/twisted/test/test_ident.pysetUpClassParserTests.setUp   s     '')    c                     [         R                  " 5       nU R                  R                  R	                  USS45        U R                  R                  S5        U R                  U[        R                  5      $ )zH
'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_indentError!ClassParserTests.test_indentError   sZ     NN""AsC=1  !CD!!!U%5%566r   c                     [         R                  " 5       nU R                  R                  R	                  USS45        U R                  R                  S5        U R                  U[        R                  5      $ )z>
'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_noUSerError!ClassParserTests.test_noUSerError(   sX     NN""AsC=1  !=>!!!U\\22r   c                     [         R                  " 5       nU R                  R                  R	                  USS45        U R                  R                  S5        U R                  U[        R                  5      $ )zH
'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_invalidPortError&ClassParserTests.test_invalidPortError1   sZ     NN""AsC=1  !CD!!!U%6%677r   c                     [         R                  " 5       nU R                  R                  R	                  USS45        U R                  R                  S5        U R                  U[        R                  5      $ )zF
'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_hiddenUserError%ClassParserTests.test_hiddenUserError:   sZ     NN""AsC=1  !AB!!!U%5%566r   c                 @   [         R                  " 5       nU R                  R                  R	                  USS45        U R                  R                  [        R                  " [        R                  " 5       5      5        U R                  U[        R                  5      $ )za
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_lostConnection$ClassParserTests.test_lostConnectionC   sk    
 NN""AsC=1""7??53G3G3I#JK!!!U%5%566r   )r   N)__name__
__module____qualname____firstlineno____doc__r   r!   r&   r+   r/   r5   __static_attributes__ r   r   r   r      s%    *73877r   r   c                       \ rS rSrS rSrg)TestIdentServerN   c                     U R                   $ N)resultValuer   serverAddressclientAddresss      r   lookupTestIdentServer.lookupO   s    r   r=   Nr7   r8   r9   r:   rG   r<   r=   r   r   r?   r?   N   s     r   r?   c                       \ rS rSrS rSrg)TestErrorIdentServerS   c                 "    U R                  5       erB   )exceptionTyperD   s      r   rG   TestErrorIdentServer.lookupT   s      ""r   r=   NrI   r=   r   r   rK   rK   S   s    #r   rK   c                       \ rS rSrSrg)NewExceptionX   r=   N)r7   r8   r9   r:   r<   r=   r   r   rQ   rQ   X   s    r   rQ   c                        \ rS rSrS rS rSrg)ServerParserTests\   c                    [        5       nUR                  [        5       5        / nUR                  Ul        [
        R                  Ul        UR                  S5        U R                  US   S5        [
        R                  Ul        UR                  S5        U R                  US   S5        [
        R                  Ul        UR                  S5        U R                  US   S	5        [
        R                  Ul        UR                  S
5        U R                  US   S5        [        Ul        UR                  S5        U R                  US   S5        U R                  [        5      nU R                  [        U5      S5        S HN  nUS S 2	 UR                  SU4-  5        UR                  SU4-  5        U R                  USU4-  SU4-  /5        MP     g )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)rK   makeConnectionr   r   sendLiner   r   rN   r   assertEqualr%   r*   r.   rQ   flushLoggedErrorslen)r   pLerrsports        r   
testErrorsServerParserTests.testErrors]   s    "	*+XX
**	z"1AB,,	z"1;<++	z"1@A**	z"1?@&	z"1AB%%l3TA&'D!NN7dW,-NN7dW,-2dW<2dW<	 (r   c                     [        5       nUR                  [        5       5        / nUR                  Ul        SUl        UR                  S5        U R                  US   S5        g )N)SYSUSERz123, 456r   z123, 456 : USERID : SYS : USER)r?   r\   r   r   r]   rC   r   r^   )r   ra   rb   s      r   testSuccessServerParserTests.testSuccess   sS    	*+XX
'	z"1?@r   r=   N)r7   r8   r9   r:   re   rj   r<   r=   r   r   rT   rT   \   s    &PAr   rT   z=LrW      0100007F040302017F00000101020304c                   X    \ rS rSrS\< S\< S3rS\-   rS rS r	S r
S	 rS
 rS rSrg)ProcMixinTests   z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                 x    [         R                  " 5       nU R                  UR                  [        5      S5        g )N	127.0.0.1)r   ProcServerMixinr^   dottedQuadFromHexString_addr1r   ra   s     r   testDottedQuadFromHexString*ProcMixinTests.testDottedQuadFromHexString   s+    !!#226:KHr   c                 ~    [         R                  " 5       nU R                  UR                  [        S-   5      S5        g )Nz:0277)ru   iw  )r   rv   r^   unpackAddressrx   ry   s     r   testUnpackAddress ProcMixinTests.testUnpackAddress   s/    !!#')9:<NOr   c                     [         R                  " 5       nU R                  UR                  U R                  5      S5        g )N)ru      1.2.3.4  r   )r   rv   r^   	parseLinelinery   s     r   testLineParserProcMixinTests.testLineParser   s1    !!#KK		"$L	
r   c                    ^ ^ / m[         R                  " 5       nU 4S jUl        U4S jUl        T R	                  UR                  SS5      UR                  S45        T R	                  TS/5        g )Nc                  0   > [        T R                  /5      $ rB   iterr   r   s   r   <lambda>4ProcMixinTests.testExistingAddress.<locals>.<lambda>       D$))-r   c                 0   > TR                  U 5      S4S   $ )NrootrW   )r   )uidusernames    r   r   r      s    X__S%96$B1$Er   r   r   r   r   )r   rv   entriesgetUsernamer^   rG   SYSTEM_NAME)r   ra   r   s   ` @r   testExistingAddress"ProcMixinTests.testExistingAddress   sa    !!#-	EHH&(89AMM6;R	
 	A3'r   c                 N  ^  [         R                  " 5       nU 4S jUl        T R                  [         R                  UR
                  SS5        T R                  [         R                  UR
                  SS5        T R                  [         R                  UR
                  SS5        g )Nc                  0   > [        T R                  /5      $ rB   r   r   s   r   r   7ProcMixinTests.testNonExistingAddress.<locals>.<lambda>   r   r   ru      r   r   )z1.2.3.5r   )r   i  )r   rv   r   assertRaisesr%   rG   ry   s   ` r   testNonExistingAddress%ProcMixinTests.testNonExistingAddress   sr    !!#-	%,,2CEUV%,,2CEUV%,,2CEUVr   c                    ^ ^ / mUU 4S jnT R                  [        SU5        [        R                  " 5       nT R	                  [        R
                  UR                  SS5        T R                  S0 4/T5        g)zC
L{ident.ProcServerMixin.lookup} uses the Linux TCP process table.
c                  R   > TR                  X45        [        TR                  5      $ )zC
Mock for the open call to prevent actually opening /proc/net/tcp.
)r   r   
sampleFile)argskwargs
open_callsr   s     r   mocked_open8ProcMixinTests.testLookupProcNetTcp.<locals>.mocked_open   s$     tn-DOO,,r   openr   r   )z/proc/net/tcpN)patchbuiltinsr   rv   r   r%   rG   r^   )r   r   ra   r   s   `  @r   testLookupProcNetTcp#ProcMixinTests.testLookupProcNetTcp   sf     
	- 	

8V[1!!#%,,2CEUV-r23Z@r   r=   N)r7   r8   r9   r:   rx   _addr2r   r   rz   r~   r   r   r   r   r<   r=   r   r   rr   rr      sD    
 
	D	68<	= 
IP
(WAr   rr   )r;   r   structior   twisted.internetr   r   twisted.internet.testingr   twisted.protocolsr   twisted.pythonr   twisted.trialr	   TestCaser   IdentServerr?   rK   RuntimeErrorrQ   rT   packrx   r   rr   r=   r   r   <module>r      s   
    ) 4 # " "77x(( 77t e''  
#5,, #
	< 	1A)) 1Ah 
;;tQ!'FFFF;AX&& ;Ar   