
    )Jf2                        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                            dddg          d             Z d Z!d Z"d Z#d Z$d Z%ej                            dg d          d              Z&ej                            d!ej'        d"d#gd"dfej'        d"d#gd#dfej'        d"g d"dfej(        d"d#gd"dfej(        d"d#gd#dfej(        d"g d"dfej)        d"d#gd"dfej)        d"d#gd#dfej)        d"g d"dfg	          d$             Z*ej                            d%d&d'g          d(             Z+dS ))    N)patch)get_user_model)reverse)assertTemplateNotUsedassertTemplateUsed)AuthenticationMethod)EmailAddressEmailConfirmationHMAC)
user_emailc                    t           j                            |                                          }t           j                            d|dd          }|                     t          d          d          }t          j        |j	        
                    d                    }|d	         |j        |j        d
d
d|j        |j        dddgk    sJ d S )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         j/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/account/tests/test_change_email.pytest_ajax_getr)      s    "))t)44::<<G$++#$ ,  I ??  8H   D :dl))&1122D<*]		
 	
 ,_		
 	
          c                     |                      t          d          dddd          }t          j        |j                            d                    }|d         t          d          k    sJ d S )	Nr    john3@example.org
action_addr   r   r   r   locationpostr   r    r!   r"   r#   r%   r'   r   s      r(   test_ajax_addr4   (   s{      $788.   D
 :dl))&1122D
w77777777r*   c                     |                      t          d          dddd          }t          j        |j                            d                    }d|d	         d
         d         d         d         v sJ d S )Nr   r,   zjohn3#example.orgr.   r   r   r   validformfieldsr   errorsr   r1   r3   s      r(   test_ajax_add_invalidr:   2   s      $788.   D
 :dl))&1122Dd6l8,W5h?BBBBBBBr*   c                    d|_         |                     t          d          d|j        dd          }t	          |d           t          j        |j                            d                    }|d	         t          d          k    sJ d S )
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   <   s    -4H*  tz22.   D
 tOPPP:dl))&1122D
w77777777r*   c                 4   t           j                            d|dd          }|                     t	          d          d|j        d          }t           j                            |j                                                  rJ t          |d           d S )	Nr   Fr   r   r,   r<   r   z"account/messages/email_deleted.txt)
r	   r   r   r2   r   r   r   r$   existsr   r%   r   r&   r'   s       r(   test_remove_secondaryrF   H   s    $++#$ ,  I   y77 D #***>>EEGGGGGtABBBBBr*   c                 X   t           j                            d|dd          }|                     t	          d          d|j        d          }t           j                            |j                  }|                                 |j        rJ |j        sJ t          |d           d S )	Nr   Fr   r   r,   action_primaryr   rC   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_unverifiedrK   T   s    $++#$ ,  I   	88 D "&&TZ&88G    ?tLMMMMMr*   c                    t           j                            |j                  }t           j                            d|dd          }|                     t          d          d|j        d          }|                                 |                                 |j        rJ |j        sJ t          |d	           d S )
NrC   r   TFr   r   r,   rH   z&account/messages/primary_email_set.txt)
r	   r   r   r   r   r2   r   rJ   r   r   )r%   r   r   r&   r'   s        r(   test_set_primaryrM   c   s    "&&TZ&88G$++#$u ,  I   	88 D tEFFFFFr*   c                     t           j                            d|dd          }|                     t	          d          d|j        d          }t          |d           d S )Nr   Fr   r   r,   action_sendr   ,account/messages/email_confirmation_sent.txt)r	   r   r   r2   r   r   r   rE   s       r(   test_verifyrR   s   sp    $++#$ ,  I   Y_55 D tKLLLLLr*   c                     |                      t          d          ddd           t          j                            |                                          dk    sJ d S )Nr   r,   zemail@unknown.orgrO   r      )r2   r   r	   r   r   count)r%   r   s     r(   test_verify_unknown_emailrV   ~   sj      %899  
 &&D&117799Q>>>>>>r*   c                     t           j                            d|dd           d|_        |                     t          d          ddd          }t          |d	           d S )
Nr   Fr      r   r,   r-   r.   rQ   )r	   r   r   ACCOUNT_MAX_EMAIL_ADDRESSESr2   r   r   r%   r   r@   r'   s       r(   test_add_with_two_limiterr[      sy    #$      ,-H(  >Q"R"R D $ NOOOOOr*   c                     d |_         |                     t          d          ddd          }t          |d           d S )Nr   r,   r-   r.   rQ   rY   r2   r   r   r%   r@   r'   s      r(   test_add_with_none_limiterr_      sN    +/H(  >Q"R"R D tKLLLLLr*   c                     d|_         |                     t          d          ddd          }t          |d           d S )Nr   r   r,   r-   r.   rQ   r]   r^   s      r(   test_add_with_zero_limiterra      sN    +,H(  >Q"R"R D tKLLLLLr*   has_email_fieldTFc                    |sd |_         t                      j                            dd          }t          j                            |ddd          }d}t                      j                            |j                                      |	           |                                 |	                                 |j
        |k    sJ d S )
Nz@raymond.pennerszBefore Update)username
first_namezraymond.penners@example.comTr   r   r   r   Updated)r   )re   )ACCOUNT_USER_MODEL_EMAIL_FIELDr   r   r   r	   r   r   updateset_as_primaryrJ   re   )dbrb   r@   r   r   updated_first_names         r(   Ftest_set_email_as_primary_doesnt_override_existing_changes_on_the_userrm      s      726/#**# +  D  ''+	 (  E ###tw#//66BT6UUU	?0000000r*   c                 j    | d          }|                     |           t          j                            |          }d|_        |                                 t          j                            | |            dd           t          j                            | |            dd          }t          |          |j        k    sJ |	                    t          d          d|j        d          }|j        d	k    sJ |                                 t          |          |j        k    sJ d S )
NFemail_verifiedr   )r   r   r   r   Tr   r,   r<   .  )force_loginr	   r   r   r   saver   r   r   r2   r   status_coderJ   )user_factoryclientemail_factoryr   first_emailother_verified_emailr'   s          r(   $test_delete_email_changes_user_emailrz      sN   <u---D
t&***55KK5%      (/664 7   d{00000;;  {'899 D s""""d39999999r*   c                     | d          }|                     |           t          j                            |          }d|_        |                                 t          |          |j        k    sJ |                    t          d          d|j        d          }|j
        dk    sJ |                                 t          |          dk    sJ d S )NFro   r   r   r,   r<   rq   )rr   r	   r   r   r   rs   r   r   r2   r   rt   rJ   )ru   rv   r   rx   r'   s        r(   "test_delete_email_wipes_user_emailr|      s    <u---D
t&***55KKd{00000;;  {'899 D s""""dr!!!!!!r*   c                 d   d|_         d|_         | d          }|                    |           t          j                            |          }|                    t          d          ddd          }|j        dk    sJ t          j                            d	          }t          |          j
        }t          d
          5 }|                    t          d|g                    }d d d            n# 1 swxY w Y   |j        dk    sJ t          j                            |j                                                  rJ t          j                            |                                          dk    sJ |                                 |j        sJ |j        sJ |j        sJ d S )NTro   r   r   r,   zchange-to@this.orgr.   rq   rC   z*allauth.account.signals.email_changed.sendaccount_confirm_email)args)r$   rT   )ACCOUNT_CHANGE_EMAILACCOUNT_EMAIL_CONFIRMATION_HMACrr   r	   r   r   r2   r   rt   r
   keyr   r   r$   rD   rU   rJ   r   r   called)	ru   rv   r@   r   current_emailr'   	new_emailr   email_changed_mocks	            r(   test_change_emailr      s   $(H!/3H,<t,,,D
t (,,$,77M;;  $899 D s""""$((/C(DDI
	
*
*
.C	;	<	< I@R{{7#:#GGGHHI I I I I I I I I I I I I I Is""""#**m.>*??FFHHHHH&&D&117799Q>>>>$$$$$$s   &C88C<?C<c                     |                      t          d          ddd          }t          j                            d|dd           t          |d           d S )Nr   r,   r-   r.   Fr   rQ   )r2   r   r	   r   r   r   rZ   s       r(   test_addr      su      $788 D !	     tKLLLLLr*   c                 2   d|_         |                     t          d          ddd          }t          j                            d                                          rJ |j        dk    sJ |d         t          d	          d
z   k    sJ |                     |d         d|i          }t          j                            d                                          sJ t          |d           |j        dk    sJ |d         t          d          k    sJ d S )NTr   r,   r-   r.   rC   rq   r0   account_reauthenticatez?next=%2Femail%2FpasswordrQ   )	!ACCOUNT_REAUTHENTICATION_REQUIREDr2   r   r	   r   r   rD   rt   r   )r%   r   user_passwordr@   r'   s        r(   test_add_with_reauthenticationr     s3   15H.  $788 D #**1D*EELLNNNNNs""""
w'?@@CVVVVVVD,z=.IJJD&&-@&AAHHJJJJJtKLLLs""""
w77777777r*   prevent_enumeration)FTstrictc                 \   ||_         d} ||           |                     t          d          d|d          }|dk    rB|j        dk    sJ t          j                            ||dd	           t          |d
           d S |j        dk    sJ |j        d         j	        ddgik    sJ d S )Nzinuse@byotheruser.comrC   r   r,   r.   r   rq   Fr   rQ      r7   r   z5A user is already registered with this email address.)
ACCOUNT_PREVENT_ENUMERATIONr2   r   rt   r	   r   r   r   contextr9   )r%   r   r@   ru   r   r   r'   s          r(   test_add_not_allowedr     s    ,?H(#ELu  E** D h&&3&&&&  	 	! 	
 	
 	
 	4!OPPPPP3&&&&|F#*MN/
 
 
 
 
 
 
r*   zIauthentication_method,primary_email,secondary_emails,delete_email,successz	pri@ma.ilz	sec@ma.ilc                   	 ||_          ||          	t          j                            	fd|D                        |                     	           |                     t          d          d|d          }t          j                            |                                          | k    sJ |st          |d           d S d S )NrC   c                 6    g | ]}t          |d d           S )Frf   )r	   ).0r   r   s     r(   
<listcomp>z%test_remove_email.<locals>.<listcomp>a  s:     	
 	
 	
 d%OOO	
 	
 	
r*   r   r,   r<   r>   )
r?   r	   r   bulk_createrr   r2   r   r   rD   r   )
rv   r@   ru   primary_emailsecondary_emailsdelete_emailauthentication_methodsuccessr'   r   s
            @r(   test_remove_emailr   :  s   H .CH*<m,,,D$$	
 	
 	
 	
)	
 	
 	
   t;;  |44 D &&\&::AACCGTTTT U4!STTTTTU Ur*   zemail,did_look_up)zvalid@email.orgT)znot-an-emailFc                     t          d          5 }t          j        |_        |                     t          d          d|d           |j        |k    sJ 	 d d d            d S # 1 swxY w Y   d S )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   p  s     
H	I	I .X+8O$$ 511	
 	
 	
 +-----. . . . . . . . . . . . . . . . . .s   AA##A'*A'),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   rF   rK   rM   rR   rV   r[   r_   ra   markparametrizerm   rz   r|   r   r   r   r   EMAILUSERNAMEUSERNAME_EMAILr   r    r*   r(   <module>r      sj          . . . . . .        K K K K K K K K = = = = = = F F F F F F F F , , , , , ,  28 8 8C C C	8 	8 	8	C 	C 	CN N NG G G M M M? ? ?P P PM M MM M M *T5M::1 1 ;:1.: : :." " " % % %2M M M8 8 8     
 
 
4 O		#[;-eT		#[;-dS		#["k5I		&k]KQVW		&k]KQUV		&RdK /M	
 !/M	
 
	,k2{DQ+ 4U U5 4U8 ! . . . . .r*   