Ë
    Bü´j�&  ã                   óÐ   — d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dlm	Z	m
Z
 	  G d„ dej                  «      Z G d„ dej                  «      Zed	k(  r ej                  «        yy)
é    N)Úmock)ÚABNFÚcontinuous_frameÚframe_buffer)ÚWebSocketPayloadExceptionÚWebSocketProtocolExceptionc                   óH   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚABNFTestc                 ó   — t        ddddt         j                  ¬«      }| j                  |j                  d«       | j                  |j                  d«       | j                  |j
                  d«       | j                  |j                  d«       | j                  |j                  d«       | j                  |j                  d«       t        ddddd¬«      }| j                  |j                  d«       | j                  |j                  d«       y )Nr   ©Úopcodeé	   Ú é   éM   )	r   ÚOPCODE_PINGÚassertEqualÚfinÚrsv1Úrsv2Úrsv3r   Údata)ÚselfÚaÚa_bads      úW/root/workspace/ytshorts/venv/lib/python3.12/site-packages/websocket/tests/test_abnf.pyÚ	test_initzABNFTest.test_init    sÌ   € Ü��A�q˜!¤D×$4Ñ$4Ô5ˆØ×Ñ˜Ÿ™ Ô"Ø×Ñ˜Ÿ™ Ô#Ø×Ñ˜Ÿ™ Ô#Ø×Ñ˜Ÿ™ Ô#Ø×Ñ˜Ÿ™ 1Ô%Ø×Ñ˜Ÿ™ Ô$Ü�Q˜˜1˜a¨Ô+ˆØ×Ñ˜Ÿ™ QÔ'Ø×Ñ˜Ÿ™ rÕ*ó    c                 ój  — ddl }ddlm} t        |«      D �ch c]  }|j	                  d«      sŒ|’Œ }}|j
                  D �ch c]  }|j	                  d«      sŒ|’Œ }}| j                  ||«       | j                  |j                  d«       | j                  |j                  d«       yc c}w c c}w )z=Every STATUS_ constant in _abnf must be exported via __all__.r   NÚSTATUS_iô  iõ  )
Ú	websocketÚwebsocket._abnfÚ_abnfÚdirÚ
startswithÚ__all__ÚassertSetEqualr   ÚSTATUS_SERVICE_RESTARTÚSTATUS_TRY_AGAIN_LATER)r   r!   Úabnf_modÚnÚdefinedÚexporteds         r   Útest_status_constants_exportedz'ABNFTest.test_status_constants_exported,   s“   € ãÝ*ä! (›mÖG˜¨q¯|©|¸IÕ/F’1ÐGˆÐGØ'×/Ñ/ÖK˜!°1·<±<À	Õ3J’AÐKˆÐKØ×Ñ˜H gÔ.Ø×Ñ˜×9Ñ9¸4Ô@Ø×Ñ˜×9Ñ9¸4Õ@ùò	 HùÚKs   ˜B+¯B+ÁB0ÁB0c                 óî  — t        ddddt         j                  ¬«      }| j                  t        |j                  d¬«       t        ddddt         j
                  ¬«      }| j                  t        |j                  d¬«       t        ddddd¬«      }| j                  t        |j                  d¬«       t        ddddt         j                  d¬«      }| j                  t        |j                  d¬«       t        ddddt         j                  d	¬«      }| j                  t        |j                  d¬«       t        ddddt         j                  d
¬«      }| j                  t        |j                  d¬«       y )Nr   r   F©Úskip_utf8_validationr   r   ó   ©r   r   s   ŠªÿÝó   çT)r   r   ÚassertRaisesr   ÚvalidateÚOPCODE_TEXTÚOPCODE_CLOSE)r   Úa_invalid_pingÚa_bad_rsv_valueÚa_bad_opcodeÚa_bad_close_frameÚa_bad_close_frame_2Úa_bad_close_frame_3s          r   Útest_validatezABNFTest.test_validate7   sv  € Ü˜a  A q´×1AÑ1AÔBˆØ×ÑÜ&Ø×#Ñ#Ø!&ð 	ô 	
ô
 ˜q ! Q¨´$×2BÑ2BÔCˆØ×ÑÜ&Ø×$Ñ$Ø!&ð 	ô 	
ô
 ˜A˜q ! Q¨rÔ2ˆØ×ÑÜ&Ø×!Ñ!Ø!&ð 	ô 	
ô
 !  A q¨!´D×4EÑ4EÈGÔTÐØ×ÑÜ&Ø×&Ñ&Ø!&ð 	ô 	
ô
 #Øˆq�!�Qœt×0Ñ0Ð7Nô
Ðð 	×ÑÜ&Ø×(Ñ(Ø!&ð 	ô 	
ô
 #Øˆq�!�Qœt×0Ñ0°{ô
Ðð 	×ÑÜ&Ø×(Ñ(Ø!%ð 	õ 	
r   c           	      óP  — t        ddddd¬«      }| j                  t        d«      5  |j                  «        d d d «       t        ddddt         j                  dd¬«      }| j                  t        d«      5  |j                  «        d d d «       y # 1 sw Y   ŒYxY w# 1 sw Y   y xY w)	Nr   é   r   z^Invalid opcode 5$r   r4   ©r   Ú
mask_valuer   z^Invalid close opcode 999$)r   ÚassertRaisesRegexr   r6   r8   )r   Úinvalid_opcodeÚinvalid_close_statuss      r   Ú.test_validate_exception_messages_are_formattedz7ABNFTest.test_validate_exception_messages_are_formatteda   s§   € Ü˜a  A q°Ô3ˆØ×#Ñ#Ô$>Ð@UÓVñ 	&Ø×#Ñ#Ô%÷	&ô  $Øˆq�!�Qœt×0Ñ0¸QÀ[ô 
Ðð ×#Ñ#Ü&Ð(Eó
ñ 	,ð !×)Ñ)Ô+÷	,ð 	,÷	&ð 	&ú÷	,ð 	,ús   §BÁ6BÂBÂB%c           	      ó  — t        ddddt         j                  dd ¬«      }d}| j                  |j                  |«      |«       t        ddddt         j                  dd¬«      }| j                  |j                  |«      d«       y )Nr   r   rB   s   aaaar   s   aaaa )r   r   r   Ú_get_masked)r   Úabnf_none_dataÚ	bytes_valÚabnf_str_datas       r   Ú	test_maskzABNFTest.test_maskn   s   € ÜØˆq�!�Qœt×/Ñ/¸AÀDô
ˆð ˆ	Ø×Ñ˜×3Ñ3°IÓ>À	ÔJÜØˆq�!�Qœt×/Ñ/¸AÀCô
ˆð 	×Ñ˜×2Ñ2°9Ó=¸{ÕKr   c           	      ó´  — t        ddddt         j                  ¬«      }| j                  t        |j                  «       t        ddddd¬«      }| j                  t        |j                  «       t        ddddt         j                  d¬«      }| j                  d|j	                  «       d   j                  dd	«      «       | j                  d
|j	                  «       d   j                  dd	«      «       | j                  d|j                  «       «       t        ddddt         j                  d¬«      }| j                  d|j	                  «       d   j                  dd	«      «       | j                  d|j	                  «       d   j                  dd	«      «       t        ddddt         j                  dd¬«      }| j                  d|j	                  «       «       y )Né   r   r   rA   Ú
abcdefghijr3   r2   r   Úbigó   Šzfin=0 opcode=1 data=abcdefghijÚabcdefghijabcdefghijó   ó   ”s   ŠÌrB   s   ŠÌ)	r   r7   r5   Ú
ValueErrorÚformatr   Úto_bytesÚ__str__ÚOPCODE_BINARY)r   Úabnf_bad_rsv_bitsÚabnf_bad_opcodeÚabnf_length_10Úabnf_length_20Úabnf_no_masks         r   Útest_formatzABNFTest.test_formaty   s•  € Ü   A q¨!´D×4DÑ4DÔEÐØ×Ñœ*Ð&7×&>Ñ&>Ô?Ü˜q ! Q¨°!Ô4ˆØ×Ñœ* o×&<Ñ&<Ô=Ü˜a  A q´×1AÑ1AÈÔUˆØ×Ñ˜ .×"7Ñ"7Ó"9¸!Ñ"<×"EÑ"EÀaÈÓ"OÔPØ×Ñ˜ .×"7Ñ"7Ó"9¸!Ñ"<×"EÑ"EÀaÈÓ"OÔPØ×ÑÐ9¸>×;QÑ;QÓ;SÔTÜØˆq�!�Qœt×1Ñ1Ð8Nô
ˆð 	×Ñ˜ .×"7Ñ"7Ó"9¸!Ñ"<×"EÑ"EÀaÈÓ"OÔPØ×Ñ˜ .×"7Ñ"7Ó"9¸!Ñ"<×"EÑ"EÀaÈÓ"OÔPÜØˆq�!�Qœt×/Ñ/¸AÀOô
ˆð 	×ÑÐ0°,×2EÑ2EÓ2GÕHr   c                 óà  — t        dd«      }| j                  |j                  d«       | j                  |j                  d«       ddddt        j
                  ddf|_        d|_        d|_        |j                  «        | j                  |j                  «       | j                  |j                  «       | j                  |j                  «       | j                  |j                  «       «       y )Nr   Tr   é
   ó   abcd)r   r   Úrecvr1   r   r7   ÚheaderÚlengthrC   ÚclearÚassertIsNoneÚassertFalseÚhas_mask)r   Úfbs     r   Útest_frame_bufferzABNFTest.test_frame_bufferŒ   sµ   € Ü˜!˜TÓ"ˆØ×Ñ˜Ÿ™ !Ô$Ø×Ñ˜×0Ñ0°$Ô7Ø˜˜1˜a¤×!1Ñ!1°1°bÐ9ˆŒ	ØˆŒ	ØˆŒØ
�‰Œ
Ø×Ñ˜"Ÿ)™)Ô$Ø×Ñ˜"Ÿ)™)Ô$Ø×Ñ˜"Ÿ-™-Ô(Ø×Ñ˜Ÿ™›Õ'r   c                 ó�  ‡— d}dt        t        |«      g«      z   |z   }|d d |dd |dd |dd  gŠˆfd„}t        |d¬«      }|j                  «       }| j	                  |j
                  d«       | j	                  |j                  t        j                  «       | j	                  |j                  |«       | j	                  ‰g «       y )	Ns   Helloó   �r   rO   é   c                 ó@   •— ‰st        d«      ‚‰j                  d«      S )Nz recv called after buffer drainedr   )ÚAssertionErrorÚpop)Ú_Úchunkss    €r   Úchunked_recvzQABNFTest.test_frame_buffer_recv_frame_handles_chunked_reads.<locals>.chunked_recvž   s    ø€ ÙÜ$Ð%GÓHÐHØ—:‘:˜a“=Ð r   Fr0   )
ÚbytesÚlenr   Ú
recv_framer   r   r   r   r7   r   )r   ÚpayloadÚframe_bytesru   rk   Úframert   s         @r   Ú2test_frame_buffer_recv_frame_handles_chunked_readsz;ABNFTest.test_frame_buffer_recv_frame_handles_chunked_reads™   s¼   ø€ ØˆØ¤¤s¨7£| nÓ 5Ñ5¸Ñ?ˆØ˜b˜q�/ ;¨q°Ð#3°[ÀÀ1Ð5EÀ{ÐSTÐSUÀÐWˆô	!ô
 ˜,¸UÔCˆØ—‘“ˆà×Ñ˜Ÿ™ AÔ&Ø×Ñ˜Ÿ™¤t×'7Ñ'7Ô8Ø×Ñ˜Ÿ™ WÔ-Ø×Ñ˜ Õ$r   c                 ó>  ‡— t        d«      Šˆfd„}t        |d¬«      }|j                  d«      }| j                  |d«       | j                  |j                  dg«       |j                  d«      }| j                  |d«       | j                  |j                  g «       y )	Ns   abcdefc                 óX   •— ‰st        d«      ‚t        ‰«      }‰j                  «        |S )Nzrecv called with empty buffer)rq   rv   rg   )rs   ÚchunkÚ	remainings     €r   Úgreedy_recvzIABNFTest.test_recv_strict_preserves_unconsumed_bytes.<locals>.greedy_recv®   s+   ø€ ÙÜ$Ð%DÓEÐEÜ˜)Ó$ˆEØ�O‰OÔØˆLr   Tr0   ro   rc   s   efrO   )Ú	bytearrayr   Úrecv_strictr   Úrecv_buffer)r   r�   rk   ÚfirstÚsecondr€   s        @r   Ú+test_recv_strict_preserves_unconsumed_bytesz4ABNFTest.test_recv_strict_preserves_unconsumed_bytes«   s†   ø€ Ü˜iÓ(ˆ	ô	ô ˜+¸DÔAˆØ—‘˜qÓ!ˆØ×Ñ˜ Ô(à×Ñ˜Ÿ™¨%¨Ô1à—‘ Ó"ˆØ×Ñ˜ Ô'Ø×Ñ˜Ÿ™¨Õ,r   c                 ó°  ‡‡— g d¢Šˆfd„}t        |d¬«      }| j                  |j                  d«      d«       | j                  |j                  d«      d«       | j                  ‰g «       g d	¢Šˆfd
„}t        |d¬«      }| j                  |j                  d«      d«       | j                  |j                  d«      d«       | j                  ‰g «       y )N)ó   abNó   cdc                 ó&   •— ‰j                  d«      S ©Nr   ©rr   )rs   Ú
calls_nones    €r   Ú	recv_nonezGABNFTest.test_recv_strict_handles_none_and_non_bytes.<locals>.recv_noneÂ   s   ø€ Ø—>‘> !Ó$Ð$r   Tr0   ro   r‰   rO   rŠ   )ó   xyÚzzó   pqc                 ó&   •— ‰j                  d«      S rŒ   r�   )rs   Ú	calls_strs    €r   Úrecv_strzFABNFTest.test_recv_strict_handles_none_and_non_bytes.<locals>.recv_strÌ   s   ø€ Ø—=‘= Ó#Ð#r   r�   r’   )r   r   rƒ   )r   r�   Úfb_noner•   Úfb_strrŽ   r”   s        @@r   Ú+test_recv_strict_handles_none_and_non_bytesz4ABNFTest.test_recv_strict_handles_none_and_non_bytes¿   s¿   ù€ Ú)ˆ
ô	%ô ˜y¸tÔDˆØ×Ñ˜×,Ñ,¨QÓ/°Ô7Ø×Ñ˜×,Ñ,¨QÓ/°Ô7Ø×Ñ˜ RÔ(â(ˆ	ô	$ô ˜h¸TÔBˆØ×Ñ˜×+Ñ+¨AÓ.°Ô6Ø×Ñ˜×+Ñ+¨AÓ.°Ô6Ø×Ñ˜ BÕ'r   N)Ú__name__Ú
__module__Ú__qualname__r   r.   r?   rG   rM   r`   rl   r|   r‡   r˜   © r   r   r
   r
      s8   „ ò
+ò	Aò(
òT,ò	LòIò&(ò%ò$-ó((r   r
   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚAbnfPureUnitTestsc                 ó¢  ‡‡— dd l m} dŠdŠt        ˆˆfd„t        t	        ‰«      «      D «       «      }t
        j                  j                  t        j                  d d dœ«      5  t        j                  |«      }| j                  |j                  j                  ‰‰«      |«       d d d «       t        j                  «       y # 1 sw Y   ŒxY w)Nr   s   s   	c              3   ó:   •K  — | ]  }‰|d z     ‰|   z  –— Œ y­w)ro   Nrœ   )Ú.0Úir   Úmask_keys     €€r   ú	<genexpr>z>AbnfPureUnitTests.test_mask_without_wsaccel.<locals>.<genexpr>Û   s"   øè ø€ ÒM°q˜ ! a¡%™¨4°©7Õ2ÑMùs   ƒ)Úwsaccelzwsaccel.xormask)r"   r#   rv   Úrangerw   r   ÚpatchÚdictÚsysÚmodulesÚ	importlibÚreloadr   r   Úmask)r   Úabnf_moduleÚexpectedÚreloadedr   r£   s       @@r   Útest_mask_without_wsaccelz+AbnfPureUnitTests.test_mask_without_wsaccelÖ   sž   ù€ Ý-à&ˆØ$ˆÜÔM¼EÄ#ÀdÃ)Ó<LÔMÓMˆä�Z‰Z�_‰_œSŸ[™[°dÈtÑ*TÓUñ 	KÜ ×'Ñ'¨Ó4ˆHØ×Ñ˜XŸ]™]×/Ñ/°¸$Ó?ÀÔJ÷	Kô 	×Ñ˜Õ"÷		Kð 	Kús   Á%ACÃCc           
      óö  — t        ddddt         j                  dd¬«      }|j                  «       }| j                  |d   d«       | j                  |dd dj	                  dd«      «       t        ddddt         j
                  dd	d
z  ¬«      }|j                  «       }| j                  |d   d«       | j                  t        |dd «      d«       | j                  t        j                  |dd d«      d
«       y )Nr   r   s~   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrB   é~   rO   ro   rQ   ó   yiÐ é   rb   é   )	r   r7   rW   r   rX   rZ   rw   ÚintÚ
from_bytes)r   Ú	frame_126Ú	formattedÚframe_65536Úformatted_longs        r   Ú!test_format_encodes_large_lengthsz3AbnfPureUnitTests.test_format_encodes_large_lengthsã   sì   € ÜØˆq�!�Qœt×/Ñ/¸AÀJô
ˆ	ð ×$Ñ$Ó&ˆ	Ø×Ñ˜ 1™ tÔ,Ø×Ñ˜ 1 Q˜¨#¯©¸¸5Ó)AÔBäØˆq�!�Qœt×1Ñ1¸aÀdÈUÁlô
ˆð %×+Ñ+Ó-ˆØ×Ñ˜¨Ñ*¨DÔ1Ø×Ñœ˜^¨A¨bÐ1Ó2°AÔ6Ø×ÑœŸ™¨°q¸Ð(<¸eÓDÀeÕLr   c                 óÐ  — t        dd¬«      }t        dt        j                  dd¬«      }|j                  |«       |j	                  |«       t        dt        j
                  dd¬«      }|j                  |«       |j	                  |«       | j                  |j                  |«      «       | j                  t        «      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)NF)Úfire_cont_framer1   r   s   ð()r   r   r   rC   r   s   Œ()r   r   r7   r6   ÚaddÚOPCODE_CONTÚ
assertTrueÚis_firer5   r   Úextract)r   ÚcontÚstartÚends       r   Ú)test_continuous_frame_invalid_utf8_raisesz;AbnfPureUnitTests.test_continuous_frame_invalid_utf8_raisesó   s½   € Ü°ÈEÔRˆÜØÜ×#Ñ#ØØô	
ˆð 	�‰�eÔØ�‰�ŒäØÜ×#Ñ#ØØô	
ˆð 	�‰�cÔØ�‰�ŒØ�‰˜Ÿ™ SÓ)Ô*Ø×ÑÔ8Ó9ñ 	Ø�L‰L˜Ô÷	÷ 	ñ 	ús   ÃCÃC%N)r™   rš   r›   r±   r½   rÈ   rœ   r   r   rž   rž   Õ   s   „ ò#òMó r   rž   Ú__main__)r«   r©   Úunittestr   r"   r   r   r   Úwebsocket._exceptionsr   r   ÚTestCaser
   rž   r™   Úmainrœ   r   r   ú<module>rÎ      sc   ðó Û 
Û Ý ç @Ñ @ß Wðô(s(ˆx× Ñ ô s(ôl3˜×)Ñ)ô 3ðl ˆzÒØ€H‡M�M…Oð r   