§
    Ètºfõ.  ã                   óô   — d Z ddlmZ ddlmZ ddlmZ ddlmZ dZ	e	ddd	d
dfde
de
de
de
de
de
de
fd„Ze	dddddfde
de
de
de
de
de
de
fd„Ze	ddddfde
de
de
de
de
de
fd„Z G d„ dej        ¦  «        ZdS )z7
Test cases for L{twisted.protocols.haproxy.V2Parser}.
é    )Úaddress)Úunittesté   )Ú	_v2parser)ÚInvalidProxyHeaders   

 
QUIT
ó   !s    $s                                  s   �"¸ÚsigÚverComÚfamProtoÚ
addrLengthÚaddrsÚportsÚreturnc                 ó$   — | |z   |z   |z   |z   |z   S )aV  
    Construct a version 2 IPv6 header with custom bytes.

    @param sig: The protocol signature; defaults to valid L{V2_SIGNATURE}.
    @type sig: L{bytes}

    @param verCom: Protocol version and command.  Defaults to V2 PROXY.
    @type verCom: L{bytes}

    @param famProto: Address family and protocol.  Defaults to AF_INET6/STREAM.
    @type famProto: L{bytes}

    @param addrLength: Network-endian byte length of payload.  Defaults to
        description of default addrs/ports.
    @type addrLength: L{bytes}

    @param addrs: Address payload.  Defaults to C{::1} for source and
        destination.
    @type addrs: L{bytes}

    @param ports: Source and destination ports.  Defaults to 8080 for source
        8888 for destination.
    @type ports: L{bytes}

    @return: A packet with header, addresses, and ports.
    @rtype: L{bytes}
    © ©r	   r
   r   r   r   r   s         úk/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/protocols/haproxy/test/test_v2parser.pyÚ_makeHeaderIPv6r      ó#   € ðF �‰<˜(Ñ" ZÑ/°%Ñ7¸%Ñ?Ð?ó    ó   s    s       c                 ó$   — | |z   |z   |z   |z   |z   S )aX  
    Construct a version 2 IPv4 header with custom bytes.

    @param sig: The protocol signature; defaults to valid L{V2_SIGNATURE}.
    @type sig: L{bytes}

    @param verCom: Protocol version and command.  Defaults to V2 PROXY.
    @type verCom: L{bytes}

    @param famProto: Address family and protocol.  Defaults to AF_INET/STREAM.
    @type famProto: L{bytes}

    @param addrLength: Network-endian byte length of payload.  Defaults to
        description of default addrs/ports.
    @type addrLength: L{bytes}

    @param addrs: Address payload.  Defaults to 127.0.0.1 for source and
        destination.
    @type addrs: L{bytes}

    @param ports: Source and destination ports.  Defaults to 8080 for source
        8888 for destination.
    @type ports: L{bytes}

    @return: A packet with header, addresses, and ports.
    @rtype: L{bytes}
    r   r   s         r   Ú_makeHeaderIPv4r   6   r   r   ó   1s    ØsØ   /home/tests/mysockets/sock                                                                                  /home/tests/mysockets/sock                                                                                  c                 ó   — | |z   |z   |z   |z   S )að  
    Construct a version 2 IPv4 header with custom bytes.

    @param sig: The protocol signature; defaults to valid L{V2_SIGNATURE}.
    @type sig: L{bytes}

    @param verCom: Protocol version and command.  Defaults to V2 PROXY.
    @type verCom: L{bytes}

    @param famProto: Address family and protocol.  Defaults to AF_UNIX/STREAM.
    @type famProto: L{bytes}

    @param addrLength: Network-endian byte length of payload.  Defaults to 108
        bytes for 2 null terminated paths.
    @type addrLength: L{bytes}

    @param addrs: Address payload.  Defaults to C{/home/tests/mysockets/sock}
        for source and destination paths.
    @type addrs: L{bytes}

    @return: A packet with header, addresses, and8 ports.
    @rtype: L{bytes}
    r   )r	   r
   r   r   r   s        r   Ú_makeHeaderUnixr   \   s   € ðF �‰<˜(Ñ" ZÑ/°%Ñ7Ð7r   c                   óÒ   — 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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d„Zdd„Zdd„ZdS )ÚV2ParserTestsz?
    Test L{twisted.protocols.haproxy.V2Parser} behaviour.
    r   Nc                 ó†   — t          ¦   «         }|                      t          j                             |¦  «        ¦  «         dS )zL
        Test if a well formed IPv4 header is parsed without error.
        N)r   Ú
assertTruer   ÚV2ParserÚparse©ÚselfÚheaders     r   Útest_happyPathIPv4z V2ParserTests.test_happyPathIPv4‡   ó8   € õ !Ñ"Ô"ˆØ�Š�	Ô*×0Ò0°Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9r   c                 ó†   — t          ¦   «         }|                      t          j                             |¦  «        ¦  «         dS )zL
        Test if a well formed IPv6 header is parsed without error.
        N)r   r    r   r!   r"   r#   s     r   Útest_happyPathIPv6z V2ParserTests.test_happyPathIPv6Ž   r'   r   c                 ó†   — t          ¦   «         }|                      t          j                             |¦  «        ¦  «         dS )zL
        Test if a well formed UNIX header is parsed without error.
        N)r   r    r   r!   r"   r#   s     r   Útest_happyPathUnixz V2ParserTests.test_happyPathUnix•   r'   r   c                 ó|   — t          d¬¦  «        }|                      t          t          j        j        |¦  «         dS )zN
        Test if an invalid signature block raises InvalidProxyError.
        s               )r	   N©r   ÚassertRaisesr   r   r!   r"   r#   s     r   Útest_invalidSignaturez#V2ParserTests.test_invalidSignatureœ   sE   € õ ! \Ð2Ñ2Ô2ˆØ×ÒÝÝÔÔ$Øñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó|   — t          d¬¦  «        }|                      t          t          j        j        |¦  «         dS )zF
        Test if an invalid version raises InvalidProxyError.
        r   ©r
   Nr-   r#   s     r   Útest_invalidVersionz!V2ParserTests.test_invalidVersion§   óE   € õ !¨Ð0Ñ0Ô0ˆØ×ÒÝÝÔÔ$Øñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó|   — t          d¬¦  «        }|                      t          t          j        j        |¦  «         dS )zF
        Test if an invalid command raises InvalidProxyError.
        ó   #r1   Nr-   r#   s     r   Útest_invalidCommandz!V2ParserTests.test_invalidCommand²   r3   r   c                 ó|   — t          d¬¦  «        }|                      t          t          j        j        |¦  «         dS )zE
        Test if an invalid family raises InvalidProxyError.
        ó   @©r   Nr-   r#   s     r   Útest_invalidFamilyz V2ParserTests.test_invalidFamily½   óE   € õ !¨'Ð2Ñ2Ô2ˆØ×ÒÝÝÔÔ$Øñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó|   — t          d¬¦  «        }|                      t          t          j        j        |¦  «         dS )zG
        Test if an invalid protocol raises InvalidProxyError.
        ó   $r9   Nr-   r#   s     r   Útest_invalidProtozV2ParserTests.test_invalidProtoÈ   r;   r   c                 óÌ   — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        ¦  «         dS )zU
        Test that local does not return endpoint data for IPv4 connections.
        ó    r1   N©r   r   r!   r"   ÚassertFalseÚsourceÚdestination©r$   r%   Úinfos      r   Útest_localCommandIpv4z#V2ParserTests.test_localCommandIpv4Ó   ó]   € õ !¨Ð0Ñ0Ô0ˆÝÔ!×'Ò'¨Ñ/Ô/ˆØ×Ò˜œÑ%Ô%Ð%Ø×Ò˜Ô)Ñ*Ô*Ð*Ð*Ð*r   c                 óÌ   — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        ¦  «         dS )zU
        Test that local does not return endpoint data for IPv6 connections.
        r@   r1   N©r   r   r!   r"   rB   rC   rD   rE   s      r   Útest_localCommandIpv6z#V2ParserTests.test_localCommandIpv6Ü   rH   r   c                 óÌ   — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        ¦  «         dS )zU
        Test that local does not return endpoint data for UNIX connections.
        r@   r1   N©r   r   r!   r"   rB   rC   rD   rE   s      r   Útest_localCommandUnixz#V2ParserTests.test_localCommandUnixå   rH   r   c                 ó`  — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        t          j        ¦  «         |                      |j	        ¦  «         |                      |j	        t          j        ¦  «         dS )zM
        Test that proxy returns endpoint data for IPv4 connections.
        r   r1   N)
r   r   r!   r"   r    rC   ÚassertIsInstancer   ÚIPv4AddressrD   rE   s      r   Útest_proxyCommandIpv4z#V2ParserTests.test_proxyCommandIpv4î   ó�   € õ !¨Ð0Ñ0Ô0ˆÝÔ!×'Ò'¨Ñ/Ô/ˆØ�Š˜œÑ$Ô$Ð$Ø×Ò˜dœk­7Ô+>Ñ?Ô?Ð?Ø�Š˜Ô(Ñ)Ô)Ð)Ø×Ò˜dÔ.µÔ0CÑDÔDÐDÐDÐDr   c                 ó`  — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        t          j        ¦  «         |                      |j	        ¦  «         |                      |j	        t          j        ¦  «         dS )zM
        Test that proxy returns endpoint data for IPv6 connections.
        r   r1   N)
r   r   r!   r"   r    rC   rP   r   ÚIPv6AddressrD   rE   s      r   Útest_proxyCommandIpv6z#V2ParserTests.test_proxyCommandIpv6ù   rS   r   c                 ó`  — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        t          j        ¦  «         |                      |j	        ¦  «         |                      |j	        t          j        ¦  «         dS )zM
        Test that proxy returns endpoint data for UNIX connections.
        r   r1   N)
r   r   r!   r"   r    rC   rP   r   ÚUNIXAddressrD   rE   s      r   Útest_proxyCommandUnixz#V2ParserTests.test_proxyCommandUnix  rS   r   c                 óÌ   — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        ¦  «         dS )úV
        Test that UNSPEC does not return endpoint data for IPv4 connections.
        ó   r9   NrA   rE   s      r   Útest_unspecFamilyIpv4z#V2ParserTests.test_unspecFamilyIpv4  ó]   € õ !¨'Ð2Ñ2Ô2ˆÝÔ!×'Ò'¨Ñ/Ô/ˆØ×Ò˜œÑ%Ô%Ð%Ø×Ò˜Ô)Ñ*Ô*Ð*Ð*Ð*r   c                 óÌ   — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        ¦  «         dS )úV
        Test that UNSPEC does not return endpoint data for IPv6 connections.
        r\   r9   NrJ   rE   s      r   Útest_unspecFamilyIpv6z#V2ParserTests.test_unspecFamilyIpv6  r^   r   c                 óÌ   — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        ¦  «         dS )úV
        Test that UNSPEC does not return endpoint data for UNIX connections.
        r\   r9   NrM   rE   s      r   Útest_unspecFamilyUnixz#V2ParserTests.test_unspecFamilyUnix!  r^   r   c                 óÌ   — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        ¦  «         dS )r[   ó   r9   NrA   rE   s      r   Útest_unspecProtoIpv4z"V2ParserTests.test_unspecProtoIpv4*  r^   r   c                 óÌ   — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        ¦  «         dS )r`   r@   r9   NrJ   rE   s      r   Útest_unspecProtoIpv6z"V2ParserTests.test_unspecProtoIpv63  r^   r   c                 óÌ   — t          d¬¦  «        }t          j                             |¦  «        }|                      |j        ¦  «         |                      |j        ¦  «         dS )rc   ó   0r9   NrM   rE   s      r   Útest_unspecProtoUnixz"V2ParserTests.test_unspecProtoUnix<  r^   r   c                 óØ   — d}t          ¦   «         |z   }t          j        ¦   «         }|                     |¦  «        \  }}|                      |¦  «         |                      ||¦  «         dS )zU
        Test that overflow bits are preserved during feed parsing for IPv4.
        ó   TEST DATA

TEST DATAN)r   r   r!   Úfeedr    ÚassertEqual©r$   Ú	testValuer%   ÚparserrF   Úoverflows         r   Útest_overflowIpv4zV2ParserTests.test_overflowIpv4E  ój   € ð 2ˆ	Ý Ñ"Ô" YÑ.ˆÝÔ#Ñ%Ô%ˆØŸš VÑ,Ô,‰ˆˆhØ�Š˜ÑÔÐØ×Ò˜ 9Ñ-Ô-Ð-Ð-Ð-r   c                 óØ   — d}t          ¦   «         |z   }t          j        ¦   «         }|                     |¦  «        \  }}|                      |¦  «         |                      ||¦  «         dS )zU
        Test that overflow bits are preserved during feed parsing for IPv6.
        rn   N)r   r   r!   ro   r    rp   rq   s         r   Útest_overflowIpv6zV2ParserTests.test_overflowIpv6P  rv   r   c                 óØ   — d}t          ¦   «         |z   }t          j        ¦   «         }|                     |¦  «        \  }}|                      |¦  «         |                      ||¦  «         dS )zU
        Test that overflow bits are preserved during feed parsing for Unix.
        rn   N)r   r   r!   ro   r    rp   rq   s         r   Útest_overflowUnixzV2ParserTests.test_overflowUnix[  rv   r   c                 ór   — d}t          j        ¦   «         }|                      t          |j        |¦  «         dS )zK
        Test that an initial payload of less than 16 bytes fails.
        s   NEEDMOREDATAN)r   r!   r.   r   ro   )r$   rr   rs   s      r   Útest_segmentTooSmallz"V2ParserTests.test_segmentTooSmallf  sD   € ð $ˆ	ÝÔ#Ñ%Ô%ˆØ×ÒÝØŒKØñ	
ô 	
ð 	
ð 	
ð 	
r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r&   r)   r+   r/   r2   r6   r:   r>   rG   rK   rN   rR   rV   rY   r]   ra   rd   rg   ri   rl   ru   rx   rz   r|   r   r   r   r   r   ‚   s
  € € € € € ðð ð:ð :ð :ð :ð:ð :ð :ð :ð:ð :ð :ð :ð	
ð 	
ð 	
ð 	
ð	
ð 	
ð 	
ð 	
ð	
ð 	
ð 	
ð 	
ð	
ð 	
ð 	
ð 	
ð	
ð 	
ð 	
ð 	
ð+ð +ð +ð +ð+ð +ð +ð +ð+ð +ð +ð +ð	Eð 	Eð 	Eð 	Eð	Eð 	Eð 	Eð 	Eð	Eð 	Eð 	Eð 	Eð+ð +ð +ð +ð+ð +ð +ð +ð+ð +ð +ð +ð+ð +ð +ð +ð+ð +ð +ð +ð+ð +ð +ð +ð	.ð 	.ð 	.ð 	.ð	.ð 	.ð 	.ð 	.ð	.ð 	.ð 	.ð 	.ð

ð 

ð 

ð 

ð 

ð 

r   r   N)r€   Útwisted.internetr   Útwisted.trialr   Ú r   Ú_exceptionsr   ÚV2_SIGNATUREÚbytesr   r   r   ÚTestCaser   r   r   r   ú<module>rˆ      sü  ððð ð %Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,àB€ð ØØØ#Ø1Ø&ð#@ð #@Ø	ð#@àð#@ð ð#@ð ð	#@ð
 ð#@ð ð#@ð ð#@ð #@ð #@ð #@ðN ØØØ#Ø6Ø&ð#@ð #@Ø	ð#@àð#@ð ð#@ð ð	#@ð
 ð#@ð ð#@ð ð#@ð #@ð #@ð #@ðN ØØØ#ðð#8ð #8Ø	ð#8àð#8ð ð#8ð ð	#8ð
 ð#8ð ð#8ð #8ð #8ð #8ðLn
ð n
ð n
ð n
ð n
�HÔ%ñ n
ô n
ð n
ð n
ð n
r   