
    a9i7                         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	ej$                        Z G d
 de      Z G d de      Zy)    )	MagicMockPropertyMockpatch)	HTTPError)forms)ImproperlyConfigured)TestCaseoverride_settings)fieldswidgets)RecaptchaResponsec                   .    e Zd Z ej                         Zy)DefaultFormN__name__
__module____qualname__r   ReCaptchaFieldcaptcha     P/var/www/apihucms/venv/lib/python3.12/site-packages/captcha/tests/test_fields.pyr   r      s    #f##%Gr   r   c                       e Zd Z ed      d        Z ed      d        Zd Z ed      d        Z ed      d        Zy)	
TestFieldscaptcha.fields.client.submitc                     t        d      |_        ddi}t        |      }| j                  |j	                                y )NTis_validg-recaptcha-responsePASSED)r   return_valuer   
assertTruer   selfmocked_submitform_paramsforms       r   test_client_success_responsez'TestFields.test_client_success_response   s5    %6%E"-x8;'(r   c                     t        ddg      |_        ddi}t        |      }| j                  |j	                                y )NF410)r   error_codesr   r    )r   r!   r   assertFalser   r#   s       r   test_client_failure_responsez'TestFields.test_client_failure_response   s@    %6&
" .x8;')r   c                     | j                  t              5   G d dt        j                        }d d d        y # 1 sw Y   y xY w)Nc                   F    e Zd Z ej                  ej                        Zy)2TestFields.test_widget_check.<locals>.ImporperFormwidgetN)r   r   r   r   r   r   Textarear   r   r   r   ImporperFormr0   $   s    /&//u~~Fr   r4   )assertRaisesr   r   Form)r$   r4   s     r   test_widget_checkzTestFields.test_widget_check!   s<    34 	GGuzz G	G 	G 	Gs	   9Ac                    t        d      |_         G d dt        j                        }ddi} ||      }| j	                  |j                                |j                  ddd        |j                         }| j                  d	|       y )
NTr   c                   4    e Zd Z ej                  dd      Zy)@TestFields.test_field_instantiate_values.<locals>.NonDefaultFormNewUpdatedKey	NewPubKey)private_key
public_keyNr   r   r   r   NonDefaultFormr:   +   s    +f+++Gr   r?   r   r    r;   )r=   recaptcha_responseremoteipzdata-sitekey="NewPubKey")	r   r!   r   r6   r"   r   assert_called_withas_passertIn)r$   r%   r?   r&   r'   htmls         r   test_field_instantiate_valuesz(TestFields.test_field_instantiate_values'   s    %6%E"	UZZ 	
 .x8k*((('' 	) 	

 yy{0$7r   z captcha.client.recaptcha_requestc                    t               }d|j                  _        ||_        ddi}t        |      }| j	                  |j                                | j                  |j                  d   dg       t        ddd dd	
      |_	        t        |      }| j	                  |j                                | j                  |j                  d   dg       y )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'   s        r   test_field_captcha_errorsz$TestFields.test_field_captcha_errors;   s    K	C 	# (1$-x8;')KK	"%S$T	
 '0A'
# ;')KK	"%S$T	
r   N)	r   r   r   r   r(   r-   r7   rF   rU   r   r   r   r   r      sn    
)*) +) )** +*G )*8 +8& -.
 /
r   r   c                      e Zd Z ede      d        Z ede      d        Z ed      d        Z ede      d        Z	 ede      d	        Z
 ed      d
        Z ede      d        Z ede      d        Z ed      d        Z ed      d        Z ed      d        Z ed      d        Z ed       ed      d               Z ed       ed      d               Zy)TestWidgetszcaptcha.widgets.uuid.UUID.hex)new_callablec                    d}||_          G d dt        j                        } |       }|j                         }| j	                  d|       | j	                  d|       | j	                  d|       | j	                  d|z  |       | j	                  d|       | j	                  d	|z  |       | j	                  d
|       | j	                  d|z  |       y )N 928e8e017b114e1b9d3a3e877cfc5844c                   .    e Zd Z ej                         Zy)CTestWidgets.test_default_v2_checkbox_html.<locals>.DefaultCheckFormNr   r   r   r   DefaultCheckFormr\   ^   s    +f++-Gr   r]   ?<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   r6   rC   rD   )r$   mocked_uuidtest_hexr]   r'   rE   s         r   test_default_v2_checkbox_htmlz)TestWidgets.test_default_v2_checkbox_htmlY   s    5#+ 	.uzz 	.  !yy{PRV	
 	*D1+T23h>Ej$'-8$?-t4;hFMr   c                    d}||_          G d dt        j                        } |       }|j                         }| j	                  d|       | j	                  d|       | j                  d|z  |       | j	                  d|       | j	                  d|       | j	                  d	|       | j	                  d
|       | j	                  d|z  |       | j	                  d|       | j	                  d|z  |       y )N e83ccae286ad4784bd47f7ddc40cfd6fc                   b    e Zd Z ej                   ej                  ddddddi            Zy	)
MTestWidgets.test_v2_checkbox_attribute_changes_html.<locals>.CheckboxAttrFormdarkcustomCallbackcompactz
data-themezdata-callbackz	data-sizehlafattrs
api_paramsr1   Nr   r   r   r   r   r   ReCaptchaV2Checkboxr   r   r   r   CheckboxAttrFormrm   s   s;    +f++2w22&,)9%.
 !%d|	Gr   ry   zE<script src="https://www.google.com/recaptcha/api.js?hl=af"></script>zdata-theme="dark"ra   zdata-callback="customCallback"data-size="compact"r`   rb   rc   rd   re   r!   r   r6   rC   rD   assertNotIn)r$   rg   rh   ry   r'   rE   s         r   'test_v2_checkbox_attribute_changes_htmlz3TestWidgets.test_v2_checkbox_attribute_changes_htmln   s    5#+ 
	uzz 
	  !yy{V	
 	)406A4H6=+T2+T2j$'-8$?-t4;hFMr   zwww.recaptcha.net)RECAPTCHA_DOMAINc                      G d dt         j                        } |       }|j                         }| j                  d|       y )Nc                   P    e Zd Z ej                   ej                               Zy)DTestWidgets.test_default_v2_checkbox_domain_html.<locals>.DomainFormr1   Nrw   r   r   r   
DomainFormr      s     +f++3N73N3N3PQGr   r   B<script src="https://www.recaptcha.net/recaptcha/api.js"></script>r   r6   rC   rD   )r$   r   r'   rE   s       r   $test_default_v2_checkbox_domain_htmlz0TestWidgets.test_default_v2_checkbox_domain_html   s:    	R 	R |yy{S	
r   c                    d}||_          G d dt        j                        } |       }|j                         }| j	                  d|       | j	                  d|       | j	                  d|z  |       | j	                  d|       | j	                  d|       | j	                  d	|z  |       | j	                  d
|       | j	                  d|z  |       | j	                  d|z  |       | j	                  d|z  |       y )N 72f853eb8b7e4022b808be0f5c3bc297c                   P    e Zd Z ej                   ej                               Zy)=TestWidgets.test_default_v2_invisible_html.<locals>.InvisFormr1   Nr   r   r   r   r   r   ReCaptchaV2Invisibler   r   r   r   	InvisFormr           +f++3O73O3O3QRGr   r   r^   data-size="invisible"ra   r`   rb   rc   rd   re   $var verifyCaptcha_%s = function(e) {#.g-recaptcha[data-widget-uuid="%s"]rf   r$   rg   rh   r   r'   rE   s         r   test_default_v2_invisible_htmlz*TestWidgets.test_default_v2_invisible_html   s    5#+ 	S

 	S {yy{PRV	
 	-t43h>E+T2j$'-8$?-t4;hFM<xGN;hFMr   c                 D   d}||_          G d dt        j                        } |       }|j                         }| j	                  d|       | j                  d|       | j	                  d|       | j                  d|z  |       | j	                  d|       | j	                  d	|       | j	                  d
|       | j	                  d|z  |       | j	                  d|       | j	                  d|z  |       | j	                  d|z  |       | j	                  d|z  |       y )N 8b220c54ddb849b8bb59bda5da57baeac                   b    e Zd Z ej                   ej                  ddddddi            Zy	)
KTestWidgets.test_v2_invisible_attribute_changes_html.<locals>.InvisAttrFormrn   customCallbackInvisrp   rq   rr   clrt   r1   Nr   r   r   r   InvisAttrFormr      s;    +f++3w33&,)>%.
 !%d|	Gr   r   zE<script src="https://www.google.com/recaptcha/api.js?hl=cl"></script>rz   r   ra   #data-callback="customCallbackInvis"r`   rb   rc   rd   re   r   r   r{   r$   rg   rh   r   r'   rE   s         r   (test_v2_invisible_attribute_changes_htmlz4TestWidgets.test_v2_invisible_attribute_changes_html   s   5#+ 
	EJJ 
	 yy{V	
 	.5-t46A4H;TB+T2j$'-8$?-t4;hFM<xGN;hFMr   c                      G d dt         j                        } |       }|j                         }| j                  d|       y )Nc                   P    e Zd Z ej                   ej                               Zy)JTestWidgets.test_default_v2_invisible_domain_html.<locals>.InvisDomainFormr1   Nr   r   r   r   InvisDomainFormr      r   r   r   r   r   )r$   r   r'   rE   s       r   %test_default_v2_invisible_domain_htmlz1TestWidgets.test_default_v2_invisible_domain_html   s;    	Sejj 	S  yy{S	
r   c                    d}||_          G d dt        j                        } |       }|j                         }| j	                  d|       | j	                  d|       | j	                  d|z  |       | j	                  d|       | j	                  d|       | j	                  d	|z  |       | j	                  d
|       | j	                  d|z  |       y )N c7a86421ca394661acccea374931d260c                   P    e Zd Z ej                   ej                               Zy)3TestWidgets.test_default_v3_html.<locals>.InvisFormr1   Nr   r   r   r   r   r   ReCaptchaV3r   r   r   r   r   r           +f++3F73F3F3HIGr   r   zM<script src="https://www.google.com/recaptcha/api.js?render=pubkey"></script>r_   ra   r`   rb   rc   rd   r   rf   r   s         r   test_default_v3_htmlz TestWidgets.test_default_v3_html   s    5#+ 	J

 	J {yy{(	

 	*D13h>E+T2j$'-8$?-t4;hFMr   c                    d}||_          G d dt        j                        } |       }|j                         }| j	                  d|       | j	                  d|       | j                  d|z  |       | j	                  d|       | j	                  d|       | j	                  d	|       | j	                  d
|z  |       | j	                  d|       | j	                  d|z  |       y )N f367f89a797a4985acd986275b3df22fc                   b    e Zd Z ej                   ej                  ddddddi            Zy	)
ATestWidgets.test_v3_attribute_changes_html.<locals>.InvisAttrFormrn   r   rp   rq   rr   r   rt   r1   Nr   r   r   r   r   r      s;    +f++*w**&,)>%.
 !%d|	Gr   r   zS<script src="https://www.google.com/recaptcha/api.js?render=pubkey&hl=cl"></script>rz   ra   r   r`   rb   rc   rd   r   r{   r   s         r   test_v3_attribute_changes_htmlz*TestWidgets.test_v3_attribute_changes_html   s    5#+ 
	EJJ 
	 yy{.	

 	+T26A4H;TB+T2j$'-8$?-t4;hFMr   c                      G d dt         j                        } |       }|j                         }| j                  d|       y )Nc                   P    e Zd Z ej                   ej                               Zy)ATestWidgets.test_default_v3_domain_html.<locals>.VThreeDomainFormr1   Nr   r   r   r   VThreeDomainFormr     r   r   r   zP<script src="https://www.recaptcha.net/recaptcha/api.js?render=pubkey"></script>r   )r$   r   r'   rE   s       r   test_default_v3_domain_htmlz'TestWidgets.test_default_v3_domain_html  s=    	Juzz 	J  !yy{(	
r   r   c                      G d dt         j                        }t        dddi      |_        ddi} ||      }| j	                  |j                                y )	Nc                   X    e Zd Z ej                   ej                  ddi            Zy)ETestWidgets.test_client_success_response_v3.<locals>.VThreeDomainFormrequired_score皙?ru   r1   Nr   r   r   r   r   r   (  *    +f++*w**2BC1HIGr   r   Tscoreg?r   
extra_datar   r    r   r6   r   r!   r"   r   r$   r%   r   r&   r'   s        r   test_client_success_response_v3z+TestWidgets.test_client_success_response_v3&  sR    	uzz 	
 &7wn&
" !(+,(r   c                      G d dt         j                        }t        dddi      |_        ddi} ||      }| j	                  |j                                y )	Nc                   X    e Zd Z ej                   ej                  ddi            Zy)ETestWidgets.test_client_failure_response_v3.<locals>.VThreeDomainFormr   r   r   r1   Nr   r   r   r   r   r   6  r   r   r   Tr   皙?r   r   r    r   r6   r   r!   r,   r   r   s        r   test_client_failure_response_v3z+TestWidgets.test_client_failure_response_v34  sT    	uzz 	
 &7wn&
" !(+,)r   c                      G d dt         j                        }t        dddi      |_        ddi} ||      }| j	                  |j                                y )	Nc                   P    e Zd Z ej                   ej                               Zy)JTestWidgets.test_client_empty_score_threshold_v3.<locals>.VThreeDomainFormr1   Nr   r   r   r   r   r   D  r   r   r   Tr   r   r   r   r    r   r   s        r   $test_client_empty_score_threshold_v3z0TestWidgets.test_client_empty_score_threshold_v3B  sT    	Juzz 	J &7wn&
" !(+,(r   g        )RECAPTCHA_REQUIRED_SCOREc                      G d dt         j                        }t        dddi      |_        ddi} ||      }| j	                  |j                                y )	Nc                   P    e Zd Z ej                   ej                               Zy)GTestWidgets.test_required_score_human_setting.<locals>.VThreeDomainFormr1   Nr   r   r   r   r   r   Q  r   r   r   Tr   333333?r   r   r    r   r   s        r   !test_required_score_human_settingz-TestWidgets.test_required_score_human_settingN  sT    	Juzz 	J &7wo&
" !(+,(r   r   c                      G d dt         j                        }t        dddi      |_        ddi} ||      }| j	                  |j                                y )	Nc                   P    e Zd Z ej                   ej                               Zy)ETestWidgets.test_required_score_bot_setting.<locals>.VThreeDomainFormr1   Nr   r   r   r   r   r   ^  r   r   r   Tr   r   r   r   r    r   r   s        r   test_required_score_bot_settingz+TestWidgets.test_required_score_bot_setting[  sV    	Juzz 	J &7wl&
" !(+,)r   N)r   r   r   r   r   ri   r}   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rW   rW   X   s   
*FN GN( *FN GN@ (;<	
 =	
 *FN GN, *F N G ND (;<	
 =	
 *FN GN, *FN GN@ (;<

 =

 )*) +) )** +* )*	) +	) )*4	) 5 +	) )*5	* 6 +	*r   rW   N)unittest.mockr   r   r   urllib.errorr   djangor   django.core.exceptionsr   django.testr	   r
   r   r   r   captcha.clientr   r6   r   r   rW   r   r   r   <module>r      sJ    8 8 "  7 3 # ,&%** &E
 E
PN*( N*r   