
    fl<                     0   d dl Z d dlmZ d dlmZ d dlmZ d dlZd dlm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej<                  j?                  dddg      d        Z d Z!d Z"d Z#d Z$d Z%ej<                  j?                  dg d      d         Z&ej<                  j?                  d!ejN                  d"d#gd"dfejN                  d"d#gd#dfejN                  d"g d"dfejP                  d"d#gd"dfejP                  d"d#gd#dfejP                  d"g d"dfejR                  d"d#gd"dfejR                  d"d#gd#dfejR                  d"g d"dfg	      d$        Z*ej<                  j?                  d%d&d'g      d(        Z+d) Z,d* Z-d+ Z.y),    N)patch)get_user_model)reverse)assertTemplateNotUsedassertTemplateUsed)AuthenticationMethod)EmailAddressEmailConfirmationHMAC)
user_emailc                    t         j                  j                  |      j                         }t         j                  j	                  d|dd      }| j                  t        d      d      }t        j                  |j                  j                  d            }|d	   |j                  |j                  d
d
d|j                  |j                  dddgk(  sJ y )Nusersecondary@email.orgFemailr   verifiedprimaryaccount_emailXMLHttpRequestHTTP_X_REQUESTED_WITHutf8dataT)idr   r   r   )r	   objectsfilterfirstcreategetr   jsonloadscontentdecodepkr   )auth_clientr   r   	secondaryrespr   s         b/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/account/tests/test_change_email.pytest_ajax_getr)      s    ""))t)4::<G$$++#$ , I ?? 8H  D ::dll))&12D<**]]		
 ,,__		
       c                     | j                  t        d      dddd      }t        j                  |j                  j                  d            }|d   t        d      k(  sJ y )	Nr    john3@example.org
action_addr   r   r   r   locationpostr   r    r!   r"   r#   r%   r'   r   s      r(   test_ajax_addr4   (   sb     $78.  D
 ::dll))&12D
w7777r*   c                     | j                  t        d      dddd      }t        j                  |j                  j                  d            }d|d	   d
   d   d   d   v sJ y )Nr   r,   zjohn3#example.orgr.   r   r   r   validformfieldsr   errorsr   r1   r3   s      r(   test_ajax_add_invalidr:   2   sp     $78.  D
 ::dll))&12Dd6l8,W5h?BBBBr*   c                     d|_         | j                  t        d      d|j                  dd      }t	        |d       t        j                  |j                  j                  d            }|d	   t        d      k(  sJ y )
Nr   r   r,   action_remover   r   r   0account/messages/cannot_delete_primary_email.txtr   r0   )	ACCOUNT_AUTHENTICATION_METHODr2   r   r   r   r    r!   r"   r#   )r%   r   settingsr'   r   s        r(   test_ajax_remove_primaryrA   <   sx    -4H* tzz2.  D
 tOP::dll))&12D
w7777r*   c                    d|_         t        j                  j                  d|dd      }| j	                  t        d      d|j                  d      }t        j                  j                  |j                        j                         rJ t        |d	       t        |      d
k(  sJ |j                   d|d   j                  v sJ y )NTr   Fr   r   r,   r<   r$   z"account/messages/email_deleted.txt   z has been removedr   )ACCOUNT_EMAIL_NOTIFICATIONSr	   r   r   r2   r   r   r   r$   existsr   lenbody)r%   r   r@   
mailoutboxr&   r'   s         r(   test_remove_secondaryrJ   H   s    +/H($$++#$ , I  y7D
 ##**ill*;BBDDDtABz?aoo/0JqM4F4FFFFr*   c                 ^   t         j                  j                  d|dd      }| j                  t	        d      d|j
                  d      }t         j                  j                  |j
                        }|j                          |j                  rJ |j                  sJ t        |d       y )	Nr   Fr   r   r,   action_primaryr   r   z-account/messages/unverified_primary_email.txt)
r	   r   r   r2   r   r   r   refresh_from_dbr   r   )r%   r   r&   r'   r   s        r(   test_set_primary_unverifiedrP   Y   s    $$++#$ , I  	8D ""&&TZZ&8G    ???tLMr*   c                 ~   t         j                  j                  |j                        }t         j                  j	                  d|dd      }| j                  t        d      d|j                  d      }|j                          |j                          |j                  rJ |j                  sJ t        |d	       y )
NrN   r   TFr   r   r,   rL   z&account/messages/primary_email_set.txt)
r	   r   r   r   r   r2   r   rO   r   r   )r%   r   r   r&   r'   s        r(   test_set_primaryrR   h   s    ""&&TZZ&8G$$++#$u , I  	8D tEFr*   c                     t         j                  j                  d|dd      }| j                  t	        d      d|j
                  d      }t        |d       y )Nr   Fr   r   r,   action_sendr   ,account/messages/email_confirmation_sent.txt)r	   r   r   r2   r   r   r   )r%   r   r&   r'   s       r(   test_verifyrW   x   sY    $$++#$ , I  Y__5D tKLr*   c                     | j                  t        d      ddd       t        j                  j	                  |      j                         dk(  sJ y )Nr   r,   zemail@unknown.orgrT   r   rD   )r2   r   r	   r   r   count)r%   r   s     r(   test_verify_unknown_emailrZ      sN     %89
 &&D&1779Q>>>r*   c                     t         j                  j                  d|dd       d|_        | j	                  t        d      ddd      }t        |d	       y )
Nr   Fr      r   r,   r-   r.   rV   )r	   r   r   ACCOUNT_MAX_EMAIL_ADDRESSESr2   r   r   r%   r   r@   r'   s       r(   test_add_with_two_limiterr_      s[    #$    ,-H( >Q"RD $ NOr*   c                 f    d |_         | j                  t        d      ddd      }t        |d       y )Nr   r,   r-   r.   rV   r]   r2   r   r   r%   r@   r'   s      r(   test_add_with_none_limiterrc      s7    +/H( >Q"RD tKLr*   c                 f    d|_         | j                  t        d      ddd      }t        |d       y )Nr   r   r,   r-   r.   rV   ra   rb   s      r(   test_add_with_zero_limiterre      s7    +,H( >Q"RD tKLr*   has_email_fieldTFc                    |sd |_         t               j                  j                  dd      }t        j                  j                  |ddd      }d}t               j                  j                  |j                        j                  |	       |j                          |j                          |j                  |k(  sJ y )
Nz@raymond.pennerszBefore Update)username
first_namezraymond.penners@example.comTr   r   r   r   Updated)r   )ri   )ACCOUNT_USER_MODEL_EMAIL_FIELDr   r   r   r	   r   r   updateset_as_primaryrO   ri   )dbrf   r@   r   r   updated_first_names         r(   Ftest_set_email_as_primary_doesnt_override_existing_changes_on_the_userrq      s     26/##**# + D   ''+	 ( E ###tww#/66BT6U	??0000r*   c                 @    | d      }|j                  |       t        j                  j                  |      }d|_        |j                          t        j                  j                  | |       dd       t        j                  j                  | |       dd      }t        |      |j                  k(  sJ |j                  t        d      d|j                  d      }|j                  d	k(  sJ |j                          t        |      |j                  k(  sJ y )
NFemail_verifiedr   )r   r   r   r   Tr   r,   r<   .  )force_loginr	   r   r   r   saver   r   r   r2   r   status_coderO   )user_factoryclientemail_factoryr   first_emailother_verified_emailr'   s          r(   $test_delete_email_changes_user_emailr~      s   u-D
t&&***5KK5%    (//664 7  d{00000;; {'8'89D s"""d399999r*   c                     | d      }|j                  |       t        j                  j                  |      }d|_        |j                          t        |      |j                  k(  sJ |j                  t        d      d|j                  d      }|j                  dk(  sJ |j                          t        |      dk(  sJ y )NFrs   r   r   r,   r<   ru   )rv   r	   r   r   r   rw   r   r   r2   r   rx   rO   )ry   rz   r   r|   r'   s        r(   "test_delete_email_wipes_user_emailr      s    u-D
t&&***5KKd{00000;; {'8'89D s"""dr!!!r*   c                 $   d|_         d|_        d|_         | d      }|j                  |       t        j
                  j                  |      }|j                  t        d      ddd      }|j                  dk(  sJ t        |      d	k(  sJ |d
   j                  dk(  sJ t        j
                  j                  d      }t        |      j                  }t        d      5 }	|j                  t        d|g            }d d d        |j                  dk(  sJ t        j
                  j                  |j                         j#                         rJ t        j
                  j                  |      j%                         d	k(  sJ |j'                          |j(                  sJ |j*                  sJ 	j,                  sJ t        |      dk(  sJ |d	   j                  dk(  sJ |d	   j.                  |j0                  gk(  sJ y # 1 sw Y   xY w)NTrs   r   r   r,   zchange-to@this.orgr.   ru   rD   r   z/[example.com] Please Confirm Your Email AddressrN   z*allauth.account.signals.email_changed.sendaccount_confirm_emailargsrC   r\   z[example.com] Email Changed)ACCOUNT_CHANGE_EMAILACCOUNT_EMAIL_CONFIRMATION_HMACrE   rv   r	   r   r   r2   r   rx   rG   subjectr
   keyr   r   r$   rF   rY   rO   r   r   calledtor   )
ry   rz   r@   rI   r   current_emailr'   	new_emailr   email_changed_mocks
             r(   test_change_emailr      s   $(H!/3H,+/H(t,D
t ((,,$,7M;; $89D s"""z?aa=  $UUUU$$((/C(DI
	
*
.
.C	;	< I@R{{7#:#GHIs"""##**m.>.>*?FFHHH&&D&1779Q>>>$$$$z?aa=  $AAAAa=

|+++I Is   #HHc                     | j                  t        d      ddd      }t        j                  j	                  d|dd       t        |d       y )Nr   r,   r-   r.   Fr   rV   )r2   r   r	   r   r   r   r^   s       r(   test_addr     sW     $78D !	   tKLr*   c                    d|_         | j                  t        d      ddd      }t        j                  j                  d      j                         rJ |j                  dk(  sJ |d   t        d	      d
z   k(  sJ | j                  |d   d|i      }t        j                  j                  d      j                         sJ t        |d       |j                  dk(  sJ |d   t        d      k(  sJ y )NTr   r,   r-   r.   rN   ru   r0   account_reauthenticatez?next=%2Faccounts%2Femail%2FpasswordrV   )	!ACCOUNT_REAUTHENTICATION_REQUIREDr2   r   r	   r   r   rF   rx   r   )r%   r   user_passwordr@   r'   s        r(   test_add_with_reauthenticationr     s   15H. $78D ##**1D*ELLNNNs"""Z+,/MM	N	N D,z=.IJD&&-@&AHHJJJtKLs"""
w7777r*   prevent_enumeration)FTstrictc                 (   ||_         d} ||       | j                  t        d      d|d      }|r|j                  dk(  sJ t        j
                  j                  ||dd      }t        |d	       t        |      j                  }| j                  t        d
|g            }t        |d       |j                  dk(  sJ |j                          |j                  rJ y |j                  dk(  sJ |j                  d   j                  ddgik(  sJ y )Nzinuse@byotheruser.comrN   r   r,   r.   ru   Fr   rV   r   r   z.account/messages/email_confirmation_failed.txt   r7   r   z5A user is already registered with this email address.)ACCOUNT_PREVENT_ENUMERATIONr2   r   rx   r	   r   r   r   r
   r   rO   r   contextr9   )	r%   r   r@   ry   r   r   r'   email_addressr   s	            r(   test_add_not_allowedr   &  s0    ,?H(#Eu E*D 3&&&$,,00	 1 
 	4!OP#M266(?se LM4!QR3&&&%%' )))))3&&&||F#**MN/
 
 	
 
r*   zIauthentication_method,primary_email,secondary_emails,delete_email,successz	pri@ma.ilz	sec@ma.ilc                    ||_          ||      }t        j                  j                  |D 	cg c]  }	t        ||	dd       c}	       | j	                  |       | j                  t        d      d|d      }
t        j                  j                  |      j                         | k(  sJ |st        |
d       y y c c}	w )NrN   Frj   r   r,   r<   r>   )
r?   r	   r   bulk_createrv   r2   r   r   rF   r   )rz   r@   ry   primary_emailsecondary_emailsdelete_emailauthentication_methodsuccessr   r   r'   s              r(   test_remove_emailr   N  s    H .CH*m,D$$ *	
 d%O	
 t;; |4D &&\&:AACGTTT4!ST 	
s   B>zemail,did_look_up)zvalid@email.orgT)znot-an-emailFc                     t        d      5 }t        j                  |_        | j	                  t        d      d|d       |j                  |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz7allauth.account.views.EmailAddress.objects.get_for_userr   r,   r<   )r   r	   DoesNotExistside_effectr2   r   r   )r%   r   did_look_upgfu_mocks       r(   test_dont_lookup_invalid_emailr     sd     
H	I .X+88O$ 51	
 +---. . .s   AAA$c                     d| _         |j                  t        d      ddd      }t        j                  j                  d      j                         rJ |d   j                  t        d            sJ y )	NTr   r,   r-   r.   rN   r0   r   )r   r2   r   r	   r   r   rF   
startswith)r@   r%   r'   s      r(   "test_add_requires_reauthenticationr     ss    15H. $78D ##**1D*ELLNNN
&&w/G'HIIIr*   c                 Z   d|_         t        j                  j                  d|dd      }| j	                  t        d      d|j                  d      }|d   j                  t        d	            sJ t        j                  j                  |j                  
      j                         sJ y )NTr   Fr   r   r,   r<   r0   r   rC   )r   r	   r   r   r2   r   r   r   r   r$   rF   )r%   r   r@   r&   r'   s        r(   %test_remove_requires_reauthenticationr     s    15H.$$++#$ , I  y7D 
&&w/G'HIII&&),,&7>>@@@r*   c                    d|_         t        j                  j                  |j                        }t        j                  j                  d|dd      }| j                  t        d      d|j                  d      }|d	   j                  t        d
            sJ |j                          |j                          |j                  sJ |j                  rJ y )NTrN   r   Fr   r   r,   rL   r0   r   )r   r	   r   r   r   r   r2   r   r   rO   r   )r%   r   r@   r   r&   r'   s         r(   *test_set_primary_requires_reauthenticationr     s    15H.""&&TZZ&8G$$++#$u , I  	8D 
&&w/G'HIII???     r*   )/r    unittest.mockr   django.contrib.authr   django.urlsr   pytestpytest_django.assertsr   r   allauth.account.app_settingsr   allauth.account.modelsr	   r
   allauth.account.utilsr   r)   r4   r:   rA   rJ   rP   rR   rW   rZ   r_   rc   re   markparametrizerq   r~   r   r   r   r   r   EMAILUSERNAMEUSERNAME_EMAILr   r   r   r   r    r*   r(   <module>r      s     .   K = F ,28C	8G"NG M?PMM *T5M:1 ;1.:." ,>M8& 

@ O		#	#[;-eT		#	#[;-dS		#	#["k5I		&	&k]KQVW		&	&k]KQUV		&	&RdK //M	
 !//M	
 
	,	,k2{DQ+4U54U8 !..J
A!r*   