o
    êË·eT  ã                   @   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   ÚReCaptchaFieldÚcaptcha© r   r   úP/var/www/ideatree/venv/lib/python3.10/site-packages/captcha/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 captcha.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"}Úsomekeyú0.0.0.0úsecret=somekeyúresponse=%súremoteip=0.0.0.0)r   ÚreadÚreturn_valueÚuuidÚuuid4Úhexr   ÚsubmitÚassertInÚ	call_argsÚ__str__Ú
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 )	NóT   {"success": false, "error-codes":["invalid-input-response", "invalid-input-secret"]}r   r   r   r   r   zinvalid-input-responsezinvalid-input-secret)r   r   r   r   r   r   r   r   r   r   r   ÚassertFalser!   ÚassertEqualÚerror_codesÚsortr"   r   r   r   Útest_client_failure%   s$   ÿ
ý
þzTestClient.test_client_failurezcaptcha.client.Requestzcaptcha.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 )Nr)   úg-recaptcha-responseÚPASSEDúdata=úremoteip=Noneúresponse=PASSEDúsecret=privkeyúheaders=ú3'Content-type': 'application/x-www-form-urlencoded'ú 'User-agent': 'reCAPTCHA Django'ú5url='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?   s6   ÿþ
ÿþzTestClient.test_client_requestzcaptcha.client.ProxyHandlerÚhttpúaaaa.com)Ú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 )Nr)   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   rF   rG   r<   )r#   r?   r@   Úmocked_handlerrA   rB   rC   rD   r   r   r   Ú&test_client_request_with_proxy_builderc   s8   ÿþ
ÿþz1TestClient.test_client_request_with_proxy_builderN)	r
   r   r   r   r(   r.   rE   r   rJ   r   r   r   r   r      s    

"r   )r   Úunittest.mockr   r   Údjangor   Údjango.testr   r   r   r   r   ÚFormr	   r   r   r   r   r   Ú<module>   s    