
    fY"                     T   d dl 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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 Zej0                  j3                  ddg      ej0                  j3                  dddg      d               Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#y)    N)ANYpatch)settings)cache)Client)reverse)assertTemplateUsed)app_settings)"AUTHENTICATION_METHODS_SESSION_KEY)get_adapter)Authenticatorc                     |       5  | j                  t        d            }| j                  t        d      ddi      }d d d        j                  d   j                  dt               j                  d   gik(  sJ y # 1 sw Y   @xY w)Nmfa_activate_totpcode123formincorrect_code)getr   postcontexterrorsr   error_messages)auth_clientreauthentication_bypassresps      \/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/mfa/totp/tests/test_views.py&test_activate_totp_with_incorrect_coder      s    	 	" 
w':;<'(

 <<&&--.>?@+   
 
s   8A??Bemail_verifiedFmethodr   r   c                      |       5  |dk(  r| j                  t        d            }n| j                  t        d      ddi      }d d d        d   t        d      k(  sJ y # 1 sw Y   xY w)Nr   r   r   r   location	mfa_index)r   r   r   )r   usertotp_validation_bypassr   r   r   s         r   (test_activate_totp_with_unverified_emailr%       st    
 
!	" SU???7+>#?@D##G,?$@65/RD	S
 
w{3333S Ss   >A""A+c                    d|_          |       5  | j                  t        d            } |       5  | j                  t        d      ddi      }d d d        d d d        d   t        d      k(  sJ t        j
                  j                  |t        j                  j                        j                         sJ t        j
                  j                  |t        j                  j                        j                         sJ t        |      dk(  sJ d	|d
   j                  v sJ d|d
   j                  v sJ y # 1 sw Y   xY w# 1 sw Y   xY w)NTr   r   r   r!   mfa_view_recovery_codes)r#   type   zAuthenticator App Activatedr   zAuthenticator app activated.)ACCOUNT_EMAIL_NOTIFICATIONSr   r   r   r   objectsfilterTypeTOTPexistsRECOVERY_CODESlensubjectbody)r   r$   r#   r   r   
mailoutboxr   s          r   test_activate_totp_successr5   -   sZ    ,0H(	 	" w':;<#% 	##+,ED	 
w'@AAAA  ''**// ( fh     ''**99 ( fh   z?a(JqM,A,AAAA)Z]-?-????!	 	 s"   "ED;E;E	 EEc                    d|_         | j                  t        d            }|j                  dk(  sJ |d   j	                  t        d            sJ | j                  |d   d|i      }|j                  dk(  sJ | j                  t        d            }|j                  dk(  sJ |d   t        d      k(  sJ t        |      dk(  sJ d	|d
   j                  v sJ d|d
   j                  v sJ y )NTmfa_deactivate_totp.  r!   account_reauthenticatepasswordr"   r)   zAuthenticator App Deactivatedr   zAuthenticator app deactivated.)	r*   r   r   status_code
startswithr   r1   r2   r3   )r   user_with_totpuser_passwordr   r4   r   s         r   test_deactivate_totp_successr?   K   s    ,0H(??7#89:Ds"""
&&w/G'HIIID,z=.IJDs"""G$9:;Ds"""
w{3333z?a*jm.C.CCCC+z!}/A/AAAA    c                 Z    | j                  t        d            }|j                  dk(  sJ y )Nr7   i  r   r   r;   )r   r   s     r   &test_user_without_totp_deactivate_totprC   \   s*    ??7#89:Ds"""r@   c                      |       5  | j                  t        d            }d d d        j                  dk(  sJ |d   t        d      k(  sJ y # 1 sw Y   .xY w)Nr   r8   r!   r7   rB   )r   r=   r   r   s       r   !test_user_with_totp_activate_totprE   a   s`     
!	" =w':;<=s"""
w'<===== =s   AAc                 &   | j                  t        d      |j                  |d      }|j                  dk(  sJ |d   t        d      k(  sJ | j	                  t        d            }|j
                  d   j                  j                  sJ | j                  t        d      ddi      }|j
                  d	   j                  dt               j                  d
   gik(  sJ  |       5  | j                  t        d      ddi      }d d d        |j                  dk(  sJ |d   t        j                  k(  sJ | j                  t           dt        |j                  ddt        t        t         j"                  j$                  dgk(  sJ y # 1 sw Y   xY w)Naccount_loginloginr:   r8   r!   mfa_authenticaterequestr   r   r   r   r:   )r   atusernamemfa)r   rL   idr(   )r   r   rM   r;   r   r   r#   is_anonymousr   r   r   r   LOGIN_REDIRECT_URLsessionr   r   r   r-   r.   )clientr=   r>   r$   r   s        r   test_totp_loginrT   j   s   ;;  ))}ED s"""
w'9::::::g012D<<	"''4444;;w12VUODD<<&&--.>?@+    
 	! 
{{&'UO


 s"""
x:::::>><=Sn6M6MN38J8J8O8OPB   
 
s   &FFc                 X   d| _         |j                  t        d      |j                  |d      }|j                  dk(  sJ |d   t        d      k(  sJ t        d      D ]I  }|dk\  }|j                  t        d      dd	i      }|j                  d
   j                  d|rdndgik(  rIJ  y )N   rG   rH   r8   r!   rJ      r   wrongr   z0Too many failed login attempts. Try again later.zIncorrect code.)ACCOUNT_LOGIN_ATTEMPTS_LIMITr   r   rM   r;   ranger   r   )r   enable_cacher=   r>   rS   r   i	is_lockeds           r   test_totp_login_rate_limitr^      s     -.H);;  ))}ED s"""
w'9::::1X 
F	{{&'
 ||F#** ! G*	/
 
 	
 

r@   c                    t        d      5 }d|_        | j                  t        d            }|j                  dk(  sJ |d   j                  t        d            sJ | j                  |d   d|i      }|j                  dk(  sJ | j                  t        d            }|j                  d   j                  d	t               j                  d
   gik(  sJ | j                  t        d            }|j                  dk(  sJ |j                  d   j                  d	t               j                  d
   gik(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz>allauth.mfa.adapter.DefaultMFAAdapter.can_delete_authenticatorFr7   r8   r!   r9   r:   r   __all__cannot_delete_authenticator   )r   return_valuer   r   r;   r<   r   r   r   r   r   )r   r=   r>   cda_mockr   s        r   test_cannot_deactivate_totpre      s\   	H
 
	 %w'<=>3&&&J**73K+LMMMZ 0:}2MN3&&&w'<=>||F#**445RST/
 
 	
 
 (= >?3&&&||F#**445RST/
 
 	
 
#
 
 
s   D+EE
c                 N   dD ]  \  }}}|rt        j                          t               }|j                  t	        d      | j
                  |d      }|j                  dk(  sJ |d   t	        d      k(  sJ  |       5  |j                  t	        d      d|i      }d d d        |r*|j                  dk(  sJ |d   t        j                  k(  rJ |j                  dk(  sJ |j                  d	   j                  dt               j                  d
   gik(  rJ  y # 1 sw Y   xY w)N))r   FTr   FF)456FTrg   )r   TTrG   rH   r8   r!   rJ   r   rb   r   r   )r   clearr   r   r   rM   r;   r   rQ   r   r   r   r   )	r=   r>   r$   r[   r   
time_lapseexpect_successrS   r   s	            r   test_totp_code_reuserl      s@   - #(j. KKM{{O$$--=I
 3&&&J7+=#>>>> $% 	;;*+D	
 ##s***
#x'B'BBBB##s***<<'..556FGH3   C#.	 	s   >DD$	c                    | j                  t        d      |j                  |d      }|j                  dk(  sJ |d   t        d      k(  sJ | j	                  t        d            }|j                  dk(  sJ t        |d       t        dt        j                         d	t        j                  z  z   
      5  | j	                  t        d            }|j                  dk(  sJ |d   t        d      k(  sJ 	 d d d        y # 1 sw Y   y xY w)NrG   rH   r8   r!   rJ   rb   zmfa/authenticate.htmlzallauth.account.utils.time.timeg?)rc   )
r   r   rM   r;   r   r	   r   timer
   LOGIN_TIMEOUT)rS   r=   r>   r   s       r   test_totp_stage_expiresrp      s   ;;  ))}ED s"""
w'9::::::g012Ds"""t45	)YY[3)C)C#CC
 < zz'"4563&&&J7?#;;;;< < <s   7?D  D	)$rn   unittest.mockr   r   django.confr   django.core.cacher   django.testr   django.urlsr   pytestpytest_django.assertsr	   allauth.accountr
   allauth.account.authenticationr   allauth.mfa.adapterr   allauth.mfa.modelsr   r   markparametrizer%   r5   r?   rC   rE   rT   r^   re   rl   rp    r@   r   <module>r      s     $   #    4 ( M + , )E73E6?34 4 44@<B"#
>4
:
.&R<r@   