ϪfjdZddlmZddlmZddlmZddlmZm Z m Z GddejZ y ) z7 Test cases for L{twisted.protocols.haproxy.V1Parser}. )address)unittest) _v1parser)InvalidNetworkProtocolInvalidProxyHeaderMissingAddressDatac`eZdZdZd dZd dZd dZd dZd dZd dZ d d Z d d Z d d Z d d Z y) V1ParserTestsz? Test L{twisted.protocols.haproxy.V1Parser} behaviour. Ncb|jttjjdy)zT Test that an exception is raised when the PROXY header is missing. s NOTPROXY N) assertRaisesrrV1Parserparseselfs N/usr/lib/python3/dist-packages/twisted/protocols/haproxy/test/test_v1parser.pytest_missingPROXYHeaderValuez*V1ParserTests.test_missingPROXYHeaderValues'      $ $  cb|jttjjdy)zX Test that an exception is raised when the proto is not TCP or UNKNOWN. sPROXY WUTPROTO N)r rrrrrs rtest_invalidNetworkProtocolz)V1ParserTests.test_invalidNetworkProtocols'  "    $ $  rcb|jttjjdy)zU Test that an exception is raised when the proto has no source data. s PROXY TCP4 Nr r rrrrs rtest_missingSourceDataz$V1ParserTests.test_missingSourceData's'      $ $  rcb|jttjjdy)zU Test that an exception is raised when the proto has no destination. sPROXY TCP4 127.0.0.1 8080 8888Nrrs rtest_missingDestDataz"V1ParserTests.test_missingDestData1s'      $ $ - rc^tjjd}|j|jt j t|jt j sJt|jt j sJ|j|jjd|j|jjd|j|jjd|j|jjdy)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) rrrassertIsInstancesourcer IPv4Address isinstance destination assertEqualhostportrinfos rtest_fullParsingSuccessz%V1ParserTests.test_fullParsingSuccess;s!!'' 7  dkk7+>+>?$++w':':;;;$**G,?,?@@@ ));7 ))40 )).. < ))..5rc^tjjd}|j|jt j t|jt j sJt|jt j sJ|j|jjd|j|jjd|j|jjd|j|jjdy)zK Test that parsing is successful for an IPv6 PROXY header. sPROXY TCP6 ::1 ::1 8080 8888z::1rrN) rrrr r!r IPv6Addressr#r$r%r&r'r(s rtest_fullParsingSuccess_IPv6z*V1ParserTests.test_fullParsingSuccess_IPv6Js!!'' +  dkk7+>+>?$++w':':;;;$**G,?,?@@@ ))51 ))40 ))..6 ))..5rctjjd}|j|j|j|j y)zM Test that parsing is successful for a UNKNOWN PROXY header. s$PROXY UNKNOWN anything could go hereN)rrr assertIsNoner!r$r(s rtest_fullParsingSuccess_UNKNOWNz-V1ParserTests.test_fullParsingSuccess_UNKNOWNYsE!!'' 3  $++& $**+rcztj}|jd\}}|j||j||jd\}}|j||j||jd\}}|j||J|J|j |j t jt|j t jsJt|jt jsJ|j|j jd|j|j jd|j|jjd|j|jjdy)zE Test that parsing happens when fed a complete line. PROXY TCP4 127.0.0.1 127.0.0.1 8080 8888s Nrrr) rrfeed assertFalser r!rr"r#r$r%r&r'rparserr) remainings rtest_feedParsingzV1ParserTests.test_feedParsingcsc##% ++&HIi  # ++l3i  # ++g.i #$$$ dkk7+>+>?$++w':':;;;$**G,?,?@@@ ));7 ))40 )).. < ))..5rcFtj}|jd\}}|j||j||jd\}}|j||j||j t |jdy)zN Test that parsing fails if no newline is found in 108 bytes. r2r3sd N)rrr4r5r rr6s rtest_feedParsingTooLongz%V1ParserTests.test_feedParsingTooLongzs##% ++&HIi  # ++l3i  #   KK  rctj}|jd\}}|j||j |d|j |j y)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 / sHTTP/1.1 GET / N)rrr4 assertTruer%r5bufferr6s rtest_feedParsingOverflowz&V1ParserTests.test_feedParsingOverflowsX##% ++ M i  $9: 'r)returnN)__name__ __module__ __qualname____doc__rrrrr*r-r0r9r;r?rrr r s9     6 6,6. " (rr N) rDtwisted.internetr twisted.trialrr _exceptionsrrr TestCaser rErrrKs/%"XXG(H%%G(r