ó
    ð›‘h¨£  ã                   ó  • S SK r S SKJr  \ R                  R	                  SS5      (       aÝ  S SKJrJrJr  S SKJ	r	J
r
Jr  S SKJr  S SK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JrJr  S SKJr  S SKJr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\(5      r) " S S\RT                  5      r+ " S S\RT                  5      r, " S S\RT                  5      r- " S S\RT                  5      r. " S S\RT                  5      r/gg)é    NÚUSE_TWISTEDF)ÚinlineCallbacksÚDeferredÚreturnValue)ÚsucceedÚfailÚDeferredList)Úunittest)Úutil)ÚApplicationSession)ÚSession)ÚmessageÚroleÚ
serializerÚtypesÚuriÚCloseDetails)ÚCallRequest)ÚApplicationErrorÚNotAuthorized)Ú
InvalidUriÚProtocolError)Úcreate_authenticator)ÚIAuthenticator)ÚTransportDetailsc                   ó>   • \ rS rSrS rS rS rS rS rS r	S r
S	rg
)ÚMockTransporté0   c                 óð  • SU l         Xl        [        R                  " 5       U l        0 U l        0 U l        0 U l        U R                  R                  U 5        [        R                  " 5       U l        [        R                  " 5       [        R                  " 5       S.n[        R                   " U R                  U5      nU R                  R#                  U5        [%        5       U l        [)        5       U l        g )NF)ÚbrokerÚdealer)Ú_logÚ_handlerr   ÚJsonSerializerÚ_serializerÚ_registrationsÚ_invocationsÚ_subscription_topicsÚonOpenr   ÚidÚ_my_session_idr   ÚRoleBrokerFeaturesÚRoleDealerFeaturesr   ÚWelcomeÚ	onMessager   Ú_fake_router_sessionr   Ú_transport_details)ÚselfÚhandlerÚrolesÚmsgs       ÚiC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\autobahn/wamp/test/test_wamp_protocol.pyÚ__init__ÚMockTransport.__init__2   s±   € ØˆDŒIØ#ŒMÜ)×8Ò8Ó:ˆDÔØ"$ˆDÔØ "ˆDÔà(*ˆDÔ%à�M‰M× Ñ  Ô&ä"&§'¢'£)ˆDÔä#×6Ò6Ó8ÄD×D[ÒD[ÓD]Ñ^ˆEä—/’/ $×"5Ñ"5°uÓ=ˆCØ�M‰M×#Ñ# CÔ(Ü(:Ó(<ˆDÔ%ä&6Ó&8ˆDÕ#ó    c                 ó   • U R                   $ ©N)r1   ©r2   s    r6   Útransport_detailsÚMockTransport.transport_detailsG   s   € Ø×*Ñ*Ð*r9   c                 ód   • U R                   R                  [        R                  " SU5      5        g )Nr   )r#   r/   r   ÚUnregistered)r2   Úreg_ids     r6   Údrop_registrationÚMockTransport.drop_registrationJ   s$   € Ø�M‰M×#Ñ#Ü×$Ò$ Q¨Ó/õr9   c                 óÔ  • U R                   (       a7  U R                  R                  U5      u  p#[        SR	                  U5      5        S n[        U[        R                  5      (       Ga)  UR                  R                  S5      (       aV  UR                  (       aC  [        R                  " UR                  U R                  R                  R                  5       5      nGO[!        UR                  5      S:X  a<  [        R"                  " [        R                  R$                  UR                  S5      nGOÈUR                  R                  S5      (       a  GO¦[        R"                  " [        R                  R$                  UR                  S5      nGOj[        U[        R&                  5      (       GaŸ  UR(                  S:X  a"  [        R*                  " UR                  S/S	9nGOUR(                  S
:X  a#  [        R*                  " UR                  / SQS	9nGOåUR(                  S:X  a'  [        R*                  " UR                  / SQSSS.S9nGO®UR(                  R                  S5      (       a§  U R,                  UR(                     nU R                  R                  R                  5       nX`R.                  ;   a  [1        S5      eUR                  U R.                  U'   [        R2                  " XeUR4                  UR6                  UR8                  S9nGOç[        R"                  " [        R&                  R$                  UR                  S5      nGO«[        U[        R:                  5      (       ai  UR                  U R.                  ;   aM  U R.                  UR                     n[        R*                  " XaR4                  UR6                  UR<                  S9nGO#[        U[        R>                  5      (       a€  UR                  nXpR@                  ;   a  U R@                  U   nO2U R                  R                  R                  5       nX€R@                  U'   [        RB                  " UR                  U5      nGO„[        U[        RD                  5      (       a"  [        RF                  " UR                  5      nGOC[        U[        RH                  5      (       a^  U R                  R                  R                  5       nXPR,                  UR(                  '   [        RJ                  " UR                  U5      nOÆ[        U[        RL                  5      (       a!  [        RN                  " UR                  5      nO†[        U[        R"                  5      (       ag  U R.                  UR                     n[        R"                  " [        R&                  R$                  UURP                  UR4                  UR6                  S9nU(       ad  U R                   (       a7  U R                  R                  U5      u  p#[        SR	                  U5      5        U RR                  RU                  U5        g g )Nz	Send: {0}z	com.myappr   zwamp.error.invalid_uriznoreply.zwamp.error.not_authorizedúcom.myapp.procedure1éd   ©Úargsúcom.myapp.procedure2©é   é   é   úcom.myapp.procedure3Úbaré   ©ÚfooÚbaz©rH   Úkwargszcom.myapp.myproczduplicate invocation)rH   rU   Úreceive_progresszwamp.error.no_such_procedure)rH   rU   ÚprogresszReceive: {0})+r"   r%   Ú	serializeÚprintÚformatÚ
isinstancer   ÚPublishÚtopicÚ
startswithÚacknowledgeÚ	PublishedÚrequestr0   Ú_request_id_genÚnextÚlenÚErrorÚMESSAGE_TYPEÚCallÚ	procedureÚResultr&   r'   r   Ú
InvocationrH   rU   rV   ÚYieldrW   Ú	Subscriber(   Ú
SubscribedÚUnsubscribeÚUnsubscribedÚRegisterÚ
RegisteredÚ
Unregisterr@   Úerrorr#   r/   )	r2   r5   ÚpayloadÚisbinaryÚreplyÚregistrationra   r]   Úreply_ids	            r6   ÚsendÚMockTransport.sendO   sT  € Ø�y�yØ$(×$4Ñ$4×$>Ñ$>¸sÓ$CÑ!�Ü�k×(Ñ(¨Ó1Ô2àˆEä˜#œwŸ™×/Ò/Ø—9‘9×'Ñ'¨×4Ñ4Ø——Ü '× 1Ò 1°#·+±+¸t×?XÑ?X×?hÑ?h×?mÑ?mÓ?oÓ p˜ùÜ˜Ÿ™“^ qÓ(Ü#ŸMšM¬'¯/©/×*FÑ*FÈÏÉÐUmÓn’EØ—Y‘Y×)Ñ)¨*×5Ñ5Ùä#ŸMšM¬'¯/©/×*FÑ*FÈÏÉÐUpÓq’Eä˜C¤§¡×.Ò.Ø—=‘=Ð$:Ó:Ü#ŸNšN¨3¯;©;¸c¸UÑC’EØ—]‘]Ð&<Ó<Ü#ŸNšN¨3¯;©;ºYÑG’EØ—]‘]Ð&<Ó<Ü#ŸNšN¨3¯;©;ºYÐW\ÐegÑOhÑi’Eà—]‘]×-Ñ-Ð.@×AÑAØ#'×#6Ñ#6°s·}±}Ñ#E�LØ"×7Ñ7×GÑG×LÑLÓN�GØ×"3Ñ"3Ó3Ü+Ð,BÓCÐCØ14·±�D×%Ñ% gÑ.Ü#×.Ò.ØØ ŸX™XØ"Ÿz™zØ),×)=Ñ)=ñ	’Eô $ŸMšM¬'¯,©,×*CÑ*CÀSÇ[Á[ÐRpÓq’Eä˜C¤§¡×/Ñ/Ø—;‘; $×"3Ñ"3Ó3Ø"×/Ñ/°·±Ñ<�GÜ#ŸNšN¨7¿¹È#Ï*É*Ð_b×_kÑ_kÑl�Eùä˜C¤×!2Ñ!2×3Ñ3ØŸ	™	�Ø×5Ñ5Ó5Ø#×8Ñ8¸Ñ?‘Hà#×8Ñ8×HÑH×MÑMÓO�HØ7?×-Ñ-¨eÑ4Ü×*Ò*¨3¯;©;¸ÓA’ä˜C¤×!4Ñ!4×5Ñ5Ü×,Ò,¨S¯[©[Ó9’ä˜C¤×!1Ñ!1×2Ñ2Ø#×8Ñ8×HÑH×MÑMÓO�Ø5A×#Ñ# C§M¡MÑ2Ü×*Ò*¨3¯;©;¸ÓE‘ä˜C¤×!3Ñ!3×4Ñ4Ü×,Ò,¨S¯[©[Ó9‘ä˜C¤§¡×/Ñ/ð ×+Ñ+¨C¯K©KÑ8�ÜŸšÜ—L‘L×-Ñ-ØØ—I‘IØŸ™ØŸ:™:ñ�ö Ø—9—9Ø(,×(8Ñ(8×(BÑ(BÀ5Ó(IÑ%�GÜ˜.×/Ñ/°Ó8Ô9Ø—‘×'Ñ'¨Õ.ð	 r9   c                 ó   • g©NT© r<   s    r6   ÚisOpenÚMockTransport.isOpen£   s   € Ør9   c                 ó   • g r;   r}   r<   s    r6   ÚcloseÚMockTransport.close¦   ó   € Ør9   c                 ó   • g r;   r}   r<   s    r6   ÚabortÚMockTransport.abort©   rƒ   r9   )	r0   r#   r'   r"   r+   r&   r%   r(   r1   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r7   r=   rB   ry   r~   r�   r…   Ú__static_attributes__r}   r9   r6   r   r   0   s'   † ò	9ò*	+ò	ò
R	/òh	ò	õ	r9   r   c                   ó    • \ rS rSrS rS rSrg)Ú	TestCloseé¬   c                 óP   • [        5       n[        U5        UR                  S5        g )NF)r   r   ÚonClose)r2   r3   s     r6   Útest_server_abortÚTestClose.test_server_abort­   s    € Ü(Ó*ˆGÜ˜'Ô"ð �O‰O˜EÕ"r9   c                 ó¼   • [        5       n[        U5        [        [        5       5      n[	        SSU0 5      UR
                  S'   UR                  [        5       5        g )NrK   rR   )r   r   r   Ú	Exceptionr   Ú
_call_reqsÚonLeaver   )r2   r3   Údeferreds      r6   Útest_reject_pendingÚTestClose.test_reject_pendingµ   sI   € Ü(Ó*ˆGÜ˜'Ô"ô œI›KÓ(ˆHÜ$/°°5¸(ÀBÓ$GˆG×Ñ˜qÑ!Ø�O‰OœL›NÕ+r9   r}   N)r‡   rˆ   r‰   rŠ   r‘   r˜   r‹   r}   r9   r6   r�   r�   ¬   s   † ò	#õ	,r9   r�   c                   ó    • \ rS rSrS rS rSrg)ÚTestRegisterDecoratoré¾   c                 ó¨  •  " S S[         5      nU" 5       n[        R                  " 5       Ul        UR	                  USS9  U R                  S[        UR                  R                  5      5        UR                  R                  S   nU R                  SUS   5        UR                  5       S   S   S   nU R                  SUR                  5        g )	Nc                   óD   • \ rS rSr\R
                  " S5      S 5       rSrg)Ú1TestRegisterDecorator.test_prefix.<locals>.PrefixéÂ   Úmethod_namec                 ó   • g r;   r}   r<   s    r6   Úsome_methodÚ=TestRegisterDecorator.test_prefix.<locals>.Prefix.some_methodÄ   ó   € àr9   r}   N©r‡   rˆ   r‰   rŠ   r   Úregisterr£   r‹   r}   r9   r6   ÚPrefixrŸ   Â   s   † à—’˜mÓ,ñó -ór9   r¨   zcom.example.prefix.©ÚprefixrK   r   ry   zcom.example.prefix.method_name©
r   ÚmockÚMockÚ
_transportr§   ÚassertEqualrd   Ú
mock_callsÚ	call_listrh   )r2   r¨   ÚsessionÚcallÚregs        r6   Útest_prefixÚ!TestRegisterDecorator.test_prefixÀ   s·   € ôÔ+ô ñ
 “hˆGä!%§¢£ˆGÔØ×Ñ˜WÐ-BÐÑCð ×Ñ˜Q¤ G×$6Ñ$6×$AÑ$AÓ BÔCØ×%Ñ%×0Ñ0°Ñ3ˆDØ×Ñ˜V T¨!¡WÔ-Ø—.‘.Ó" 1Ñ% aÑ(¨Ñ+ˆCØ×ÑÐ=¸s¿}¹}ÕMr9   c                 ó¨  •  " S S[         5      nU" 5       n[        R                  " 5       Ul        UR	                  USS9  U R                  S[        UR                  R                  5      5        UR                  R                  S   nU R                  SUS   5        UR                  5       S   S   S   nU R                  SUR                  5        g )	Nc                   óD   • \ rS rSr\R
                  " S5      S 5       rSrg)Ú3TestRegisterDecorator.test_auto_name.<locals>.MagicéÖ   Nc                 ó   • g r;   r}   r<   s    r6   r£   Ú?TestRegisterDecorator.test_auto_name.<locals>.Magic.some_methodØ   r¥   r9   r}   r¦   r}   r9   r6   ÚMagicr¹   Ö   s   † à—’˜dÓ#ñó $ór9   r½   zcom.example.r©   rK   r   ry   zcom.example.some_methodr«   )r2   r½   r²   r³   r´   s        r6   Útest_auto_nameÚ$TestRegisterDecorator.test_auto_nameÔ   s¶   € ôÔ*ô ñ
 “gˆGä!%§¢£ˆGÔØ×Ñ˜W¨^ÐÑ<ð ×Ñ˜Q¤ G×$6Ñ$6×$AÑ$AÓ BÔCØ×%Ñ%×0Ñ0°Ñ3ˆDØ×Ñ˜V T¨!¡WÔ-Ø—.‘.Ó" 1Ñ% aÑ(¨Ñ+ˆCØ×ÑÐ6¸¿¹ÕFr9   r}   N)r‡   rˆ   r‰   rŠ   rµ   r¾   r‹   r}   r9   r6   r›   r›   ¾   s   † ò	Nõ(	Gr9   r›   c                   ó@  • \ rS rSr\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS r\S 5       rS rSrg)ÚTestPublisheréç   c              #   ó†  #   • [        5       n[        U5        UR                  S5      v •nU R                  US 5        UR                  SSSS5      v •nU R                  US 5        UR                  SSSSSSS9v •nU R                  US 5        UR                  S[        R
                  " SS	9S
9v •nU R                  US 5        UR                  SSSSSS[        R
                  " S/ SQS9S9v •nU R                  US 5        UR                  SSSSSS[        R
                  " S/ SQSS9S9v •nU R                  US 5        g 7f)Núcom.myapp.topic1rK   rL   rM   rP   Úhello©rR   rO   F)Ú
exclude_me©Úoptions©rF   éÈ   i,  )rÇ   Úexclude©rR   rO   rÉ   T)rÇ   rÌ   Úretain)r   r   Úpublishr¯   r   ÚPublishOptions©r2   r3   Úpublications      r6   Útest_publishÚTestPublisher.test_publishé   sp  é € ä(Ó*ˆGÜ˜'Ô"à '§¡Ð0BÓ CÑCˆKØ×Ñ˜[¨$Ô/à '§¡Ð0BÀAÀqÈ!Ó LÑLˆKØ×Ñ˜[¨$Ô/à '§¡Ð0BÀAÀqÈ!ÐQSÐY` Ð aÑaˆKØ×Ñ˜[¨$Ô/à '§¡Ð0BÌE×L`ÒL`ÐlqÑLr Ð sÑsˆKØ×Ñ˜[¨$Ô/à '§¡Ð0BÀAÀqÈ!ÐQSÐY`Ôjo×j~Òj~ð  KPò  Ziñ  kj ð  !kñ  kˆKØ×Ñ˜[¨$Ô/à '§¡Ð0BÀAÀqÈ!ÐQSÐY`Ôjo×j~Òj~ð  KPò  Zið  rvñ  kw ð  !xñ  xˆKØ×Ñ˜[¨$Õ/ùs   ‚D?Ec              #   ór  #   • [        5       n[        U5        UR                  S[        R                  " SS9S9n[        R
                  " SSS9nUR                  U5      v •   Uv •  g ! [         aB  nU R                  SUR                  5        U R                  SUR                  5         S nAg S nAff = f7f)Núnoreply.fooT©r_   rÈ   Útestingúhow are you?©Úreasonr   )r   r   rÏ   r   rÐ   r   r–   r   r¯   rs   r   )r2   r3   rÒ   ÚdetailsÚes        r6   Útest_publish_outstanding_errorsÚ-TestPublisher.test_publish_outstanding_errors   s£   é € ä(Ó*ˆGÜ˜'Ô"ð
 "Ÿ/™/ØÜ×,Ò,¸Ñ>ð *ð ˆKô ×(Ò(°	À>ÑRˆGØ—/‘/ 'Ó*Ò*ð<Ø!Ó!øÜ#ó <Ø× Ñ  ¨A¯G©GÔ4Ø× Ñ  °·±×;Ñ;ûð<üs0   ‚A B7Á#A( Á'B7Á(
B4Á28B/Â*B7Â/B4Â4B7c              #   ó  ^^#   • [        5       n[        U5        [        5       mUR                  S[        R
                  " SS9S9n/ mUU4S jnUR                  U5        [        R                  " SSS9nUR                  U5        U R                  S	[        T5      5        TR                  S 5         Uv •  g ! [         aB  nU R                  SUR                  5        U R                  SUR                  5         S nAg S nAff = f7f)
NrÖ   Tr×   rÈ   c                 ó*   >• TR                  U 5        T$ r;   )Úappend)r   Úerror_dÚ
got_errorss    €€r6   ÚerrbackÚLTestPublisher.test_publish_outstanding_errors_async_errback.<locals>.errback(  s   ø€ Ø×!Ñ! $Ô'Ø�r9   rØ   rÙ   rÚ   rK   )r   r   r   rÏ   r   rÐ   Ú
addErrbackr   r–   r¯   rd   Úcallbackr   rs   r   )r2   r3   Úpublication_drå   rÜ   rÝ   rã   rä   s         @@r6   Ú-test_publish_outstanding_errors_async_errbackÚ;TestPublisher.test_publish_outstanding_errors_async_errback  sê   ùé € ä(Ó*ˆGÜ˜'Ô"Ü“jˆGð
 $ŸO™OØÜ×,Ò,¸Ñ>ð ,ð ˆMð
 ˆJöð ×$Ñ$ WÔ-ô ×(Ò(°	À>ÑRˆGØ�O‰O˜GÔ$ð
 ×Ñ˜Q¤ J£Ô0ð ×Ñ˜TÔ"ð<Ø#Ó#øÜ#ó <Ø× Ñ  ¨A¯G©GÔ4Ø× Ñ  °·±×;Ñ;ûð<üs0   „B.DÂ3B8 Â7DÂ8
DÃ8C?Ã:DÃ?DÄDc              #   óp  #   • [        5       n[        U5        UR                  S[        R                  " SS9S9v •nU R                  [        UR                  5      [        :H  5        UR                  SSSS[        R                  " SS9S9v •nU R                  [        UR                  5      [        :H  5        UR                  SSSSSS	[        R                  " SS9S
9v •nU R                  [        UR                  5      [        :H  5        UR                  S[        R                  " SSS9S9v •nU R                  [        UR                  5      [        :H  5        UR                  SSSSSS	[        R                  " S/ SQSS9S
9v •nU R                  [        UR                  5      [        :H  5        g 7f)NrÄ   Tr×   rÈ   rK   rL   rM   rP   rÅ   rÍ   F)rÇ   r_   rÊ   )rÇ   rÌ   r_   )	r   r   rÏ   r   rÐ   Ú
assertTrueÚtyper*   ÚintrÑ   s      r6   Útest_publish_acknowledgedÚ'TestPublisher.test_publish_acknowledgedA  s�  é € ä(Ó*ˆGÜ˜'Ô"à '§¡Ð0BÌE×L`ÒL`ÐmqÑLr Ð sÑsˆKØ�O‰OœD §¡Ó0´CÑ7Ô8à '§¡Ð0BÀAÀqÈ!ÔUZ×UiÒUiÐvzÑU{ Ð |Ñ|ˆKØ�O‰OœD §¡Ó0´CÑ7Ô8à '§¡Ð0BÀAÀqÈ!ÐQSÐY`Ôjo×j~Òj~ð  LPñ  kQ ð  !Rñ  RˆKØ�O‰OœD §¡Ó0´CÑ7Ô8à '§¡Ð0BÌE×L`ÒL`Ðlqð  @Dñ  ME ð  !Fñ  FˆKØ�O‰OœD §¡Ó0´CÑ7Ô8à '§¡Ð0BÀAÀqÈ!ÐQSÐY`Ôjo×j~Òj~ð  KPò  Zið  w{ñ  k| ð  !}ñ  }ˆKØ�O‰OœD §¡Ó0´CÑ7Õ8ùs   ‚F4F6c              #   óö   #   • [        5       n[        U5        [        R                  " SS9nU R	                  UR                  SUS9[        5      v •  U R	                  UR                  SUS9[        5      v •  g 7f©NTr×   zde.myapp.topic1rÈ   Úfoobar)r   r   r   rÐ   ÚassertFailurerÏ   r   ©r2   r3   rÉ   s      r6   Ú test_publish_undefined_exceptionÚ.TestPublisher.test_publish_undefined_exceptionU  si   é € ä(Ó*ˆGÜ˜'Ô"ä×*Ò*°tÑ<ˆGà×$Ñ$ W§_¡_Ð5FÐPW _Ð%XÔZjÓkÒkØ×$Ñ$ W§_¡_°XÀw _Ð%OÔQaÓbÓbùs   ‚A7A9c              #   óJ  #   • [        5       n[        U5        [        R                  " SS9nUR	                  [
        5        U R                  UR                  SUS9[
        5      v •  UR	                  [        5        U R                  UR                  SUS9[
        5      v •  g 7fró   )	r   r   r   rÐ   Údefiner   rõ   rÏ   r   rö   s      r6   Útest_publish_defined_exceptionÚ,TestPublisher.test_publish_defined_exception_  s�   é € ä(Ó*ˆGÜ˜'Ô"ä×*Ò*°tÑ<ˆGà�N‰Nœ=Ô)Ø×$Ñ$ W§_¡_Ð5FÐPW _Ð%XÔZgÓhÒhà�N‰Nœ:Ô&Ø×$Ñ$ W§_¡_°XÀw _Ð%OÔQ^Ó_Ó_ùs   ‚B!B#c              #   ó  #   • [        5       n[        U5        UR                  S5      v •nU R                  US5        UR                  SSSS5      v •nU R                  US5        UR                  SSSSSSS9v •nU R                  US5        UR                  S[        R
                  " S	S
9S9v •nU R                  US5        UR                  SSSSSS[        R
                  " S	S
9S9v •nU R                  US5        g 7f)NrE   rF   rK   rL   rM   rP   rÅ   rÆ   i'  )ÚtimeoutrÈ   rÍ   )r   r   r³   r¯   r   ÚCallOptions©r2   r3   Úress      r6   Ú	test_callÚTestPublisher.test_calll  s  é € ä(Ó*ˆGÜ˜'Ô"àŸ™Ð%;Ó<Ñ<ˆCØ×Ñ˜S #Ô&àŸ™Ð%;¸QÀÀ1ÓEÑEˆCØ×Ñ˜S #Ô&àŸ™Ð%;¸QÀÀ1È"ÐRY˜ÐZÑZˆCØ×Ñ˜S #Ô&àŸ™Ð%;ÄU×EVÒEVÐ_dÑEe˜ÐfÑfˆCØ×Ñ˜S #Ô&àŸ™Ð%;¸QÀÀ1È"ÐRYÔch×ctÒctð  ~Cñ  dD˜ð  Eñ  EˆCØ×Ñ˜S #Õ&ùs   ‚C=C?c              #   óè  #   • [        5       n[        U5        UR                  S5      v •nU R                  U[        R
                  5        U R                  UR                  S5        U R                  UR                  0 5        UR                  S5      v •nU R                  U[        R
                  5        U R                  UR                  S5        U R                  UR                  SSS.5        g 7f)NrI   rJ   rN   rO   rP   rQ   )	r   r   r³   ÚassertIsInstancer   Ú
CallResultr¯   ÚresultsÚ	kwresultsr   s      r6   Útest_call_with_complex_resultÚ+TestPublisher.test_call_with_complex_result€  sº   é € ä(Ó*ˆGÜ˜'Ô"àŸ™Ð%;Ó<Ñ<ˆCØ×!Ñ! #¤u×'7Ñ'7Ô8Ø×Ñ˜SŸ[™[¨)Ô4Ø×Ñ˜SŸ]™]¨BÔ/àŸ™Ð%;Ó<Ñ<ˆCØ×!Ñ! #¤u×'7Ñ'7Ô8Ø×Ñ˜SŸ[™[¨)Ô4Ø×Ñ˜SŸ]™]°EÀ"Ñ,EÕFùs   ‚C0C2c           	   #   óü  #   • [        5       n[        U5        S nUR                  US5      v •nU R                  [	        UR
                  5      [        :H  5        UR                  US[        R                  " SS9S9v •nU R                  [	        UR
                  5      [        :H  5        UR                  US[        R                  " SSS9S9v •nU R                  [	        UR
                  5      [        :H  5        g 7f)Nc                  ó   • [        SX5        g ©Nz	got event©rY   rT   s     r6   Úon_eventÚ.TestPublisher.test_subscribe.<locals>.on_event”  ó   € Ü�k 4Õ0r9   rÄ   Úwildcard©ÚmatchrÈ   T)r  Úget_retained)	r   r   Ú	subscriberí   rî   r*   rï   r   ÚSubscribeOptions©r2   r3   r  Úsubscriptions       r6   Útest_subscribeÚTestPublisher.test_subscribe�  só   é € ä(Ó*ˆGÜ˜'Ô"ò1ð ")×!2Ñ!2°8Ð=OÓ!PÑPˆLØ�O‰OœD §¡Ó1´SÑ8Ô9à!(×!2Ñ!2°8Ð=OÔY^×YoÒYoð  wAñ  ZBÐ!2ð  "Cñ  CˆLØ�O‰OœD §¡Ó1´SÑ8Ô9à!(×!2Ñ!2°8Ð=OÔY^×YoÒYoð  wAð  PTñ  ZUÐ!2ð  "Vñ  VˆLØ�O‰OœD §¡Ó1´SÑ8Õ9ùs   ‚C:C<c              #   ó@  ^^#   • [        5       n[        U5        [        5       m[        5       mUR                  U4S jS5      v •nUR                  U4S jS5      v •nU R	                  UR
                  UR
                  :H  5        UR                  S[        R                  " SSS9S9v •nUR                  [        R                  " UR
                  UR
                  5      5        U R	                  TR                  S5        U R	                  TR                  S5        g 7f)	Nc                  ó&   >• T R                  S5      $ ©Né*   ©rè   ©Úevent0s   €r6   Ú<lambda>Ú5TestPublisher.test_double_subscribe.<locals>.<lambda>©  ó   ø€ ˜Ÿ™¨Ô+r9   rÄ   c                  ó&   >• T R                  S5      $ ©NrR   r   ©Úevent1s   €r6   r#  r$  «  ó   ø€ ˜Ÿ™¨Ô.r9   TF©r_   rÇ   rÈ   úMissing callback)r   r   r   r  rí   r*   rÏ   r   rÐ   r/   r   ÚEventÚcalled)r2   r3   Úsubscription0Úsubscription1rÏ   r"  r)  s        @@r6   Útest_double_subscribeÚ#TestPublisher.test_double_subscribe   s÷   ùé € ä(Ó*ˆGÜ˜'Ô"ä“ZˆFÜ“ZˆFà")×"3Ñ"3Ü+Ð-?ó#Añ AˆMà")×"3Ñ"3Ü.Ð0Bó#Dñ DˆMð �O‰O˜M×,Ñ,°×0@Ñ0@Ñ@ÔAð
 $ŸO™OØ"Ü×,Ò,¸È%ÑPð ,ð ñ ˆGð ×ÑœgŸmšm¨M×,<Ñ,<¸g¿j¹jÓIÔJð �O‰O˜FŸM™MÐ+=Ô>Ø�O‰O˜FŸM™MÐ+=Õ>ùs   „DDc              #   óŠ  ^^^#   • [        5       m[        T5        U4S jnUTl        [        5       m[        5       mTR	                  U4S jS5      v •nTR	                  U4S jS5      v •nU R                  UR                  UR                  :H  5        UR                  5       v •  TR                  S[        R                  " SSS9S9v •nTR                  [        R                  " UR                  UR                  5      5        U R                  TR                  S	5        U R                  TR                  (       + S
5        g7f)zY
Make sure we correctly deal with unsubscribing one of our handlers
from the same topic.
c                 ót   >• [        U [        R                  5      (       a   e[        R                  " TU 5      $ r;   )r[   r   ro   r   r/   )r5   r3   s    €r6   r/   ÚITestPublisher.test_double_subscribe_single_unsubscribe.<locals>.onMessageÈ  s/   ø€ Ü% c¬7×+?Ñ+?×@Ñ@Ð@Ð@Ü)×3Ò3°G¸SÓAÐAr9   c                  ó&   >• T R                  S5      $ r  r   r!  s   €r6   r#  ÚHTestPublisher.test_double_subscribe_single_unsubscribe.<locals>.<lambda>Ò  r%  r9   rÄ   c                  ó&   >• T R                  S5      $ r'  r   r(  s   €r6   r#  r7  Ô  r*  r9   TFr+  rÈ   r,  úSecond callback fired.N)r   r   r/   r   r  rí   r*   ÚunsubscriberÏ   r   rÐ   r   r-  r.  )r2   r/   r/  r0  rÏ   r"  r)  r3   s        @@@r6   Ú(test_double_subscribe_single_unsubscribeÚ6TestPublisher.test_double_subscribe_single_unsubscribe¼  s  úé € ô )Ó*ˆGÜ˜'Ô"õ
Bð !*ˆGÔä“ZˆFÜ“ZˆFà")×"3Ñ"3Ü+Ð-?ó#Añ AˆMà")×"3Ñ"3Ü.Ð0Bó#Dñ DˆMð �O‰O˜M×,Ñ,°×0@Ñ0@Ñ@ÔAØ×+Ñ+Ó-Ò-ð
 $ŸO™OØ"Ü×,Ò,¸È%ÑPð ,ð ñ ˆGð ×ÑœgŸmšm¨M×,<Ñ,<¸g¿j¹jÓIÔJð �O‰O˜FŸM™MÐ+=Ô>Ø�O‰O §¡Ô-Ð/GÕHùs   …D>Ec              #   ó:  ^^^^#   • [        5       m[        T5        [        5       mUU4S jnUTl        [        5       m[        5       mTR	                  U4S jS5      v •nTR	                  U4S jS5      v •nU R                  UR                  UR                  :H  5        UR                  5       v •  UR                  5       v •  TR                  (       d   eTR                  S[        R                  " SSS9S9v •n TR                  [        R                  " UR                  UR                  5      5        U R                  S	5        U R                  TR                  (       + S
5        U R                  TR                  (       + S5        g! [         a     NOf = f7f)z[
If we subscribe twice, and unsubscribe twice, we should then get
an Unsubscribed message.
c                 ó’   >• [        U [        R                  5      (       a  TR                  U 5        [        R
                  " TU 5      $ r;   )r[   r   ro   rè   r   r/   )r5   r3   Úunsubscribed_ds    €€r6   r/   ÚITestPublisher.test_double_subscribe_double_unsubscribe.<locals>.onMessageó  s7   ø€ Ü˜c¤7×#7Ñ#7×8Ñ8Ø"×+Ñ+¨CÔ0Ü)×3Ò3°G¸SÓAÐAr9   c                  ó&   >• T R                  S5      $ r  r   r!  s   €r6   r#  ÚHTestPublisher.test_double_subscribe_double_unsubscribe.<locals>.<lambda>ý  r%  r9   rÄ   c                  ó&   >• T R                  S5      $ r'  r   r(  s   €r6   r#  rB  ÿ  r*  r9   TFr+  rÈ   zExpected ProtocolErrorzFirst callback fired.r9  N)r   r   r   r/   r  rí   r*   r:  r.  rÏ   r   rÐ   r   r-  r   r   )	r2   r/   r/  r0  rÏ   r"  r)  r3   r?  s	        @@@@r6   Ú(test_double_subscribe_double_unsubscribeÚ6TestPublisher.test_double_subscribe_double_unsubscribeç  sj  ûé € ô )Ó*ˆGÜ˜'Ô"ô &›ZˆNöBð !*ˆGÔä“ZˆFÜ“ZˆFà")×"3Ñ"3Ü+Ð-?ó#Añ AˆMà")×"3Ñ"3Ü.Ð0Bó#Dñ DˆMð �O‰O˜M×,Ñ,°×0@Ñ0@Ñ@ÔAØ×+Ñ+Ó-Ò-Ø×+Ñ+Ó-Ò-ð "×(×(Ð(Ð(ð $ŸO™OØ"Ü×,Ò,¸È%ÑPð ,ð ñ ˆGðØ×!Ñ!¤'§-¢-°×0@Ñ0@À'Ç*Á*Ó"MÔNØ—	‘	Ð2Ô3ð �O‰O §¡Ô-Ð/FÔGØ�O‰O §¡Ô-Ð/GÕHøô !ó Ùðüs,   †C6FÃ=AF ÅAFÆ
FÆFÆFÆFc              #   óÚ  ^ ^^#   • [        5       n[        U5        [        5       m[        5       mUU 4S jnUR                  U4S jS5      v •nUR                  US[        R
                  " SS95      v •nT R                  UR                  UR                  :H  5        UR                  S[        R                  " SSS9S	9v •nUR                  [        R                  " UR                  UR                  S
/S95        T R                  TR                  5        T R                  TR                  5        T R                  TR                  S
5        T R                  TR                  S5        g7f)z‚
Test various error-conditions when we try to add a second
subscription-handler (its signature must match any
existing handlers).
c                  ó¨   >• TR                  SU;   5        TR                  [        US   [        R                  5      5        TR	                  U 5        g )NÚboom)rí   r[   r   ÚEventDetailsrè   )rH   Úkwr)  r2   s     €€r6   ÚsecondÚ:TestPublisher.test_double_subscribe_errors.<locals>.second)  s>   ø€ ð —‘ ¨"¡Ô-Ø—‘¤
¨2¨f©:´u×7IÑ7IÓ JÔKØ—‘ Õ%r9   c                 ó&   >• TR                  U 5      $ r;   r   )Úargr"  s    €r6   r#  Ú<TestPublisher.test_double_subscribe_errors.<locals>.<lambda>1  s   ø€ ˜FŸO™O¨CÔ0r9   rÄ   rH  ©Údetails_argTFr+  rÈ   Úarg0rG   )rR  N)r   r   r   r  r   r  rí   r*   rÏ   rÐ   r/   r   r-  r.  r¯   Úresult)r2   r3   rK  r/  r0  rÏ   r"  r)  s   `     @@r6   Útest_double_subscribe_errorsÚ*TestPublisher.test_double_subscribe_errors  s6  úé € ô )Ó*ˆGÜ˜'Ô"ä“ZˆFÜ“ZˆFö&ð #*×"3Ñ"3Ü0Ð2Dó#Fñ FˆMà")×"3Ñ"3ØÐ*Ü×&Ò&°6Ñ:ó#ñ ˆMð
 �O‰O˜M×,Ñ,°×0@Ñ0@Ñ@ÔAð $ŸO™OØ"Ü×,Ò,¸È%ÑPð ,ð ñ ˆGð ×ÑÜ—’˜m×.Ñ.°·
±
À&ÀÑJôLð
 �O‰O˜FŸM™MÔ*Ø�O‰O˜FŸM™MÔ*Ø×Ñ˜VŸ]™]¨FÔ3Ø×Ñ˜VŸ]™]¨IÕ6ùs   …E&E+c              #   óª  ^^#   • [        5       n[        U5        [        S5      m[        5       mUU4S jnX!l        U4S jnUR                  US5      v •nUR                  S[        R                  " SSS9S9v •n[        R                  " UR                  UR                  5      nUR                  U5        U R                  TR                  5        g	7f)
z3
Ensure we handle an exception from the user code.
zwe have a problemc                 óJ   >• TU R                   :X  a  TR                  S5        g g r|   )Úvaluerè   )rÝ   r5   Úerror_instanceÚ	got_err_ds     €€r6   ÚobserverÚ?TestPublisher.test_publish_callback_exception.<locals>.observerW  s"   ø€ Ø! Q§W¡WÓ,Ø×&Ñ& tÕ,ð -r9   c                  ó   >• T er;   r}   )rY  s   €r6   rH  Ú;TestPublisher.test_publish_callback_exception.<locals>.boom\  s	   ø€ Ø$Ð$r9   rÄ   TFr+  rÈ   N)r   r   ÚRuntimeErrorr   ÚonUserErrorr  rÏ   r   rÐ   r   r-  r*   r/   rí   r.  )	r2   r3   r[  rH  ÚsubrÏ   r5   rY  rZ  s	          @@r6   Útest_publish_callback_exceptionÚ-TestPublisher.test_publish_callback_exceptionL  s½   ùé € ô
 )Ó*ˆGÜ˜'Ô"ä)Ð*=Ó>ˆNÜ ›
ˆIö-ð #+Ôõ%ð  ×)Ñ)¨$Ð0BÓCÑCˆCð $ŸO™OØ"Ü×,Ò,¸È%ÑPð ,ð ñ ˆGô —-’- §¡¨¯
©
Ó3ˆCØ×Ñ˜cÔ"ð �O‰O˜I×,Ñ,Õ-ùs   „CCc              #   óˆ   #   • [        5       n[        U5        S nUR                  US5      v •nUR                  5       v •  g 7f)Nc                  ó   • [        SX5        g r  r  rT   s     r6   r  Ú0TestPublisher.test_unsubscribe.<locals>.on_events  r  r9   rÄ   )r   r   r  r:  r  s       r6   Útest_unsubscribeÚTestPublisher.test_unsubscriben  sA   é € ä(Ó*ˆGÜ˜'Ô"ò1ð ")×!2Ñ!2°8Ð=OÓ!PÑPˆLØ×*Ñ*Ó,Ó,ùó   ‚A Ac              #   óZ  #   • [        5       n[        U5        S nUR                  US5      v •nU R                  [	        UR
                  5      [        :H  5        UR                  US[        R                  " SS9S9v •nU R                  [	        UR
                  5      [        :H  5        g 7f)Nc                  ó   • [        SX5        g ©Nzgot callr  rT   s     r6   Úon_callÚ,TestPublisher.test_register.<locals>.on_call~  ó   € Ü�j $Õ/r9   rE   rª   r  rÈ   )	r   r   r§   rí   rî   r*   rï   r   ÚRegisterOptions©r2   r3   rm  rw   s       r6   Útest_registerÚTestPublisher.test_registery  s˜   é € ä(Ó*ˆGÜ˜'Ô"ò0ð ")×!1Ñ!1°'Ð;QÓ!RÑRˆLØ�O‰OœD §¡Ó1´SÑ8Ô9à!(×!1Ñ!1°'Ð;QÔ[`×[pÒ[pÐwñ  \AÐ!1ð  "Bñ  BˆLØ�O‰OœD §¡Ó1´SÑ8Õ9ùs   ‚B)B+c              #   óˆ   #   • [        5       n[        U5        S nUR                  US5      v •nUR                  5       v •  g 7f)Nc                  ó   • [        SX5        g rl  r  rT   s     r6   rm  Ú.TestPublisher.test_unregister.<locals>.on_callŒ  ro  r9   rE   )r   r   r§   Ú
unregisterrq  s       r6   Útest_unregisterÚTestPublisher.test_unregister‡  sA   é € ä(Ó*ˆGÜ˜'Ô"ò0ð ")×!1Ñ!1°'Ð;QÓ!RÑRˆLØ×)Ñ)Ó+Ó+ùri  c                 ó`  • [         R                  R                  S:  a  g [        5       n[	        U5      nU R                  [        5       nUR                  [        R                  " SS5      5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Né   r   iÒ  z3UNREGISTERED received for non-existant registration)ÚtwistedÚversionÚmajorr   r   ÚassertRaisesr   ry   r   rr   ÚassertInÚstrÚ	exception)r2   r3   Ú	transportÚctxs       r6   Ú$test_unregister_no_such_registrationÚ2TestPublisher.test_unregister_no_such_registration’  s€   € Ü�‰×$Ñ$ rÓ)ØÜ(Ó*ˆGÜ% gÓ.ˆIà×"Ñ"¤=Ô1°SØ—‘Ü×&Ò& q¨$Ó/ô÷ 2ð �M‰MØEÜ�C—M‘MÓ"õ÷	 2Õ1ús   Á
'BÂ
B-c              #   óæ   ^#   • [        5       n[        U5      nU4S jmSTl        UR                  TS5      v •nUR	                  UR
                  5        U R                  TR                  5        g 7f)Nc                  ó   >• STl         g r|   )r.  )rH   rU   rm  s     €r6   rm  Ú2TestPublisher.test_unregister_log.<locals>.on_call¦  s
   ø€ Ø!%�•r9   FrE   )r   r   r.  r§   rB   r*   ÚassertFalse)r2   r3   rƒ  rw   rm  s       @r6   Útest_unregister_logÚ!TestPublisher.test_unregister_log¡  s^   øé € ä(Ó*ˆGÜ% gÓ.ˆIõ&à"ˆGŒNà!(×!1Ñ!1°'Ð;QÓ!RÑRˆLØ×'Ñ'¨¯©Ô8Ø×Ñ˜WŸ^™^Õ,ùs   ƒA.A1c                 óô   ^• / m " U4S jS[         5      nU" 5       n[        U5        UR                  S5        U R                  [	        T5      S5        U R                  [        TS   S   [        5      5        g )Nc                   ó,   >• \ rS rSrU 4S jrSS jrSrg)Ú7TestPublisher.test_on_disconnect_error.<locals>.AppSessi±  c                 ó@   >• TR                  UR                  U45        g r;   ©râ   rX  )r2   rÝ   r5   Úerrorss      €r6   r`  ÚCTestPublisher.test_on_disconnect_error.<locals>.AppSess.onUserError²  s   ø€ Ø—M‘M 1§7¡7¨C .Õ1r9   c                 ó   • [        S5      e)NzThis shouldn't happen)r_  )r2   rR   rO   Úquuxs       r6   ÚonDisconnectÚDTestPublisher.test_on_disconnect_error.<locals>.AppSess.onDisconnectµ  s   € ä&Ð'>Ó?Ð?r9   r}   N)Úsnark)r‡   rˆ   r‰   rŠ   r`  r–  r‹   )r’  s   €r6   ÚAppSessr�  ±  s   ø† õ2÷@r9   r™  FrK   r   )r   r   r�   r¯   rd   rí   r[   Ú	TypeError)r2   r™  Úsr’  s      @r6   Útest_on_disconnect_errorÚ&TestPublisher.test_on_disconnect_error®  sg   ø€ ØˆF÷@Ô,ô @ñ “	ˆAÜ˜!Ôð �I‰I�eÔð ×ÑœS ›[¨!Ô,Ø�O‰OœJ v¨a¡y°¡|´YÓ?Õ@r9   r}   N)r‡   rˆ   r‰   rŠ   r   rÓ   rÞ   rê   rð   r÷   rû   r  r	  r  r1  r;  rD  rT  rb  rg  rr  rx  r…  r‹  rœ  r‹   r}   r9   r6   rÁ   rÁ   ç   s‚  † à	ñ	0ó 
ð	0ð, 
ñ	<ó 
ð	<ð. 
ñ&	<ó 
ð&	<ðP 
ñ	9ó 
ð	9ð& 
ñ	có 
ð	cð 
ñ
	`ó 
ð
	`ð 
ñ	'ó 
ð	'ð& 
ñ	Gó 
ð	Gð 
ñ	:ó 
ð	:ð  
ñ	?ó 
ð	?ð6 
ñ(	Ió 
ð(	IðT 
ñ2	Ió 
ð2	Iðh 
ñ-	7ó 
ð-	7ð^ 
ñ	.ó 
ð	.ðB 
ñ	-ó 
ð	-ð 
ñ	:ó 
ð	:ð 
ñ	,ó 
ð	,ò	ð 
ñ
	-ó 
ð
	-õ	Ar9   rÁ   c                   ó´   • \ rS rSr\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       rSrg)ÚTestInvokeriÅ  c              #   ó®   #   • [        5       n[        U5        S nUR                  US5      v •  UR                  S5      v •nU R	                  US5        g 7f)Nc                  ó   • g©NrP   r}   r}   r9   r6   Úmyproc1Ú(TestInvoker.test_invoke.<locals>.myproc1Ë  ó   € Ør9   úcom.myapp.myproc1rP   )r   r   r§   r³   r¯   )r2   r3   r£  r  s       r6   Útest_invokeÚTestInvoker.test_invokeÆ  sR   é € ä(Ó*ˆGÜ˜'Ô"òð ×"Ñ" 7Ð,?Ó@Ò@àŸ™Ð%8Ó9Ñ9ˆCØ×Ñ˜S "Õ%ùs   ‚AAc              #   óì   #   • [        5       n[        U5        S nUR                  US5      v •  UR                  S5      nUR                  S5      n[	        X4/5      v •nU R                  USS/5        g 7f)Nc                  ó   • gr¢  r}   r}   r9   r6   r£  Ú.TestInvoker.test_invoke_twice.<locals>.myproc1Ø  r¥  r9   r¦  ©TrP   )r   r   r§   r³   r	   r¯   )r2   r3   r£  Úd0Úd1r  s         r6   Útest_invoke_twiceÚTestInvoker.test_invoke_twiceÓ  sr   é € ä(Ó*ˆGÜ˜'Ô"òð ×"Ñ" 7Ð,?Ó@Ò@à—‘Ð1Ó2ˆBØ—‘Ð1Ó2ˆBÜ$ b XÓ.Ñ.ˆCØ×Ñ˜S :¨zÐ":Õ;ùs   ‚A2A4c              #   ó²  ^ ^	^
^#   • [        5       n[        5       n[        U5      n[        U5      nU 4S jmUR                  m	UR                  m
U	U4S jUl        U
U4S jUl        S nUR                  US5      v •  UR                  US5      v •  UR	                  S5      nUR	                  S5      n[        Xg/5      v •nT R                  USS/5        g7f)z?
make sure each session independently generates sequential IDs
c                 ó  >• [        U[        R                  5      (       a  TR                  UR                  S5        O;[        U[        R
                  5      (       a  TR                  UR                  S5        U " U5      $ )NrK   rL   )r[   r   rp   r¯   ra   rg   )Úorigr5   r2   s     €r6   Úverify_seq_idÚCTestInvoker.test_invoke_request_id_sequences.<locals>.verify_seq_idî  sY   ø€ Ü˜c¤7×#3Ñ#3×4Ñ4Ø×$Ñ$ S§[¡[°!Õ4Ü ¤W§\¡\×2Ñ2Ø×$Ñ$ S§[¡[°!Ô4Ù˜C“yÐ r9   c                 ó   >• T" TU 5      $ r;   r}   )r5   Úorig0r´  s    €€r6   r#  Ú>TestInvoker.test_invoke_request_id_sequences.<locals>.<lambda>ö  ó   ø€ ¡m°E¸3Ô&?r9   c                 ó   >• T" TU 5      $ r;   r}   )r5   Úorig1r´  s    €€r6   r#  r¸  ÷  r¹  r9   c                  ó   • gr¢  r}   r}   r9   r6   r£  Ú=TestInvoker.test_invoke_request_id_sequences.<locals>.myproc1ù  r¥  r9   r¦  r¬  N)r   r   ry   r§   r³   r	   r¯   )r2   Úhandler0Úhandler1Útrans0Útrans1r£  r­  r®  r  r·  r»  r´  s   `        @@@r6   Ú test_invoke_request_id_sequencesÚ,TestInvoker.test_invoke_request_id_sequencesâ  sÄ   ûé € ô
 *Ó+ˆHÜ)Ó+ˆHÜ" 8Ó,ˆFÜ" 8Ó,ˆFõ!ð —K‘KˆEØ—K‘KˆEÝ?ˆFŒKÝ?ˆFŒKòð ×#Ñ# GÐ-@ÓAÒAØ×#Ñ# GÐ-@ÓAÒAà—‘Ð2Ó3ˆBØ—‘Ð2Ó3ˆBÜ$ b XÓ.Ñ.ˆCØ×Ñ˜S :¨zÐ":Õ;ùs   †CCc              #   óÊ  ^^#   • [        5       nSUl        [        U5        / mU4S jnX!l        [	        S5      mU4S jnUR                  US5      v •   UR                  S5      v •  U R                  S5        U R                  S[        T5      5        U R                  TTS   S   5        g ! [         a)  nU R                  [        U[        5      5         S nANbS nAff = f7f)	NTc                 ó@   >• TR                  U R                  U45        g r;   r‘  )rÝ   r5   r’  s     €r6   Ú	log_errorÚ6TestInvoker.test_invoke_user_raises.<locals>.log_error  s   ø€ Ø—‘˜qŸw™w¨˜nÕ-r9   rR   c                  ó   >• T er;   r}   )Ú
name_errors   €r6   ÚbingÚ1TestInvoker.test_invoke_user_raises.<locals>.bing  s	   ø€ Ø Ð r9   zcom.myapp.myproc99zExpected an errorrK   r   )r   Útraceback_appr   r`  Ú	NameErrorr§   r³   r   r”   rí   r[   r_  r¯   rd   )r2   r3   rÆ  rÊ  rÝ   r’  rÉ  s        @@r6   Útest_invoke_user_raisesÚ#TestInvoker.test_invoke_user_raises  sÌ   ùé € ä(Ó*ˆGØ$(ˆGÔ!Ü˜'Ô"ØˆFõ.à"+Ôä" 5Ó)ˆJõ!ð ×"Ñ" 4Ð)=Ó>Ò>ð=Ø—l‘lÐ#7Ó8Ò8Ø—	‘	Ð-Ô.ð ×Ñ˜Q¤ F£Ô,Ø×Ñ˜Z¨°©°1©Õ6øô ó =ð —‘¤
¨1¬lÓ ;×<Ñ<ûð	=üs0   „AC#Á$B- Á94C#Â-
C Â7CÃC#ÃC Ã C#c              #   óþ  ^ ^#   • [        5       n[        U5        [        SU 4S jj5       n[        [	        S [        S5      5      5      mU4S jnUR                  US[        R                  " SS95      v •  UR                  S[        R                  " US9S	9v •nT R                  S
U5        [        S5       H@  nT R                  TU   R                  5        T R                  UTU   R                  5        MB     g 7f)Nc              3   óä   >#   • TR                  U S L5        TR                  U R                  S L5        [        S5       H!  nU R                  U5        [        U5      v •  M#     [	        S5        g 7f)Né
   r  )rí   rW   Úranger   r   )rÜ   Úir2   s     €r6   rÊ  Ú8TestInvoker.test_invoke_progressive_result.<locals>.bing*  s]   øé € à—‘ ¨tÐ 3Ô4Ø—‘ × 0Ñ 0¸Ð <Ô=Ü˜rž�AØ×$Ñ$ QÔ'Ü! !›*Ô$ñ #ô ˜B•ùs   ƒA-A0c                 ó   • [        5       $ r;   )r   )Ú_s    r6   r#  Ú<TestInvoker.test_invoke_progressive_result.<locals>.<lambda>3  s   € ¬X¬Zr9   rÒ  c                 ó.   >• TU    R                  U 5        g r;   r   )rN  Úprogressives    €r6   rW   Ú<TestInvoker.test_invoke_progressive_result.<locals>.progress5  s   ø€ Ø˜CÑ ×)Ñ)¨#Õ.r9   úcom.myapp.myproc2rÜ   rP  ©Úon_progressrÈ   r  r;   )r   r   r   ÚlistÚmaprÓ  r§   r   rp  r³   rÿ   r¯   rí   r.  rS  )r2   r3   rÊ  rW   r  rÔ  rÚ  s   `     @r6   Útest_invoke_progressive_resultÚ*TestInvoker.test_invoke_progressive_result%  sé   ùé € ä(Ó*ˆGÜ˜'Ô"äö ó ð ô œsÑ#7¼¸r»ÓCÓDˆKõ/ð ×"Ñ"ØØ#Ü×%Ò%°)Ñ<óò ð
  Ÿ™Ø#Ü×)Ò)°hÑ?ð %ð ñ ˆCð ×Ñ˜R Ô%ä˜2–Y�Ø—‘ ¨A¡× 5Ñ 5Ô6Ø× Ñ   K°¡N×$9Ñ$9Ö:ò ùs   „C9C=c              #   óL  ^ ^^^#   • [        5       n[        U5        [        SU 4S jj5       n[        5       m[	        S5      m/ mU4S jnX1l        SUUU 4S jjnUR                  US[        R                  " SS95      v •  UR                  SS[        R                  " US	9S
S9v •nT R                  SU5        T R                  TR                  5        T R                  STR                  5        T R                  S[        T5      5        T R                  TTS   S   5        g 7f)Nc              3   ó  >#   • TR                  US L5        TR                  UR                  S L5        TR                  US5        TR                  SU 5        UR                  SSS9  [        S5      v •  [	        S5        g 7f)NÚwordrN  ÚlifeÚnothing)Ú	somethingz
meaning ofr  )rí   rW   r¯   r   r   )rN  rÜ   Úkeyr2   s      €r6   rÊ  Ú>TestInvoker.test_invoke_progressive_result_error.<locals>.bingM  ss   øé € à—‘ ¨tÐ 3Ô4Ø—‘ × 0Ñ 0¸Ð <Ô=Ø× Ñ   fÔ-Ø× Ñ  ¨Ô,Ø× Ñ  °9Ð Ñ=Ü˜lÓ+Ò+Ü˜B•ùs   ƒA>BrR   c                 ó@   >• TR                  U R                  U45        g r;   r‘  )rÝ   r5   Úlogged_errorss     €r6   Ú	got_errorÚCTestInvoker.test_invoke_progressive_result_error.<locals>.got_error[  s   ø€ Ø×$Ñ$ a§g¡g¨s ^Õ4r9   c                 óN   >• TR                  SU5        TR                  U 5        Te)Nrç  )r¯   rè   )rN  rè  Úgot_progressÚprogress_errorr2   s     €€€r6   rW   ÚBTestInvoker.test_invoke_progressive_result_error.<locals>.progress_  s'   ø€ Ø× Ñ  ¨IÔ6Ø×%Ñ% cÔ*Ø$Ð$r9   rÜ  rÜ   rP  rN  rÝ  rå  )rÉ   ré  r  ræ  rK   r   )NNr;   )r   r   r   r   rÍ  r`  r§   r   rp  r³   rÿ   r¯   rí   r.  rS  rd   )	r2   r3   rÊ  rí  rW   r  rð  rì  rñ  s	   `     @@@r6   Ú$test_invoke_progressive_result_errorÚ0TestInvoker.test_invoke_progressive_result_errorH  s  ûé € ä(Ó*ˆGÜ˜'Ô"äö ó ð ô $›:ˆLÜ& uÓ-ˆNØˆMõ5à"+Ô÷%ñ %ð ×"Ñ"ØØ#Ü×%Ò%°)Ñ<óò ð  Ÿ™Ø#ØÜ×)Ò)°hÑ?Øð	 %ð ñ ˆCð ×Ñ˜R Ô%ð �O‰O˜L×/Ñ/Ô0Ø×Ñ˜V \×%8Ñ%8Ô9à×Ñ˜Q¤ MÓ 2Ô3Ø×Ñ˜^¨]¸1Ñ-=¸aÑ-@ÕAùs   †DD$c              #   ól  ^ ^#   • [        5       n[        U5        [        S	U 4S jj5       n[        5       mU4S jnUR	                  US[
        R                  " SS95      v •  UR                  S[
        R                  " US9S9v •nT R                  SU5        T R                  TR                  5        g 7f)
Nc              3   ó¾   >#   • TR                  U S L5        TR                  U R                  S L5        U R                  5         [        S5      v •  [        S5        g 7f)NTr  ©rí   rW   r   r   ©rÜ   r2   s    €r6   rÊ  Ú@TestInvoker.test_invoke_progressive_result_no_args.<locals>.bing€  sK   øé € à—‘ ¨tÐ 3Ô4Ø—‘ × 0Ñ 0¸Ð <Ô=Ø× Ñ Ô"Ü˜d“mÒ#Ü˜B•ùs   ƒAAc                  ó(   >• T R                  S5        g )Nzintentionally left blankr   )rð  s   €r6   rW   ÚDTestInvoker.test_invoke_progressive_result_no_args.<locals>.progressŠ  s   ø€ Ø×%Ñ%Ð&@ÕAr9   rÜ  rÜ   rP  rÝ  rÈ   r  r;   )r   r   r   r   r§   r   rp  r³   rÿ   r¯   rí   r.  ©r2   r3   rÊ  rW   r  rð  s   `    @r6   Ú&test_invoke_progressive_result_no_argsÚ2TestInvoker.test_invoke_progressive_result_no_args{  s¯   ùé € ä(Ó*ˆGÜ˜'Ô"äö ó ð ô $›:ˆLõBð ×"Ñ"ØØ#Ü×%Ò%°)Ñ<óò ð  Ÿ™Ø#Ü×)Ò)°hÑ?ð %ð ñ ˆCð ×Ñ˜R Ô%Ø�O‰O˜L×/Ñ/Õ0ùs   „B0B4c              #   ó¨  ^ ^#   • [        5       n[        U5        [        S
U 4S jj5       n[        5       mS
U4S jjnUR	                  US[
        R                  " SS95      v •  UR                  S[
        R                  " US9S9v •nT R                  SU5        T R                  TR                  5        T R                  S	TR                  5        g 7f)Nc              3   ó¼   >#   • TR                  U S L5        TR                  U R                  S L5        U R                  SS9  [        S5      v •  [        S5        g 7f)Nrå  )ré  Tr  r÷  rø  s    €r6   rÊ  ÚDTestInvoker.test_invoke_progressive_result_just_kwargs.<locals>.bing   sP   øé € à—‘ ¨tÐ 3Ô4Ø—‘ × 0Ñ 0¸Ð <Ô=Ø× Ñ  VÐ Ñ,Ü˜d“mÒ#Ü˜B•ùs   ƒAAc                 ó(   >• TR                  U 5        g r;   r   )ré  rð  s    €r6   rW   ÚHTestInvoker.test_invoke_progressive_result_just_kwargs.<locals>.progressª  s   ø€ Ø×%Ñ% cÕ*r9   rÜ  rÜ   rP  rÝ  rÈ   r  rå  r;   )r   r   r   r   r§   r   rp  r³   rÿ   r¯   rí   r.  rS  rü  s   `    @r6   Ú*test_invoke_progressive_result_just_kwargsÚ6TestInvoker.test_invoke_progressive_result_just_kwargs›  sÄ   ùé € ä(Ó*ˆGÜ˜'Ô"äö ó ð ô $›:ˆL÷+ð ×"Ñ"ØØ#Ü×%Ò%°)Ñ<óò ð  Ÿ™Ø#Ü×)Ò)°hÑ?ð %ð ñ ˆCð ×Ñ˜R Ô%Ø�O‰O˜L×/Ñ/Ô0Ø×Ñ˜V \×%8Ñ%8Õ9ùs   „CCc              #   ó¶  ^#   • [        5       n[        U5        [        S5      mU4S jnUR                  US5      v •n UR	                  S5      v •  U R                  5         UR                  5       v •  g ! [         a@  nU R                  U[        5        U R                  UR                  5       S5         S nANXS nAff = f! UR                  5       v •  f = f7f)Nza simple errorc                  ó   >• T er;   r}   ©r‚  s   €r6   ÚraiserÚ<TestInvoker.test_call_exception_runtimeerror.<locals>.raiserÂ  ó   ø€ Ø�r9   úcom.myapp.myproc_errorz(wamp.error.runtime_error: a simple error)r   r   r_  r§   r³   r   r”   r  r   r¯   Úerror_messagerw  ©r2   r3   r	  Úregistration0rÝ   r‚  s        @r6   Ú test_call_exception_runtimeerrorÚ,TestInvoker.test_call_exception_runtimeerror¼  s¾   øé € ä(Ó*ˆGÜ˜'Ô"Ü$Ð%5Ó6ˆIõ ð #*×"2Ñ"2°6Ð;SÓ"TÑTˆMð1Ø—l‘lÐ#;Ó<Ò<Ø—	‘	”ð
 $×.Ñ.Ó0Ó0øô	 ó `Ø×%Ñ% aÔ)9Ô:Ø× Ñ  §¡Ó!2Ð4^×_Ñ_ûð`ûð $×.Ñ.Ó0Ó0üs:   ƒ;C¿#A5 Á"CÁ5
B?Á?6B:Â5C Â:B?Â?C ÃCÃCc              #   ót  ^#   • [        5       n[        U5        [        5       mU4S jnUR                  US5      v •n UR	                  S5      v •  U R                  5         UR                  5       v •  g ! [         a   nU R                  U[        5         S nAN8S nAff = f! UR                  5       v •  f = f7f)Nc                  ó   >• T er;   r}   r  s   €r6   r	  Ú4TestInvoker.test_call_exception_bare.<locals>.raiserÕ  r  r9   r  )	r   r   r”   r§   r³   r   r  r   rw  r  s        @r6   Útest_call_exception_bareÚ$TestInvoker.test_call_exception_bareÏ  s    øé € ä(Ó*ˆGÜ˜'Ô"Ü!›ˆIõ ð #*×"2Ñ"2°6Ð;SÓ"TÑTˆMð1Ø—l‘lÐ#;Ó<Ò<Ø—	‘	”ð $×.Ñ.Ó0Ó0øô ó ;Ø×%Ñ% aÔ)9×:Ñ:ûð;ûð $×.Ñ.Ó0Ó0üs:   ƒ:B8¾#A4 Á!B8Á4
BÁ>BÂB! ÂBÂB! Â!B5Â5B8r}   N)r‡   rˆ   r‰   rŠ   r   r§  r¯  rÂ  rÎ  rá  ró  rý  r  r  r  r‹   r}   r9   r6   rŸ  rŸ  Å  sÏ   † Ø	ñ
	&ó 
ð
	&ð 
ñ	<ó 
ð	<ð 
ñ	<ó 
ð	<ðB 
ñ	7ó 
ð	7ð@ 
ñ 	;ó 
ð 	;ðD 
ñ0	Bó 
ð0	Bðd 
ñ	1ó 
ð	1ð> 
ñ	:ó 
ð	:ð@ 
ñ	1ó 
ð	1ð$ 
ñ	1ó 
ó	1r9   rŸ  c                   ó&   • \ rS rSrS rS rS rSrg)ÚTestAuthenticatoriñ  c                 óD  • [        [        R                  " 5       5      n[        SSSS9n[        SSSS9nUR	                  U5        U R                  [        5       nUR	                  U5        S S S 5        S[        WR                  5      ;   d   eg ! , (       d  f       N*= f)NÚwampcraÚaliceÚp4ssw0rd)ÚauthidÚsecretÚbobÚ
password42Úauthids)	r   r¬   r­   r   Úadd_authenticatorr  Ú
ValueErrorr�  r‚  )r2   r²   Úauth0Úauth1r„  s        r6   Útest_inconsistent_authidsÚ+TestAuthenticator.test_inconsistent_authidsó  s�   € ÜœdŸiši›kÓ*ˆGÜ(ØØØ!ñˆEô
 )ØØØ#ñˆEð ×%Ñ% eÔ,Ø×"Ñ"¤:Ô.°#Ø×)Ñ)¨%Ô0÷ /à¤ C§M¡MÓ 2Ó2Ð2Ñ2÷ /Õ.ús   ÁBÂ
Bc                 ó  • [        [        R                  " 5       5      n " S S[        5      nU" 5       nSSS.Ul        0 Ul        U" 5       nSSS.Ul        0 Ul        UR                  U5        UR                  U5        g )Nc                   ó$   • \ rS rSrSrS rS rSrg)ÚDTestAuthenticator.test_two_authenticators.<locals>.TestAuthenticatori  Útestc                 ó   • [         er;   ©ÚNotImplementedError©r2   r²   Ú	challenges      r6   Úon_challengeÚQTestAuthenticator.test_two_authenticators.<locals>.TestAuthenticator.on_challenge  ó   € Ü-Ð-r9   c                 ó   • [         er;   r-  ©r2   Ú	authextras     r6   Ú
on_welcomeÚOTestAuthenticator.test_two_authenticators.<locals>.TestAuthenticator.on_welcome  r3  r9   r}   N©r‡   rˆ   r‰   rŠ   Únamer1  r7  r‹   r}   r9   r6   r  r*    ó   † à�ò.õ.r9   r  Úvalue0Úvalue1rÆ   Úwhat)rO   Úqux)r   r¬   r­   r   r6  Ú_argsr"  )r2   r²   r  r$  r%  s        r6   Útest_two_authenticatorsÚ)TestAuthenticator.test_two_authenticators  s|   € ÜœdŸiši›kÓ*ˆGô.¤Nô .ñ &Ó'ˆEàØñˆEŒOð ˆEŒKá%Ó'ˆEàØñˆEŒOð ˆEŒKà×%Ñ% eÔ,Ø×%Ñ% eÕ,r9   c                 ó¨  • [        [        R                  " 5       5      n " S S[        5      nU" 5       nSSS.Ul        0 Ul        U" 5       nSS0Ul        0 Ul        UR                  U5        U R                  [        5       nUR                  U5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                   ó$   • \ rS rSrSrS rS rSrg)ÚHTestAuthenticator.test_inconsistent_authextra.<locals>.TestAuthenticatori&  r+  c                 ó   • [         er;   r-  r/  s      r6   r1  ÚUTestAuthenticator.test_inconsistent_authextra.<locals>.TestAuthenticator.on_challenge*  r3  r9   c                 ó   • [         er;   r-  r5  s     r6   r7  ÚSTestAuthenticator.test_inconsistent_authextra.<locals>.TestAuthenticator.on_welcome-  r3  r9   r}   Nr9  r}   r9   r6   r  rE  &  r;  r9   r  r<  r=  rÆ   rR   zInconsistent authextra)r   r¬   r­   r   r6  r@  r"  r  r#  r€  r�  r‚  )r2   r²   r  r$  r%  r„  s         r6   Útest_inconsistent_authextraÚ-TestAuthenticator.test_inconsistent_authextra#  s±   € ÜœdŸiši›kÓ*ˆGô.¤Nô .ñ &Ó'ˆEàØñˆEŒOð ˆEŒKá%Ó'ˆEà�xðˆEŒOð ˆEŒKà×%Ñ% eÔ,Ø×"Ñ"¤:Ô.°#Ø×)Ñ)¨%Ô0÷ /à�M‰MÐ2´C¸¿¹Ó4FÕG÷ /Õ.ús   ÂCÃ
Cr}   N)r‡   rˆ   r‰   rŠ   r&  rA  rJ  r‹   r}   r9   r6   r  r  ñ  s   † ò	3ò$	-õ<	Hr9   r  )0ÚosÚunittest.mockr¬   ÚenvironÚgetÚtwisted.internet.deferr   r   r   r   r   r	   Útwisted.trialr
   r|  Úautobahnr   Úautobahn.twisted.wampr   r   Úautobahn.wampr   r   r   r   r   r   Úautobahn.wamp.requestr   Úautobahn.wamp.exceptionr   r   r   r   Úautobahn.wamp.authr   Úautobahn.wamp.interfacesr   Úautobahn.wamp.typesr   Úobjectr   ÚTestCaser�   r›   rÁ   rŸ  r  r}   r9   r6   Ú<module>r\     sÓ   ðó6 
Ý à‡:�:‡>�>�- ×'Ñ'çMÑMßBÑBÝ&ÛåÝ8Ý-ßQ×QÝ1ßGßAÝ7Ý7Ý4ôz˜ô zôx,�H×%Ñ%ô ,ô$'G × 1Ñ 1ô 'GôR\A˜×)Ñ)ô \Aô|Z1�h×'Ñ'ô Z1ôX	OH˜H×-Ñ-õ OHðg (r9   