File: //usr/lib/python3/dist-packages/twisted/web/test/__pycache__/injectionhelpers.cpython-310.pyc
o
�b� � @ sX d Z ddlZeedd��eeejd�� Zeedd��ZG dd� d�ZG dd � d �Z dS )
zF
Helpers for URI and method injection tests.
@see: U{CVE-2019-12387}
� N� �ascii� c @ s0 e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
S )�MethodInjectionTestsMixina9
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 C � t � �)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�method� r �C/usr/lib/python3/dist-packages/twisted/web/test/injectionhelpers.py�!attemptRequestWithMaliciousMethod s z;MethodInjectionTestsMixin.attemptRequestWithMaliciousMethodc C �N | � t��}d}| �|� W d � n1 sw Y | �t|j�d� dS )z�
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 r r r
�test_methodWithCLRFRejected( �
�z5MethodInjectionTestsMixin.test_methodWithCLRFRejectedc C �d t D ]-}dt|g�f }| �t��
}| �|� W d � n1 s!w Y | �t|j�d� qdS )z�
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 r r r
�'test_methodWithUnprintableASCIIRejected2 � ��zAMethodInjectionTestsMixin.test_methodWithUnprintableASCIIRejectedc C r )zx
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 r r r
�test_methodWithNonASCIIRejected= r z9MethodInjectionTestsMixin.test_methodWithNonASCIIRejectedN)�__name__�
__module__�__qualname__�__doc__r r r r"