ó
    ð›‘hÔA  ã                   ó@  • S SK r S SKJrJr  \ R                  R                  SS5      (       aq  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 SKJrJrJr  S SKJr  S SKJr  S SKJr   " S S\R>                  5      r  " S S\R>                  5      r!gg)é    N)ÚMockÚpatchÚUSE_TWISTEDF©Ú	Component)ÚdirectlyProvides)ÚWelcomeÚGoodbyeÚHelloÚAbort)ÚJsonSerializer)ÚFakeTransport)ÚIStreamClientEndpoint)ÚinlineCallbacksÚsucceedÚDeferred)ÚClock)Úunittest)Úreplace_loopc                   óà   • \ rS rSrS r\" S\" S5      S9\S 5       5       r\" S\" S5      S9S 5       r	\" S\" S5      S9\S 5       5       r
\S	 5       r\" S\" S5      S9\S
 5       5       rSrg)ÚConnectionTestsé*   c                 ó   • g ©N© ©Úselfs    ÚkC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\autobahn/twisted/test/test_tx_component.pyÚsetUpÚConnectionTests.setUp,   s   € Øó    ztxaio.sleepN)Úreturn_valuec              #   óz  ^#   • [        5       n/ mU4S jn[        U[        5        [        SSUS.S9nUR	                  SU5        S nXRl        [        5       n[        U5         UR                  US9v •  U R                  [        T5      S	5        UR                  S
5        S S S 5        g ! , (       d  f       g = f7f)Nc                 óH   >• TR                  X45        U R                  5       $ r   )ÚappendÚleave)ÚsessionÚdetailsÚjoinss     €r   ÚjoinedÚ7ConnectionTests.test_successful_connect.<locals>.joined5   s   ø€ Ø—‘˜gÐ/Ô0Ø—}‘}“Ð&r!   Ú	websocketúws://127.0.0.1/ws©ÚtypeÚurlÚendpoint©Ú
transportsÚjoinc                 ód  • U R                  S5      n[        5       nUR                  U5        SSKJn  SSKJn  SSKJn  UR                  UR                  -   nSU" U" U5      R                  5       5      -   S-   Ul        UR                  5         SSKJn  UR!                  S	S	S	S	S	S	S	S	S	S
9	n	[#        S[%        U	S9SS9n
['        5       nUR)                  U
5      u  pÍUR+                  XÍ5        [-        5       n
UR*                  " UR)                  U
5      6   UR/                  S	SS5        [1        U5      $ )Nzws://localhost/r   ©ÚWebSocketProtocol©Ú	b64encode©Úsha1ó†   HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: upgrade
Sec-Websocket-Protocol: wamp.2.json
Sec-Websocket-Accept: ó   

©ÚroleT)	Úpublisher_identificationÚpattern_based_subscriptionÚsession_meta_apiÚsubscription_meta_apiÚsubscriber_blackwhite_listingÚpublisher_exclusionÚsubscription_revocationÚpayload_transparencyÚpayload_encryption_cryptoboxi@â )ÚbrokerÚrealm)rJ   éd   zsome old reason)ÚbuildProtocolr   ÚmakeConnectionÚautobahn.websocket.protocolr7   Úbase64r9   Úhashlibr;   Úwebsocket_keyÚ	_WS_MAGICÚdigestÚdataÚprocessHandshakeÚautobahn.wampr?   ÚRoleBrokerFeaturesr	   Údictr   Ú	serializeÚ	onMessager
   ÚonCloser   )ÚfactoryÚkwÚprotoÚ	transportr7   r9   r;   Úkeyr?   ÚfeaturesÚmsgÚ
serializerrT   Ú	is_binarys                 r   ÚconnectÚ8ConnectionTests.test_successful_connect.<locals>.connectB   s3  € Ø×-Ñ-Ð.?Ó@�Ü)›O�	Ø×$Ñ$ YÔ/åIÝ,Ý(Ø×)Ñ)Ð,=×,GÑ,GÑG�ð.ñ 1:¹$¸s»)×:JÑ:JÓ:LÓ0Mñ	Nð Qdñ	dð ”
ð ×&Ñ&Ô(å.Ø×2Ñ2Ø-1Ø/3Ø%)Ø*.Ø26Ø(,Ø,0Ø)-Ø15ð 3ð 
�ô ˜f¤d°(Ñ&;À7ÑK�Ü+Ó-�
Ø",×"6Ñ"6°sÓ";‘�Ø—‘ Ô0ä“i�Ø—’ ×!5Ñ!5°cÓ!:Ñ;Ø—‘˜d CÐ):Ô;ä˜u“~Ð%r!   ©Úreactoré   é  )r   r   r   r   Úonre   r   r   ÚstartÚ
assertTrueÚlenÚadvance)r   Ú
fake_sleepr1   r*   Ú	componentre   rh   r)   s          @r   Útest_successful_connectÚ'ConnectionTests.test_successful_connect/   s§   øé € ô “vˆHØˆEõ'ô ˜XÔ'<Ô=Ü!à'Ø.Ø (ññˆIð �L‰L˜ Ô(ò(&ðR  'Ôô “gˆGÜ˜gÕ&Ø—o‘o¨g�oÐ6Ò6Ø—‘¤ E£
¨AÔ.à—‘ Ô%÷	 '×&Ö&üs   ƒA B;Á#>B*Â!	B;Â*
B8Â4B;c                 óž  ^ ^	^
• [        5       m	[        T	[        5        [        SST	SSS.SS.S S	9nUR                  S
 5       nS nUT	l        [        5       n[        5       m
U	U
U 4S jnXel        [        U5         UR                  US9nU
4S jnUR                  Xˆ5        UR                  S5        T
sS S S 5        $ ! , (       d  f       g = f)Nr,   r-   ú10.0.0.0éèý  )ÚhostÚportr   )r/   r0   r1   ÚproxyÚmax_retriesc                 ó   • g©NTr   )Ú_s    r   Ú<lambda>Ú?ConnectionTests.test_successful_proxy_connect.<locals>.<lambda>‡   ó   €  4r!   ©r3   Úis_fatalc                 ó"   • U R                  5       $ r   )r&   )r'   r(   s     r   r*   Ú=ConnectionTests.test_successful_proxy_connect.<locals>.joinedŠ   s   € à—}‘}“Ð&r!   c                 ó(   • [        [        5       5      $ r   )r   r   ©r\   r]   s     r   re   Ú>ConnectionTests.test_successful_proxy_connect.<locals>.connectŽ   s   € Üœt›v“Ð&r!   c                 ó¤   >• TR                  SU 5        TR                  US5        TR                  S 5        TR                  UR                  5      $ )Nru   rv   )ÚassertEqualÚcallbackre   Ú_wrappedFactory)rw   rx   r\   r]   r1   Úgot_proxy_connectr   s       €€€r   Ú_tcpÚ;ConnectionTests.test_successful_proxy_connect.<locals>._tcpš   sH   ø€ Ø× Ñ  ¨TÔ2Ø× Ñ   uÔ-Ø!×*Ñ*¨4Ô0Ø×'Ñ'¨×(?Ñ(?Ó@Ð@r!   rg   c                 óL   >• TR                   (       d  TR                  U 5        g g r   )ÚcalledrŠ   )ÚxrŒ   s    €r   ÚdoneÚ;ConnectionTests.test_successful_proxy_connect.<locals>.done¤   s   ø€ Ø,×3×3Ø)×2Ñ2°1Õ5ð 4r!   rj   )r   r   r   r   Úon_joinre   r   r   Ú
connectTCPr   rl   ÚaddCallbacksro   )r   rp   rq   r*   re   rh   r�   Údr’   r1   rŒ   s   `        @@r   Útest_successful_proxy_connectÚ-ConnectionTests.test_successful_proxy_connectx   sÎ   ú€ ä“vˆHÜ˜XÔ'<Ô=Ü!à'Ø.Ø (à *Ø %ñð $%ñ	ñ (ñˆIð ×Ññ'ó ð'ò'à&ˆHÔô “gˆGä (£
Ð÷Að
 "&Ôä˜gÕ&Ø—O‘O¨G�OÐ4�õ6ð —‘˜tÔ*Ø—‘ Ô%Ø(÷ '×&×&ús   Á;9B>Â>
Cc              #   ó  #   • [        5       n[        U[        5        [        SSUS.S9nS nXBl        [        5       n[        U5         UR                  US9nUR                  5         Uv •  SSS5        g! , (       d  f       g= f7f)z`
if we start a component but call .stop before it connects, ever,
it should still exit properly
r,   r-   r.   r2   c                 ó   • [        5       $ r   )r   r†   s     r   re   Ú,ConnectionTests.test_cancel.<locals>.connect½   s
   € Ü“zÐ!r!   rg   N)	r   r   r   r   re   r   r   rl   Ústop)r   rp   r1   rq   re   rh   r—   s          r   Útest_cancelÚConnectionTests.test_cancel¬   sw   é € ô “vˆHÜ˜XÔ'<Ô=Ü!à'Ø.Ø (ññˆIò"à&Ôô “gˆGÜ˜gÕ&Ø—O‘O¨G�OÐ4�Ø—‘Ô Ø’÷ '×&Ö&üs   ‚ABÁ$A5Á,	BÁ5
BÁ?Bc           	   #   óÂ  ^#   • [        5       n[        U[        5        [        SSUSSSS.S9n[	        5       m[        T5         U4S jnX1l        UR                  TS9nUR                  c   eUR                  R                  (       a   eUR                  5       nUR                  b   eUR                  (       d   eUv •  Uv •  S	S	S	5        g	! , (       d  f       g	= f7f)
z�
if we start a component but call .stop before it connects, ever,
it should still exit properly -- even if we're 'between'
connection attempts
r,   r-   r   é   )r/   r0   r1   rz   Úmax_retry_delayÚinitial_retry_delayr2   c                 óp   >• [        5       nTR                  SUR                  [        S5      5      5        U$ )Né
   zno connect for yo)r   Ú	callLaterÚerrbackÚRuntimeError)r\   r]   r—   rh   s      €r   re   Ú:ConnectionTests.test_cancel_while_waiting.<locals>.connectæ   s.   ø€ Ü ›
�AØ×%Ñ% b¨!¯)©)´LÐATÓ4UÓ*VÔWØ�Hr!   rg   N)r   r   r   r   r   r   re   rl   Ú_delay_fÚ_done_fr�   r�   )r   r1   rq   re   Úd0Úd1rh   s         @r   Útest_cancel_while_waitingÚ)ConnectionTests.test_cancel_while_waitingË   sÏ   øé € ô “vˆHÜ˜XÔ'<Ô=Ü!à'Ø.Ø (Ø#$Ø'(Ø+,ññ	ˆIô “gˆGÜ˜gÕ&õð $+Ô à—_‘_¨W�_Ð5�Ø ×)Ñ)Ñ5Ð5Ð5Ø$×,Ñ,×3×3Ð3Ð3à—^‘^Ó%�Ø ×(Ñ(Ñ0Ð0Ð0Ø—y—yÐ �yà’Ø’÷# '×&Ö&üs   ƒA CÁBCÃ	CÃ
CÃCc              #   ó¾  #   • [        5       n[        U[        5        [        SSUS.S S9nS nXBl        [        5       n[        U5         U R                  [        5       nUR                  US9nUR                  S5        Uv •  S S S 5        S S S 5        U R                  S	[        WR                  5      5        g ! , (       d  f       N<= f! , (       d  f       NE= f7f)
Nr,   r-   r.   c                 ó   • gr|   r   )Úes    r   r~   Ú=ConnectionTests.test_connect_no_auth_method.<locals>.<lambda>  r€   r!   r�   c                 óR  • U R                  S5      nUR                  [        5       5        SSKJn  SSKJn  SSKJn  UR                  UR                  -   nSU" U" U5      R                  5       5      -   S-   Ul        UR                  5         SSKJn  UR!                  5       n[#        S	[%        US
9S/S9n	['        5       n
U
R)                  U	5      u  p¼UR+                  X¼5        [-        SS9n	UR*                  " U
R)                  U	5      6   UR/                  SSS5        [1        U5      $ )NÚboomr   r6   r8   r:   r<   r=   r>   rJ   )Ú
subscriberÚ	anonymous)ÚrolesÚauthmethodszwamp.error.no_auth_method)ÚreasonFrK   )rL   rM   r   rN   r7   rO   r9   rP   r;   rQ   rR   rS   rT   rU   rV   r?   ÚRoleSubscriberFeaturesr   rX   r   rY   rZ   r   r[   r   )r\   r]   r^   r7   r9   r;   r`   r?   Úsubrolerb   rc   rT   rd   s                r   re   Ú<ConnectionTests.test_connect_no_auth_method.<locals>.connect  s  € Ø×-Ñ-¨fÓ5�Ø×$Ñ$¤T£VÔ,åIÝ,Ý(Ø×)Ñ)Ð,=×,GÑ,GÑG�ð.ñ 1:¹$¸s»)×:JÑ:JÓ:LÓ0Mñ	Nð Qdñ	dð ”
ð ×&Ñ&Ô(å.Ø×5Ñ5Ó7�ä˜G¬4¸7Ñ+CÐR]ÐQ^Ñ_�Ü+Ó-�
Ø",×"6Ñ"6°sÓ";‘�Ø—‘ Ô0äÐ#>Ñ?�Ø—’ ×!5Ñ!5°cÓ!:Ñ;Ø—‘˜e SÐ*EÔFä˜u“~Ð%r!   rg   rj   zExhausted all transport)r   r   r   r   re   r   r   ÚassertRaisesr¨   rl   ro   ÚassertInÚstrÚ	exception)r   rp   r1   rq   re   rh   Úctxr—   s           r   Útest_connect_no_auth_methodÚ+ConnectionTests.test_connect_no_auth_method÷   s½   é € ô “vˆHä˜XÔ'<Ô=Ü!à'Ø.Ø (ññ
 (ñˆIò&ð<  'Ôô “gˆGÜ˜gÕ&Ø×&Ñ&¤|Ô4¸Ø!Ÿ™°˜Ð8�Aà—O‘O DÔ)Ø’G÷	 5÷ 'ð �M‰MØ)Ü�C—M‘MÓ"õ÷ 5Õ4ú÷ 'Õ&üs6   ‚ACÁ
CÁ %B;ÂCÂ.CÂ;
C		ÃCÃ
CÃCr   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r   rr   r˜   rž   r®   rÃ   Ú__static_attributes__r   r!   r   r   r   *   s´   † ò	ñ 
ˆ}©7°4«=Ñ	9Ø	ñE	&ó 
ó 
:ðE	&ñN 
ˆ}©7°4«=Ñ	9ñ1	)ó 
:ð1	)ñf 
ˆ}©7°4«=Ñ	9Ø	ñ	ó 
ó 
:ð	ð: 
ñ)	ó 
ð)	ñV 
ˆ}©7°4«=Ñ	9Ø	ñ;	ó 
ó 
:ó;	r!   r   c                   óV   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)ÚInvalidTransportConfigsi6  c                 óÌ   • U R                  [        5       n[        [        SS9S9  S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)NÚbar©Úfoor2   z'foo' is not©r¾   Ú
ValueErrorr   rX   r¿   rÀ   rÁ   ©r   rÂ   s     r   Útest_invalid_keyÚ(InvalidTransportConfigs.test_invalid_key8  sL   € Ø×"Ñ"¤:Ô.°#ÜÜ#Ø!ñ ò÷ /ð �M‰M˜.¬#¨c¯m©mÓ*<Õ=÷ /Õ.úó   –AÁ
A#c                 óà   • U R                  [        5       n[        [        SSS9[        SS9/S9  S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr,   r-   )r/   r0   rÍ   rÎ   r2   z''foo' is not a valid configuration itemrÐ   rÒ   s     r   Útest_invalid_key_transport_listÚ7InvalidTransportConfigs.test_invalid_key_transport_listA  sY   € Ø×"Ñ"¤:Ô.°#Üä +Ð3FÑGÜ ™ð ò÷ /ð �M‰MÐCÄSÈÏÉÓEWÕX÷ /Õ.ús   –AÁ
A-c                 óÈ   • U R                  [        5       n[        SS/S./S9  S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nr-   Úquux)r0   rc   r2   zonly for rawsocket©r¾   rÑ   r   r¿   rÀ   rÁ   rÒ   s     r   Útest_invalid_serializer_keyÚ3InvalidTransportConfigs.test_invalid_serializer_keyK  sV   € Ø×"Ñ"¤:Ô.°#Üð $7Ø+1¨(ñð ò÷ /ð �M‰MÐ.´°C·M±MÓ0BÕC÷ /Õ.úó   –AÁ
A!c                 óÈ   • U R                  [        5       n[        SS/S./S9  S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nr-   rÚ   ©r0   Úserializersr2   zInvalid serializerrÛ   rÒ   s     r   Útest_invalid_serializerÚ/InvalidTransportConfigs.test_invalid_serializerW  sV   € Ø×"Ñ"¤:Ô.°#Üð $7Ø,2¨8ñð ò÷ /ð �M‰MÐ.´°C·M±MÓ0BÕC÷ /Õ.úrÞ   c                 óÊ   • U R                  [        5       n[        SSS/S./S9  S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nr-   ri   é   rà   r2   úmust be a listrÛ   rÒ   s     r   Útest_invalid_serializer_type_0Ú6InvalidTransportConfigs.test_invalid_serializer_type_0c  sX   € Ø×"Ñ"¤:Ô.°#Üð $7Ø,-¨q¨6ñð ò÷ /ð �M‰MÐ*¬C°·±Ó,>Õ?÷ /Õ.ús   –AÁ
A"c                 óÆ   • U R                  [        5       n[        SSS./S9  S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nr-   ri   rà   r2   ræ   rÛ   rÒ   s     r   Útest_invalid_serializer_type_1Ú6InvalidTransportConfigs.test_invalid_serializer_type_1o  sT   € Ø×"Ñ"¤:Ô.°#Üð $7Ø+,ñð ò÷ /ð �M‰MÐ*¬C°·±Ó,>Õ?÷ /Õ.ús   –AÁ
A c                 óÄ   • U R                  [        5       n[        SS0/S9  S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nr/   Úbadr2   zInvalid transport typerÛ   rÒ   s     r   Útest_invalid_type_keyÚ-InvalidTransportConfigs.test_invalid_type_key{  sS   € Ø×"Ñ"¤:Ô.°#Üð # Eðð ò÷ /ð �M‰MÐ2´C¸¿¹Ó4FÕG÷ /Õ.úó   –AÁ
Ac                 óÀ   • U R                  [        5       n[        S/S9  S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)NrÏ   r2   zinvalid WebSocket URLrÛ   rÒ   s     r   Útest_invalid_typeÚ)InvalidTransportConfigs.test_invalid_type†  sJ   € Ø×"Ñ"¤:Ô.°#Üàð ò÷ /ð �M‰MÐ1´3°s·}±}Ó3EÕF÷ /Õ.ús   –AÁ
Ac                 óÄ   • U R                  [        5       n[        SS0/S9  S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nr/   r,   r2   zTransport requires 'url'rÛ   rÒ   s     r   Útest_no_urlÚ#InvalidTransportConfigs.test_no_url�  sS   € Ø×"Ñ"¤:Ô.°#Üð # Kðð ò÷ /ð �M‰MÐ4´c¸#¿-¹-Ó6HÕI÷ /Õ.úrð   c                 óÌ   • U R                  [        5       n[        S SSSS./S9  S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nc                 ó   • g r   r   ©ÚrÚss     r   r~   ÚDInvalidTransportConfigs.test_endpoint_bogus_object.<locals>.<lambda>�  s   €  dr!   r,   úws://example.com/ws)ÚnotÚarX   r.   ©Úmainr3   z 'endpoint' configuration must berÛ   rÒ   s     r   Útest_endpoint_bogus_objectÚ2InvalidTransportConfigs.test_endpoint_bogus_objectš  sZ   € Ø×"Ñ"¤:Ô.°#ÜÙ*ð %0Ø#8Ø(<ñð ò	÷ /ð �M‰MÐ<¼cÀ#Ç-Á-Ó>PÕQ÷ /Õ.úrÕ   c           	      ó,   • [        S SSSSSS.S./S	9  g )
Nc                 ó   • g r   r   rù   s     r   r~   Ú=InvalidTransportConfigs.test_endpoint_valid.<locals>.<lambda>ª  s   €  $r!   r,   rý   Útcpz1.2.3.4Ú4321)r/   rw   rx   r.   r   r   r   s    r   Útest_endpoint_validÚ+InvalidTransportConfigs.test_endpoint_valid¨  s-   € ÜÙ&ð !,Ø4à$)Ø$-Ø$*ñ%ñð
ór!   r   N)rÅ   rÆ   rÇ   rÈ   rÓ   r×   rÜ   râ   rç   rê   rî   rò   rõ   r  r	  rÉ   r   r!   r   rË   rË   6  sB   † ò	>ò	Yò
	Dò
	Dò
	@ò
	@ò		Hò	Gò		Jò	Rõ	r!   rË   )"ÚosÚunittest.mockr   r   ÚenvironÚgetÚautobahn.twisted.componentr   Úzope.interfacer   Úautobahn.wamp.messager	   r
   r   r   Úautobahn.wamp.serializerr   Úautobahn.testutilr   Útwisted.internet.interfacesr   Útwisted.internet.deferr   r   r   Útwisted.internet.taskr   Útwisted.trialr   Útxaio.testutilr   ÚTestCaser   rË   r   r!   r   Ú<module>r     su   ðó6 
ß %à‡:�:‡>�>�- ×'Ñ'Ý4Ý/ßDÓDÝ7Ý/ÝAßIÑIÝ+Ý&Ý+ôJ˜(×+Ñ+ô JôX@ (×"3Ñ"3õ @ðq (r!   