
    )Jf)9                     X   d dl m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 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 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$  edej%        j&        ej'        j(        dddddd	  	         G d de"                      Z)d Z*dS )    )	timedelta)Mockpatch)settings)SESSION_KEYget_user_model)mail)HttpResponseRedirect)ClientRequestFactory)override_settings)reverse)now)app_settings)EmailAddressEmailConfirmationEmailConfirmationHMAC)user_logged_in)user_pk_to_url_str)TestCase   )UUIDUserhttpsNz/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_ADAPTERACCOUNT_USERNAME_REQUIREDc                   H   e Zd ZddZ edd          d             Z edd           ed           ede	          d
                                     Z ed          d             Z	 edd          d             Z
 eej        j        d          d             Z ed          d             Z ed          d             Z edd          d             Z eej        j                  d             Z eej        j                  d             ZdS )ConfirmationViewTestsjohndoec                      t                      j        j        d|dd|}|r|                    |           n|                                 |                                 |S )NTusername	is_active )r   objectscreateset_passwordset_unusable_passwordsave)selfr)   passwordkwargsusers        k/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/account/tests/test_confirm_email.py_create_userz"ConfirmationViewTests._create_user&   s{    .~'. 

 
17
 
  	)h''''&&(((		    T)ACCOUNT_EMAIL_CONFIRMATION_HMAC#ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATIONc                    |                                  }t          j                            |ddd          }t	          |          j        }t                      }t          j        |           | j	        j
        }t          |          |d<   |                                 | j	                            t          d|g                    }t          j                            |j                  }|                     |j                   |                    t)                      |j        |t)                      j                            d	
          t                     t          j        |           d S )Na@b.comFTr4   emailverifiedprimaryaccount_useraccount_confirm_emailargspkr%   r)   )senderrequestresponser4   signal)r6   r   r,   r-   r   keyr   r   connectclientsessionr   r0   postr   getrE   
assertTruer>   assert_called_once_withr   wsgi_request
disconnect)r1   r4   r=   rK   receiver_mockrN   resps          r5   test_login_on_confirmz+ConfirmationViewTests.test_login_on_confirm1   sN   
   ""$++Y , 
 
 $E**.}--- +%"4T":":{(?se L L LMM$((EH(55'''--!##%!!)--v->>! 	. 	
 	
 	
 	!-00000r7   z#allauth.account.views.perform_loginz$allauth.account.utils.get_user_model)return_valuec                    t          ddd          }| j        j        }t          |          |d<   |                                 t          d|          }d}t          t          |	          }||_        ||j        _	        t          d
          |_	        t          d|          5  | j                            t          d|g                     d d d            n# 1 swxY w Y   |j        sJ d S )NTjohn@example.comr%   )r*   r=   r)   r@   F)r>   r4   mockkey)autospecrK   /)redirect_toz+allauth.account.views.EmailConfirmationHMACrA   rB   )r   rM   rN   r   r0   r   r   email_addressfrom_keyrX   r
   r   rO   r   called)r1   
mocked_gummock_perform_loginr4   rN   r=   rK   confirmations           r5   test_login_on_confirm_uuid_userz5ConfirmationViewTests.test_login_on_confirm_uuid_userR   sK    $.@6RRR +%"4T":": e$///%:DDD%*"-9**>3*O*O*O'@,OO 	K 	KKW%<C5IIIJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K "((((((s   &+CC!$C!F)r8   c                 &   t                      j                            d          }t                      j                            d          }t          j                            |ddd           t          j                            |ddd          }t          j                            |dt                      	          }t                      }|                    t          d
|j	        g                    }| 
                    |d           d S )NfoobarrF   foobar2zfoo@bar.orgTr<   Fdummy)r_   rK   sentrA   rB   z.account/messages/email_confirmation_failed.txt)r   r,   r-   r   r   r   r   rO   r   rK   assertTemplateUsed)r1   verified_userunverified_userr_   rd   crV   s          r5   test_email_verification_failedz4ConfirmationViewTests.test_email_verification_failedm   s    '((0777JJ(**29999MM##	 	$ 	
 	
 	
 %,33 	 4 
 
 )077' 8 
 

 HHvvg5\=M<NOOOPP&VWWWWWr7   
   )r8   #ACCOUNT_EMAIL_CONFIRMATION_COOLDOWNc                    t                      }|                    t          d          dddddd          }|                     |j        d           |                     t
          j        d         j        dg           |                     t
          j        d         j	        
                    d	          d           |                     t          t
          j                  d
           |                     |dt          j        z             dD ]K}|                    t          d          dddd          }|                     t!                      j                            dd                                                     |                     |dt          j        z              |                     t          t
          j                  |           |                     t(          j                            d                                          |           t(          j                            t/                      t1          d
          z
             Mt(          j                            d          d d
                                         }|                    t          d|j        g                    }|                     |dt          j        z             |                    t          d|j        g                     |                    t          d          ddd          }|                     |t8          j        d           d S )Naccount_signupjohndoerZ   )r)   r=   	password1	password2T)follow   r   https://r   zaccount/verification_sent.%s)r      account_loginloginr2   r(   zaccount/verification_sent.)email_address__emaildaysrj   )email_address__user__usernamerA   rB   zaccount/email_confirm.%sFfetch_redirect_response)r   rO   r   assertEqualstatus_coder	   outboxtoassertGreaterbodyfindlenrk   r   TEMPLATE_EXTENSIONrQ   r   r,   filterexistsr   countupdater   r   rP   rK   assertRedirectsr   r   )r1   rn   rV   attemptrd   s        r5   !test_email_verification_mandatoryz7ConfirmationViewTests.test_email_verification_mandatory   sF    HHvv$%%%+&&	    	
 	
 	)3///Q*-?,@AAA4;q>.33J??CCCT[))1---*\-LL	
 	
 	

  	M 	MG66((#;;   D OO  dCC   ##,|/NN   S--w777!)00); 1  %''	   %,,#%%):K:K:K2K,LLLL(077*3 8 
 

1"cee 	 uuW4L<L;MNNNOO,|/NN	
 	
 	
 	
w.l6F5GHHHIIIvvO$$Y77
 
 	(-u 	 	
 	
 	
 	
 	
r7   )r   #ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICEc                    t                      }|                    t          d                     |                    t          d          dddd          }|                     |t
          j        d           |                     t          j	        d         j
        dg           |                     t          t          j	                  d           |                                 t          j                            t!                      t#          d	          z
  
           |                    t          d          ddd          }|                     |t
          j        d           |                     t          j	        d         j
        dg           |                     t          t          j	                  d           d S )Nrs   rt   rZ   )r)   r=   ru   Fr   r   r   r   r   r{   r|   )r   rP   r   rO   r   r   r    r   r	   r   r   r   logoutr   r,   r   r   r   r   )r1   rn   rV   s      r5    test_optional_email_verificationz6ConfirmationViewTests.test_optional_email_verification   s   
 HH	g&''(((vv$%%%+& 
 
 	(6PU 	 	
 	
 	
 	Q*-?,@AAAT[))1---	


!((ceeiQ6G6G6G.G(HHHvvO$$Y77
 
 	(-u 	 	
 	
 	
 	Q*-?,@AAA 	T[))1-----r7   c                    |                                  }t          j                            |ddd          }t	          j        |          }t                      |_        |                                 | j        	                    t          d|j        g                     t          j                            |j                  }|                     |j                   d S )Nr;   FTr<   rA   rB   rD   )r6   r   r,   r-   r   r   rj   r0   rM   rO   r   rK   rP   rE   rQ   r>   )r1   r4   r=   rd   s       r5   'test_email_confirmation_hmac_falls_backz=ConfirmationViewTests.test_email_confirmation_hmac_falls_back   s      ""$++Y , 
 
 )/66EE!8@P?QRRRSSS$((EH(55'''''r7   c                 6   |                                  }t          j                            |ddd          }t	          |          }t                                          d          }|                    |           |                     t          t          j                  d           | j                            t          d|j        g	                     t          j                            |j        
          }|                     |j                   d S Nr;   FTr<   r]   )rH   r   rA   rB   rD   )r6   r   r,   r-   r   r   rP   sendr   r   r	   r   rM   rO   r   rK   rE   rQ   r>   r1   r4   r=   rd   rH   s        r5   test_email_confirmation_hmacz2ConfirmationViewTests.test_email_confirmation_hmac  s      ""$++Y , 
 
 -U33 ""&&s++'***T[))1---!8@P?QRRRSSS$((EH(55'''''r7   r   )r8   &ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYSc                 6   |                                  }t          j                            |ddd          }t	          |          }t                                          d          }|                    |           |                     t          t          j                  d           | j                            t          d|j        g	                     t          j                            |j        
          }|                     |j                   d S r   )r6   r   r,   r-   r   r   rP   r   r   r   r	   r   rM   rO   r   rK   rE   assertFalser>   r   s        r5   $test_email_confirmation_hmac_timeoutz:ConfirmationViewTests.test_email_confirmation_hmac_timeout  s    
   ""$++Y , 
 
 -U33 ""&&s++'***T[))1---!8@P?QRRRSSS$((EH(55(((((r7   )r   c                    t                      j                            ddd          }| j                            |           | j                            t          d          |j        dd           |                     t          t          j                  d           |                     t          j        d	         j        |j        g           | j                                         t          j        d	         j        }|                     |                    d
          d	           |                     dd          }t$          j                            ||j        dd           | j                            t          d          |j        dd          }|                     ||j        d                    ||                    d          d                                         d	         }| j                            |          }|                     |d           |                     |d           |                     |t0          j        d           dS )zTest the email confirmation view. If User B clicks on an email
        verification link while logged in as User A, ensure User A gets
        logged out.r%   john@example.orgr&   r)   r=   r2   account_email r=   action_sendr   r   ry   john2zjohn2@example.com)r)   r=   T)r4   r=   r?   r>   r{   r|   r4   /confirm-email/Naccount/messages/logged_out.txt$account/messages/email_confirmed.txtFr   )r   r,   create_userrM   force_loginrO   r   r=   r   r   r	   r   r   r   r   r   r   r6   r   r-   contextsplitrk   r   r   	LOGIN_URL)r1   r4   r   user2rV   urls         r5   .test_confirm_email_with_another_user_logged_inzDConfirmationViewTests.test_confirm_email_with_another_user_logged_in$  s/    '33#5 4 
 
 	%%%O$$
2&N&N	
 	
 	
 	T[))1---Q*TZL999{1~"499Z00!444!!7:M!NN##ek4$ 	$ 	
 	
 	
 {O$$! 
 
 	V 4555499.//11288::1={$$&GHHH&LMMMT8#5uUUUUUr7   c                    t                      j                            ddd          }| j                            |           | j                            t          d          |j        dd           |                     t          t          j                  d           |                     t          j        d	         j        |j        g           t          j        d	         j        }|                     |                    d
          d	           ||                    d          d                                         d	         }| j                            |          }|                     |d           |                     |d           |                     |t(          j        d           |                     ||j        j                   dS )zTest the email confirmation view. If User A clicks on an email
        verification link while logged in, ensure the user
        stayed logged in.r%   r   r&   r   r   r   r   r   r   ry   r   Nr   r   Fr   )r   r,   r   rM   r   rO   r   r=   r   r   r	   r   r   r   r   r   r   assertTemplateNotUsedrk   r   r   r   rS   r4   )r1   r4   r   r   rV   s        r5   +test_confirm_email_with_same_user_logged_inzAConfirmationViewTests.test_confirm_email_with_same_user_logged_inN  s    '33#5 4 
 
 	%%%O$$
2&N&N	
 	
 	
 	T[))1---Q*TZL999{1~"499Z00!444499.//11288::1={$$""4)JKKK&LMMM(-u 	 	
 	
 	
 	t0566666r7   N)r%   r&   )__name__
__module____qualname__r6   r   rW   r   r   re   ro   r   r   EmailVerificationMethodOPTIONALr   r   r   r   AuthenticationMethodEMAILr   r   r+   r7   r5   r$   r$      su       	 	 	 	 (,,0  1 1	 1: (,,0   U011
U1III) ) JI 21	 )* (-  X X X0 (-SU  C
 C
 C
J #/#G#P,1  ". ".	 ".H t<<<
( 
( =<
( t<<<( ( =<( (,/0  ) )	 ) &2&G&M  %V %V %VN &2&G&M  7 7 7 7 7r7   r$   c           	      t   d|_          |d          }| j        t                   t          |j                  k    sJ t
          j                            |d          }|                     t          ddt          |          j
        i                     | j                            t                    rJ dS )z
    When a user is signed in, and you follow an email confirmation link of
    another user within the same browser/session, be sure to sign out the signed
    in user.
    F)email_verified)r4   r>   rA   rK   )r3   N)ACCOUNT_CONFIRM_EMAIL_ON_GETrN   r   strrE   r   r,   rP   r   r   rK   )auth_clientr   r4   user_factoryconfirming_userr=   s         r5   test_confirm_logs_out_userr   o  s     -2H)"l%888O{+s47||;;;; $$/E$JJEOO#U4I%4P4P4T,U	
 	
 	
  
 "&&{3333333r7   )+datetimer   unittest.mockr   r   django.confr   django.contrib.authr   r   django.corer	   django.httpr
   django.test.clientr   r   django.test.utilsr   django.urlsr   django.utils.timezoner   allauth.accountr   allauth.account.modelsr   r   r   allauth.account.signalsr   allauth.account.utilsr   allauth.testsr   test_modelsr   r   	MANDATORYr   USERNAMEr$   r   r+   r7   r5   <module>r      s         % % % % % % % %             ; ; ; ; ; ; ; ;       , , , , , , 5 5 5 5 5 5 5 5 / / / / / /       % % % % % % ( ( ( ( ( (         
 3 2 2 2 2 2 4 4 4 4 4 4 " " " " " " ! ! ! ! ! ! ")+CM"."C"L"!%+ 4C"
 
 
G7 G7 G7 G7 G7H G7 G7
 
G7T
4 4 4 4 4r7   