o
    ˷e7                     @   s   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZ d dlmZ G dd	 d	ejZG d
d deZG dd deZdS )    )	MagicMockPropertyMockpatch)	HTTPError)forms)ImproperlyConfigured)TestCaseoverride_settings)fieldswidgets)RecaptchaResponsec                   @      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_fields.pyr          r   c                   @   sT   e Zd Zeddd Zeddd Zdd Zeddd	 Zed
dd ZdS )
TestFieldscaptcha.fields.client.submitc                 C   s.   t dd|_ddi}t|}| |  d S )NTis_validg-recaptcha-responsePASSED)r   return_valuer   
assertTruer   selfmocked_submitform_paramsformr   r   r   test_client_success_response   s   z'TestFields.test_client_success_responsec                 C   s2   t ddgd|_ddi}t|}| |  d S )NF410)r   error_codesr   r   )r   r   r   assertFalser   r    r   r   r   test_client_failure_response   s   z'TestFields.test_client_failure_responsec                 C   sB   |  t G dd dtj}W d    d S 1 sw   Y  d S )Nc                   @   s   e Zd ZejejdZdS )z2TestFields.test_widget_check.<locals>.ImporperFormwidgetN)r   r   r   r
   r   r   Textarear   r   r   r   r   ImporperForm$   s    r-   )assertRaisesr   r   Form)r!   r-   r   r   r   test_widget_check!   s   "zTestFields.test_widget_checkc                 C   sd   t dd|_G dd dtj}ddi}||}| |  |jddd d | }| d	| d S )
NTr   c                   @   s   e Zd ZejdddZdS )z@TestFields.test_field_instantiate_values.<locals>.NonDefaultFormNewUpdatedKey	NewPubKey)private_key
public_keyNr   r   r   r   r   NonDefaultForm+   s    
r5   r   r   r1   )r3   recaptcha_responseremoteipzdata-sitekey="NewPubKey")	r   r   r   r/   r   r   assert_called_withas_passertIn)r!   r"   r5   r#   r$   htmlr   r   r   test_field_instantiate_values'   s   z(TestFields.test_field_instantiate_valuesz captcha.client.recaptcha_requestc                 C   s   t  }d|j_||_ddi}t|}| |  | |jd dg tddd dd	d
|_	t|}| |  | |jd dg d S )NsT   {"success": false, "error-codes":["invalid-input-response", "invalid-input-secret"]}r   r   r   z,Error verifying reCAPTCHA, please try again.z/https://www.google.com/recaptcha/api/siteverifyi  Oops )urlcodefpmsghdrs)
r   readr   r   r(   r   assertEqualerrorsr   side_effect)r!   mocked_response	read_mockr#   r$   r   r   r   test_field_captcha_errors;   s,   z$TestFields.test_field_captcha_errorsN)	r   r   r   r   r%   r)   r0   r<   rJ   r   r   r   r   r      s    


r   c                   @   s  e Zd Zededdd Zededdd Zeddd	d
 Zededdd Z	ededdd Z
edddd Zededdd Zededdd Zedddd Zeddd Zeddd Zeddd Zededdd d! Zeded"dd#d$ Zd%S )&TestWidgetszcaptcha.widgets.uuid.UUID.hex)new_callablec                 C   s   d}||_ G dd dtj}| }| }| d| | d| | d| | d| | | d| | d	| | | d
| | d| | d S )N 928e8e017b114e1b9d3a3e877cfc5844c                   @   r   )zCTestWidgets.test_default_v2_checkbox_html.<locals>.DefaultCheckFormNr   r   r   r   r   DefaultCheckForm^   r   rN   ?<script src="https://www.google.com/recaptcha/api.js"></script>data-size="normal"class="g-recaptcha"data-callback="onSubmit_%s"requireddata-widget-uuid="%s"data-sitekey="pubkey"#var onSubmit_%s = function(token) {r   r   r/   r9   r:   )r!   mocked_uuidtest_hexrN   r$   r;   r   r   r   test_default_v2_checkbox_htmlY   s   z)TestWidgets.test_default_v2_checkbox_htmlc                 C   s   d}||_ G dd dtj}| }| }| d| | d| | d| | | d| | d| | d	| | d
| | d| | | d| | d| | d S )N e83ccae286ad4784bd47f7ddc40cfd6fc                   @   .   e Zd ZejejddddddiddZd	S )
zMTestWidgets.test_v2_checkbox_attribute_changes_html.<locals>.CheckboxAttrFormdarkcustomCallbackcompactz
data-themezdata-callbackz	data-sizehlafattrs
api_paramsr*   Nr   r   r   r
   r   r   ReCaptchaV2Checkboxr   r   r   r   r   CheckboxAttrForms       
rh   zE<script src="https://www.google.com/recaptcha/api.js?hl=af"></script>zdata-theme="dark"rR   zdata-callback="customCallback"data-size="compact"rQ   rS   rT   rU   rV   r   r   r/   r9   r:   assertNotIn)r!   rX   rY   rh   r$   r;   r   r   r   'test_v2_checkbox_attribute_changes_htmln   s$   z3TestWidgets.test_v2_checkbox_attribute_changes_htmlzwww.recaptcha.net)RECAPTCHA_DOMAINc                 C   0   G dd dt j}| }| }| d| d S )Nc                   @      e Zd Zeje dZdS )zDTestWidgets.test_default_v2_checkbox_domain_html.<locals>.DomainFormr*   Nrf   r   r   r   r   
DomainForm       rq   B<script src="https://www.recaptcha.net/recaptcha/api.js"></script>r   r/   r9   r:   )r!   rq   r$   r;   r   r   r   $test_default_v2_checkbox_domain_html      z0TestWidgets.test_default_v2_checkbox_domain_htmlc                 C   s   d}||_ G dd dtj}| }| }| d| | d| | d| | | d| | d| | d	| | | d
| | d| | | d| | | d| | d S )N 72f853eb8b7e4022b808be0f5c3bc297c                   @   rp   )z=TestWidgets.test_default_v2_invisible_html.<locals>.InvisFormr*   Nr   r   r   r
   r   r   ReCaptchaV2Invisibler   r   r   r   r   	InvisForm   rr   rz   rO   data-size="invisible"rR   rQ   rS   rT   rU   rV   $var verifyCaptcha_%s = function(e) {#.g-recaptcha[data-widget-uuid="%s"]rW   r!   rX   rY   rz   r$   r;   r   r   r   test_default_v2_invisible_html   s"   z*TestWidgets.test_default_v2_invisible_htmlc                 C   s   d}||_ G dd dtj}| }| }| d| | d| | d| | d| | | d| | d	| | d
| | d| | | d| | d| | | d| | | d| | d S )N 8b220c54ddb849b8bb59bda5da57baeac                   @   r\   )
zKTestWidgets.test_v2_invisible_attribute_changes_html.<locals>.InvisAttrFormr]   customCallbackInvisr_   r`   ra   clrc   r*   Nrx   r   r   r   r   InvisAttrForm   ri   r   zE<script src="https://www.google.com/recaptcha/api.js?hl=cl"></script>rj   r{   rR   #data-callback="customCallbackInvis"rQ   rS   rT   rU   rV   r|   r}   rk   r!   rX   rY   r   r$   r;   r   r   r   (test_v2_invisible_attribute_changes_html   s(   z4TestWidgets.test_v2_invisible_attribute_changes_htmlc                 C   ro   )Nc                   @   rp   )zJTestWidgets.test_default_v2_invisible_domain_html.<locals>.InvisDomainFormr*   Nrx   r   r   r   r   InvisDomainForm   rr   r   rs   rt   )r!   r   r$   r;   r   r   r   %test_default_v2_invisible_domain_html   rv   z1TestWidgets.test_default_v2_invisible_domain_htmlc                 C   s   d}||_ G dd dtj}| }| }| d| | d| | d| | | d| | d| | d	| | | d
| | d| | d S )N c7a86421ca394661acccea374931d260c                   @   rp   )z3TestWidgets.test_default_v3_html.<locals>.InvisFormr*   Nr   r   r   r
   r   r   ReCaptchaV3r   r   r   r   r   rz      rr   rz   zM<script src="https://www.google.com/recaptcha/api.js?render=pubkey"></script>rP   rR   rQ   rS   rT   rU   r}   rW   r~   r   r   r   test_default_v3_html   s    z TestWidgets.test_default_v3_htmlc                 C   s   d}||_ G dd dtj}| }| }| d| | d| | d| | | d| | d| | d	| | d
| | | d| | d| | d S )N f367f89a797a4985acd986275b3df22fc                   @   r\   )
zATestWidgets.test_v3_attribute_changes_html.<locals>.InvisAttrFormr]   r   r_   r`   ra   r   rc   r*   Nr   r   r   r   r   r      ri   r   zS<script src="https://www.google.com/recaptcha/api.js?render=pubkey&hl=cl"></script>rj   rR   r   rQ   rS   rT   rU   r}   rk   r   r   r   r   test_v3_attribute_changes_html   s"   z*TestWidgets.test_v3_attribute_changes_htmlc                 C   ro   )Nc                   @   rp   )zATestWidgets.test_default_v3_domain_html.<locals>.VThreeDomainFormr*   Nr   r   r   r   r   VThreeDomainForm  rr   r   zP<script src="https://www.recaptcha.net/recaptcha/api.js?render=pubkey"></script>rt   )r!   r   r$   r;   r   r   r   test_default_v3_domain_html  s   z'TestWidgets.test_default_v3_domain_htmlr   c                 C   F   G dd dt j}tdddid|_ddi}||}| |  d S )	Nc                   @   $   e Zd ZejejddiddZdS )zETestWidgets.test_client_success_response_v3.<locals>.VThreeDomainFormrequired_score皙?rd   r*   Nr   r   r   r   r   r   (      
r   Tscoreg?r   
extra_datar   r   r   r/   r   r   r   r   r!   r"   r   r#   r$   r   r   r   test_client_success_response_v3&     z+TestWidgets.test_client_success_response_v3c                 C   r   )	Nc                   @   r   )zETestWidgets.test_client_failure_response_v3.<locals>.VThreeDomainFormr   r   r   r*   Nr   r   r   r   r   r   6  r   r   Tr   皙?r   r   r   r   r/   r   r   r(   r   r   r   r   r   test_client_failure_response_v34  r   z+TestWidgets.test_client_failure_response_v3c                 C   r   )	Nc                   @   rp   )zJTestWidgets.test_client_empty_score_threshold_v3.<locals>.VThreeDomainFormr*   Nr   r   r   r   r   r   D  rr   r   Tr   r   r   r   r   r   r   r   r   r   $test_client_empty_score_threshold_v3B  s   z0TestWidgets.test_client_empty_score_threshold_v3g        )RECAPTCHA_REQUIRED_SCOREc                 C   r   )	Nc                   @   rp   )zGTestWidgets.test_required_score_human_setting.<locals>.VThreeDomainFormr*   Nr   r   r   r   r   r   Q  rr   r   Tr   333333?r   r   r   r   r   r   r   r   !test_required_score_human_settingN     z-TestWidgets.test_required_score_human_settingr   c                 C   r   )	Nc                   @   rp   )zETestWidgets.test_required_score_bot_setting.<locals>.VThreeDomainFormr*   Nr   r   r   r   r   r   ^  rr   r   Tr   r   r   r   r   r   r   r   r   r   test_required_score_bot_setting[  r   z+TestWidgets.test_required_score_bot_settingN)r   r   r   r   r   rZ   rm   r	   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rK   X   s>    



 




"




 



rK   N)unittest.mockr   r   r   urllib.errorr   djangor   django.core.exceptionsr   django.testr   r	   r   r
   r   captcha.clientr   r/   r   r   rK   r   r   r   r   <module>   s    H