§
    ÉtºfÍ#  ã                   ó
  — d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZ dZ ee	j        ¦  «         G d„ d¦  «        ¦   «         Z G d	„ d
ej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )é    )Úimplementer)Údefer)Úunittest)ÚjidÚsaslÚsasl_mechanismsÚ	xmlstream)Údomishú urn:ietf:params:xml:ns:xmpp-saslc                   ó0   — e Zd ZdZdZdZdZd„ Zd„ Zd„ Z	dS )ÚDummySASLMechanisma¤  
    Dummy SASL mechanism.

    This just returns the initialResponse passed on creation, stores any
    challenges and replies with the value of C{response}.

    @ivar challenge: Last received challenge.
    @type challenge: C{unicode}.
    @ivar initialResponse: Initial response to be returned when requested
                           via C{getInitialResponse} or L{None}.
    @type initialResponse: C{unicode}
    NÚDUMMYó    c                 ó   — || _         d S ©N©ÚinitialResponse)Úselfr   s     úa/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/words/test/test_jabbersasl.pyÚ__init__zDummySASLMechanism.__init__"   s   € Ø.ˆÔÐÐr   c                 ó   — | j         S r   r   ©r   s    r   ÚgetInitialResponsez%DummySASLMechanism.getInitialResponse%   s   € ØÔ#Ð#r   c                 ó   — || _         | j        S r   )Ú	challengeÚresponse)r   r   s     r   ÚgetResponsezDummySASLMechanism.getResponse(   s   € Ø"ˆŒØŒ}Ðr   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Únamer   r   r   r   © r   r   r   r      s\   € € € € € ðð ð €IØ€DØ€Hð/ð /ð /ð$ð $ð $ðð ð ð ð r   r   c                   ó   — e Zd ZdZdZd„ ZdS )ÚDummySASLInitiatingInitializerac  
    Dummy SASL Initializer for initiating entities.

    This hardwires the SASL mechanism to L{DummySASLMechanism}, that is
    instantiated with the value of C{initialResponse}.

    @ivar initialResponse: The initial response to be returned by the
                           dummy SASL mechanism or L{None}.
    @type initialResponse: C{unicode}.
    Nc                 ó8   — t          | j        ¦  «        | _        d S r   )r   r   Ú	mechanismr   s    r   ÚsetMechanismz+DummySASLInitiatingInitializer.setMechanism;   s   € Ý+¨DÔ,@ÑAÔAˆŒˆˆr   )r   r   r    r!   r   r(   r#   r   r   r%   r%   -   s9   € € € € € ð	ð 	ð €OðBð Bð Bð Bð Br   r%   c                   óT   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ ZdS )ÚSASLInitiatingInitializerTestsz5
    Tests for L{sasl.SASLInitiatingInitializer}
    c                 óD  — g | _         t          j        ¦   «         | _        t          j        | j        ¦  «        | _        | j         j        | j        _        | j                             ¦   «          | j                             d¦  «         t          | j        ¦  «        | _
        d S )Ns�   <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='example.com' id='12345' version='1.0'>)Úoutputr	   ÚAuthenticatorÚauthenticatorÚ	XmlStreamÚappendÚsendÚconnectionMadeÚdataReceivedr%   Úinitr   s    r   ÚsetUpz$SASLInitiatingInitializerTests.setUpD   sˆ   € ØˆŒå&Ô4Ñ6Ô6ˆÔÝ"Ô,¨TÔ-?Ñ@Ô@ˆŒØ"œkÔ0ˆŒÔØŒ×%Ò%Ñ'Ô'Ð'ØŒ×#Ò#ð<ñ	
ô 	
ð 	
õ
 3°4´>ÑBÔBˆŒ	ˆ	ˆ	r   c                 ót  ‡ — t          j        d¦  «        }|                     d¦  «         t          j        ¦   «         ‰ j        _        ‰ j                             |¦  «         ‰                      ‰ j        j        t          j
        ¦  «         ‰ j        j                             ˆ fd„¦  «         ‰ j        j        S )zL
        Test that the SASL error condition is correctly extracted.
        )r   Úfailureúnot-authorizedc                 ó:   •— ‰                      d| j        ¦  «        S )Nr8   )ÚassertEqualÚ	condition)Úer   s    €r   ú<lambda>z?SASLInitiatingInitializerTests.test_onFailure.<locals>.<lambda>\   s   ø€ �d×&Ò&Ð'7¸¼ÑEÔE€ r   )r
   ÚElementÚ
addElementr   ÚDeferredr4   Ú	_deferredÚ	onFailureÚassertFailurer   ÚSASLAuthErrorÚaddCallback)r   r7   s   ` r   Útest_onFailurez-SASLInitiatingInitializerTests.test_onFailureR   s¦   ø€ õ ”.Ð!PÑQÔQˆØ×ÒÐ+Ñ,Ô,Ð,Ý#œnÑ.Ô.ˆŒ	ÔØŒ	×Ò˜GÑ$Ô$Ð$Ø×Ò˜4œ9Ô.µÔ0BÑCÔCÐCØŒ	Ô×'Ò'ØEÐEÐEÐEñ	
ô 	
ð 	
ð ŒyÔ"Ð"r   c                 ó^  — d| j         _        | j                              ¦   «          | j        d         }|                      t
          |j        ¦  «         |                      d|j        ¦  «         |                      d|d         ¦  «         |                      dt          |¦  «        ¦  «         dS )zH
        Test starting authentication with an initial response.
        s   dummyr   Úauthr   r'   zZHVtbXk=N)	r4   r   Ústartr,   r:   ÚNS_XMPP_SASLÚurir"   Ústr©r   rH   s     r   Útest_sendAuthInitialResponsez;SASLInitiatingInitializerTests.test_sendAuthInitialResponse`   s˜   € ð %-ˆŒ	Ô!ØŒ	�ŠÑÔÐØŒ{˜1Œ~ˆØ×Ò� t¤xÑ0Ô0Ð0Ø×Ò˜ ¤Ñ+Ô+Ð+Ø×Ò˜ $ {Ô"3Ñ4Ô4Ð4Ø×Ò˜¥S¨¡Y¤YÑ/Ô/Ð/Ð/Ð/r   c                 ó°   — d| j         _        | j                              ¦   «          | j        d         }|                      dt          |¦  «        ¦  «         dS )zK
        Test starting authentication without an initial response.
        Nr   Ú ©r4   r   rI   r,   r:   rL   rM   s     r   Útest_sendAuthNoInitialResponsez=SASLInitiatingInitializerTests.test_sendAuthNoInitialResponsel   sM   € ð %)ˆŒ	Ô!ØŒ	�ŠÑÔÐØŒ{˜1Œ~ˆØ×Ò˜�S ™YœYÑ'Ô'Ð'Ð'Ð'r   c                 ó°   — d| j         _        | j                              ¦   «          | j        d         }|                      dt          |¦  «        ¦  «         dS )zS
        Test starting authentication where the initial response is empty.
        r   r   ú=NrQ   rM   s     r   Ú!test_sendAuthEmptyInitialResponsez@SASLInitiatingInitializerTests.test_sendAuthEmptyInitialResponseu   sM   € ð %(ˆŒ	Ô!ØŒ	�ŠÑÔÐØŒ{˜1Œ~ˆØ×Ò˜�c $™iœiÑ(Ô(Ð(Ð(Ð(r   c                 óJ  — | j                              ¦   «         }t          j        t          df¦  «        }|                     d¦  «         | j                              |¦  «         |                      d| j         j        j	        ¦  «         | j          
                    d¦  «         |S )z5
        Test receiving a challenge message.
        r   ÚbXkgY2hhbGxlbmdls   my challengeN)r4   rI   r
   r>   rJ   Ú
addContentÚonChallenger:   r'   r   Ú	onSuccess©r   Údr   s      r   Útest_onChallengez/SASLInitiatingInitializerTests.test_onChallenge~   s�   € ð ŒI�OŠOÑÔˆÝ”N¥L°+Ð#>Ñ?Ô?ˆ	Ø×ÒÐ/Ñ0Ô0Ð0ØŒ	×Ò˜iÑ(Ô(Ð(Ø×Ò˜¨$¬)Ô*=Ô*GÑHÔHÐHØŒ	×Ò˜DÑ!Ô!Ð!Øˆr   c                 ó‚  — | j                              ¦   «         }t          j        t          df¦  «        }|                     d¦  «         d| j         j        _        | j                              |¦  «         | j	        d         }|  
                    dt          |¦  «        ¦  «         | j                              d¦  «         |S )zS
        A non-empty response gets encoded and included as character data.
        r   rW   s   responseé   zcmVzcG9uc2U=N)r4   rI   r
   r>   rJ   rX   r'   r   rY   r,   r:   rL   rZ   )r   r\   r   r   s       r   Útest_onChallengeResponsez7SASLInitiatingInitializerTests.test_onChallengeResponseŠ   s£   € ð ŒI�OŠOÑÔˆÝ”N¥L°+Ð#>Ñ?Ô?ˆ	Ø×ÒÐ/Ñ0Ô0Ð0Ø'2ˆŒ	ÔÔ$ØŒ	×Ò˜iÑ(Ô(Ð(Ø”;˜q”>ˆØ×Ò˜­¨X©¬Ñ7Ô7Ð7ØŒ	×Ò˜DÑ!Ô!Ð!Øˆr   c                 ó   — | j                              ¦   «         }t          j        t          df¦  «        }| j                              |¦  «         |                      d| j         j        j        ¦  «         | j          	                    d¦  «         |S )z<
        Test receiving an empty challenge message.
        r   r   N)
r4   rI   r
   r>   rJ   rY   r:   r'   r   rZ   r[   s      r   Útest_onChallengeEmptyz4SASLInitiatingInitializerTests.test_onChallengeEmpty˜   sx   € ð ŒI�OŠOÑÔˆÝ”N¥L°+Ð#>Ñ?Ô?ˆ	ØŒ	×Ò˜iÑ(Ô(Ð(Ø×Ò˜˜dœiÔ1Ô;Ñ<Ô<Ð<ØŒ	×Ò˜DÑ!Ô!Ð!Øˆr   c                 ó  — | j                              ¦   «         }t          j        t          df¦  «        }|                     d¦  «         | j                              |¦  «         |                      |t          j	        ¦  «         |S )zJ
        Test receiving a challenge message with illegal padding.
        r   zbXkg=Y2hhbGxlbmdl©
r4   rI   r
   r>   rJ   rX   rY   rC   r   ÚSASLIncorrectEncodingErrorr[   s      r   Útest_onChallengeIllegalPaddingz=SASLInitiatingInitializerTests.test_onChallengeIllegalPadding£   ór   € ð ŒI�OŠOÑÔˆÝ”N¥L°+Ð#>Ñ?Ô?ˆ	Ø×ÒÐ0Ñ1Ô1Ð1ØŒ	×Ò˜iÑ(Ô(Ð(Ø×Ò˜1�dÔ=Ñ>Ô>Ð>Øˆr   c                 ó  — | j                              ¦   «         }t          j        t          df¦  «        }|                     d¦  «         | j                              |¦  «         |                      |t          j	        ¦  «         |S )zM
        Test receiving a challenge message with illegal characters.
        r   zbXkg*Y2hhbGxlbmdlrd   r[   s      r   Ú!test_onChallengeIllegalCharactersz@SASLInitiatingInitializerTests.test_onChallengeIllegalCharacters®   rg   r   c                 ó  — | j                              ¦   «         }t          j        t          df¦  «        }|                     d¦  «         | j                              |¦  «         |                      |t          j	        ¦  «         |S )z?
        Test receiving a malformed challenge message.
        r   Úard   r[   s      r   Útest_onChallengeMalformedz8SASLInitiatingInitializerTests.test_onChallengeMalformed¹   sq   € ð ŒI�OŠOÑÔˆÝ”N¥L°+Ð#>Ñ?Ô?ˆ	Ø×Ò˜SÑ!Ô!Ð!ØŒ	×Ò˜iÑ(Ô(Ð(Ø×Ò˜1�dÔ=Ñ>Ô>Ð>Øˆr   N)r   r   r    r!   r5   rF   rN   rR   rU   r]   r`   rb   rf   ri   rl   r#   r   r   r*   r*   ?   sÆ   € € € € € ðð ðCð Cð Cð#ð #ð #ð
0ð 
0ð 
0ð(ð (ð (ð)ð )ð )ð
ð 
ð 
ðð ð ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r   r*   c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
Ú*SASLInitiatingInitializerSetMechanismTestszB
    Test for L{sasl.SASLInitiatingInitializer.setMechanism}.
    c                 óN  — g | _         t          j        ¦   «         | _        t          j        | j        ¦  «        | _        | j         j        | j        _        | j                             ¦   «          | j                             d¦  «         t          j
        | j        ¦  «        | _        d S )Nz�<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='example.com' id='12345' version='1.0'>)r,   r	   r-   r.   r/   r0   r1   r2   r3   r   ÚSASLInitiatingInitializerr4   r   s    r   r5   z0SASLInitiatingInitializerSetMechanismTests.setUpÊ   s‹   € ØˆŒå&Ô4Ñ6Ô6ˆÔÝ"Ô,¨TÔ-?Ñ@Ô@ˆŒØ"œkÔ0ˆŒÔØŒ×%Ò%Ñ'Ô'Ð'ØŒ×#Ò#ð;ñ	
ô 	
ð 	
õ Ô2°4´>ÑBÔBˆŒ	ˆ	ˆ	r   c                 óð   — t          j        t          df¦  «        }|                     d|¬¦  «         || j        j        |j        |j        f<   | j         	                    ¦   «          | j        j
        j        S )zX
        Set up the XML Stream to have a SASL feature with the given mechanism.
        Ú
mechanismsr'   )Úcontent)r
   r>   rJ   r?   r	   ÚfeaturesrK   r"   r4   r(   r'   )r   r"   Úfeatures      r   Ú_setMechanismz8SASLInitiatingInitializerSetMechanismTests._setMechanismÙ   sk   € õ ”.¥,°Ð!=Ñ>Ô>ˆØ×Ò˜;°ÐÑ5Ô5Ð5Ø?FˆŒÔ ¤¨g¬lÐ ;Ñ<àŒ	×ÒÑ Ô Ð ØŒyÔ"Ô'Ð'r   c                 ó°   — t          j        d¦  «        | j        _         d| j        _        d}|                      ||                      |¦  «        ¦  «         dS )zI
        Test setting ANONYMOUS as the authentication mechanism.
        úexample.comNÚ	ANONYMOUS©r   ÚJIDr.   Úpasswordr:   rv   ©r   r"   s     r   Útest_anonymousz9SASLInitiatingInitializerSetMechanismTests.test_anonymousä   sS   € õ "%¤¨Ñ!7Ô!7ˆÔÔØ&*ˆÔÔ#Øˆà×Ò˜˜t×1Ò1°$Ñ7Ô7Ñ8Ô8Ð8Ð8Ð8r   c                 ó°   — t          j        d¦  «        | j        _         d| j        _        d}|                      ||                      |¦  «        ¦  «         dS )zE
        Test setting PLAIN as the authentication mechanism.
        útest@example.comÚsecretÚPLAINNrz   r}   s     r   Ú
test_plainz5SASLInitiatingInitializerSetMechanismTests.test_plainî   sT   € õ "%¤Ð);Ñ!<Ô!<ˆÔÔØ&.ˆÔÔ#Øˆà×Ò˜˜t×1Ò1°$Ñ7Ô7Ñ8Ô8Ð8Ð8Ð8r   c                 ó°   — t          j        d¦  «        | j        _         d| j        _        d}|                      ||                      |¦  «        ¦  «         dS )zJ
        Test setting DIGEST-MD5 as the authentication mechanism.
        r€   r�   z
DIGEST-MD5Nrz   r}   s     r   Útest_digestz6SASLInitiatingInitializerSetMechanismTests.test_digestø   sT   € õ "%¤Ð);Ñ!<Ô!<ˆÔÔØ&.ˆÔÔ#Øˆà×Ò˜˜t×1Ò1°$Ñ7Ô7Ñ8Ô8Ð8Ð8Ð8r   c                 ó¦   — t          j        d¦  «        | j        _         d| j        _        |                      t
          j        | j        d¦  «         dS )zK
        Test using an unacceptable SASL authentication mechanism.
        r€   r�   ÚSOMETHING_UNACCEPTABLEN©r   r{   r.   r|   ÚassertRaisesr   ÚSASLNoAcceptableMechanismrv   r   s    r   Útest_notAcceptablez=SASLInitiatingInitializerSetMechanismTests.test_notAcceptable  sU   € õ
 "%¤Ð);Ñ!<Ô!<ˆÔÔØ&.ˆÔÔ#à×ÒÝÔ*¨DÔ,>Ð@Xñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó¦   — t          j        d¦  «        | j        _         d| j        _        |                      t
          j        | j        d¦  «         dS )zW
        Test using an unacceptable SASL authentication mechanism with no JID.
        rx   r�   r‡   Nrˆ   r   s    r   Útest_notAcceptableWithoutUserzHSASLInitiatingInitializerSetMechanismTests.test_notAcceptableWithoutUser  sT   € õ "%¤¨Ñ!7Ô!7ˆÔÔØ&.ˆÔÔ#à×ÒÝÔ*¨DÔ,>Ð@Xñ	
ô 	
ð 	
ð 	
ð 	
r   N)r   r   r    r!   r5   rv   r~   rƒ   r…   r‹   r�   r#   r   r   rn   rn   Å   sŠ   € € € € € ðð ðCð Cð Cð	(ð 	(ð 	(ð9ð 9ð 9ð9ð 9ð 9ð9ð 9ð 9ð

ð 

ð 

ð	
ð 	
ð 	
ð 	
ð 	
r   rn   N)Úzope.interfacer   Útwisted.internetr   Útwisted.trialr   Útwisted.words.protocols.jabberr   r   r   r	   Útwisted.words.xishr
   rJ   ÚISASLMechanismr   rp   r%   ÚTestCaser*   rn   r#   r   r   ú<module>r•      sf  ðð
 'Ð &Ð &Ð &Ð &Ð &à "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "Ø PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ %Ð %Ð %Ð %Ð %Ð %à1€ð €ˆ_Ô+Ñ,Ô,ðð ð ð ð ñ ô ñ -Ô,ðð:Bð Bð Bð Bð B TÔ%Cñ Bô Bð Bð$Cð Cð Cð Cð C XÔ%6ñ Cô Cð CðLR
ð R
ð R
ð R
ð R
°Ô1Bñ R
ô R
ð R
ð R
ð R
r   