
    f+                     h   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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mZmZ d dlmZ  G d de      Zej:                  j=                  dddej>                  fdddej>                  fg      d        Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(y)    )	timedelta)Mock)SESSION_KEYget_user_model)cache)reverse)nowN)assertRedirectsassertTemplateNotUsedassertTemplateUsed)app_settings)DefaultAccountAdapter)EmailAddressEmailConfirmationEmailConfirmationHMAC)user_logged_inc                       e Zd ZdZd Zy)TestEmailVerificationAdapterz/foobarc                     | j                   S )N)SIGNUP_REDIRECT_URL)selfrequests     h/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/account/tests/test_email_verification.pyget_signup_redirect_urlz4TestEmailVerificationAdapter.get_signup_redirect_url   s    '''    N)__name__
__module____qualname__r   r    r   r   r   r      s    #(r   r   zadapter,query,expected_location )Nz
?next=/fooz/foozJallauth.account.tests.test_email_verification.TestEmailVerificationAdapterc                 T   t         j                  j                  |_        d|_        d|_        | r| |_         |       }|j                  t        d      dd||d      }|j                  dk(  sJ |d   t        d	      k(  sJ |j                  |d         }|j                  d
k(  sJ t        j                  j                  d      }	t        |	      j                  }
t               }t!        j"                  |       |j                  t        d|
g      |z         }|d   |k(  sJ t        j                  j                  |	j$                        }	|	j&                  sJ |j)                  t+               |j,                  ||	j.                  t                t!        j0                  |       y )NTaccount_signupjohnza@a.comusernameemail	password1	password2)datai.  locationaccount_email_verification_sent   )r&   account_confirm_emailargspk)senderr   responseusersignal)r   EmailVerificationMethod	MANDATORYACCOUNT_EMAIL_VERIFICATIONACCOUNT_EMAIL_CONFIRMATION_HMAC#ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATIONACCOUNT_ADAPTERpostr   status_codegetr   objectsr   keyr   r   connectr1   verifiedassert_called_once_withr   wsgi_requestr4   
disconnect)adapterclientdbqueryexpected_locationpassword_factorysettingspasswordrespr&   r@   receiver_mocks               r   test_login_on_verificationrP   !   s    +7*N*N*X*XH'/3H,37H0#* !H;; !!!	
  D s"""
w'HIIII::d:&'Ds"""  $$9$5E

&
*
*CFM=);;w6cUCeKLD
0000  $$$1E>>>))!!ZZ *  m,r   c                 d   d| _          |dd        |dd      }t        j                  j                  ||j                        }|j
                  rJ t        j                  j                  |dt                     }|j                  t        d|j                  g            }t        |d	       y )
NFTzfoo@bar.org)email_verifiedr&   dummy)email_addressr@   sentr-   r.   z.account/messages/email_confirmation_failed.txt)r9   r   r?   get_for_userr&   rB   r   creater	   r<   r   r@   r   )rL   user_factoryrG   unverified_userrT   confirmationrN   s          r   test_email_verification_failedr[   [   s    /4H,M:"%}MO ((55..M %%%%$,,33#U 4 L
 ;;w6l>N>N=OPQDtMNr   c                    d| _         d| _        t        j                  j                  | _        |j                  t        d      dddddd      }|j                  d	k(  sJ |d
   j                  dgk(  sJ |d
   j                  j                  d      d
kD  sJ t        |      dk(  sJ t        |dt        j                  z         dD ]  }|j                  t        d      dddd      }t               j                   j#                  dd      j%                         sJ t        |dt        j                  z          t        |      |k(  sJ t&        j                   j#                  d      j)                         |k(  sJ t+        j,                           t&        j                   j#                  d      d d j/                         }|j/                  t        d|j0                  g            }t        |dt        j                  z         |j                  t        d|j0                  g             |j                  t        d      ddd      }t3        || j4                  d       y )NF
   r"   johndoejohn@example.comr$   T)followr,   r   http://   zaccount/verification_sent.%s)rb      account_loginloginrM   )r%   	is_activezaccount/verification_sent.)email_address__email)email_address__user__usernamer-   r.   zaccount/email_confirm.%sfetch_redirect_response)r9   #ACCOUNT_EMAIL_CONFIRMATION_COOLDOWNr   r6   r7   r8   r<   r   r=   tobodyfindlenr   TEMPLATE_EXTENSIONr   r?   filterexistsr   countr   clearr>   r@   r
   LOGIN_REDIRECT_URL)rL   rH   rG   
mailoutboxenable_cacherN   attemptrZ   s           r   !test_email_verification_mandatoryrz   l   sl   /4H,35H0*6*N*N*X*XH';; !!'""		
   	D s"""a= 23333a=""9-111z?a&)H)HH
  {{O$Y7  
 $$++Y$+OVVX	
X 	(<+J+JJ	
 :')))%%,,%7 - eg	
 	7: %,,33&/ 4 q

#%  ::g5\=M=M<NOPD(<+J+JJ KK/|7G7G6HIJ;; 3D D(55uUr   c                    d| _         t        j                  j                  | _        d| _        |j                  t        d             |j                  t        d      dddd      }t        || j                   d       |d   j                  dgk(  sJ t        |      d	k(  sJ |j                          t        j                  j                  t!               t#        d	
      z
         |j                  t        d      ddd      }t        || j$                  d       |d   j                  dgk(  sJ t        |      d	k(  sJ y )Nz/accounts/welcome/Fr"   r^   r_   )r%   r&   r'   rj   r   rb   )days)rU   rd   re   )ACCOUNT_SIGNUP_REDIRECT_URLr   r6   OPTIONALr8   #ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICEr>   r   r<   r
   rm   rp   logoutr   r?   updater	   r   rv   )rL   rG   rH   rw   rN   s        r    test_optional_email_verificationr      s2   +?H(*6*N*N*W*WH'38H0
JJw'();; !!'"	
D h22E a= 23333z?a
MMO$$#%)2C*C$D;; 3D D(55uUa= 23333 z?ar   c                    d| _          |d      }t        j                  j                  ||j                        }t        |      }|j                  d      }|j                  |       t        |      dk(  sJ |j                  t        d|j                  g             t        j                  j                  |j                  	      }|j                  sJ y )
NTFrR   /r   rb   r-   r.   r0   )r9   r   r?   rV   r&   r   r>   sendrp   r<   r   r@   r1   rB   )	rL   rG   rX   rw   rfr4   r&   rZ   r   s	            r   test_email_verification_hmacr      s    /3H,u-D  --dDJJ?E(/LffSkGg&z?a
KK/|7G7G6HIJ  $$$1E>>>r   c                    d| _         d| _         |d      }t        j                  j	                  ||j
                        }t        |      }|j                  d      }|j                  |       t        |      dk(  sJ |j                  t        d|j                  g	             t        j                  j                  |j                  
      }|j                  rJ y )NTr   Fr   r   r   rb   r-   r.   r0   )r9   &ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYSr   r?   rV   r&   r   r>   r   rp   r<   r   r@   r1   rB   )	rL   rX   rG   rw   r   r4   r&   rZ   r   s	            r   $test_email_verification_hmac_timeoutr      s     04H,67H3u-D  --dDJJ?E(/LffSkGg&z?a
KK/|7G7G6HIJ  $$$1E~~~r   c                    t         j                  j                  | _         |d      }|j	                  |       |j                  t        d      |j                  dd       t        |      dk(  sJ |d   j                  |j                  gk(  sJ |j                          |d   j                  }|j                  d      dkD  sJ  |dd	
      }|j                  t        d      |j                  d	d      }||j                  d   k(  sJ ||j                  d      d j                         d   }|j                  |      }t        |d       t        |d       t!        || j"                  d       y)zTest the email verification view. If User B clicks on an email
    verification link while logged in as User A, ensure User A gets
    logged out.Fr   account_emailr    r&   action_sendrb   r   ra   doe)rR   rM   rd   re   r4   /accounts/confirm-email/Naccount/messages/logged_out.txt$account/messages/email_confirmed.txtrj   )r   AuthenticationMethodEMAILACCOUNT_AUTHENTICATION_METHODforce_loginr<   r   r&   rp   rm   r   rn   ro   contextsplitr   r
   	LOGIN_URL)	rL   rX   rG   rw   r4   rn   user2rN   urls	            r   -test_verify_email_with_another_user_logged_inr      sP    .:-N-N-T-TH*u-D
t
KK(DJJr*RSz?aa=

|+++
MMOa=D99Y!###>E;; [[	
D DLL((((
tyy346
7
=
=
?
BC;;sDt>?tCDD(,,eLr   c                 p   t         j                  j                  | _         |d      }|j	                  |       |j                  t        d      |j                  dd       t        |      dk(  sJ |d   j                  |j                  gk(  sJ |d   j                  }|j                  d      dkD  sJ ||j                  d	      d
 j                         d   }|j                  |      }t        |d       t        |d       t        || j                   d       ||j"                  j$                  k(  sJ y
)zkIf the user clicks on an email verification link while logged in, ensure
    the user stays logged in.
    Fr   r   r    r   rb   r   ra   r   Nr   r   rj   )r   r   r   r   r   r<   r   r&   rp   rm   rn   ro   r   r   r   r
   rv   rD   r4   )rL   rX   rG   rw   r4   rn   r   rN   s           r   *test_verify_email_with_same_user_logged_inr     s    .:-N-N-T-TH*u-D
t
KK(DJJr*RSz?aa=

|+++a=D99Y!###
tyy346
7
=
=
?
BC;;sD$ ABtCDD(55uU4$$)))))r   c           	      `   d|_          |d      }| j                  t           t        |j                        k(  sJ t
        j                  j                  |d      }| j                  t        ddt        |      j                  i             | j                  j                  t              rJ y)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.
    Fr   )r4   rB   r-   r@   )kwargsN)ACCOUNT_CONFIRM_EMAIL_ON_GETsessionr   strr1   r   r?   r>   r   r   r@   )auth_clientrL   r4   rX   confirming_userr&   s         r   test_verify_logs_out_userr   0  s     -2H)"%8O{+s477|;;;  $$/E$JEOO#U4I%4P4T4T,U	

 ""&&{3333r   ))datetimer   unittest.mockr   django.contrib.authr   r   django.core.cacher   django.urlsr   django.utils.timezoner	   pytestpytest_django.assertsr
   r   r   allauth.accountr   allauth.account.adapterr   allauth.account.modelsr   r   r   allauth.account.signalsr   r   markparametrizer   rP   r[   rz   r   r   r   r   r   r   r   r   r   <module>r      s      ; #  %   ) 9 
 3(#8 ( %	r<334$X(<<	
+-+-\O"AVH" J
  MF*64r   