
    f>                        d dl mZ d dlmZ d dl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 d d	lmZ d d
l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 d dlm Z  d dl!m"Z" d dl#m$Z$  G d de"      Z% G d de"      Z&d Z' edejP                  jR                  ejT                  jV                  d
d
dddd	       G d de"             Z,d  Z-d! Z.d" Z/d# Z0ejb                  jd                  d$        Z3d% Z4d& Z5d' Z6d( Z7y
))    )formsget_user_model)AnonymousUser)MessageMiddleware)SessionMiddleware)mail)ClientRequestFactory)override_settings)reverseN)assertTemplateUsed)app_settings)get_adapter)BaseSignupForm
SignupForm)EmailAddress)context)TestCase)get_username_max_lengthc                   2    e Zd Z edd      d        Zd Zy)CustomSignupFormTestsT) ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE#ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICEc                     g d G fddt         j                        } G d dt        |      } |       }| j                  t	        |j
                  j                                      y )N)emailemail2	password1	password2username	last_name
first_namec                   `    e Zd Z ej                  d      Z ej                  d      ZW  Zy)JCustomSignupFormTests.test_custom_form_field_order.<locals>.TestSignupForm   )
max_lengthN)__name__
__module____qualname__r   	CharFieldr"   r!   field_order)expected_field_orders   \/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/account/tests/test_signup.pyTestSignupFormr$   '   s(    (B7J'26I.K    r.   c                       e Zd Zy)LCustomSignupFormTests.test_custom_form_field_order.<locals>.CustomSignupFormNr'   r(   r)    r/   r-   CustomSignupFormr1   -        r/   r4   )r   Formr   assertEquallistfieldskeys)selfr.   r4   formr,   s       @r-   test_custom_form_field_orderz2CustomSignupFormTests.test_custom_form_field_order   sV    
 
	/UZZ 	/	z> 	  !dkk..013GHr/   c                     ddl m} ddlm}  G d dt              } |       }ddddd	} ||d
      }t        |j                  |      sJ |j                          t        |j                  |      sJ y )Nr   r   )DeferredAttributec                       e Zd Zy)ICustomSignupFormTests.test_user_class_attribute.<locals>.CustomSignupFormNr2   r3   r/   r-   r4   rA   :   r5   r/   r4   r    user@example.comzvery-secretr    r   r   r   Temail_required)django.contrib.authr   django.db.models.query_utilsr?   r   
isinstancer    is_valid)r;   r   r?   r4   Userdatar<   s          r-   test_user_class_attributez/CustomSignupFormTests.test_user_class_attribute6   sr    6B	z 	 "'&&	
  T:$--):;;;$--):;;;r/   N)r'   r(   r)   r   r=   rL   r3   r/   r-   r   r      s&    )-,0I	I4<r/   r   c                   n    e Zd Z eddg      d        Z eddg      d        Z ed      d        Zy)	BaseSignupFormTestsTr    )ACCOUNT_USERNAME_REQUIREDACCOUNT_USERNAME_BLACKLISTc                 f    ddd}t        |d      }| j                  |j                                y )Nr    rB   r    r   TrD   )r   assertFalserI   r;   rK   r<   s      r-   test_username_in_blacklistz.BaseSignupFormTests.test_username_in_blacklistO   s3    
 #'
 d48)r/   c                 f    ddd}t        |d      }| j                  |j                                y )NtheusernamerB   rR   TrD   )r   
assertTruerI   rT   s      r-   test_username_not_in_blacklistz2BaseSignupFormTests.test_username_not_in_blacklistZ   s1    
 &'
 d48(r/   )rO   c                    ddd}t        |d      }t               }|j                  d   }| j                  |j                  |       |j
                  }| j                  |j                  j                  d      t        |             y )Nr    rB   rR   TrD   	maxlength)	r   r   r9   r7   r&   widgetattrsgetstr)r;   rK   r<   r&   fieldr\   s         r-   test_username_maxlengthz+BaseSignupFormTests.test_username_maxlengthe   sw     #'
 d48,.
J')):6))+6JHr/   N)r'   r(   r)   r   rU   rY   ra   r3   r/   r-   rN   rN   N   s[    "&J<** "&J<)) 6
I 7
Ir/   rN   c                     d| _         d| _        ddd}t        |d      }|j                         rJ dddd}t        |d      }|j                         sJ d|d	<   t        |d      }|j                         rJ y )
NTr    rB   rR   rD   zUSER@example.COM)r    r   r   zanotheruser@example.comr   )rO   r   r   rI   )settingsdbrK   r<   s       r-   test_signup_email_verificationre   s   s    )-H&04H-#D $t4D}} #$D
 $t4D==??.DN$t4D}}r/   httpsz/accounts/profile/z/accounts/welcome/z-allauth.account.adapter.DefaultAccountAdapterT)	ACCOUNT_DEFAULT_HTTP_PROTOCOLACCOUNT_EMAIL_VERIFICATIONACCOUNT_AUTHENTICATION_METHODACCOUNT_SIGNUP_FORM_CLASSACCOUNT_EMAIL_SUBJECT_PREFIXLOGIN_REDIRECT_URLACCOUNT_SIGNUP_REDIRECT_URLACCOUNT_ADAPTERrO   c                       e Zd Zd Zd Zd Z edd      d        Z edd      d        Z ed	d
didg      d        Z	y)SignupTestsc                     | j                  dd      }| j                  t        j                  j	                  |      j                         d       t        j                  j                  dd|d       y )Njohn@example.comuser   Tverifiedr   rt   primary&_test_signup_email_verified_externallyr7   r   objectsfiltercountr^   r;   rt   s     r-   *test_signup_same_email_verified_externallyz6SignupTests.test_signup_same_email_verified_externally   sj    :: 2
 	--44$4?EEGK  !3$ 	! 	
r/   c                 0   | j                  dd      }| j                  t        j                  j	                  |      j                         d       t        j                  j                  dd|d       t        j                  j                  dd|d       y)	z
        John is invited on john@example.org, but signs up via john@example.com.
        Email verification is by-passed, their home email address is
        used as a secondary.
        rr   john@example.orgrs      Frv   TNry   r~   s     r-   +test_signup_other_email_verified_externallyz7SignupTests.test_signup_other_email_verified_externally   s     :: 2
 	--44$4?EEGK  "44 	! 	
 	  !3$ 	! 	
r/   c                    d}t               j                  t        d      ||ddd      }t        d       j	                  |       t        d       j	                  |       t               |_        ||j                  d<   ddl	m
} t        j                  |      5   ||      }d d d        | j                  j                  d	       | j                  |d
   t               j!                  |             | j                  t#        t$        j&                        d       t)               j*                  j-                  |      S # 1 sw Y   xY w)Njohndoeaccount_signuprC   c                      y Nr3   requests    r-   <lambda>zDSignupTests._test_signup_email_verified_externally.<locals>.<lambda>       r/   c                      y r   r3   r   s    r-   r   zDSignupTests._test_signup_email_verified_externally.<locals>.<lambda>   r   r/   account_verified_emailr   signup.  locationr    )r   postr   r   process_requestr   r   rt   sessionallauth.account.viewsr   r   request_contextr7   status_coder   get_signup_redirect_urllenr	   outboxr   r{   r^   )r;   signup_emailverified_emailr    r   r   resps          r-   rz   z2SignupTests._test_signup_email_verified_externally   s    "''$%$%&&	
 	./??H./??H$4B010$$W- 	#'?D	#))3/kmCCGL	
 	T[[)1-''++X+>>	# 	#s   	E  E	T)rO   r   c                     | j                   j                  t        d      ddddd      }| j                  |j                  d   dd	       y )
Nr   r   r   janedoerC   )rK   r<   r   z*You must type the same password each time.clientr   r   assertFormErrorr   r;   r   s     r-   %test_signup_password_twice_form_errorz1SignupTests.test_signup_password_twice_form_error   sY    
 {{$%%+&&	   
 	LL 8	
r/   )rO   r   c           	         t               j                  t        d      dddddd      }t        d       j	                  |       t        d       j	                  |       t               |_        ddlm	} t        j                  |      5   ||       d d d        t               j                  j                  d	      }| j                  |j                   d       y # 1 sw Y   JxY w)
Nr   r   r   )r    r   r   r   r   c                      y r   r3   r   s    r-   r   z5SignupTests.test_signup_email_twice.<locals>.<lambda>   r   r/   c                      y r   r3   r   s    r-   r   z5SignupTests.test_signup_email_twice.<locals>.<lambda>   r   r/   r   r   r   )r   r   r   r   r   r   r   rt   r   r   r   r   r   r{   r^   r7   r   )r;   r   r   rt   s       r-   test_signup_email_twicez#SignupTests.test_signup_email_twice   s     !"''$%%+,&&	
 	./??H./??H$0$$W- 	7O	''++Y+?%78	 	s   
	CC%z>django.contrib.auth.password_validation.MinimumLengthValidator
min_length	   )NAMEOPTIONS)AUTH_PASSWORD_VALIDATORSc                     | j                   j                  t        d      ddddd      }| j                  |j                  d   d g        | j                  |j                  d   ddg       y )Nr   r   rr   rC   r<   r   zBThis password is too short. It must contain at least 9 characters.r   r   s     r-   test_django_password_validationz+SignupTests.test_django_password_validation   sr     {{$%%+&&	
 	T\\&14<LL QR	
r/   N)
r'   r(   r)   r   r   rz   r   r   r   r   r3   r/   r-   rp   rp      s    

"?6 "&,0
	
  "&99*  Y !"
	
	
r/   rp   c                    d| _         t        j                  j                  | _        t        j
                  j                  | _         |ddd      }t               }|j                  t        d      d ||j                  d      ddd	      }|j                  d
k(  sJ |d   t        d      k(  sJ t        |d       t        |d       t        j                  j!                  d      j#                         dk(  sJ y )NTjohnr   doer    r   passwordr   r   r   
mixed_caserC   r   r   account_email_verification_sentz0account/email/account_already_exists_message.txtz,account/messages/email_confirmation_sent.txtr   ru   )ACCOUNT_PREVENT_ENUMERATIONr   AuthenticationMethodEMAILri   EmailVerificationMethod	MANDATORYrh   r
   r   r   r   r   r   r   r{   r|   r}   rc   user_factoryemail_factoryrt   cr   s         r-   4test_prevent_enumeration_with_mandatory_verificationr     s     ,0H(-9-N-N-T-TH**6*N*N*X*XH'/AERDA66 !!"E""		
D s"""
w'HIIIItOPtKL&&-?&@FFHAMMMr/   c                    d| _         t        j                  j                  | _        t        j
                  j                  | _         |ddd      }t               }|j                  t        d      d ||j                  d	      ddd
      }|j                  dk(  sJ |j                  d   j                  ddgik(  sJ y )NFr   r   r   r   r   r   Tr   rC      r<   r   5A user is already registered with this email address.)r   r   r   r   ri   r   r   rh   r
   r   r   r   r   r   errorsr   s         r-   test_prevent_enumeration_offr   +  s    +0H(-9-N-N-T-TH**6*N*N*X*XH'/AERDA66 !!"E""		
D s"""<<&&IJ+   r/   c                    d| _         t        j                  j                  | _        t        j
                  j                  | _         |ddd      }t               }|j                  t        d      d ||j                  d	      ddd
      }|j                  dk(  sJ |d   | j                  k(  sJ t        j                  j!                  d      j#                         dk(  sJ y )Nstrictr   r   r   r   r   r   Tr   rC   r   r   r   r   )r   r   r   r   ri   r   NONErh   r
   r   r   r   r   rl   r   r{   r|   r}   r   s         r-   !test_prevent_enumeration_strictlyr   @  s    +3H(-9-N-N-T-TH**6*N*N*S*SH'/AERDA66 !!"E""		
D s"""
x:::::&&-?&@FFHAMMMr/   c                    d| _         t        j                  j                  | _        t        j
                  j                  | _         |ddd      }t               }|j                  t        d      d ||j                  d      ddd	      }|j                  d
k(  sJ |j                  d   j                  ddgik(  sJ y )NTr   r   r   r   r   r   r   rC   r   r<   r   r   )r   r   r   r   ri   r   r   rh   r
   r   r   r   r   r   r   r   s         r-   test_prevent_enumeration_onr   T  s    +/H(-9-N-N-T-TH**6*N*N*S*SH'/AERDA66 !!"E""		
D s"""<<&&IJ+   r/   c                  D   t               j                  d      } ddlm} t	        d       j                  |        t               | _        t        j                  |       5   ||       }ddd       j                  d   j                         d   dk(  sJ y# 1 sw Y   /xY w)	z:Test that the email field is populated with a valid email.z/signup/?email=test@example.comr   r   c                      y r   r3   r   s    r-   r   z3test_get_initial_with_valid_email.<locals>.<lambda>o  r   r/   Nviewr   ztest@example.com)r   r^   r   r   r   r   r   rt   r   r   context_dataget_initial)r   r   r   s      r-   !test_get_initial_with_valid_emailr   i  s     ""#DEG,*+;;GD ?GL		 	 	) gV$0027;?QQQQ s   	BBc                 v   d| _         d| _        t        j                  j                  | _        d | _         |       }d}|j                  t        d      |||d      }|j                  dk(  sJ t        j                  j                  |      }|j                  sJ |j                  rJ t        |      dk(  sJ y )	NFTrB   r   )r   r   r   r   r   ru   )rO   ACCOUNT_EMAIL_REQUIREDr   r   r   rh   ACCOUNT_USER_MODEL_EMAIL_FIELDr   r   r   r   r{   r^   rx   rw   r   )rc   r   password_factoryrd   
mailoutboxr   r   r   s           r-   test_signup_user_model_no_emailr   v  s    ).H&&*H#*6*N*N*X*XH'.2H+!HE;; !!!	
D s"""  $$5$1E===~~z?ar/   c                 \   t         j                  j                  |_        t         j                  j
                  |_        t               }|j                  t        d      ddddd      }|j                  dk(  sJ t        j                  j                  d      j                         dk(  sJ y )	Nr   r   zJoHn@DoE.oRgrC   r   zjohn@doe.orgr   ru   )r   r   r   ri   r   r   rh   r
   r   r   r   r   r{   r|   r}   )rd   rc   r   r   s       r-   test_email_lower_caser     s    -9-N-N-T-TH**6*N*N*S*SH'A66 !!#""		
D s"""&&^&<BBDIIIr/   c           	          d|_         | j                  t        d      dddddd      }t               j                  j                         j                         rJ |j                  dk(  sJ y )	Nphone_numberr   r   rr   
Password1@
5551231234r    r   r   r   r   r   )"ACCOUNT_SIGNUP_FORM_HONEYPOT_FIELDr   r   r   r{   allexistsr   r   rd   rc   r   s       r-   2test_does_not_create_user_when_honeypot_filled_outr     so    2@H/;; !!'%%(	
	D ''++-44666s"""r/   c           	          d|_         | j                  t        d      dddddd      }t               j                  j                  d      j                         d	k(  sJ |j                  d
k(  sJ y )Nr   r   r   rr   r    r   r   ru   r   )r   r   r   r   r{   r|   r}   r   r   s       r-   -test_create_user_when_honeypot_not_filled_outr     sy    2@H/;; !!'%%	
	D ##**I*>DDF!KKKs"""r/   )8djangor   rF   r   django.contrib.auth.modelsr   "django.contrib.messages.middlewarer   "django.contrib.sessions.middlewarer   django.corer	   django.test.clientr
   r   django.test.utilsr   django.urlsr   pytestpytest_django.assertsr   allauth.accountr   allauth.account.adapterr   allauth.account.formsr   r   allauth.account.modelsr   allauth.corer   allauth.testsr   allauth.utilsr   r   rN   re   r   r   r   USERNAMErp   r   r   r   r   mark	django_dbr   r   r   r   r   r3   r/   r-   <module>r      s     . 4 @ @  5 /   4 ( / < /   " 14<H 4<n"I( "IJ. ")+CCMM"."C"C"L"L"!%+ 4C"
{
( {

{
|N0*N(* 	R 	R ,J"#"#r/   