ó
    ÆàhÙ  ã                   ó¨   • S r SSKr\" \" SS5      5      \" \" \R
                  S5      5      -
  r\" \" SS5      5      r " S S5      r " S S	5      r	g)
zF
Helpers for URI and method injection tests.

@see: U{CVE-2019-12387}
é    Né€   Úasciié   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚMethodInjectionTestsMixiné   a  
A mixin that runs HTTP method injection tests.  Define
L{MethodInjectionTestsMixin.attemptRequestWithMaliciousMethod} in
a L{twisted.trial.unittest.SynchronousTestCase} subclass to test
how HTTP client code behaves when presented with malicious HTTP
methods.

@see: U{CVE-2019-12387}
c                 ó   • [        5       e)zÇ
Attempt to send a request with the given method.  This should
synchronously raise a L{ValueError} if either is invalid.

@param method: the method (e.g. C{GET })

@param uri: the URI

@type method:
©ÚNotImplementedError©ÚselfÚmethods     Úh/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/twisted/web/test/injectionhelpers.pyÚ!attemptRequestWithMaliciousMethodÚ;MethodInjectionTestsMixin.attemptRequestWithMaliciousMethod   s   € ô "Ó#Ð#ó    c                 óÒ   • U R                  [        5       nSnU R                  U5        SSS5        U R                  [	        WR
                  5      S5        g! , (       d  f       N4= f)zk
Issuing a request with a method that contains a carriage
return and line feed fails with a L{ValueError}.
s   GET
X-Injected-Header: valueNú^Invalid method)ÚassertRaisesÚ
ValueErrorr   ÚassertRegexÚstrÚ	exception)r   Úcmr   s      r   Útest_methodWithCLRFRejectedÚ5MethodInjectionTestsMixin.test_methodWithCLRFRejected(   sQ   € ð
 ×ÑœzÔ*¨bØ7ˆFØ×2Ñ2°6Ô:÷ +ð 	×Ñœ˜RŸ\™\Ó*Ð,=Õ>÷ +Õ*úó   –AÁ
A&c                 ó  • [          Hg  nS[        U/5      4-  nU R                  [        5       nU R	                  U5        SSS5        U R                  [        WR                  5      S5        Mi     g! , (       d  f       N8= f)zh
Issuing a request with a method that contains unprintable
ASCII characters fails with a L{ValueError}.
ó   GET%sNr   )ÚUNPRINTABLE_ASCIIÚ	bytearrayr   r   r   r   r   r   ©r   Úcr   r   s       r   Ú'test_methodWithUnprintableASCIIRejectedÚAMethodInjectionTestsMixin.test_methodWithUnprintableASCIIRejected2   se   € ÷
 #ˆAØ¤¨A¨3£Ð 1Ñ1ˆFØ×"Ñ"¤:Ô.°"Ø×6Ñ6°vÔ>÷ /à×ÑœS §¡Ó.Ð0AÖBò	 #ç.Õ.úó   ¯A3Á3
B	c                 ó  • [          Hg  nS[        U/5      4-  nU R                  [        5       nU R	                  U5        SSS5        U R                  [        WR                  5      S5        Mi     g! , (       d  f       N8= f)z`
Issuing a request with a method that contains non-ASCII
characters fails with a L{ValueError}.
r   Nr   )ÚNONASCIIr!   r   r   r   r   r   r   r"   s       r   Útest_methodWithNonASCIIRejectedÚ9MethodInjectionTestsMixin.test_methodWithNonASCIIRejected=   se   € ÷
 ˆAØ¤¨A¨3£Ð 1Ñ1ˆFØ×"Ñ"¤:Ô.°"Ø×6Ñ6°vÔ>÷ /à×ÑœS §¡Ó.Ð0AÖBò	 ç.Õ.úr&   © N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r$   r)   Ú__static_attributes__r+   r   r   r   r      s   † ñò$ò?ò	Cõ	Cr   r   c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚURIInjectionTestsMixinéI   zû
A mixin that runs HTTP URI injection tests.  Define
L{MethodInjectionTestsMixin.attemptRequestWithMaliciousURI} in a
L{twisted.trial.unittest.SynchronousTestCase} subclass to test how
HTTP client code behaves when presented with malicious HTTP
URIs.
c                 ó   • [        5       e)z›
Attempt to send a request with the given URI.  This should
synchronously raise a L{ValueError} if either is invalid.

@param uri: the URI.

@type method:
r
   r   s     r   ÚattemptRequestWithMaliciousURIÚ5URIInjectionTestsMixin.attemptRequestWithMaliciousURIR   s   € ô "Ó#Ð#r   c                 óÒ   • U R                  [        5       nSnU R                  U5        SSS5        U R                  [	        WR
                  5      S5        g! , (       d  f       N4= f)zn
Issuing a request with a URI whose host contains a carriage
return and line feed fails with a L{ValueError}.
s   http://twisted
.invalid/pathNú^Invalid URI©r   r   r6   r   r   r   ©r   r   Úuris      r   Útest_hostWithCRLFRejectedÚ0URIInjectionTestsMixin.test_hostWithCRLFRejected]   óP   € ð
 ×ÑœzÔ*¨bØ4ˆCØ×/Ñ/°Ô4÷ +ð 	×Ñœ˜RŸ\™\Ó*¨NÕ;÷ +Õ*úr   c                 ó  • [          Hg  nS[        U/5      4-  nU R                  [        5       nU R	                  U5        SSS5        U R                  [        WR                  5      S5        Mi     g! , (       d  f       N8= f)zk
Issuing a request with a URI whose host contains unprintable
ASCII characters fails with a L{ValueError}.
ó   http://twisted%s.invalid/OKNr9   ©r    r!   r   r   r6   r   r   r   ©r   r#   r<   r   s       r   Ú)test_hostWithWithUnprintableASCIIRejectedÚ@URIInjectionTestsMixin.test_hostWithWithUnprintableASCIIRejectedg   ód   € ÷
 #ˆAØ0´I¸q¸c³NÐ3DÑDˆCØ×"Ñ"¤:Ô.°"Ø×3Ñ3°CÔ8÷ /à×ÑœS §¡Ó.°Ö?ò	 #ç.Õ.úr&   c                 ó  • [          Hg  nS[        U/5      4-  nU R                  [        5       nU R	                  U5        SSS5        U R                  [        WR                  5      S5        Mi     g! , (       d  f       N8= f)zc
Issuing a request with a URI whose host contains non-ASCII
characters fails with a L{ValueError}.
rA   Nr9   ©r(   r!   r   r   r6   r   r   r   rC   s       r   Útest_hostWithNonASCIIRejectedÚ4URIInjectionTestsMixin.test_hostWithNonASCIIRejectedr   ód   € ÷
 ˆAØ0´I¸q¸c³NÐ3DÑDˆCØ×"Ñ"¤:Ô.°"Ø×3Ñ3°CÔ8÷ /à×ÑœS §¡Ó.°Ö?ò	 ç.Õ.úr&   c                 óÒ   • U R                  [        5       nSnU R                  U5        SSS5        U R                  [	        WR
                  5      S5        g! , (       d  f       N4= f)zn
Issuing a request with a URI whose path contains a carriage
return and line feed fails with a L{ValueError}.
s   http://twisted.invalid/
pathNr9   r:   r;   s      r   Útest_pathWithCRLFRejectedÚ0URIInjectionTestsMixin.test_pathWithCRLFRejected}   r?   r   c                 ó  • [          Hg  nS[        U/5      4-  nU R                  [        5       nU R	                  U5        SSS5        U R                  [        WR                  5      S5        Mi     g! , (       d  f       N8= f)zk
Issuing a request with a URI whose path contains unprintable
ASCII characters fails with a L{ValueError}.
ó   http://twisted.invalid/OK%sNr9   rB   rC   s       r   Ú)test_pathWithWithUnprintableASCIIRejectedÚ@URIInjectionTestsMixin.test_pathWithWithUnprintableASCIIRejected‡   rF   r&   c                 ó  • [          Hg  nS[        U/5      4-  nU R                  [        5       nU R	                  U5        SSS5        U R                  [        WR                  5      S5        Mi     g! , (       d  f       N8= f)zc
Issuing a request with a URI whose path contains non-ASCII
characters fails with a L{ValueError}.
rP   Nr9   rH   rC   s       r   Útest_pathWithNonASCIIRejectedÚ4URIInjectionTestsMixin.test_pathWithNonASCIIRejected’   rK   r&   r+   N)r,   r-   r.   r/   r0   r6   r=   rD   rI   rM   rQ   rT   r1   r+   r   r   r3   r3   I   s.   † ñò	$ò<ò	@ò	@ò<ò	@õ	@r   r3   )
r0   ÚstringÚ	frozensetÚranger!   Ú	printabler    r(   r   r3   r+   r   r   Ú<module>rZ      si   ðñó á™e A s›mÓ,©yÙˆf×Ñ Ó(ó0ñ Ð ñ ‘U˜3 “_Ó%€÷6Cñ 6C÷rR@ò R@r   