
    TL,hFH                         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     a/var/www/paragaon_website/venv/lib/python3.12/site-packages/django_recaptcha/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%django_recaptcha.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)django_recaptcha.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    
23) 4) 23* 4*G 238 48& 67
 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e      d        Z ed      d        Zd Z ed      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&django_recaptcha.widgets.uuid.UUID.hex)new_callablec                    d}||_          G d dt        j                        } |       }|j                         }| j	                  d|       | j	                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d	|z  |       | 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]   labelrequired?<script src="https://www.google.com/recaptcha/api.js"></script>data-size="normal"class="g-recaptcha"data-callback="onSubmit_%s"data-widget-uuid="%s"data-sitekey="pubkey"#var onSubmit_%s = function(token) {r!   r   r6   rC   assertNotInrD   )r$   mocked_uuidtest_hexr]   r'   rE   s         r   test_default_v2_checkbox_htmlz)TestWidgets.test_default_v2_checkbox_htmlY   s    5#+ 	.uzz 	.  !yy{$' 	T*PRV	
 	*D1+T23h>E-8$?-t4;hFMr   c                    d}||_          G d dt        j                        } |       }|j                         }| j	                  d|       | j                  d|       | j                  d|       | j	                  d|       | j                  d|z  |       | j	                  d	|       | j	                  d
|       | j	                  d|       | j	                  d|z  |       | j	                  d|       | j	                  d|z  |       y )N e83ccae286ad4784bd47f7ddc40cfd6fc            	       d    e Zd Z ej                   ej                  dddddddi      	      Zy
)MTestWidgets.test_v2_checkbox_attribute_changes_html.<locals>.CheckboxAttrFormcustom-classdarkcustomCallbackcompactclass
data-themedata-callback	data-sizehlafattrs
api_paramsr1   Nr   r   r   r   r   r   ReCaptchaV2Checkboxr   r   r   r   CheckboxAttrFormro   w   s>    +f++2w22!/&,)9%.	 !%d|
Gr   r   zE<script src="https://www.google.com/recaptcha/api.js?hl=af"></script>r^   r_   zdata-theme="dark"rc   zdata-callback="customCallback"data-size="compact" class="g-recaptcha custom-class"rd   re   rf   r!   r   r6   rC   rD   rh   )r$   ri   rj   r   r'   rE   s         r   'test_v2_checkbox_attribute_changes_htmlz3TestWidgets.test_v2_checkbox_attribute_changes_htmlr   s    5#+ 	uzz 	  !yy{V	

 	$' 	T*)406A4H6=+T28$?-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   Nr~   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|       | j                  d|       | j                  d|z  |       | 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^   r_   r`   data-size="invisible"rc   rb   rd   re   rf   $var verifyCaptcha_%s = function(e) {#.g-recaptcha[data-widget-uuid="%s"]rg   r$   ri   rj   r   r'   rE   s         r   test_default_v2_invisible_htmlz*TestWidgets.test_default_v2_invisible_html   s    5#+ 	S

 	S {yy{$' 	T*PRV	
 	-t43h>E+T2-8$?-t4;hFM<xGN;hFMr   c                     d}||_          G d dt        j                        } |       }|j                         }| j	                  d|       | 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 8b220c54ddb849b8bb59bda5da57baeac            	       d    e Zd Z ej                   ej                  dddddddi      	      Zy
)KTestWidgets.test_v2_invisible_attribute_changes_html.<locals>.InvisAttrFormrp   rq   customCallbackInvisrs   rt   ry   clr{   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>r   r   rc   #data-callback="customCallbackInvis"r   rd   re   rf   r   r   r   r$   ri   rj   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8$?-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|       | j	                  d|       | j	                  d|z  |       | j	                  d	|       | j	                  d
|z  |       | j	                  d|       | j	                  d|z  |       | j                  d|       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   M<script src="https://www.google.com/recaptcha/api.js?render=pubkey"></script>r^   r_   ra   rc   rb   rd   re   r   actionr   r   s         r   test_default_v3_htmlz TestWidgets.test_default_v3_html   s    5#+ 	J

 	J {yy{(	
 	$' 	T**D13h>E+T2-8$?-t4;hFM4(r   c                    d}||_          G d dt        j                        } |       }|j                         }| j	                  d|       | j                  d|       | j                  d|       | j	                  d|       | j	                  d|z  |       | j	                  d	|       | j	                  d
|z  |       | j	                  d|       | j	                  d|z  |       | j	                  d|       y )Nr   c                   T    e Zd Z ej                   ej                  d            Zy)?TestWidgets.test_default_v3_html_with_action.<locals>.InvisFormneedler   r1   Nr   r   r   r   r   r     s"    +f++3F73F3Fh3WXGr   r   r   r^   r_   ra   rc   rb   rd   re   r   zaction: 'needle'r   r   s         r    test_default_v3_html_with_actionz,TestWidgets.test_default_v3_html_with_action  s    5#+ 	Y

 	Y {yy{(	
 	$' 	T**D13h>E+T2-8$?-t4;hFM 	($/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 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>.InvisAttrFormrq   r   rs   )rv   rw   rx   ry   r   r{   r1   Nr   r   r   r   r   r   1  s;    +f++*w**&,)>%.
 !%d|	Gr   r   zS<script src="https://www.google.com/recaptcha/api.js?render=pubkey&hl=cl"></script>r   rc   r   rb   rd   re   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-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   N  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_htmlL  s=    	Juzz 	J  !yy{(	
r   c                     | j                  t        d      5   G d dt        j                        }d d d        y # 1 sw Y   y xY w)Nrequired_scorec                   X    e Zd Z ej                   ej                  ddi            Zy)NTestWidgets.test_field_required_score_attribute_html.<locals>.VThreeDomainFormr   皙?)r|   r1   Nr   r   r   r   r   r   ]  s*    /&//.7..6F5LMr   r   )assertWarnsMessageDeprecationWarningr   r6   )r$   r   s     r   (test_field_required_score_attribute_htmlz4TestWidgets.test_field_required_score_attribute_htmlZ  s9    $$%79IJ 	5:: 	 	 	s	   :Ar   c                      G d dt         j                        }t        dddi      |_        ddi} ||      }| j	                  |j                                y )	Nc                   T    e Zd Z ej                   ej                  d            Zy)ETestWidgets.test_client_success_response_v3.<locals>.VThreeDomainFormr   r   r1   Nr   r   r   r   r   r   e  $    +f++*w**#>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_v3c  sR    	uzz 	
 &7wn&
" !(+,(r   c                      G d dt         j                        }t        dddi      |_        ddi} ||      }| j	                  |j                                y )	Nc                   T    e Zd Z ej                   ej                  d            Zy)ETestWidgets.test_client_failure_response_v3.<locals>.VThreeDomainFormr   r   r1   Nr   r   r   r   r   r   s  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_v3q  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     r   r   r   Tr   r   r   r   r    r   r   s        r   $test_client_empty_score_threshold_v3z0TestWidgets.test_client_empty_score_threshold_v3  sT    	Juzz 	J &7wn&
" !(+,(r   c                      G d dt         j                        }t        dddid      |_        dd	i} ||      }| j	                  |j                                y )
Nc                   T    e Zd Z ej                   ej                  d            Zy)CTestWidgets.test_client_invalid_action_v3.<locals>.VThreeDomainFormr'   r   r1   Nr   r   r   r   r   r     "    +f++3F73F3Ff3UVGr   r   Tr   r   something_unexpectedr   r   r   r   r    r   r   s        r   test_client_invalid_action_v3z)TestWidgets.test_client_invalid_action_v3  sY    	Wuzz 	W &7wn=S&
" !(+,)r   c                      G d dt         j                        }t        dddid      |_        dd	i} ||      }| j	                  |j                                y )
Nc                   T    e Zd Z ej                   ej                  d            Zy)ATestWidgets.test_client_valid_action_v3.<locals>.VThreeDomainFormr'   r   r1   Nr   r   r   r   r   r     r   r   r   Tr   r   r'   r   r   r    r   r   s        r   test_client_valid_action_v3z'TestWidgets.test_client_valid_action_v3  sV    	Wuzz 	W &7wnV&
" !(+,(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     r   r   r   Tr   333333?r   r   r    r   r   s        r   !test_required_score_human_settingz-TestWidgets.test_required_score_human_setting  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   rk   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rW   rW   X   s   
3,ON PN0 3,O#N P#NJ (;<	
 =	
 3,ON PN4 3,O N P ND (;<	
 =	
 3,O) P): 3,O0 P0> 3,ON PN> (;<

 =

 23) 4) 23* 4* 23	) 4	) 23	* 4	* 23	) 4	) 234	) 5 4	) 235	* 6 4	*r   rW   N)unittest.mockr   r   r   urllib.errorr   djangor   django.core.exceptionsr   django.testr	   r
   django_recaptchar   r   django_recaptcha.clientr   r6   r   r   rW   r   r   r   <module>r      sJ    8 8 "  7 3 , 5&%** &E
 E
Pc*( c*r   