§
    Ètºf¡  ã                   óh   — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
  G d„ dej        ¦  «        Zd	S )
z7
Test cases for L{twisted.protocols.haproxy.V1Parser}.
é    )Úaddress)Úunittesté   )Ú	_v1parser)ÚInvalidNetworkProtocolÚInvalidProxyHeaderÚMissingAddressDatac                   ób   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	dd
„Z
dd„Zdd„Zdd„ZdS )ÚV1ParserTestsz?
    Test L{twisted.protocols.haproxy.V1Parser} behaviour.
    ÚreturnNc                 ó\   — |                       t          t          j        j        d¦  «         dS )zT
        Test that an exception is raised when the PROXY header is missing.
        s	   NOTPROXY N)ÚassertRaisesr   r   ÚV1ParserÚparse©Úselfs    úk/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/protocols/haproxy/test/test_v1parser.pyÚtest_missingPROXYHeaderValuez*V1ParserTests.test_missingPROXYHeaderValue   s5   € ð 	×ÒÝÝÔÔ$Øñ	
ô 	
ð 	
ð 	
ð 	
ó    c                 ó\   — |                       t          t          j        j        d¦  «         dS )zX
        Test that an exception is raised when the proto is not TCP or UNKNOWN.
        s   PROXY WUTPROTO N)r   r   r   r   r   r   s    r   Útest_invalidNetworkProtocolz)V1ParserTests.test_invalidNetworkProtocol   s5   € ð 	×ÒÝ"ÝÔÔ$Øñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó\   — |                       t          t          j        j        d¦  «         dS )zU
        Test that an exception is raised when the proto has no source data.
        s   PROXY TCP4 N©r   r	   r   r   r   r   s    r   Útest_missingSourceDataz$V1ParserTests.test_missingSourceData'   s5   € ð 	×ÒÝÝÔÔ$Øñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó\   — |                       t          t          j        j        d¦  «         dS )zU
        Test that an exception is raised when the proto has no destination.
        s   PROXY TCP4 127.0.0.1 8080 8888Nr   r   s    r   Útest_missingDestDataz"V1ParserTests.test_missingDestData1   s5   € ð 	×ÒÝÝÔÔ$Ø-ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó  — t           j                             d¦  «        }|                      |j        t
          j        ¦  «         t          |j        t
          j        ¦  «        sJ ‚t          |j        t
          j        ¦  «        sJ ‚|  	                    |j        j
        d¦  «         |  	                    |j        j        d¦  «         |  	                    |j        j
        d¦  «         |  	                    |j        j        d¦  «         dS )zE
        Test that parsing is successful for a PROXY header.
        s(   PROXY TCP4 127.0.0.1 127.0.0.1 8080 8888ú	127.0.0.1é�  é¸"  N)r   r   r   ÚassertIsInstanceÚsourcer   ÚIPv4AddressÚ
isinstanceÚdestinationÚassertEqualÚhostÚport©r   Úinfos     r   Útest_fullParsingSuccessz%V1ParserTests.test_fullParsingSuccess;   sç   € õ Ô!×'Ò'Ø7ñ
ô 
ˆð 	×Ò˜dœk­7Ô+>Ñ?Ô?Ð?Ý˜$œ+¥wÔ':Ñ;Ô;Ð;Ð;Ð;Ý˜$Ô*­GÔ,?Ñ@Ô@Ð@Ð@Ð@Ø×Ò˜œÔ)¨;Ñ7Ô7Ð7Ø×Ò˜œÔ)¨4Ñ0Ô0Ð0Ø×Ò˜Ô)Ô.°Ñ<Ô<Ð<Ø×Ò˜Ô)Ô.°Ñ5Ô5Ð5Ð5Ð5r   c                 ó  — t           j                             d¦  «        }|                      |j        t
          j        ¦  «         t          |j        t
          j        ¦  «        sJ ‚t          |j        t
          j        ¦  «        sJ ‚|  	                    |j        j
        d¦  «         |  	                    |j        j        d¦  «         |  	                    |j        j
        d¦  «         |  	                    |j        j        d¦  «         dS )zK
        Test that parsing is successful for an IPv6 PROXY header.
        s   PROXY TCP6 ::1 ::1 8080 8888z::1r   r    N)r   r   r   r!   r"   r   ÚIPv6Addressr$   r%   r&   r'   r(   r)   s     r   Útest_fullParsingSuccess_IPv6z*V1ParserTests.test_fullParsingSuccess_IPv6J   sç   € õ Ô!×'Ò'Ø+ñ
ô 
ˆð 	×Ò˜dœk­7Ô+>Ñ?Ô?Ð?Ý˜$œ+¥wÔ':Ñ;Ô;Ð;Ð;Ð;Ý˜$Ô*­GÔ,?Ñ@Ô@Ð@Ð@Ð@Ø×Ò˜œÔ)¨5Ñ1Ô1Ð1Ø×Ò˜œÔ)¨4Ñ0Ô0Ð0Ø×Ò˜Ô)Ô.°Ñ6Ô6Ð6Ø×Ò˜Ô)Ô.°Ñ5Ô5Ð5Ð5Ð5r   c                 ó¬   — t           j                             d¦  «        }|                      |j        ¦  «         |                      |j        ¦  «         dS )zM
        Test that parsing is successful for a UNKNOWN PROXY header.
        s$   PROXY UNKNOWN anything could go hereN)r   r   r   ÚassertIsNoner"   r%   r)   s     r   Útest_fullParsingSuccess_UNKNOWNz-V1ParserTests.test_fullParsingSuccess_UNKNOWNY   sT   € õ Ô!×'Ò'Ø3ñ
ô 
ˆð 	×Ò˜$œ+Ñ&Ô&Ð&Ø×Ò˜$Ô*Ñ+Ô+Ð+Ð+Ð+r   c                 ól  — t          j        ¦   «         }|                     d¦  «        \  }}|                      |¦  «         |                      |¦  «         |                     d¦  «        \  }}|                      |¦  «         |                      |¦  «         |                     d¦  «        \  }}|                      |¦  «         |€J ‚|€J ‚|                      |j        t          j        ¦  «         t          |j        t          j        ¦  «        sJ ‚t          |j	        t          j        ¦  «        sJ ‚|  
                    |j        j        d¦  «         |  
                    |j        j        d¦  «         |  
                    |j	        j        d¦  «         |  
                    |j	        j        d¦  «         dS )zE
        Test that parsing happens when fed a complete line.
        ó   PROXY TCP4 127.0.0.1 127.0.0.1 ó	   8080 8888s   
Nr   r   r    )r   r   ÚfeedÚassertFalser!   r"   r   r#   r$   r%   r&   r'   r(   ©r   Úparserr*   Ú	remainings       r   Útest_feedParsingzV1ParserTests.test_feedParsingc   s”  € õ Ô#Ñ%Ô%ˆØ Ÿ+š+Ð&HÑIÔI‰ˆˆiØ×Ò˜ÑÔÐØ×Ò˜Ñ#Ô#Ð#Ø Ÿ+š+ lÑ3Ô3‰ˆˆiØ×Ò˜ÑÔÐØ×Ò˜Ñ#Ô#Ð#Ø Ÿ+š+ gÑ.Ô.‰ˆˆiØ×Ò˜Ñ#Ô#Ð#ØÐ$Ð$Ð$ØÐÐÐØ×Ò˜dœk­7Ô+>Ñ?Ô?Ð?Ý˜$œ+¥wÔ':Ñ;Ô;Ð;Ð;Ð;Ý˜$Ô*­GÔ,?Ñ@Ô@Ð@Ð@Ð@Ø×Ò˜œÔ)¨;Ñ7Ô7Ð7Ø×Ò˜œÔ)¨4Ñ0Ô0Ð0Ø×Ò˜Ô)Ô.°Ñ<Ô<Ð<Ø×Ò˜Ô)Ô.°Ñ5Ô5Ð5Ð5Ð5r   c                 óv  — t          j        ¦   «         }|                     d¦  «        \  }}|                      |¦  «         |                      |¦  «         |                     d¦  «        \  }}|                      |¦  «         |                      |¦  «         |                      t
          |j        d¦  «         dS )zN
        Test that parsing fails if no newline is found in 108 bytes.
        r3   r4   sd                                                                                                       N)r   r   r5   r6   r   r   r7   s       r   Útest_feedParsingTooLongz%V1ParserTests.test_feedParsingTooLongz   sº   € õ Ô#Ñ%Ô%ˆØ Ÿ+š+Ð&HÑIÔI‰ˆˆiØ×Ò˜ÑÔÐØ×Ò˜Ñ#Ô#Ð#Ø Ÿ+š+ lÑ3Ô3‰ˆˆiØ×Ò˜ÑÔÐØ×Ò˜Ñ#Ô#Ð#Ø×ÒÝØŒKØñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óæ   — t          j        ¦   «         }|                     d¦  «        \  }}|                      |¦  «         |                      |d¦  «         |                      |j        ¦  «         dS )zH
        Test that parsing leaves overflow bytes in the buffer.
        s:   PROXY TCP4 127.0.0.1 127.0.0.1 8080 8888
HTTP/1.1 GET /
s   HTTP/1.1 GET /
N)r   r   r5   Ú
assertTruer&   r6   Úbufferr7   s       r   Útest_feedParsingOverflowz&V1ParserTests.test_feedParsingOverflow‹   ss   € õ Ô#Ñ%Ô%ˆØ Ÿ+š+ØMñ
ô 
‰ˆˆið 	�Š˜ÑÔÐØ×Ò˜Ð$9Ñ:Ô:Ð:Ø×Ò˜œÑ'Ô'Ð'Ð'Ð'r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r+   r.   r1   r:   r<   r@   © r   r   r   r      sæ   € € € € € ðð ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð6ð 6ð 6ð 6ð6ð 6ð 6ð 6ð,ð ,ð ,ð ,ð6ð 6ð 6ð 6ð.
ð 
ð 
ð 
ð"
(ð 
(ð 
(ð 
(ð 
(ð 
(r   r   N)rD   Útwisted.internetr   Útwisted.trialr   Ú r   Ú_exceptionsr   r   r	   ÚTestCaser   rE   r   r   ú<module>rK      s¦   ððð ð %Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XðG(ð G(ð G(ð G(ð G(�HÔ%ñ G(ô G(ð G(ð G(ð G(r   