ó
    ×›‘h£@  ã                   óÔ  • S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	J
r
JrJr  SSKJr  SSKJr   SS	KJr  S
rSrSrSrS\-  rSrS\-  r " S S\R4                  5      r " S S5      r " S S\\R4                  5      r " S S\\R4                  5      r " S S\\R4                  5      r " S S\R4                  5      r  " S S \R4                  5      r!g! \ a    SrSr Nªf = f)!z4
Tests for L{twisted.words.protocols.jabber.client}
é    )Úsha1)ÚskipIf)Údefer)Úunittest)ÚclientÚerrorÚjidÚ	xmlstream)ÚSASLInitiatingInitializer)Úutility)Ússl)FÚ N)TzSSL not availablez//iq[@type="get"]/query[@xmlns="jabber:iq:auth"]z//iq[@type="set"]/query[@xmlns="jabber:iq:auth"]z urn:ietf:params:xml:ns:xmpp-bindz"/iq[@type="set"]/bind[@xmlns="%s"]z#urn:ietf:params:xml:ns:xmpp-sessionz%/iq[@type="set"]/session[@xmlns="%s"]c                   ó&   • \ rS rSrS rS rS rSrg)ÚCheckVersionInitializerTestsé"   c                 ó�   • [         R                  " 5       n[         R                  " U5      n[        R                  " U5      U l        g ©N)r
   ÚAuthenticatorÚ	XmlStreamr   ÚCheckVersionInitializerÚinit)ÚselfÚaÚxss      ÚhC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/words/test/test_jabberclient.pyÚsetUpÚ"CheckVersionInitializerTests.setUp#   s2   € Ü×#Ò#Ó%ˆÜ× Ò  Ó#ˆÜ×2Ò2°2Ó6ˆ�	ó    c                 ón   • SU R                   R                  l        U R                   R                  5         g)z#
Test supported version number 1.0
)é   r   N)r   r
   ÚversionÚ
initialize©r   s    r   ÚtestSupportedÚ*CheckVersionInitializerTests.testSupported(   s&   € ð '-ˆ�	‰	×ÑÔ#Ø�	‰	×ÑÕr   c                 óÚ   • SU R                   R                  l        U R                  [        R
                  U R                   R                  5      nU R                  SUR                  5        g)z;
Test unsupported version number 0.0, and check exception.
)r   r   zunsupported-versionN)	r   r
   r!   ÚassertRaisesr   ÚStreamErrorr"   ÚassertEqualÚ	condition)r   Úexcs     r   ÚtestNotSupportedÚ-CheckVersionInitializerTests.testNotSupported/   sM   € ð '-ˆ�	‰	×ÑÔ#Ø×Ñ¤× 1Ñ 1°4·9±9×3GÑ3GÓHˆØ×ÑÐ.°·±Õ>r   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r$   r,   Ú__static_attributes__© r   r   r   r   "   s   † ò7ò
õ?r   r   c                   ó$   • \ rS rSrSrS rS rSrg)ÚInitiatingInitializerHarnessé8   aÈ  
Testing harness for interacting with XML stream initializers.

This sets up an L{utility.XmlPipe} to create a communication channel between
the initializer and the stubbed receiving entity. It features a sink and
source side that both act similarly to a real L{xmlstream.XmlStream}. The
sink is augmented with an authenticator to which initializers can be added.

The harness also provides some utility methods to work with event observers
and deferreds.
c                 óè   • / U l         [        R                  " 5       U l        U R                  R                  U l        [
        R                  " S5      U l        U R                  U R
                  l        g )Nzexample.org)Úoutputr   ÚXmlPipeÚpipeÚsinkr
   ÚConnectAuthenticatorÚauthenticatorr#   s    r   r   Ú"InitiatingInitializerHarness.setUpE   sK   € ØˆŒÜ—O’OÓ%ˆŒ	ØŸ™Ÿ™ˆŒÜ&×;Ò;¸MÓJˆÔØ'+×'9Ñ'9ˆ�‰Õ$r   c                 ó°   • [         R                  " 5       nUR                  U5        U R                  R                  R                  XR                  5        U$ )a±  
Observe an output event, returning a deferred.

The returned deferred will be fired when the given event has been
observed on the source end of the L{XmlPipe} tied to the protocol
under test. The handler is added as the first callback.

@param event: The event to be observed. See
    L{utility.EventDispatcher.addOnetimeObserver}.
@param handler: The handler to be called with the observed event object.
@rtype: L{defer.Deferred}.
)r   ÚDeferredÚaddCallbackr;   ÚsourceÚaddOnetimeObserverÚcallback)r   ÚeventÚhandlerÚds       r   ÚwaitForÚ$InitiatingInitializerHarness.waitForL   s=   € ô �NŠNÓˆØ	�‰�gÔØ�	‰	×Ñ×+Ñ+¨E·:±:Ô>Øˆr   )r>   r9   r;   r
   N)r/   r0   r1   r2   Ú__doc__r   rI   r3   r4   r   r   r6   r6   8   s   † ñ
ò:õr   r6   c                   óD   ^ • \ rS rSrSrU 4S jrS rS rS rS r	Sr
U =r$ )	ÚIQAuthInitializerTestsé_   z(
Tests for L{client.IQAuthInitializer}.
c                 óØ   >• [         TU ]  5         [        R                  " U R                  5      U l        [        R                  " S5      U R                  l        SU R                  l	        g )Núuser@example.com/resourceÚsecret)
Úsuperr   r   ÚIQAuthInitializerr
   r   r	   ÚJIDr>   Úpassword©r   Ú	__class__s    €r   r   ÚIQAuthInitializerTests.setUpd   sH   ø€ Ü‰‰ŒÜ×,Ò,¨T¯^©^Ó<ˆŒ	Ü!$§¢Ð)DÓ!Eˆ×ÑÔØ&.ˆ×ÑÕ#r   c                 ó®   ^ ^• UU 4S jnU 4S jmT R                  [        U5      nT R                  R                  5       n[        R
                  " X#/5      $ )zÀ
Test plain-text authentication.

Act as a server supporting plain-text authentication and expect the
C{password} field to be filled with the password. Then act as if
authentication succeeds.
c                 óp  >• [         R                  " U S5      nUR                  S5        UR                  R                  S5        UR                  R                  S5        UR                  R                  S5        TR	                  [
        T5      nTR                  R                  R                  U5        U$ ©z”
Called when the initializer sent a query for authentication methods.

The response informs the client that plain-text authentication
is supported.
Úresult©zjabber:iq:authÚqueryÚusernamerU   Úresource©	r
   Ú
toResponseÚ
addElementr^   rI   ÚIQ_AUTH_SETr;   rC   Úsend©ÚiqÚresponserH   Ú	onAuthSetr   s      €€r   Ú	onAuthGetÚ7IQAuthInitializerTests.testPlainText.<locals>.onAuthGets   ó�   ø€ ô !×+Ò+¨B°Ó9ˆHØ×ÑÐ ;Ô<Ø�N‰N×%Ñ% jÔ1Ø�N‰N×%Ñ% jÔ1Ø�N‰N×%Ñ% jÔ1ð —‘œ[¨)Ó4ˆAð �I‰I×Ñ×!Ñ! (Ô+àˆHr   c                 ó˜  >• TR                  S[        U R                  R                  5      5        TR                  S[        U R                  R                  5      5        TR                  S[        U R                  R
                  5      5        [        R                  " U S5      nTR                  R                  R                  U5        g)ú—
Called when the initializer sent the authentication request.

The server checks the credentials and responds with an empty result
signalling success.
ÚuserrQ   r`   r\   N)r)   Ústrr^   r_   rU   r`   r
   rb   r;   rC   re   ©rg   rh   r   s     €r   ri   Ú7IQAuthInitializerTests.testPlainText.<locals>.onAuthSetŠ   sŽ   ø€ ð ×Ñ˜V¤S¨¯©×):Ñ):Ó%;Ô<Ø×Ñ˜X¤s¨2¯8©8×+<Ñ+<Ó'=Ô>Ø×Ñ˜Z¬¨R¯X©X×->Ñ->Ó)?Ô@ô !×+Ò+¨B°Ó9ˆHØ�I‰I×Ñ×!Ñ! (Õ+r   )rI   ÚIQ_AUTH_GETr   r"   r   ÚgatherResults©r   rj   Úd1Úd2ri   s   `   @r   ÚtestPlainTextÚ$IQAuthInitializerTests.testPlainTextj   sF   ù€ ö	õ.	,ð  �\‰\œ+ yÓ1ˆð �Y‰Y×!Ñ!Ó#ˆÜ×"Ò" B 8Ó,Ð,r   c                 óÐ   ^ ^• UU 4S jnU 4S jmST R                   l        T R                  [        U5      nT R                  R                  5       n[        R                  " X#/5      $ )zò
Test digest authentication.

Act as a server supporting digest authentication and expect the
C{digest} field to be filled with a sha1 digest of the concatenated
stream session identifier and password. Then act as if authentication
succeeds.
c                 óp  >• [         R                  " U S5      nUR                  S5        UR                  R                  S5        UR                  R                  S5        UR                  R                  S5        TR	                  [
        T5      nTR                  R                  R                  U5        U$ )z�
Called when the initializer sent a query for authentication methods.

The response informs the client that digest authentication is
supported.
r\   r]   r_   Údigestr`   ra   rf   s      €€r   rj   Ú4IQAuthInitializerTests.testDigest.<locals>.onAuthGetª   s�   ø€ ô !×+Ò+¨B°Ó9ˆHØ×ÑÐ ;Ô<Ø�N‰N×%Ñ% jÔ1Ø�N‰N×%Ñ% hÔ/Ø�N‰N×%Ñ% jÔ1ð —‘œ[¨)Ó4ˆAð �I‰I×Ñ×!Ñ! (Ô+àˆHr   c                 óÆ  >• TR                  S[        U R                  R                  5      5        TR                  [	        S5      R                  5       [        U R                  R                  5      5        TR                  S[        U R                  R                  5      5        [        R                  " U S5      nTR                  R                  R                  U5        g)rn   ro   s   12345secretr`   r\   N)r)   rp   r^   r_   r   Ú	hexdigestr|   r`   r
   rb   r;   rC   re   rq   s     €r   ri   Ú4IQAuthInitializerTests.testDigest.<locals>.onAuthSetÁ   sš   ø€ ð ×Ñ˜V¤S¨¯©×):Ñ):Ó%;Ô<Ø×ÑœT .Ó1×;Ñ;Ó=¼sÀ2Ç8Á8Ç?Á?Ó?SÔTØ×Ñ˜Z¬¨R¯X©X×->Ñ->Ó)?Ô@ô !×+Ò+¨B°Ó9ˆHØ�I‰I×Ñ×!Ñ! (Õ+r   Ú12345)r
   ÚsidrI   rs   r   r"   r   rt   ru   s   `   @r   Ú
testDigestÚ!IQAuthInitializerTests.testDigest    sT   ù€ ö	õ.	,ð  %ˆ�‰Ôð �\‰\œ+ yÓ1ˆð �Y‰Y×!Ñ!Ó#ˆä×"Ò" B 8Ó,Ð,r   c                 óÞ   ^ • U 4S jnT R                  [        U5      nT R                  R                  5       nT R	                  U[
        R                  5        [        R                  " X#/5      $ )zD
Test initializer failure of request for fields for authentication.
c                 óš   >• [         R                  " S5      R                  U 5      nTR                  R                  R                  U5        g)zŽ
Called when the initializer sent a query for authentication methods.

The server responds that the client is not authorized to authenticate.
únot-authorizedN©r   ÚStanzaErrorrb   r;   rC   re   rq   s     €r   rj   Ú?IQAuthInitializerTests.testFailRequestFields.<locals>.onAuthGetà   s9   ø€ ô ×(Ò(Ð)9Ó:×EÑEÀbÓIˆHØ�I‰I×Ñ×!Ñ! (Õ+r   ©	rI   rs   r   r"   ÚassertFailurer   r‰   r   rt   )r   rj   rv   rw   s   `   r   ÚtestFailRequestFieldsÚ,IQAuthInitializerTests.testFailRequestFieldsÛ   sY   ø€ õ
	,ð �\‰\œ+ yÓ1ˆð �Y‰Y×!Ñ!Ó#ˆð 	×Ñ˜2œu×0Ñ0Ô1ä×"Ò" B 8Ó,Ð,r   c                 óî   ^ ^• UU 4S jnU 4S jmT R                  [        U5      nT R                  R                  5       nT R	                  U[
        R                  5        [        R                  " X#/5      $ )z+
Test initializer failure to authenticate.
c                 óp  >• [         R                  " U S5      nUR                  S5        UR                  R                  S5        UR                  R                  S5        UR                  R                  S5        TR	                  [
        T5      nTR                  R                  R                  U5        U$ r[   ra   rf   s      €€r   rj   Ú6IQAuthInitializerTests.testFailAuth.<locals>.onAuthGetù   rl   r   c                 óš   >• [         R                  " S5      R                  U 5      nTR                  R                  R                  U5        g)z’
Called when the initializer sent the authentication request.

The server checks the credentials and responds with a not-authorized
stanza error.
r‡   Nrˆ   rq   s     €r   ri   Ú6IQAuthInitializerTests.testFailAuth.<locals>.onAuthSet  s9   ø€ ô ×(Ò(Ð)9Ó:×EÑEÀbÓIˆHØ�I‰I×Ñ×!Ñ! (Õ+r   r‹   ru   s   `   @r   ÚtestFailAuthÚ#IQAuthInitializerTests.testFailAuthô   s^   ù€ ö
	õ.	,ð �\‰\œ+ yÓ1ˆð �Y‰Y×!Ñ!Ó#ˆð 	×Ñ˜2œu×0Ñ0Ô1ä×"Ò" B 8Ó,Ð,r   r.   )r/   r0   r1   r2   rK   r   rx   rƒ   r�   r”   r3   Ú__classcell__©rW   s   @r   rM   rM   _   s(   ø† ñõ/ò4-òl9-òv-÷2/-ð /-r   rM   c                   ó8   ^ • \ rS rSrSrU 4S jrS rS rSrU =r	$ )ÚBindInitializerTestsi&  z&
Tests for L{client.BindInitializer}.
c                 ó¶   >• [         TU ]  5         [        R                  " U R                  5      U l        [        R                  " S5      U R                  l        g )NrP   )	rR   r   r   ÚBindInitializerr
   r   r	   rT   r>   rV   s    €r   r   ÚBindInitializerTests.setUp+  s:   ø€ Ü‰‰ŒÜ×*Ò*¨4¯>©>Ó:ˆŒ	Ü!$§¢Ð)DÓ!Eˆ×ÑÕr   c                 óÌ   ^ • U 4S jnU 4S jnT R                  [        U5      nT R                  R                  5       nUR	                  U5        [
        R                  " X4/5      $ )z;
Set up a stream, and act as if resource binding succeeds.
c                 óà   >• [         R                  " U S5      nUR                  [        S45        UR                  R                  SSS9  TR
                  R                  R                  U5        g )Nr\   Úbindr	   úuser@example.com/other resource)Úcontent)r
   rb   rc   ÚNS_BINDrŸ   r;   rC   re   rq   s     €r   ÚonBindÚ.BindInitializerTests.testBasic.<locals>.onBind5  sX   ø€ Ü ×+Ò+¨B°Ó9ˆHØ×Ñ¤¨&Ð 1Ô2Ø�M‰M×$Ñ$ UÐ4UÐ$ÑVØ�I‰I×Ñ×!Ñ! (Õ+r   c                 óz   >• TR                  [        R                  " S5      TR                  R                  5        g )Nr    )r)   r	   rT   r>   )r\   r   s    €r   ÚcbÚ*BindInitializerTests.testBasic.<locals>.cb;  s,   ø€ Ø×ÑÜ—’Ð9Ó:¸D×<NÑ<N×<RÑ<Rõr   )rI   ÚIQ_BIND_SETr   ÚstartrB   r   rt   )r   r£   r¦   rv   rw   s   `    r   Ú	testBasicÚBindInitializerTests.testBasic0  sN   ø€ õ
	,õ	ð
 �\‰\œ+ vÓ.ˆØ�Y‰Y�_‰_ÓˆØ
�‰�rÔÜ×"Ò" B 8Ó,Ð,r   c                 óÞ   ^ • U 4S jnT R                  [        U5      nT R                  R                  5       nT R	                  U[
        R                  5        [        R                  " X#/5      $ )z8
Set up a stream, and act as if resource binding fails.
c                 óš   >• [         R                  " S5      R                  U 5      nTR                  R                  R                  U5        g )NÚconflictrˆ   rq   s     €r   r£   Ú0BindInitializerTests.testFailure.<locals>.onBindJ  s6   ø€ Ü×(Ò(¨Ó4×?Ñ?ÀÓCˆHØ�I‰I×Ñ×!Ñ! (Õ+r   )	rI   r¨   r   r©   rŒ   r   r‰   r   rt   )r   r£   rv   rw   s   `   r   ÚtestFailureÚ BindInitializerTests.testFailureE  sS   ø€ õ
	,ð �\‰\œ+ vÓ.ˆØ�Y‰Y�_‰_ÓˆØ×Ñ˜2œu×0Ñ0Ô1Ü×"Ò" B 8Ó,Ð,r   r.   )
r/   r0   r1   r2   rK   r   rª   r°   r3   r–   r—   s   @r   r™   r™   &  s   ø† ñõFò
-÷*-ð -r   r™   c                   ó8   ^ • \ rS rSrSrU 4S jrS rS rSrU =r	$ )ÚSessionInitializerTestsiT  z)
Tests for L{client.SessionInitializer}.
c                 ól   >• [         TU ]  5         [        R                  " U R                  5      U l        g r   )rR   r   r   ÚSessionInitializerr
   r   rV   s    €r   r   ÚSessionInitializerTests.setUpY  s"   ø€ Ü‰‰ŒÜ×-Ò-¨d¯n©nÓ=ˆ�	r   c                 óž   ^ • U 4S jnT R                  [        U5      nT R                  R                  5       n[        R
                  " X#/5      $ )z@
Set up a stream, and act as if session establishment succeeds.
c                 ó~   >• [         R                  " U S5      nTR                  R                  R	                  U5        g )Nr\   )r
   rb   r;   rC   re   rq   s     €r   Ú	onSessionÚ6SessionInitializerTests.testSuccess.<locals>.onSessionb  s-   ø€ Ü ×+Ò+¨B°Ó9ˆHØ�I‰I×Ñ×!Ñ! (Õ+r   )rI   ÚIQ_SESSION_SETr   r©   r   rt   ©r   r¹   rv   rw   s   `   r   ÚtestSuccessÚ#SessionInitializerTests.testSuccess]  s=   ø€ õ
	,ð �\‰\œ.¨)Ó4ˆØ�Y‰Y�_‰_ÓˆÜ×"Ò" B 8Ó,Ð,r   c                 óÞ   ^ • U 4S jnT R                  [        U5      nT R                  R                  5       nT R	                  U[
        R                  5        [        R                  " X#/5      $ )z=
Set up a stream, and act as if session establishment fails.
c                 óš   >• [         R                  " S5      R                  U 5      nTR                  R                  R                  U5        g )NÚ	forbiddenrˆ   rq   s     €r   r¹   Ú6SessionInitializerTests.testFailure.<locals>.onSessiono  s6   ø€ Ü×(Ò(¨Ó5×@Ñ@ÀÓDˆHØ�I‰I×Ñ×!Ñ! (Õ+r   )	rI   r»   r   r©   rŒ   r   r‰   r   rt   r¼   s   `   r   r°   Ú#SessionInitializerTests.testFailurej  sS   ø€ õ
	,ð �\‰\œ.¨)Ó4ˆØ�Y‰Y�_‰_ÓˆØ×Ñ˜2œu×0Ñ0Ô1Ü×"Ò" B 8Ó,Ð,r   r.   )
r/   r0   r1   r2   rK   r   r½   r°   r3   r–   r—   s   @r   r³   r³   T  s   ø† ñõ>ò-÷-ð -r   r³   c                   ó   • \ rS rSrSrS rSrg)ÚBasicAuthenticatorTestsiy  z:
Test for both BasicAuthenticator and basicClientFactory.
c                 ód  • [         R                  " S5      U l        [        R                  " U R                  S5      R                  S5      nU R                  SUR                  R                  5        U R                  U R                  UR                  R                   5        U R                  SUR                  R                  5        UR                  u  p#U R                  U[        R                  5        U R                  U[        R                  5        U R                  UR                   5        g)aÅ  
Authenticator and stream are properly constructed by the factory.

The L{xmlstream.XmlStream} protocol created by the factory has the new
L{client.BasicAuthenticator} instance in its C{authenticator}
attribute.  It is set up with C{jid} and C{password} as passed to the
factory, C{otherHost} taken from the client JID. The stream futher has
two initializers, for TLS and authentication, of which the first has
its C{required} attribute set to C{True}.
rP   rQ   Núexample.com)r	   rT   Ú
client_jidr   ÚbasicClientFactoryÚbuildProtocolr)   r>   Ú	otherHostrU   ÚinitializersÚassertIsInstancer
   ÚTLSInitiatingInitializerrS   ÚassertFalseÚrequired)r   r   ÚtlsÚauths       r   Ú
test_basicÚ"BasicAuthenticatorTests.test_basic~  sÞ   € ô Ÿ'š'Ð"=Ó>ˆŒô
 ×&Ò& t§¡¸ÓA×OÑOÐPTÓUˆð 	×Ñ˜¨×(8Ñ(8×(BÑ(BÔCØ×Ñ˜Ÿ™¨"×*:Ñ*:×*>Ñ*>Ô?Ø×Ñ˜ 2×#3Ñ#3×#<Ñ#<Ô=ð —O‘O‰	ˆà×Ñ˜c¤9×#EÑ#EÔFØ×Ñ˜d¤F×$<Ñ$<Ô=à×Ñ˜Ÿ™Õ&r   ©rÈ   N)r/   r0   r1   r2   rK   rÓ   r3   r4   r   r   rÅ   rÅ   y  s   † ñõ'r   rÅ   c                   ó4   • \ rS rSrSrS r\" \6 S 5       rSr	g)ÚXMPPAuthenticatorTestsiž  z8
Test for both XMPPAuthenticator and XMPPClientFactory.
c                 óv  • [         R                  " S5      U l        [        R                  " U R                  S5      R                  S5      nU R                  SUR                  R                  5        U R                  U R                  UR                  R                   5        U R                  SUR                  R                  5        UR                  u  p#pEnU R                  U[        R                  5        U R                  U[        5        U R                  U[        R                  5        U R                  U[        R                   5        U R#                  UR$                  5        U R#                  UR$                  5        U R#                  UR$                  5        U R'                  UR$                  5        g)zÒ
Test basic operations.

Setup an XMPPClientFactory, which sets up an XMPPAuthenticator, and let
it produce a protocol instance. Then inspect the instance variables of
the authenticator and XML stream objects.
rP   rQ   NrÇ   )r	   rT   rÈ   r   ÚXMPPClientFactoryrÊ   r)   r>   rË   rU   rÌ   rÍ   r
   rÎ   r   r›   rµ   Ú
assertTruerÐ   rÏ   )r   r   r!   rÑ   ÚsaslrŸ   Úsessions          r   rÓ   Ú!XMPPAuthenticatorTests.test_basic£  s;  € ô Ÿ'š'Ð"=Ó>ˆŒô
 ×%Ò% d§o¡o°xÓ@×NÑNÈtÓTˆð 	×Ñ˜¨×(8Ñ(8×(BÑ(BÔCØ×Ñ˜Ÿ™¨"×*:Ñ*:×*>Ñ*>Ô?Ø×Ñ˜ 2×#3Ñ#3×#<Ñ#<Ô=ð -/¯O©OÑ)ˆ�d 'à×Ñ˜c¤9×#EÑ#EÔFØ×Ñ˜dÔ$=Ô>Ø×Ñ˜d¤F×$:Ñ$:Ô;Ø×Ñ˜g¤v×'@Ñ'@ÔAà�‰˜Ÿ™Ô%Ø�‰˜Ÿ™Ô&Ø�‰˜Ÿ™Ô&Ø×Ñ˜×)Ñ)Õ*r   c                 ó¨  ^
• / m
SU
4S jjn[         R                  " S5      U l        [        R                  " 5       n[
        R                  " U R                  SUS9nU R                  [        R                  SU5        UR                  S5      nUR                  u  pVpxn	U R                  U[        R                  5        U R                  UT
S   5        g)	z7
A TLS configuration is passed to the TLS initializer.
Nc                 ó(   >• TR                  U5        g r   )Úappend)r   r   rÐ   ÚconfigurationForTLSÚconfigss       €r   r   Ú:XMPPAuthenticatorTests.test_tlsConfiguration.<locals>.initË  s   ø€ Ø�N‰NÐ.Õ/r   rP   rQ   )rá   Ú__init__r   )TN)r	   rT   rÈ   r   ÚCertificateOptionsr   rÙ   Úpatchr
   rÎ   rÊ   rÌ   rÍ   ÚassertIs)r   r   rá   Úfactoryr   r!   rÑ   rÛ   rŸ   rÜ   râ   s             @r   Útest_tlsConfigurationÚ,XMPPAuthenticatorTests.test_tlsConfigurationÄ  s²   ø€ ð
 ˆ÷	0ô Ÿ'š'Ð"=Ó>ˆŒô
 "×4Ò4Ó6ÐÜ×*Ò*Ø�O‰O˜XÐ;Nñ
ˆð 	�
‰
”9×5Ñ5°zÀ4ÔHØ×"Ñ" 4Ó(ˆð -/¯O©OÑ)ˆ�d 'à×Ñ˜c¤9×#EÑ#EÔFØ�‰Ð)¨7°1©:Õ6r   rÕ   N)
r/   r0   r1   r2   rK   rÓ   r   ÚskipWhenNoSSLré   r3   r4   r   r   r×   r×   ž  s&   † ñò+ñB ˆ]Ðñ7ó ó7r   r×   )"rK   Úhashlibr   r   r   Útwisted.internetr   Útwisted.trialÚtwisted.words.protocols.jabberr   r   r	   r
   Ú#twisted.words.protocols.jabber.saslr   Útwisted.words.xishr   r   rë   ÚImportErrorrs   rd   r¢   r¨   Ú
NS_SESSIONr»   ÚTestCaser   r6   rM   r™   r³   rÅ   r×   r4   r   r   Ú<module>rõ      sÿ   ðñõ
 Ý å "Ý "ß HÓ HÝ IÝ &ð Ý$ð
  €Mà?€Ø?€Ø
,€Ø2°WÑ<€Ø2€
Ø8¸:ÑE€ô? 8×#4Ñ#4ô ?÷,$ñ $ôND-Ð9¸8×;LÑ;Lô D-ôN+-Ð7¸×9JÑ9Jô +-ô\"-Ð:¸H×<MÑ<Mô "-ôJ"'˜h×/Ñ/ô "'ôJ@7˜X×.Ñ.õ @7øðU ó 0Ø
€CØ/‚Mð0ús   ´C Ã
C'Ã&C'