+
    üÐj<  ã                   óž  € R t ^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt  ! R R	]P                   4      t ! R
 R]P$                  4      t ! R R]P$                  4      t ! R R]4      t ! R R]P                   4      t]P0                  ! R^4      R,          R8X  d   RtRtMRtRt ! R R]P                   4      tR# )z0
Test cases for twisted.protocols.ident module.
N)ÚStringIO)ÚdeferÚerror)ÚStringTransport)Úident)Úfailure)Úunittestc                   óH   a € ] tR t^t o RtR tR tR tR tR t	R t
RtV tR	# )
ÚClassParserTestsz"
Test parsing of ident responses.
c                ó:   € \         P                  ! 4       V n        R# )z'
Create an ident client used in tests.
N)r   ÚIdentClientÚclient©Úselfs   &Ú9/usr/lib/python3/dist-packages/twisted/test/test_ident.pyÚsetUpÚClassParserTests.setUp   s   € ô ×'Ò'Ó)ˆŽó    c                óò   € \         P                  ! 4       pV P                  P                  P	                  V^{R34       V P                  P                  R4       V P                  V\        P                  4      # )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   € ô �NŠNÓˆØ�‰×Ñ×"Ñ" A s¨C =Ô1Ø�‰× Ñ Ð!CÔDØ×!Ñ! !¤U×%5Ñ%5Ó6Ð6r   c                óò   € \         P                  ! 4       pV P                  P                  P	                  V^êR34       V P                  P                  R4       V P                  V\        P                  4      # )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   € ô �NŠNÓˆØ�‰×Ñ×"Ñ" A s¨C =Ô1Ø�‰× Ñ Ð!=Ô>Ø×!Ñ! !¤U§\¡\Ó2Ð2r   c                óò   € \         P                  ! 4       pV P                  P                  P	                  VRR34       V P                  P                  R4       V P                  V\        P                  4      # )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   € ô �NŠNÓˆØ�‰×Ñ×"Ñ" A s¨C =Ô1Ø�‰× Ñ Ð!CÔDØ×!Ñ! !¤U×%6Ñ%6Ó7Ð7r   c                óò   € \         P                  ! 4       pV P                  P                  P	                  VRR34       V P                  P                  R4       V P                  V\        P                  4      # )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   € ô �NŠNÓˆØ�‰×Ñ×"Ñ" A s¨C =Ô1Ø�‰× Ñ Ð!AÔBØ×!Ñ! !¤U×%5Ñ%5Ó6Ð6r   c                ó@  € \         P                  ! 4       pV P                  P                  P	                  VRR34       V P                  P                  \        P                  ! \        P                  ! 4       4      4       V P                  V\        P                  4      # )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   € ô
 �NŠNÓˆØ�‰×Ñ×"Ñ" A s¨C =Ô1Ø�‰×"Ñ"¤7§?¢?´5×3GÒ3GÓ3IÓ#JÔKØ×!Ñ! !¤U×%5Ñ%5Ó6Ð6r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r"   r'   r+   r1   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r
   r
      s-   ø‡ € ñò*ò7ò3ò8ò7÷7ð 7r   r
   c                   ó&   a € ] tR t^Nt o R tRtV tR# )ÚTestIdentServerc                ó   € V P                   # ©N)ÚresultValue©r   ÚserverAddressÚclientAddresss   &&&r   ÚlookupÚTestIdentServer.lookupO   s   € Ø×ÑÐr   © N©r3   r4   r5   r6   rD   r8   r9   r:   s   @r   r=   r=   N   s   ø‡ € ÷ ð  r   r=   c                   ó&   a € ] tR t^St o R tRtV tR# )ÚTestErrorIdentServerc                ó"   € V P                  4       hr?   )ÚexceptionTyperA   s   &&&r   rD   ÚTestErrorIdentServer.lookupT   s   € Ø× Ñ Ó"Ð"r   rF   NrG   r:   s   @r   rI   rI   S   s   ø‡ € ÷#ð #r   rI   c                   ó   € ] tR t^XtRtR# )ÚNewExceptionrF   N)r3   r4   r5   r6   r8   rF   r   r   rN   rN   X   s   † Ûr   rN   c                   ó,   a € ] tR t^\t o R tR tRtV tR# )ÚServerParserTestsc                óø  € \        4       pVP                  \        4       4       . pVP                  Vn        \
        P                  Vn        VP                  R 4       V P                  V^ ,          R4       \
        P                  Vn        VP                  R4       V P                  V^,          R4       \
        P                  Vn        VP                  R4       V P                  V^,          R4       \
        P                  Vn        VP                  R4       V P                  V^,          R4       \        Vn        VP                  R4       V P                  V^,          R	4       V P                  \        4      pV P                  \        V4      ^4       R F\  pVR
 VP                  RV3,          4       VP                  RV3,          4       V P                  VRV3,          RV3,          .4       K^  	  R# )z123, 345z 123, 345 : ERROR : UNKNOWN-ERRORz432, 210z432, 210 : ERROR : NO-USERz987, 654z987, 654 : ERROR : INVALID-PORTz756, 827z756, 827 : ERROR : HIDDEN-USERz987, 789z 987, 789 : ERROR : UNKNOWN-ERROR:NNNz%d, 5z5, %dz%d, 5 : ERROR : INVALID-PORTz5, %d : ERROR : INVALID-PORTN)éÿÿÿÿé    i   i  )rI   ÚmakeConnectionr   r   ÚsendLiner   r   rK   r   ÚassertEqualr!   r&   r*   rN   ÚflushLoggedErrorsÚlen)r   ÚpÚLÚerrsÚports   &    r   Ú
testErrorsÚServerParserTests.testErrors]   sŽ  € Ü Ó"ˆØ	×ÑœÓ*Ô+ØˆØ—X‘XˆŒ
ä×*Ñ*ˆŒØ	�‰�zÔ"Ø×Ñ˜˜1�ÐAÔBäŸ,™,ˆŒØ	�‰�zÔ"Ø×Ñ˜˜1�Ð;Ô<ä×+Ñ+ˆŒØ	�‰�zÔ"Ø×Ñ˜˜1�Ð@ÔAä×*Ñ*ˆŒØ	�‰�zÔ"Ø×Ñ˜˜1�Ð?Ô@ä&ˆŒØ	�‰�zÔ"Ø×Ñ˜˜1�ÐAÔBØ×%Ñ%¤lÓ3ˆØ×Ñœ˜T› AÔ&ã'ˆDØ�!�Ø�N‰N˜7 d WÕ,Ô-Ø�N‰N˜7 d WÕ,Ô-Ø×ÑØà2°d°WÕ<Ø2°d°WÕ<ðöó	 (r   c                óÔ   € \        4       pVP                  \        4       4       . pVP                  Vn        RVn        VP                  R4       V P                  V^ ,          R4       R# )ÚSYSz123, 456z123, 456 : USERID : SYS : USERN)r`   ÚUSER)r=   rT   r   r   rU   r@   r   rV   )r   rY   rZ   s   &  r   ÚtestSuccessÚServerParserTests.testSuccess…   sS   € ÜÓˆØ	×ÑœÓ*Ô+ØˆØ—X‘XˆŒ
à'ˆŒØ	�‰�zÔ"Ø×Ñ˜˜1�Ð?Ö@r   rF   N)r3   r4   r5   r6   r]   rb   r8   r9   r:   s   @r   rP   rP   \   s   ø‡ € ò&÷PAð Ar   rP   z=L:rS   é   Nó   Ú0100007FÚ04030201Ú7F000001Ú01020304c                   ól   a € ] tR t^˜t o R]: R]: R2tR],           tR tR t	R t
R tR	 tR
 tRtV tR# )Ú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                óz   € \         P                  ! 4       pV P                  VP                  \        4      R 4       R# )ú	127.0.0.1N)r   ÚProcServerMixinrV   ÚdottedQuadFromHexStringÚ_addr1©r   rY   s   & r   ÚtestDottedQuadFromHexStringÚ*ProcMixinTests.testDottedQuadFromHexString£   s+   € Ü×!Ò!Ó#ˆØ×Ñ˜×2Ñ2´6Ó:¸KÖHr   c                óˆ   € \         P                  ! 4       pV P                  VP                  \        R ,           4      R4       R# )z:0277N)rm   iw  )r   rn   rV   ÚunpackAddressrp   rq   s   & r   ÚtestUnpackAddressÚ ProcMixinTests.testUnpackAddress§   s/   € Ü×!Ò!Ó#ˆØ×Ñ˜Ÿ™¬°'Õ)9Ó:Ð<NÖOr   c                ó†   € \         P                  ! 4       pV P                  VP                  V P                  4      R4       R# )rm   N)©rm   é   ©ú1.2.3.4éú  rS   )r   rn   rV   Ú	parseLineÚlinerq   s   & r   ÚtestLineParserÚProcMixinTests.testLineParser«   s1   € Ü×!Ò!Ó#ˆØ×ÑØ�K‰K˜Ÿ	™	Ó"Ð$Lö	
r   c                óæ   a a€ . o\         P                  ! 4       pV 3R  lVn        V3R lVn        S P	                  VP                  RR4      VP                  R34       S P	                  S^ .4       R# )c                  ó0   <€ \        S P                  .4      # r?   ©Úiterr   r   s   €r   Ú<lambda>Ú4ProcMixinTests.testExistingAddress.<locals>.<lambda>´   ó   ø€ œD $§)¡) Ô-r   c                 ó8   <€ SP                  V 4      R 3^,          # )Úroot)r   )ÚuidÚusernames   &€r   r†   r‡   µ   s   ø€  X§_¡_°SÓ%9¸6Ð$BÀ1Ö$Er   rŠ   Nry   r{   )r   rn   ÚentriesÚgetUsernamerV   rD   ÚSYSTEM_NAME)r   rY   rŒ   s   f @r   ÚtestExistingAddressÚ"ProcMixinTests.testExistingAddress±   sa   ù€ ØˆÜ×!Ò!Ó#ˆÜ-ˆŒ	ÜEˆŒØ×ÑØ�H‰HÐ&Ð(8Ó9¸A¿M¹MÈ6Ð;Rô	
ð 	×Ñ˜ A 3Ö'r   c                óP  a € \         P                  ! 4       pV 3R  lVn        S P                  \         P                  VP
                  RR4       S P                  \         P                  VP
                  RR4       S P                  \         P                  VP
                  RR4       R# )c                  ó0   <€ \        S P                  .4      # r?   r„   r   s   €r   r†   Ú7ProcMixinTests.testNonExistingAddress.<locals>.<lambda>½   rˆ   r   N©rm   é   r{   ry   )z1.2.3.5r}   )r|   iû  )r   rn   r�   ÚassertRaisesr!   rD   rq   s   f r   ÚtestNonExistingAddressÚ%ProcMixinTests.testNonExistingAddress»   sr   ø€ Ü×!Ò!Ó#ˆÜ-ˆŒ	Ø×Ñœ%Ÿ,™,¨¯©Ð2CÐEUÔVØ×Ñœ%Ÿ,™,¨¯©Ð2CÐEUÔVØ×Ñœ%Ÿ,™,¨¯©Ð2CÐEUÖVr   c                óö   a a€ . oVV 3R lpS P                  \        RV4       \        P                  ! 4       pS P	                  \        P
                  VP                  RR4       S P                  R/ 3.S4       R# )zC
L{ident.ProcServerMixin.lookup} uses the Linux TCP process table.
c                 óR   <€ SP                  W34       \        SP                  4      # )zC
Mock for the open call to prevent actually opening /proc/net/tcp.
)r   r   Ú
sampleFile)ÚargsÚkwargsÚ
open_callsr   s   *,€€r   Úmocked_openÚ8ProcMixinTests.testLookupProcNetTcp.<locals>.mocked_openÈ   s$   ø€ ð ×Ñ˜t˜nÔ-Ü˜DŸO™OÓ,Ð,r   ÚopenNr•   r{   )z/proc/net/tcp)ÚpatchÚbuiltinsr   rn   r—   r!   rD   rV   )r   r    rY   rŸ   s   f  @r   ÚtestLookupProcNetTcpÚ#ProcMixinTests.testLookupProcNetTcpÂ   sf   ù€ ð ˆ
ö	-ð 	�
‰
”8˜V [Ô1ä×!Ò!Ó#ˆØ×Ñœ%Ÿ,™,¨¯©Ð2CÐEUÔVØ×ÑÐ-¨rÐ2Ð3°ZÖ@r   rF   N)r3   r4   r5   r6   rp   Ú_addr2r   rœ   rr   rv   r€   r�   r˜   r¥   r8   r9   r:   s   @r   rk   rk   ˜   sM   ø‡ � ó
 
“ð	€Dð	6Ø8<õ	=ð ò
IòPò
ò(òW÷Að Ar   rk   )r7   r¤   ÚstructÚior   Útwisted.internetr   r   Útwisted.internet.testingr   Útwisted.protocolsr   Útwisted.pythonr   Útwisted.trialr   ÚTestCaser
   ÚIdentServerr=   rI   ÚRuntimeErrorrN   rP   Úpackrp   r§   rk   rF   r   r   Ú<module>r³      s¾   ðñ
ó Û Ý ç )Ý 4Ý #Ý "Ý "ô77�x×(Ñ(ô 77ôt �e×'Ñ'ô  ô
#˜5×,Ñ,ô #ô
	�<ô 	ô1A˜×)Ñ)ô 1Aðh 
‡;‚;ˆt�QÓ˜Õ Ô'Ø€FØ�Fà€FØ€Fô;A�X×&Ñ&ö ;Ar   