§
    JŠtj  ã                   ó˜   — d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	 	  G d„ de j
        ¦  «        Zedk    r e j        ¦   «          dS dS )	é    N)ÚMockÚpatch)Ú_get_resp_headers)ÚWebSocketBadStatusException)ÚSSLErrorc                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚHandshakeLargeResponseTestc           	      ó2  ‡‡— t          ¦   «         }dddz  z   Šg Šˆˆfd„}t          d¦  «        5 }ddt          t          ‰¦  «        ¦  «        idf|_        t          d	|¬
¦  «        5  |                      t          ¦  «        5 }t          |¦  «         ddd¦  «         n# 1 swxY w Y   |                      dt          |j
        j        d         t          ¦  «        r$|j
        j        d                              ¦   «         n|j
        j        d         ¦  «         |                      t          ‰¦  «        d¦  «         |                      t          d„ ‰D ¦   «         ¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )zHTest that large HTTP error responses during handshake are read in chunkss   Error details: ó   Ai N  c                 ól   •— ‰                      |¦  «         |dk    rt          d¦  «        ‚‰d |…         S )Né @  z[SSL: BAD_LENGTH] unknown error)Úappendr   )ÚsockÚbufsizeÚlarge_responseÚ
recv_callss     €€úk/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/websocket/tests/test_handshake_large_response.pyÚ	mock_recvzWHandshakeLargeResponseTest.test_large_error_response_chunked_reading.<locals>.mock_recv)   s>   ø€ Ø×Ò˜gÑ&Ô&Ð&à˜ŠˆÝÐ@ÑAÔAÐAØ! ( 7 (Ô+Ð+ó    ú!websocket._handshake.read_headersi�  úcontent-lengthzBad Requestúwebsocket._socket.recv©Úside_effectNs   Error details:r   é   c              3   ó"   K  — | ]
}|d k    V — ŒdS )r   N© )Ú.0Úcalls     r   ú	<genexpr>zWHandshakeLargeResponseTest.test_large_error_response_chunked_reading.<locals>.<genexpr>J   s&   è è € Ð#IÐ#I°d D¨E¢MÐ#IÐ#IÐ#IÐ#IÐ#IÐ#Ir   )r   r   ÚstrÚlenÚreturn_valueÚassertRaisesr   r   ÚassertInÚ
isinstanceÚ	exceptionÚargsÚencodeÚassertGreaterÚ
assertTrueÚall)ÚselfÚ	mock_sockr   Úmock_read_headersÚcmr   r   s        @@r   Ú)test_large_error_response_chunked_readingzDHandshakeLargeResponseTest.test_large_error_response_chunked_reading   sŒ  øø€ õ ‘F”Fˆ	ð ,¨d°U©lÑ:ˆð ˆ
ð	,ð 	,ð 	,ð 	,ð 	,ð 	,õ Ð6Ñ7Ô7ð 	KÐ;LàØ!¥3¥s¨>Ñ':Ô':Ñ#;Ô#;Ð<Øð.ÐÔ*õ Ð/¸YÐGÑGÔGð Kð Kà×&Ò&Õ'BÑCÔCð 1ÀrÝ% iÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð —’Ø%õ & b¤lÔ&7¸Ô&:½CÑ@Ô@ð2˜œÔ)¨!Ô,×3Ò3Ñ5Ô5Ð5àœ\Ô.¨qÔ1ñô ð ð ×"Ò"¥3 z¡?¤?°AÑ6Ô6Ð6Ø—’¥Ð#IÐ#I¸jÐ#IÑ#IÔ#IÑ IÔ IÑJÔJÐJð#Kð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð 	Kð 	KsZ   °8FÁ(E4ÂBÂE4ÂB#Â#E4Â&B#Â'CE4Å(FÅ4E8	Å8FÅ;E8	Å<FÆFÆFc                 ó  ‡‡— t          ¦   «         }ddz  ŠdŠˆˆfd„}t          d¦  «        5 }ddt          t          ‰¦  «        ¦  «        idf|_        t          d	|¬
¦  «        5  |                      t          ¦  «        5 }t          |¦  «         ddd¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|  	                    d|¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )zATest that the fix prevents SSL BAD_LENGTH errors during handshakeó   Xi €  r   c                 óx   •— ‰dz  }t          ||z   t          ‰¦  «        ¦  «        }‰||…         }‰|rdndz  Š|S )Nr   r   r   )Úminr"   )r   r   Úchunk_startÚ	chunk_endÚresultÚchunks_returnedÚlarge_contents        €€r   Úmock_recv_chunkedzbHandshakeLargeResponseTest.test_handshake_ssl_large_response_protection.<locals>.mock_recv_chunkedV   sR   ø€ ð *¨EÑ1ˆKÝ˜K¨'Ñ1µ3°}Ñ3EÔ3EÑFÔFˆIØ" ;¨yÐ#8Ô9ˆFØ FÐ1˜q˜q°Ñ1ˆOØˆMr   r   iô  r   zInternal Server Errorr   r   NÚXXXXX)
r   r   r!   r"   r#   r$   r   r   r'   r%   )r-   r.   r;   r/   r0   Úexception_strr9   r:   s         @@r   Ú,test_handshake_ssl_large_response_protectionzGHandshakeLargeResponseTest.test_handshake_ssl_large_response_protectionL   sß  øø€ õ ‘F”Fˆ	ð ˜u™ˆàˆð	ð 	ð 	ð 	ð 	ð 	õ Ð6Ñ7Ô7ð 	6Ð;LàØ!¥3¥s¨=Ñ'9Ô'9Ñ#:Ô#:Ð;Ø'ð.ÐÔ*õ Ð/Ð=NÐOÑOÔOð 6ð 6à×&Ò&Õ'BÑCÔCð 1ÀrÝ% iÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1õ !$ B¤LÑ 1Ô 1�à—’˜g }Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6sY   ­8C5Á%CÂ BÂCÂB Â CÂ#B Â$-CÃC5ÃC!	Ã!C5Ã$C!	Ã%C5Ã5C9Ã<C9c                 óò  ‡— t          ¦   «         }dŠˆfd„}t          d¦  «        5 }ddt          t          ‰¦  «        ¦  «        idf|_        t          d|¬¦  «        5  |                      t          ¦  «        5 }t          |¦  «         d	d	d	¦  «         n# 1 swxY w Y   |                      d
t          |j	        ¦  «        ¦  «         d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         d	S # 1 swxY w Y   d	S )z5Test that normal small responses still work correctlys   Small error messagec                 ó   •— ‰S )Nr   )r   r   Úsmall_responses     €r   r   zRHandshakeLargeResponseTest.test_handshake_normal_small_response.<locals>.mock_recvv   s	   ø€ Ø!Ð!r   r   i”  r   z	Not Foundr   r   NzSmall error message)
r   r   r!   r"   r#   r$   r   r   r%   r'   )r-   r.   r   r/   r0   rA   s        @r   Ú$test_handshake_normal_small_responsez?HandshakeLargeResponseTest.test_handshake_normal_small_responsep   sí  ø€ õ ‘F”Fˆ	Ø/ˆð	"ð 	"ð 	"ð 	"ð 	"õ Ð6Ñ7Ô7ð 	HÐ;LàØ!¥3¥s¨>Ñ':Ô':Ñ#;Ô#;Ð<Øð.ÐÔ*õ Ð/¸YÐGÑGÔGð Hð HØ×&Ò&Õ'BÑCÔCð 1ÀrÝ% iÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð —’Ð3µS¸¼Ñ5FÔ5FÑGÔGÐGðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hð	Hð 	Hð 	Hñ 	Hô 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Høøøð 	Hð 	Hð 	Hð 	Hð 	Hð 	HsY   ¦8C,ÁCÁ9BÂ	CÂBÂCÂBÂ+CÃC,ÃC	ÃC,ÃC	ÃC,Ã,C0Ã3C0c                 óˆ  — t          ¦   «         }t          d¦  «        5 }di df|_        |                      t          ¦  «        5 }t          |¦  «         ddd¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      d|¦  «         |                      d|¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z;Test handshake error response without content-length headerr   i“  Ú	ForbiddenNÚ403)	r   r   r#   r$   r   r   r!   r'   r%   )r-   r.   r/   r0   r=   s        r   Ú test_handshake_no_content_lengthz;HandshakeLargeResponseTest.test_handshake_no_content_length‡   sB  € õ ‘F”Fˆ	åÐ6Ñ7Ô7ð 	6Ð;LàØØð.ÐÔ*ð ×"Ò"Õ#>Ñ?Ô?ð -À2Ý! )Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -õ   ¤Ñ-Ô-ˆMØ�MŠM˜% Ñ/Ô/Ð/Ø�MŠM˜+ }Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6s6   ž%B7ÁAÁB7ÁA#	Á#B7Á&A#	Á'AB7Â7B;Â>B;N)Ú__name__Ú
__module__Ú__qualname__r1   r>   rB   rF   r   r   r   r	   r	      sX   € € € € € ð-Kð -Kð -Kð^"6ð "6ð "6ðHHð Hð Hð.6ð 6ð 6ð 6ð 6r   r	   Ú__main__)ÚunittestÚunittest.mockr   r   Úwebsocket._handshaker   Úwebsocket._exceptionsr   Úwebsocket._ssl_compatr   ÚTestCaser	   rG   Úmainr   r   r   ú<module>rR      s½   ðà €€€Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø =Ð =Ð =Ð =Ð =Ð =Ø *Ð *Ð *Ð *Ð *Ð *ðð&~6ð ~6ð ~6ð ~6ð ~6 Ô!2ñ ~6ô ~6ð ~6ðB ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   