B
    µWvgœ  ã               @   sj   d dl Z d dlmZmZ d dlmZ d dlmZmZ d dl	m
Z
mZ G dd„ dejƒZG dd	„ d	eƒZdS )
é    N)Ú	MagicMockÚpatch)Úforms)ÚTestCaseÚoverride_settings)ÚclientÚfieldsc               @   s   e Zd Ze ¡ ZdS )ÚDefaultFormN)Ú__name__Ú
__module__Ú__qualname__r   ZReCaptchaFieldZcaptcha© r   r   úP/tmp/pip-install-rz9cpaf4/django-recaptcha/django_recaptcha/tests/test_client.pyr	   
   s   r	   c               @   sr   e Zd Zedƒdd„ ƒZedƒdd„ ƒZedƒedƒdd	„ ƒƒZed
ƒedƒedƒeddiddd„ ƒƒƒƒZdS )Ú
TestClientz)django_recaptcha.client.recaptcha_requestc             C   sv   t ƒ }d|j_||_t ¡ j}t |dd¡}|  d|j	 
¡ ¡ |  d| |j	 
¡ ¡ |  d|j	 
¡ ¡ |  |j¡ d S )NsZ   {"success": true, "challenge_ts":"2019-01-11T13:57:23Z", "hostname": "testkey.google.com"}Úsomekeyz0.0.0.0zsecret=somekeyzresponse=%szremoteip=0.0.0.0)r   ÚreadÚreturn_valueÚuuidÚuuid4Úhexr   ÚsubmitÚassertInÚ	call_argsÚ__str__Z
assertTrueÚis_valid)ÚselfÚmocked_responseÚ	read_mockÚuuid_hexÚresponser   r   r   Útest_client_success   s    
zTestClient.test_client_successc             C   s   t ƒ }d|j_||_t ¡ j}t |dd¡}|  d|j	 
¡ ¡ |  d| |j	 
¡ ¡ |  d|j	 
¡ ¡ |  |j¡ |  |j ¡ ddg ¡ ¡ d S )	NsT   {"success": false, "error-codes":["invalid-input-response", "invalid-input-secret"]}r   z0.0.0.0zsecret=somekeyzresponse=%szremoteip=0.0.0.0zinvalid-input-responsezinvalid-input-secret)r   r   r   r   r   r   r   r   r   r   r   ZassertFalser   ZassertEqualZerror_codesÚsort)r   r   r   r   r   r   r   r   Útest_client_failure%   s    
zTestClient.test_client_failurezdjango_recaptcha.client.Requestz$django_recaptcha.client.build_openerc             C   sè   t ƒ }d|j_t ƒ }||j_||_ddi}t|ƒ}| ¡  |  d|j ¡ ¡ |  d|j ¡ ¡ |  d|j ¡ ¡ |  d|j ¡ ¡ |  d|j ¡ ¡ |  d	|j ¡ ¡ |  d
|j ¡ ¡ |  d|j ¡ ¡ |jj	|ƒ dd | 	¡  d S )NsT   {"success": false, "error-codes":["invalid-input-response", "invalid-input-secret"]}zg-recaptcha-responseÚPASSEDzdata=zremoteip=Nonezresponse=PASSEDzsecret=privkeyzheaders=z3'Content-type': 'application/x-www-form-urlencoded'z 'User-agent': 'reCAPTCHA Django'z5url='https://www.google.com/recaptcha/api/siteverify'é
   )Útimeout)
r   r   r   Úopenr	   r   r   r   r   Úassert_called_with)r   Úmocked_builderÚmocked_requestÚ	mock_readÚmock_openerÚform_paramsÚformr   r   r   Útest_client_request?   s.    zTestClient.test_client_requestz$django_recaptcha.client.ProxyHandlerÚhttpzaaaa.com)ZRECAPTCHA_PROXYc             C   sú   t ƒ }d|j_t ƒ }||j_||_ddi}t|ƒ}| ¡  |  d|j ¡ ¡ |  d|j ¡ ¡ |  d|j ¡ ¡ |  d|j ¡ ¡ |  d|j ¡ ¡ |  d	|j ¡ ¡ |  d
|j ¡ ¡ |  d|j ¡ ¡ |jj	|ƒ dd | 	ddi¡ | 	|ƒ ¡ d S )NsT   {"success": false, "error-codes":["invalid-input-response", "invalid-input-secret"]}zg-recaptcha-responser#   zdata=zremoteip=Nonezresponse=PASSEDzsecret=privkeyzheaders=z3'Content-type': 'application/x-www-form-urlencoded'z 'User-agent': 'reCAPTCHA Django'z5url='https://www.google.com/recaptcha/api/siteverify'r$   )r%   r/   zaaaa.com)
r   r   r   r&   r	   r   r   r   r   r'   )r   r(   r)   Zmocked_handlerr*   r+   r,   r-   r   r   r   Ú&test_client_request_with_proxy_builderc   s0    z1TestClient.test_client_request_with_proxy_builderN)	r
   r   r   r   r    r"   r.   r   r0   r   r   r   r   r      s   #r   )r   Zunittest.mockr   r   Zdjangor   Zdjango.testr   r   Zdjango_recaptchar   r   ZFormr	   r   r   r   r   r   Ú<module>   s   