§
    Ètºf¡  ã                   óæ   — d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ  ed
¦  «        Z ed¦  «        ZererddlmZ ddlmZ  G d„ de¦  «        ZdS )z!
Tests for L{twisted.conch.tap}.
é    )ÚAnyÚTupleÚUnion)ÚStreamServerEndpointService)Úerror)ÚFilePasswordDBÚICredentialsChecker)ÚISSHPrivateKeyÚIUsernamePasswordÚUsernamePassword)ÚDeferred)ÚrequireModule)ÚTestCaseÚcryptographyztwisted.conch.unix)Útap)ÚOpenSSHFactoryc                   óz   — e Zd ZdZesdZesdZdZdd„Zdd„Z	dd	„Z
dd
„Zdd„Zdefd„Zded         fd„Zdd„ZdS )ÚMakeServiceTestsz'
    Tests for L{tap.makeService}.
    zcan't run without cryptographyz can't run on non-posix computers)s   iamusers   thisispasswordÚreturnNc                 ó  — |                       ¦   «         | _        t          | j        d¦  «        5 }|                     d                     | j        ¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   t          j        ¦   «         | _        dS )z/
        Create a file with two users.
        zwb+ó   :N)	ÚmktempÚfilenameÚopenÚwriteÚjoinÚusernamePasswordr   ÚOptionsÚoptions)ÚselfÚfs     úZ/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/conch/test/test_tap.pyÚsetUpzMakeServiceTests.setUp(   s©   € ð Ÿš™œˆŒÝ�$”- Ñ'Ô'ð 	6¨1Ø�GŠG�D—I’I˜dÔ3Ñ4Ô4Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6å”{‘}”}ˆŒˆˆs   ¯.A)Á)A-Á0A-c                 ó
  — t          j        ¦   «         }t          j        |¦  «        }|                      |t          ¦  «         |                      |j        j        d¦  «         |                      |j        t          ¦  «         dS )zÃ
        L{tap.makeService} returns a L{StreamServerEndpointService} instance
        running on TCP port 22, and the linked protocol factory is an instance
        of L{OpenSSHFactory}.
        é   N)
r   r   ÚmakeServiceÚassertIsInstancer   ÚassertEqualÚendpointÚ_portÚfactoryr   )r    ÚconfigÚservices      r"   Ú
test_basiczMakeServiceTests.test_basic1   so   € õ ”‘”ˆÝ”/ &Ñ)Ô)ˆØ×Ò˜gÕ'BÑCÔCÐCØ×Ò˜Ô)Ô/°Ñ4Ô4Ð4Ø×Ò˜gœo­~Ñ>Ô>Ð>Ð>Ð>ó    c                 ó  — d}|                       t          | j        d         d¦  «         |                       t          | j        d         d¦  «         |                      |t          | j        d         ¦  «        d|fz  ¦  «         dS )z¡
        Make sure that if the C{--auth} command-line option is not passed,
        the default checkers are (for backwards compatibility): SSH and UNIX
        é   ÚcredInterfacesz)SSH should be one of the default checkersz*UNIX should be one of the default checkersÚcredCheckersz&There should be %d checkers by defaultN)ÚassertInr
   r   r   r(   Úlen)r    ÚnumCheckerss     r"   Útest_defaultAuthsz"MakeServiceTests.test_defaultAuths=   sœ   € ð
 ˆà�ŠÝØŒLÐ)Ô*Ø7ñ	
ô 	
ð 	
ð
 	�ŠÝØŒLÐ)Ô*Ø8ñ	
ô 	
ð 	
ð
 	×ÒØÝ�”˜^Ô,Ñ-Ô-Ø4¸°~ÑEñ	
ô 	
ð 	
ð 	
ð 	
r/   c                 óª   — | j                              dd| j        z   g¦  «         |                      t	          | j         d         ¦  «        d¦  «         dS )zŽ
        The C{--auth} command-line option will add a checker to the list of
        checkers, and it should be the only auth checker
        ú--authúfile:r3   é   N©r   ÚparseOptionsr   r(   r5   ©r    s    r"   Útest_authAddedzMakeServiceTests.test_authAddedT   sQ   € ð
 	Œ×!Ò! 8¨W°t´}Ñ-DÐ"EÑFÔFÐFØ×Ò�˜Tœ\¨.Ô9Ñ:Ô:¸AÑ>Ô>Ð>Ð>Ð>r/   c                 ó®   — | j                              dd| j        z   ddg¦  «         |                      t	          | j         d         ¦  «        d¦  «         dS )zÍ
        Multiple C{--auth} command-line options will add all checkers specified
        to the list ofcheckers, and there should only be the specified auth
        checkers (no default checkers).
        r9   r:   zmemory:testuser:testpasswordr3   r1   Nr<   r>   s    r"   Útest_multipleAuthAddedz'MakeServiceTests.test_multipleAuthAdded\   sc   € ð 	Œ×!Ò!àØ˜$œ-Ñ'ØØ.ð	ñ	
ô 	
ð 	
ð 	×Ò�˜Tœ\¨.Ô9Ñ:Ô:¸AÑ>Ô>Ð>Ð>Ð>r/   c                 óB  — | j                              dd| j        z   g¦  «         | j         d         d         }|                      |t          ¦  «         t          | j        d         d¦  «        }|                      |                     |¦  «        t          j
        ¦  «        S )z×
        The checker created by the C{--auth} command-line option returns a
        L{Deferred} that fails with L{UnauthorizedLogin} when
        presented with credentials that are unknown to that checker.
        r9   r:   r3   éÿÿÿÿr   s   fake)r   r=   r   r'   r   r   r   ÚassertFailureÚrequestAvatarIdr   ÚUnauthorizedLogin)r    ÚcheckerÚinvalids      r"   Útest_authFailurez!MakeServiceTests.test_authFailurel   s’   € ð 	Œ×!Ò! 8¨W°t´}Ñ-DÐ"EÑFÔFÐFØ"&¤,¨~Ô">¸rÔ"BˆØ×Ò˜g¥~Ñ6Ô6Ð6Ý" 4Ô#8¸Ô#;¸WÑEÔEˆà×!Ò!Ø×#Ò# GÑ,Ô,­eÔ.Eñ
ô 
ð 	
r/   c                 ó4  ‡ ‡— ‰ j                              dd‰ j        z   g¦  «         ‰ j         d         d         }t          ‰ j        Ž Š|                     ‰¦  «        }dt          t          t          d         f         ddfˆˆ fd	„}| 	                    |¦  «        S )
zË
        The checker created by the C{--auth} command-line option returns a
        L{Deferred} that returns the avatar id when presented with credentials
        that are known to that checker.
        r9   r:   r3   rC   Úusername© r   Nc                 ó>   •— ‰                      | ‰j        ¦  «         d S )N)r(   rK   )rK   Úcorrectr    s    €€r"   ÚcheckSuccessz7MakeServiceTests.test_authSuccess.<locals>.checkSuccess†   s"   ø€ Ø×Ò˜X wÔ'7Ñ8Ô8Ð8Ð8Ð8r/   )
r   r=   r   r   r   rE   r   Úbytesr   ÚaddCallback)r    rG   ÚdrO   rN   s   `   @r"   Útest_authSuccessz!MakeServiceTests.test_authSuccess{   s¬   øø€ ð 	Œ×!Ò! 8¨W°t´}Ñ-DÐ"EÑFÔFÐFØ'+¤|°NÔ'CÀBÔ'GˆÝ" DÔ$9Ð:ˆØ×#Ò# GÑ,Ô,ˆð	9¥5­µ°b´	Ð)9Ô#:ð 	9¸tð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð �}Š}˜\Ñ*Ô*Ð*r/   c                 óø   — t          j        ¦   «         }t          j        |¦  «        }|j        j        }|                      t          |j                             ¦   «         ¦  «        t          t          h¦  «         dS )z³
        The L{OpenSSHFactory} built by L{tap.makeService} has a portal with
        L{ISSHPrivateKey} and L{IUsernamePassword} interfaces registered as
        checkers.
        N)r   r   r&   r+   Úportalr(   ÚsetÚcheckersÚkeysr
   r   )r    r,   r-   rU   s       r"   Útest_checkerszMakeServiceTests.test_checkers‹   sk   € õ ”‘”ˆÝ”/ &Ñ)Ô)ˆØ”Ô'ˆØ×ÒÝ�”×$Ò$Ñ&Ô&Ñ'Ô'­.Õ:KÐ)Lñ	
ô 	
ð 	
ð 	
ð 	
r/   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚskipÚunixr   r#   r.   r7   r?   rA   r   rI   r   rS   rY   rL   r/   r"   r   r      sò   € € € € € ðð ð ð 0Ø/ˆàð 2Ø1ˆà6Ðð%ð %ð %ð %ð
?ð 
?ð 
?ð 
?ð
ð 
ð 
ð 
ð.?ð ?ð ?ð ?ð?ð ?ð ?ð ?ð 
 #ð 
ð 
ð 
ð 
ð+ (¨4¤.ð +ð +ð +ð +ð 
ð 
ð 
ð 
ð 
ð 
r/   r   N)r]   Útypingr   r   r   Útwisted.application.internetr   Útwisted.credr   Útwisted.cred.checkersr   r	   Útwisted.cred.credentialsr
   r   r   Útwisted.internet.deferr   Útwisted.python.reflectr   Útwisted.trial.unittestr   r   r_   Útwisted.conchr   Ú$twisted.conch.openssh_compat.factoryr   r   rL   r/   r"   ú<module>rj      sS  ððð ð %Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à DÐ DÐ DÐ DÐ DÐ DØ Ð Ð Ð Ð Ð Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ +Ð +Ð +Ð +Ð +Ð +Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø +Ð +Ð +Ð +Ð +Ð +àˆ}˜^Ñ,Ô,€Ø€}Ð)Ñ*Ô*€ð ð D�Dð DØ!Ð!Ð!Ð!Ð!Ð!ØCÐCÐCÐCÐCÐCð{
ð {
ð {
ð {
ð {
�xñ {
ô {
ð {
ð {
ð {
r/   