
    )Jf9                        d dl 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 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& edej'        j(        ej)        j*        dddddd	  	         G d de"                      Z+d Z,d  Z-d! Z.d" Z/ej0        j1        d#             Z2d$ Z3dS )%    N)formsget_user_model)AnonymousUser)MessageMiddleware)SessionMiddleware)mail)ClientRequestFactory)override_settings)reverse)assertTemplateUsed)app_settings)get_adapter)BaseSignupForm
SignupForm)EmailAddress)context)TestCase)get_username_max_lengthc                   @    e Zd Z edd          d             Zd ZdS )CustomSignupFormTestsT) ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE#ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICEc                     g d G fddt           j                  } G d dt          |          } |            }|                     t	          |j                                                             d S )N)emailemail2	password1	password2username	last_name
first_namec                   X    e Zd Z ej        d          Z ej        d          Z ZdS )JCustomSignupFormTests.test_custom_form_field_order.<locals>.TestSignupForm   )
max_lengthN)__name__
__module____qualname__r   	CharFieldr"   r!   field_order)expected_field_orders   d/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/account/tests/test_signup.pyTestSignupFormr$   (   s<        (B777J'2666I.KKK    r.   c                       e Zd ZdS )LCustomSignupFormTests.test_custom_form_field_order.<locals>.CustomSignupFormNr'   r(   r)    r/   r-   CustomSignupFormr1   .            Dr/   r4   )r   Formr   assertEquallistfieldskeys)selfr.   r4   formr,   s       @r-   test_custom_form_field_orderz2CustomSignupFormTests.test_custom_form_field_order   s    
 
  
  
	/ 	/ 	/ 	/ 	/ 	/ 	/UZ 	/ 	/ 	/	 	 	 	 	z> 	 	 	  !!dk..00113GHHHHHr/   c                    ddl m} ddlm}  G d dt                    } |            }ddddd	} ||d
          }t          |j        |          sJ |                                 t          |j        |          sJ d S )Nr   r   )DeferredAttributec                       e Zd ZdS )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_attribute7   s    666666BBBBBB	 	 	 	 	z 	 	 	 ~"'&&	
 
  T:::$-):;;;;;$-):;;;;;;;r/   N)r'   r(   r)   r   r=   rL   r3   r/   r-   r   r      sZ        )-,0  I I	 I4< < < < <r/   r   c                       e Zd Z eddg          d             Z eddg          d             Z ed          d             Z edd          d	             Zd
S )BaseSignupFormTestsTr    )ACCOUNT_USERNAME_REQUIREDACCOUNT_USERNAME_BLACKLISTc                     ddd}t          |d          }|                     |                                           d S )Nr    rB   r    r   TrD   )r   assertFalserI   r;   rK   r<   s      r-   test_username_in_blacklistz.BaseSignupFormTests.test_username_in_blacklistP   sL    
 #'
 
 d4888)))))r/   c                     ddd}t          |d          }|                     |                                           d S )NtheusernamerB   rR   TrD   )r   
assertTruerI   rT   s      r-   test_username_not_in_blacklistz2BaseSignupFormTests.test_username_not_in_blacklist[   sJ    
 &'
 
 d4888(((((r/   )rO   c                 "   ddd}t          |d          }t                      }|j        d         }|                     |j        |           |j        }|                     |j                            d          t          |                     d S )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_maxlengthf   s     #'
 
 d4888,..
J'):666))+66JHHHHHr/   rO   r   c                 v   ddd}t          |d          }|                     |                                           dddd}t          |d          }|                     |                                           d|d<   t          |d          }|                     |                                           d S )	Nr    rB   rR   TrD   )r    r   r   zanotheruser@example.comr   )r   rS   rI   rX   rT   s      r-   test_signup_email_verificationz2BaseSignupFormTests.test_signup_email_verifications   s    
 #'
 
 d4888))) #'(
 

 d4888(((2Xd4888)))))r/   N)r'   r(   r)   r   rU   rY   ra   rd   r3   r/   r-   rN   rN   O   s        "&J<  * * * "&J<  ) ) ) 666
I 
I 76
I "&  * * * * *r/   rN   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	dS )SignupTestsc                    |                      dd          }|                     t          j                            |                                          d           t          j                            dd|d           d S )Njohn@example.comuser   Tverifiedr   rs   primary&_test_signup_email_verified_externallyr7   r   objectsfiltercountr^   r;   rs   s     r-   *test_signup_same_email_verified_externallyz6SignupTests.test_signup_same_email_verified_externally   s    :: 2
 
 	-44$4??EEGGKKK  !3$ 	! 	
 	
 	
 	
 	
r/   c                 J   |                      dd          }|                     t          j                            |                                          d           t          j                            dd|d           t          j                            dd|d           dS )	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.
        rq   john@example.orgrr      Fru   TNrx   r}   s     r-   +test_signup_other_email_verified_externallyz7SignupTests.test_signup_other_email_verified_externally   s     :: 2
 
 	-44$4??EEGGKKK  "44 	! 	
 	
 	
 	  !3$ 	! 	
 	
 	
 	
 	
r/   c                    d}t                                          t          d          ||ddd          }t          d                               |           t          d                               |           t                      |_        ||j        d<   ddl	m
} t          j        |          5   ||          }d d d            n# 1 swxY w Y   |                     |j        d	           |                     |d
         t                                          |                     |                     t#          t$          j                  d           t)                      j                            |          S )Njohndoeaccount_signuprC   c                     d S Nr3   requests    r-   <lambda>zDSignupTests._test_signup_email_verified_externally.<locals>.<lambda>       $ r/   c                     d S 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   rs   sessionallauth.account.viewsr   r   request_contextr7   status_coder   get_signup_redirect_urllenr	   outboxr   rz   r^   )r;   signup_emailverified_emailr    r   r   resps          r-   ry   z2SignupTests._test_signup_email_verified_externally   s    ""''$%%$%&&	 
 
 	..//??HHH..//??HHH$4B01000000$W-- 	# 	#6'??D	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#)3///kmmCCGLL	
 	
 	
 	T[))1---'++X+>>>s   4CCCT)rO   r   c                     | j                             t          d          ddddd          }t          j        dk    r$|                     |j        d         d	d
           d S |                     |dd	d
           d S )Nr   r   r   janedoerC   )rK      rt   r<   r   z*You must type the same password each time.clientr   r   djangoVERSIONassertFormErrorr   r;   r   s     r-   %test_signup_password_twice_form_errorz1SignupTests.test_signup_password_twice_form_error   s    
 {$%%%+&&	    
 
 >V##  V$<       <	    r/   rb   c           	          t                                          t          d          dddddd          }t          d                               |           t          d                               |           t                      |_        ddlm	} t          j        |          5   ||           d d d            n# 1 swxY w Y   t                      j                            d	          }|                     |j        d           d S )
Nr   r   r   )r    r   r   r   r   c                     d S r   r3   r   s    r-   r   z5SignupTests.test_signup_email_twice.<locals>.<lambda>   r   r/   c                     d S 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   rs   r   r   r   r   r   rz   r^   r7   r   )r;   r   r   rs   s       r-   test_signup_email_twicez#SignupTests.test_signup_email_twice   sT    !""''$%%%+,&& 	
 	
 	..//??HHH..//??HHH$000000$W-- 	 	F7OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'++Y+??%788888s   )CCCz>django.contrib.auth.password_validation.MinimumLengthValidator
min_length	   )NAMEOPTIONS)AUTH_PASSWORD_VALIDATORSc                 p   | j                             t          d          ddddd          }t          j        dk    rG|                     |j        d         d g            |                     |j        d         ddg           d S |                     |dd g            |                     |dddg           d S )	Nr   r   rq   rC   r   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   s     {$%%%+&&	 
 
 >V##  f!5tR@@@  V$UV       vtR888  UV	    r/   N)
r'   r(   r)   r~   r   ry   r   r   r   r   r3   r/   r-   ro   ro      s        
 
 

 
 
"? ? ?6 "&,0   	 0 "&  9 9 9*  Y ! "
	 	 	 	 	  r/   ro   c                    d| _         t          j        j        | _        t          j        j        | _         |ddd          }t                      }|	                    t          d          d|j        ddd          }|j        d	k    sJ |d
         t          d          k    sJ t          |d           t          j                            d                                          dk    sJ d S )NTjohnr   doer    r   passwordr   r   rC   r   r   account_email_verification_sentz0account/email/account_already_exists_message.txtr   rt   )ACCOUNT_PREVENT_ENUMERATIONr   AuthenticationMethodEMAILrh   EmailVerificationMethod	MANDATORYrg   r
   r   r   r   r   r   r   rz   r{   r|   settingsuser_factoryrs   cr   s        r-   4test_prevent_enumeration_with_mandatory_verificationr   %  s    +/H(-9-N-TH**6*N*XH'</AERRRDA66 !!!Z""		
 	
 D s""""
w'HIIIIIItOPPP&&-?&@@FFHHAMMMMMMr/   c                 N   d| _         t          j        j        | _        t          j        j        | _         |ddd          }t                      }|	                    t          d          d|j        ddd          }|j        d	k    sJ |j        d
         j        ddgik    sJ d S )NFr   r   r   r   r   r   rC      r<   r   5A user is already registered with this email address.)r   r   r   r   rh   r   r   rg   r
   r   r   r   r   r   errorsr   s        r-   test_prevent_enumeration_offr   :  s    +0H(-9-N-TH**6*N*XH'</AERRRDA66 !!!Z""		
 	
 D s""""<&IJ+      r/   c                    d| _         t          j        j        | _        t          j        j        | _         |ddd          }t                      }|	                    t          d          d|j        ddd          }|j        d	k    sJ |d
         | j        k    sJ t          j                            d                                          dk    sJ d S )Nstrictr   r   r   r   r   r   rC   r   r   r   r   )r   r   r   r   rh   r   NONErg   r
   r   r   r   r   rk   r   rz   r{   r|   r   s        r-   !test_prevent_enumeration_strictlyr   O  s    +3H(-9-N-TH**6*N*SH'</AERRRDA66 !!!Z""		
 	
 D s""""
x:::::&&-?&@@FFHHAMMMMMMr/   c                 N   d| _         t          j        j        | _        t          j        j        | _         |ddd          }t                      }|	                    t          d          d|j        ddd          }|j        d	k    sJ |j        d
         j        ddgik    sJ d S )NTr   r   r   r   r   r   rC   r   r<   r   r   )r   r   r   r   rh   r   r   rg   r
   r   r   r   r   r   r   r   s        r-   test_prevent_enumeration_onr   c  s    +/H(-9-N-TH**6*N*SH'</AERRRDA66 !!!Z""		
 	
 D s""""<&IJ+      r/   c                     t                                          d          } ddlm} t	          d                               |            t                      | _        t          j	        |           5   ||           }ddd           n# 1 swxY w Y   |j
        d                                         d         dk    sJ dS )	z:Test that the email field is populated with a valid email.z/signup/?email=test@example.comr   r   c                     d S r   r3   r   s    r-   r   z3test_get_initial_with_valid_email.<locals>.<lambda>~  s    d r/   Nviewr   ztest@example.com)r   r^   r   r   r   r   r   rs   r   r   context_dataget_initial)r   r   r   s      r-   !test_get_initial_with_valid_emailr   x  s     ""#DEEG,,,,,,**++;;GDDD ??GL		 	)	)  vg              V$00227;?QQQQQQQs   2B

BBc                 j   d| _         d| _        t          j        j        | _        d | _         |            }d}|                    t          d          |||d          }|j	        dk    sJ t          j                            |          }|j        sJ |j        rJ t          |          dk    sJ d S )	NFTrB   r   )r   r   r   r   r   rt   )rO   ACCOUNT_EMAIL_REQUIREDr   r   r   rg   ACCOUNT_USER_MODEL_EMAIL_FIELDr   r   r   r   rz   r^   rw   rv   r   )r   r   password_factorydb
mailoutboxr   r   r   s           r-   test_signup_user_model_no_emailr     s    ).H&&*H#*6*N*XH'.2H+!!HE;; !!!!	
 	
 D s"""" $$5$11E=~z??ar/   )4r   r   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   r   r   r   USERNAMEro   r   r   r   r   mark	django_dbr   r   r3   r/   r-   <module>r      s          . . . . . . 4 4 4 4 4 4 @ @ @ @ @ @ @ @ @ @ @ @       5 5 5 5 5 5 5 5 / / / / / /        4 4 4 4 4 4 ( ( ( ( ( ( / / / / / / < < < < < < < < / / / / / /             " " " " " " 1 1 1 1 1 14< 4< 4< 4< 4<H 4< 4< 4<n9* 9* 9* 9* 9*( 9* 9* 9*x ")+CM"."C"L"!%+ 4C"
 
 
L L L L L( L L
 
L^N N N*  *N N N(  * 	R 	R 	R         r/   