ó
    ð›‘hj6  ã                   óŽ  • S SK r S SKr\ R                  R                  SS5      (       aœ  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  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  S SKJr  S SKJr  \" S5      S 5       rSrSr " S S\R:                  5      r " S S\R:                  5      r " S S\R:                  5      r gg)é    NÚUSE_TWISTEDF)Úunittest)ÚIPv4Address)ÚClock)ÚWebSocketServerProtocol)ÚWebSocketServerFactory)ÚWebSocketClientProtocol)ÚWebSocketClientFactory)ÚPerMessageDeflate)ÚFakeTransport)Ú	MagicMockÚpatch)Úreplace_loop)Ú	b64decodezbase64.b64encodec                 ój  ^• SU l         [        S/S9n[        Ul        UR	                  5         UR                  [        SSS5      5      n[        5       Ul        UR                  5         [        Ul        UR                  5         / mU4S jnXCl        UR                  " S	0 UD6  SR                  T5      $ )
a+  
Kind-of hack-y; maybe better to re-factor the Protocol to have a
frame-encoder method-call? Anyway, makes a throwaway protocol
encode a frame for us, collects the .sendData call and returns
the data that would have gone out. Accepts all the kwargs that
WebSocketClientProtocol.sendFrame() accepts.
s   QIatSt9QkZPyS4QQfdufO8TgkL0=úwamp.2.json©Ú	protocolsÚTCPz	127.0.0.9éþÿ  c                 ó(   >• TR                  U 5        g ©N)Úappend)ÚdÚargsÚdatas     €ÚpC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\autobahn/websocket/test/test_websocket_frame.pyÚcollectÚ$create_client_frame.<locals>.collectI   s   ø€ Ø�K‰K˜�Nó    r    © )Úreturn_valuer
   r	   ÚprotocolÚdoStartÚbuildProtocolr   r   Ú	transportÚconnectionMadeÚmock_handshake_serverr   ÚprocessHandshakeÚsendDataÚ	sendFrameÚjoin)Úb64patchÚkwargsÚfactoryÚprotor   r   s        @r   Úcreate_client_framer1   0   s™   ø€ ð !@ˆÔä(°M°?ÑCˆÜ2ˆÔØ�‰ÔØ×%Ñ%¤k°%¸ÀeÓ&LÓMˆÜ'›/ˆŒØ×ÑÔÜ*ˆŒ
Ø×ÑÔ àˆõ	à Œà�ŠÑ!˜&Ò!Ø�x‰x˜‹~Ðr    s
  GET / HTTP/1.1
User-Agent: AutobahnPython/0.10.2
Host: localhost:80
Upgrade: WebSocket
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: 6Jid6RgXpH0RVegaNSs/4g==
Sec-WebSocket-Protocol: wamp.2.json
Sec-WebSocket-Version: 13

s  HTTP/1.1 101 Switching Protocols
Server: AutobahnPython/0.10.2
X-Powered-By: AutobahnPython/0.10.2
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Protocol: wamp.2.json
Sec-WebSocket-Accept: QIatSt9QkZPyS4QQfdufO8TgkL0=

�~[1,"crossbar",{"roles":{"subscriber":{"features":{"publisher_identification":true,"pattern_based_subscription":true,"subscription_revocation":true}},"publisher":{"features":{"publisher_identification":true,"publisher_exclusion":true,"subscriber_blackwhite_listing":true}},"caller":{"features":{"caller_identification":true,"progressive_call_results":true}},"callee":{"features":{"progressive_call_results":true,"pattern_based_registration":true,"registration_revocation":true,"shared_registration":true,"caller_identification":true}}}}]c                   ó    • \ rS rSrS rS rSrg)ÚTestDeflateéU   c           
      óŒ   • [        SSSSSSSS9nSnUR                  5         UR                  U5      nU R                  US5        g )NFé   é   é
   )Ú	is_serverÚserver_no_context_takeoverÚclient_no_context_takeoverÚserver_max_window_bitsÚclient_max_window_bitsÚ	mem_levelÚmax_message_sizeó   «¨£`Œ‚Q0
FÁP Ï@©®s
   xxxxxxxxxx©r   Ústart_decompress_messageÚdecompress_message_dataÚassertEqual©ÚselfÚdecoderÚcompressed_datar   s       r   Útest_max_sizeÚTestDeflate.test_max_sizeW   sW   € Ü'ØØ+0Ø+0Ø')Ø')ØØ!#ñˆGð bˆOà×,Ñ,Ô.Ø×2Ñ2°?ÓCˆDð ×Ñ˜T 9Õ-r    c           	      óŠ   • [        SSSSSS S9nSnUR                  5         UR                  U5      nU R                  US5        g )NFr6   )r9   r:   r;   r<   r=   r>   r@   sÐ  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrA   rE   s       r   Útest_no_max_sizeÚTestDeflate.test_no_max_sizel   sR   € Ü'ØØ+0Ø+0Ø')Ø')ØñˆGð bˆOà×,Ñ,Ô.Ø×2Ñ2°?ÓCˆDà×Ñ˜T ;Õ/r    r!   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rI   rL   Ú__static_attributes__r!   r    r   r3   r3   U   s   † ò	.õ*	0r    r3   c                   ó,   • \ rS rSrS rS rS rS rSrg)Ú
TestClienté~   c                 ó^  • [        S/S9U l        [        U R                  l        U R                  R	                  5         U R                  R                  [        SSS5      5      U l        [        5       U l	        U R                  U R                  l	        U R                  R                  5         g ©Nr   r   r   z	127.0.0.1r   )r
   r/   r	   r#   r$   r%   r   r0   r   r&   r'   ©rF   s    r   ÚsetUpÚTestClient.setUp   su   € Ü1¸]¸OÑLˆDŒLÜ$;ˆD�L‰LÔ!Ø�L‰L× Ñ Ô"àŸ™×3Ñ3´KÀÀ{ÐTYÓ4ZÓ[ˆDŒJÜ*›_ˆDŒNØ#'§>¡>ˆD�J‰JÔ Ø�J‰J×%Ñ%Õ'r    c                 ó¾   • U R                   R                  (       a$  U R                   R                  R                  5         U R                  R	                  5         U ?U ? g r   ©r0   ÚopenHandshakeTimeoutCallÚcancelr/   ÚdoStoprX   s    r   ÚtearDownÚTestClient.tearDown‰   ó?   € Ø�z‰z×2×2Ø—
‘
×3Ñ3×:Ñ:Ô<Ø�L‰L×ÑÔ!à�Ø‘
r    c                 óü   • SU R                   l        U R                   R                  U R                   l        SU R                   l        [        5       U R                   l        U R                   R                  SS 5        g )NTé   éè  )r0   ÚechoCloseCodeReasonÚ
STATE_OPENÚstateÚwebsocket_versionr   ÚsendCloseFrameÚonCloseFramerX   s    r   Útest_missing_reason_rawÚ"TestClient.test_missing_reason_raw‘   sR   € à-1ˆD�J‰JÔ*Ø#Ÿz™z×4Ñ4ˆD�J‰JÔØ+,ˆD�J‰JÔ(ä(1«ˆD�J‰JÔ%à�J‰J×#Ñ# D¨$Õ/r    c                 óz  •  [	        S5      U R                  l        [        U R                  l        U R                  R                  5         U R                  U R                  R                  [        R                  5        U R                  U R                  R                  S:„  5        [        [!        5       5       nU R                  R#                  5         U R                  R%                  SS5        U R                  ['        UR(                  5      S5        U R                  UR(                  S   R*                  U R                  R,                  5        U R                  UR(                  S   R/                  5       U R                  R                  5        UR1                  U R                  R2                  S-   5        U R                  U R                  R4                  R7                  5       5        U R                  U R                  R                  [        R8                  5        SSS5        g! , (       d  f       g= f)z:
make a delayed call to drop the connection (client-side)
z6Jid6RgXpH0RVegaNSs/4g==r   re   s
   raw reasonrd   N)Úprintr0   r/   Ú_logr   Úwebsocket_keyr(   r   r)   rD   rh   r   rg   Ú
assertTrueÚserverConnectionDropTimeoutr   r   rj   rk   ÚlenÚcallsÚfuncÚonServerConnectionDropTimeoutÚgetTimeÚadvanceÚcloseHandshakeTimeoutr&   Úabort_calledÚSTATE_CLOSED©rF   Úreactors     r   Útest_unclean_timeout_clientÚ&TestClient.test_unclean_timeout_client›   s}  € ð
 ô (1Ð1KÓ'LˆD�J‰JÔ$Ü3ˆD�J‰JŒOØ�J‰J×'Ñ'Ô)Ø×Ñ˜TŸZ™Z×-Ñ-Ô/F×/QÑ/QÔRØ�O‰O˜DŸJ™J×BÑBÀQÑFÔGäœe›gÔ&¨'à—
‘
×)Ñ)Ô+Ø—
‘
×'Ñ'¨¨mÔ<ð × Ñ ¤ W§]¡]Ó!3°QÔ7Ø× Ñ  §¡¨qÑ!1×!6Ñ!6¸¿
¹
×8`Ñ8`ÔaØ× Ñ  §¡¨qÑ!1×!9Ñ!9Ó!;¸T¿Z¹Z×=cÑ=cÔdð —‘ §
¡
× @Ñ @À1Ñ DÔEð —‘ §
¡
× 4Ñ 4× AÑ AÓ CÔDà× Ñ  §¡×!1Ñ!1Ô3J×3WÑ3WÔX÷# '×&Ö&ús   Â:E)H,È,
H:©r/   r0   r&   N)	rN   rO   rP   rQ   rY   r`   rl   r   rR   r!   r    r   rT   rT   ~   s   † ò	(ò	ò	0õ 	Yr    rT   c                   ó2   • \ rS rSrS rS rS rS rS rSr	g)	ÚTestPingé½   c                 ó^  • [        S/S9U l        [        U R                  l        U R                  R	                  5         U R                  R                  [        SSS5      5      U l        [        5       U l	        U R                  U R                  l	        U R                  R                  5         g rW   )r   r/   r   r#   r$   r%   r   r0   r   r&   r'   rX   s    r   rY   ÚTestPing.setUp¾   su   € Ü1¸]¸OÑLˆDŒLÜ$;ˆD�L‰LÔ!Ø�L‰L× Ñ Ô"àŸ™×3Ñ3´KÀÀ{ÐTYÓ4ZÓ[ˆDŒJÜ&›[ˆDŒNØ#'§>¡>ˆD�J‰JÔ Ø�J‰J×%Ñ%Õ'r    c                 ó¾   • U R                   R                  (       a$  U R                   R                  R                  5         U R                  R	                  5         U ?U ? g r   r\   rX   s    r   r`   ÚTestPing.tearDownÈ   rb   r    c                 óH  • [         U R                  l        U R                  R                  5         U R	                  U R                  R
                  [        R                  :H  5        [        [        5       5       nU R                  R                  5         U R                  [        UR                  5      S5        UR                  U R                  R                  S-   5        U R                  S[!        U R                  R"                  R$                  S   5      5        U R	                  U R                  R"                  R&                  R(                  5        U R                  U R                  R
                  [        R*                  5        SSS5        g! , (       d  f       g= f)z,
make a delayed call to drop the connection
rd   zcall.abortConnection()éÿÿÿÿN)Úmock_handshake_clientr0   r   r)   rr   rh   r   rg   r   r   rj   rD   rt   ru   ry   rz   Ústrr&   Úmethod_callsÚabortConnectionÚcalledr|   r}   s     r   Útest_unclean_timeoutÚTestPing.test_unclean_timeoutÐ   s  € ô 4ˆD�J‰JŒOØ�J‰J×'Ñ'Ô)Ø�O‰O˜DŸJ™J×,Ñ,Ô0G×0RÑ0RÑRÔSäœe›gÔ&¨'à—
‘
×)Ñ)Ô+ð × Ñ ¤ W§]¡]Ó!3°QÔ7ð —‘ §
¡
× @Ñ @À1Ñ DÔEð × Ñ Ð!9¼3¸t¿z¹z×?SÑ?S×?`Ñ?`ÐacÑ?dÓ;eÔfØ—‘ §
¡
× 4Ñ 4× DÑ D× KÑ KÔLà× Ñ  §¡×!1Ñ!1Ô3J×3WÑ3WÔX÷ '×&Ö&ús   Á9DFÆ
F!c                 óT  • SU R                   l        SU R                   l        [        [	        5       5       n[
        U R                   l        U R                   R                  5         U R                  U R                   R                  [        R                  :H  5        U R                  S[        UR                  5      5        UR                  S5        U R                  U R                   R"                  R$                  5        U R                   R"                  R&                  S   S   n[)        US   /5      n[*        R,                  " SU5      u  nUS-  nU R                  SU5        U R                  S[        UR                  5      5        U R/                  U R                   R                  U R                   R0                  5        UR                  S5        U R                  U R                   R                  U R                   R0                  5        S	S	S	5        g	! , (       d  f       g	= f)
z&
autoping and autoping-timeout timing
é   é   rd   r   ÚBiÿÿÿé	   é   N)r0   ÚautoPingIntervalÚautoPingTimeoutr   r   r‹   r   r)   rr   rh   r   rg   rD   rt   ru   ry   r&   Úwriter�   Ú	call_argsÚbytesÚstructÚunpackÚassertNotEqualr|   )rF   r~   r   Ú_dataÚopcodes        r   Útest_auto_pingpong_timeoutÚ#TestPing.test_auto_pingpong_timeoutð   s‰  € ð
 +,ˆD�J‰JÔ'Ø)*ˆD�J‰JÔ&äœe›gÔ&¨'ä"7�—
‘
”Ø—
‘
×+Ñ+Ô-Ø—‘ §
¡
× 0Ñ 0Ô4K×4VÑ4VÑ VÔWð × Ñ  ¤C¨¯©Ó$6Ô7ð —‘ Ô"ð —‘ §¡× 4Ñ 4× ;Ñ ;Ô<Ø—~‘~×+Ñ+×5Ñ5°aÑ8¸Ñ;�ä˜t A™w˜iÓ(�ô #ŸMšM¨#¨uÓ5‘	�Ø 5Ñ)�ð × Ñ   FÔ+ð × Ñ  ¤C¨¯©Ó$6Ô7Ø×#Ñ# D§J¡J×$4Ñ$4°d·j±j×6MÑ6MÔNð —‘ Ô"Ø× Ñ  §¡×!1Ñ!1°4·:±:×3JÑ3JÔK÷C '×&Ö&ús   ¶GHÈ
H'c                 ó:  • SU R                   l        SU R                   l        [        [	        5       5       n[
        U R                   l        U R                   R                  5         U R                  U R                   R                  [        R                  :H  5        U R                  S[        UR                  5      5        UR                  S5        U R                  S[        UR                  5      5        UR                  S   n[!        SU R                   R"                  S9nX0R                   l        U R                   R%                  5         U R                   R%                  5         U R                  UR&                  5        SSS5        g! , (       d  f       g= f)z.
auto-ping with correct reply cancels timeout
r“   r”   rd   r   r8   )r¡   ÚpayloadN)r0   r˜   r™   r   r   r‹   r   r)   rr   rh   r   rg   rD   rt   ru   ry   r1   ÚautoPingPendingÚprocessDataÚ	cancelled)rF   r~   Útimeout_callÚframes       r   Útest_auto_ping_got_pongÚ TestPing.test_auto_ping_got_pong  s  € ð
 +,ˆD�J‰JÔ'Ø)*ˆD�J‰JÔ&äœe›gÔ&¨'ä"7�—
‘
”Ø—
‘
×+Ñ+Ô-Ø—‘ §
¡
× 0Ñ 0Ô4K×4VÑ4VÑ VÔWð × Ñ  ¤C¨¯©Ó$6Ô7ð —‘ Ô"ð × Ñ  ¤C¨¯©Ó$6Ô7Ø&Ÿ}™}¨QÑ/�ô ,°2¸t¿z¹z×?YÑ?YÑZ�Ø"'—
‘
”à—
‘
×&Ñ&Ô(Ø—
‘
×&Ñ&Ô(ð —‘ × 6Ñ 6Ô7÷9 '×&Ö&ús   ¶EFÆ
Fr�   N)
rN   rO   rP   rQ   rY   r`   r�   r¢   r«   rR   r!   r    r   rƒ   rƒ   ½   s   † ò	(ò	ò	Yò@)	LõV$	8r    rƒ   )!Úosr�   ÚenvironÚgetÚtwisted.trialr   Útwisted.internet.addressr   Útwisted.internet.taskr   Úautobahn.twisted.websocketr   r   r	   r
   Ú#autobahn.websocket.compress_deflater   Úautobahn.testutilr   Úunittest.mockr   r   Útxaio.testutilr   Úbase64r   r1   r‹   r(   ÚTestCaser3   rT   rƒ   r!   r    r   Ú<module>rº      sµ   ðó6 
Û ð ‡:�:‡>�>�- ×'Ñ'Ý&Ý4Ý+åBÝAÝBÝAÝEÝ/ç.Ý+å á
ÐÓñó ðð@ @Ðð CÐô'0�h×'Ñ'ô '0ôR=Y�X×&Ñ&ô =Yô~B8�8×$Ñ$õ B8ð} (r    