+
    üÐj¡  ã                   ól   € R t ^ RIHt ^ RIHt ^RIHt ^RIHtH	t	H
t
  ! R R]P                  4      tR# )z7
Test cases for L{twisted.protocols.haproxy.V1Parser}.
)Úaddress)Úunittest)Ú	_v1parser)ÚInvalidNetworkProtocolÚInvalidProxyHeaderÚMissingAddressDatac                   óØ   a € ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRtV tR# )ÚV1ParserTestsz7
Test L{twisted.protocols.haproxy.V1Parser} behaviour.
c                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnN© )ÚformatÚ__classdict__s   "€ÚN/usr/lib/python3/dist-packages/twisted/protocols/haproxy/test/test_v1parser.pyÚ__annotate__ÚV1ParserTests.__annotate__   s   ø€ ÷ 
ñ 
¨dñ 
ó    c                ód   € V P                  \        \        P                  P                  R4       R# )zD
Test that an exception is raised when the PROXY header is missing.
s	   NOTPROXY N)ÚassertRaisesr   r   ÚV1ParserÚparse©Úselfs   &r   Útest_missingPROXYHeaderValueÚ*V1ParserTests.test_missingPROXYHeaderValue   s'   € ð 	×ÑÜÜ×Ñ×$Ñ$Øö	
r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r      s   ø€ ÷ 
ñ 
¨Tñ 
r   c                ód   € V P                  \        \        P                  P                  R4       R# )zH
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_invalidNetworkProtocolÚ)V1ParserTests.test_invalidNetworkProtocol   s'   € ð 	×ÑÜ"Ü×Ñ×$Ñ$Øö	
r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   '   s   ø€ ÷ 
ñ 
¨ñ 
r   c                ód   € V P                  \        \        P                  P                  R4       R# )zE
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_missingSourceDataÚ$V1ParserTests.test_missingSourceData'   s'   € ð 	×ÑÜÜ×Ñ×$Ñ$Øö	
r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   1   s   ø€ ÷ 
ñ 
 dñ 
r   c                ód   € V P                  \        \        P                  P                  R4       R# )zE
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_missingDestDataÚ"V1ParserTests.test_missingDestData1   s'   € ð 	×ÑÜÜ×Ñ×$Ñ$Ø-ö	
r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   ;   s   ø€ ÷ 6ñ 6¨ñ 6r   c                óx  € \         P                  P                  R4      pV P                  VP                  \
        P                  4       \        VP                  \
        P                  4      '       g   Q h\        VP                  \
        P                  4      '       g   Q hV P                  VP                  P                  R4       V P                  VP                  P                  R4       V P                  VP                  P                  R4       V P                  VP                  P                  R4       R# )z5
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_fullParsingSuccessÚ%V1ParserTests.test_fullParsingSuccess;   sá   € ô ×!Ñ!×'Ñ'Ø7ó
ˆð 	×Ñ˜dŸk™k¬7×+>Ñ+>Ô?Ü˜$Ÿ+™+¤w×':Ñ':×;Ò;Ð;Ð;Ü˜$×*Ñ*¬G×,?Ñ,?×@Ò@Ð@Ð@Ø×Ñ˜Ÿ™×)Ñ)¨;Ô7Ø×Ñ˜Ÿ™×)Ñ)¨4Ô0Ø×Ñ˜×)Ñ)×.Ñ.°Ô<Ø×Ñ˜×)Ñ)×.Ñ.°Ö5r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   J   s   ø€ ÷ 6ñ 6¨dñ 6r   c                óx  € \         P                  P                  R4      pV P                  VP                  \
        P                  4       \        VP                  \
        P                  4      '       g   Q h\        VP                  \
        P                  4      '       g   Q hV P                  VP                  P                  R4       V P                  VP                  P                  R4       V P                  VP                  P                  R4       V P                  VP                  P                  R4       R# )z;
Test that parsing is successful for an IPv6 PROXY header.
s   PROXY TCP6 ::1 ::1 8080 8888z::1r-   r.   N)r   r   r   r/   r0   r   ÚIPv6Addressr2   r3   r4   r5   r6   r7   s   & r   Útest_fullParsingSuccess_IPv6Ú*V1ParserTests.test_fullParsingSuccess_IPv6J   sá   € ô ×!Ñ!×'Ñ'Ø+ó
ˆð 	×Ñ˜dŸk™k¬7×+>Ñ+>Ô?Ü˜$Ÿ+™+¤w×':Ñ':×;Ò;Ð;Ð;Ü˜$×*Ñ*¬G×,?Ñ,?×@Ò@Ð@Ð@Ø×Ñ˜Ÿ™×)Ñ)¨5Ô1Ø×Ñ˜Ÿ™×)Ñ)¨4Ô0Ø×Ñ˜×)Ñ)×.Ñ.°Ô6Ø×Ñ˜×)Ñ)×.Ñ.°Ö5r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   Y   s   ø€ ÷ ,ñ ,°ñ ,r   c                ó°   € \         P                  P                  R4      pV P                  VP                  4       V P                  VP
                  4       R# )z=
Test that parsing is successful for a UNKNOWN PROXY header.
s$   PROXY UNKNOWN anything could go hereN)r   r   r   ÚassertIsNoner0   r3   r7   s   & r   Útest_fullParsingSuccess_UNKNOWNÚ-V1ParserTests.test_fullParsingSuccess_UNKNOWNY   sE   € ô ×!Ñ!×'Ñ'Ø3ó
ˆð 	×Ñ˜$Ÿ+™+Ô&Ø×Ñ˜$×*Ñ*Ö+r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   c   s   ø€ ÷ 6ñ 6 $ñ 6r   c                ó˜  € \         P                  ! 4       pVP                  R4      w  r#V P                  V4       V P                  V4       VP                  R4      w  r#V P                  V4       V P                  V4       VP                  R4      w  r#V P                  V4       Vf   Q hVf   Q hV P	                  VP
                  \        P                  4       \        VP
                  \        P                  4      '       g   Q h\        VP                  \        P                  4      '       g   Q hV P                  VP
                  P                  R4       V P                  VP
                  P                  R4       V P                  VP                  P                  R4       V P                  VP                  P                  R4       R# )z5
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/   r0   r   r1   r2   r3   r4   r5   r6   ©r   Úparserr8   Ú	remainings   &   r   Útest_feedParsingÚV1ParserTests.test_feedParsingc   sc  € ô ×#Ò#Ó%ˆØ Ÿ+™+Ð&HÓI‰ˆØ×Ñ˜ÔØ×Ñ˜Ô#Ø Ÿ+™+ lÓ3‰ˆØ×Ñ˜ÔØ×Ñ˜Ô#Ø Ÿ+™+ gÓ.‰ˆØ×Ñ˜Ô#ØÒ$Ð$Ð$ØÒÐÐØ×Ñ˜dŸk™k¬7×+>Ñ+>Ô?Ü˜$Ÿ+™+¤w×':Ñ':×;Ò;Ð;Ð;Ü˜$×*Ñ*¬G×,?Ñ,?×@Ò@Ð@Ð@Ø×Ñ˜Ÿ™×)Ñ)¨;Ô7Ø×Ñ˜Ÿ™×)Ñ)¨4Ô0Ø×Ñ˜×)Ñ)×.Ñ.°Ô<Ø×Ñ˜×)Ñ)×.Ñ.°Ö5r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   z   s   ø€ ÷ 
ñ 
¨ñ 
r   c                óF  € \         P                  ! 4       pVP                  R4      w  r#V P                  V4       V P                  V4       VP                  R4      w  r#V P                  V4       V P                  V4       V P	                  \
        VP                  R4       R# )z>
Test that parsing fails if no newline is found in 108 bytes.
rG   rH   Nsd                                                                                                       )r   r   rI   rJ   r   r   rK   s   &   r   Útest_feedParsingTooLongÚ%V1ParserTests.test_feedParsingTooLongz   s†   € ô ×#Ò#Ó%ˆØ Ÿ+™+Ð&HÓI‰ˆØ×Ñ˜ÔØ×Ñ˜Ô#Ø Ÿ+™+ lÓ3‰ˆØ×Ñ˜ÔØ×Ñ˜Ô#Ø×ÑÜØ�K‰KØö	
r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   ‹   s   ø€ ÷ 
(ñ 
(¨$ñ 
(r   c                óÒ   € \         P                  ! 4       pVP                  R4      w  r#V P                  V4       V P	                  VR4       V P                  VP                  4       R# )z8
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   rI   Ú
assertTruer4   rJ   ÚbufferrK   s   &   r   Útest_feedParsingOverflowÚ&V1ParserTests.test_feedParsingOverflow‹   sV   € ô ×#Ò#Ó%ˆØ Ÿ+™+ØMó
‰ˆð 	�‰˜ÔØ×Ñ˜Ð$9Ô:Ø×Ñ˜Ÿ™Ö'r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r$   r(   r9   r>   rC   rN   rR   rX   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r	   r	      sn   ø‡ € ñ÷
ð 
÷
ð 
÷
ð 
÷
ð 
÷6ð 6÷6ð 6÷,ð ,÷6ð 6÷.
ð 
÷"
(ö 
(r   r	   N)r^   Útwisted.internetr   Útwisted.trialr   Ú r   Ú_exceptionsr   r   r   ÚTestCaser	   r   r   r   Ú<module>rf      s/   ðñõ %Ý "Ý ß XÑ XôG(�H×%Ñ%ö G(r   