
    )Jf&(                     (   d dl mZmZ d dl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 d
lmZ ej                            dd          d             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#d Z$d Z%d Z&dS )    )ANYpatchN)settings)reverse)assertFormError)"AUTHENTICATION_METHODS_SESSION_KEY)EmailAddress)app_settings)get_adapter)Authenticatorurl_name)mfa_activate_totp	mfa_indexmfa_deactivate_totpc                     |                      t          |                    }|j        dk    sJ |d                             t          d                    sJ d S )N.  locationaccount_login)getr   status_code
startswith)clientr   resps      _/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/mfa/tests/test_views.pytest_login_required_viewsr      s^     ::gh''((Ds""""
&&w'?'?@@@@@@@    c                 <    |            5  |                      t          d                    }|                     t          d          ddi          }d d d            n# 1 swxY w Y   |j        d         j        dt                      j        d         gik    sJ d S )Nr   code123formincorrect_code)r   r   postcontexterrorsr   error_messages)auth_clientreauthentication_bypassr   s      r   &test_activate_totp_with_incorrect_coder(      s    	 	 	"	" 
 
w':;;<<'((
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 <&-.>?@+      s   AAA#&A#c                    t           j                            |                              d            |            5  |                     t          d                    } |            5  |                     t          d          ddi          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j        d         j        dt                      j
        d         gik    sJ d S )	N)userF)verifiedr   r   r   r    unverified_email)r	   objectsfilterupdater   r   r"   r#   r$   r   r%   )r&   r*   totp_validation_bypassr'   r   s        r   (test_activate_totp_with_unverified_emailr1   -   s    T**1151AAA	 	 	"	"  w':;;<<##%% 	 	##+,,E D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	               <&-.@AB+      s5   -B5,&BB5B"	"B5%B"	&B55B9<B9c                 b    |            5  |                      t          d                    } |            5  |                     t          d          ddi          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |d         t          d          k    sJ t          j                            |t          j        j                                                  sJ t          j                            |t          j        j	                                                  sJ d S )Nr   r   r   r   mfa_view_recovery_codesr*   type)
r   r   r"   r   r-   r.   TypeTOTPexistsRECOVERY_CODES)r&   r0   r*   r'   r   s        r   test_activate_totp_successr:   ?   s    
!	 	"	"  w':;;<<##%% 	 	##+,,E D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	               
w'@AAAAAA ''*/ (  fhh    ''*9 (  fhh    s4   -B&A*B*A.	.B1A.	2BBBc                 `    |                      t          d                    }d|j        v sJ d S )Nr   authenticators)r   r   r#   r&   user_with_totpr   s      r   
test_indexr?   T   s4    ??7;//00Dt|++++++r   c                    |                      t          d                    }|j        dk    sJ |d                             t          d                    sJ |                     |d         d|i          }|j        dk    sJ |                     t          d                    }|j        dk    sJ |d         t          d          k    sJ d S )Nr   r   r   account_reauthenticatepasswordr   )r   r   r   r   r"   )r&   r>   user_passwordr   s       r   test_deactivate_totp_successrD   Y   s    ??7#899::Ds""""
&&w/G'H'HIIIIID,z=.IJJDs""""G$9::;;Ds""""
w{33333333r   c                 d    |                      t          d                    }|j        dk    sJ d S )Nr   i  r   r   r   )r&   r   s     r   &test_user_without_totp_deactivate_totprG   d   s6    ??7#899::Ds""""""r   c                      |            5  |                      t          d                    }d d d            n# 1 swxY w Y   |j        dk    sJ |d         t          d          k    sJ d S )Nr   r   r   r   rF   )r&   r>   r'   r   s       r   !test_user_with_totp_activate_totprI   i   s     
!	 	"	" = =w':;;<<= = = = = = = = = = = = = = =s""""
w'<========s   #:>>c                 4   |                      t          d          |j        |d          }|j        dk    sJ |d         t          d          k    sJ |                     t          d                    }|j        d         j        j        sJ |                      t          d          ddi          }|j        d	         j        dt                      j
        d
         gik    sJ  |            5  |                      t          d          ddi          }d d d            n# 1 swxY w Y   |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 d S )Nr   loginrB   r   r   mfa_authenticaterequestr   r   r    r!   rB   methodatusernamemfarP   rQ   idr5   )r"   r   rR   r   r   r#   r*   is_anonymousr$   r   r%   r   LOGIN_REDIRECT_URLsessionr   r   r   r6   r7   )r   r>   rC   r0   r   s        r   test_totp_loginrY   r   s    ;;   )}EE D s""""
w'9::::::::g01122D<	"'4444;;w122VUODDD<&-.>?@+     
 		!	! 
 
{{&''UO
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 s""""
x:::::><=Sn6MNN38J8OPPB      s   0&D""D&)D&c                 F   |                      t          d                    }|d                             t          d                    sJ |                     |d         d|i          }|j        dk    sJ |                      |d                   }|d         dk    sJ d S )Nmfa_download_recovery_codesr   rA   rB   r   zcontent-dispositionz)attachment; filename="recovery-codes.txt")r   r   r   r"   r   r&   user_with_recovery_codesrC   r   s       r   test_download_recovery_codesr^      s    ??7#@AABBD
&&w/G'H'HIIIIID,z=.IJJDs""""??4
+,,D%&*UUUUUUUr   c                 ~   |                      t          d                    }|d                             t          d                    sJ |                     |d         d|i          }|j        dk    sJ |                      |d                   }t          |j        d                   t          j        k    sJ d S )Nr3   r   rA   rB   r   unused_codes)	r   r   r   r"   r   lenr#   r
   RECOVERY_CODE_COUNTr\   s       r   test_view_recovery_codesrc      s    ??7#<==>>D
&&w/G'H'HIIIIID,z=.IJJDs""""??4
+,,Dt|N+,,0PPPPPPPr   c                    t           j                            |t           j        j                                                  }|                                d         }|                     t          d                    }|d                             t          d                    sJ | 	                    |d         d|i          }|j
        dk    sJ | 	                    |d                   }|d         t          d          k    sJ t           j                            |t           j        j                                                  }|                    |          rJ d S )	Nr4   r   mfa_generate_recovery_codesr   rA   rB   r   r3   )r   r-   r   r6   r9   wrapget_unused_codesr   r   r"   r   validate_code)r&   r]   rC   rc	prev_coder   s         r   test_generate_recovery_codesrk      sP   			"	"%M,>,M 
# 
 

dff  ##%%a(I??7#@AABBD
&&w/G'H'HIIIIID,z=.IJJDs""""D,--D
w'@AAAAAA			"	"%M,>,M 
# 
 

dff  	*******r   c                    |                      t          d          |j        |d          }|j        dk    sJ |d         t          d          k    sJ |                     t          d                    }|j        d         j        j        sJ |                      t          d          ddi          }|j        d	         j        dt                      j
        d
         gik    sJ t          j                            |t          j        j                  }|                      t          d          d|                                                                d         i          }|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 d S )Nr   rK   r   r   rM   rN   r   r   r    r!   r4   r   rB   rO   rS   rT   )r"   r   rR   r   r   r#   r*   rV   r$   r   r%   r   r-   r6   r9   rf   rg   r   rW   rX   r   r   )r   r>   r]   rC   r   ri   s         r   test_recovery_codes_loginrm      s    ;;   )}EE D s""""
w'9::::::::g01122D<	"'4444;;w122VUODDD<&-.>?@+     
		"	"%M,>,M 
# 
 
B ;;"##	++--a01 D s""""
x:::::><=Sn6MNN!&5		
 	
B      r   c                     |                      t          d          ddd          }|j        dk    sJ |j        d         j        ddgik    sJ d S )	Naccount_email zchange-to@this.org)
action_addemail   r    rr   zUYou cannot add an email address to an account protected by two-factor authentication.)r"   r   r   r#   r$   r=   s      r   test_add_email_not_allowedrt      s      $899 D s""""<&c
+      r   c                    d| _         |                    t          d          |j        |d          }|j        dk    sJ |d         t          d          k    sJ t          d          D ]t}|dk    }|                    t          d          dd	i          }t          j        d
k    r!t          |j	        d         d|rdnd           ^t          |dd|rdnd           ud S )N   r   rK   r   r   rM      r   wrong)      r    z0Too many failed login attempts. Try again later.zIncorrect code.)
ACCOUNT_LOGIN_ATTEMPTS_LIMITr"   r   rR   r   rangedjangoVERSIONr   r#   )r   enable_cacher>   rC   r   r   i	is_lockeds           r   test_totp_login_rate_limitr      s5    -.H);;   )}EE D s""""
w'9::::::1XX  F	{{&''
 
 >V##V$'BB&    'BB&   # r   c                    t          d          5 }d|_        |                     t          d                    }|j        dk    sJ |d                             t          d                    sJ |                     |d         d|i          }|j        dk    sJ |                     t          d                    }|j        d         j        d	t                      j
        d
         gik    sJ |                     t          d                    }|j        dk    sJ |j        d         j        d	t                      j
        d
         gik    sJ 	 d d d            d S # 1 swxY w Y   d S )Nz>allauth.mfa.adapter.DefaultMFAAdapter.can_delete_authenticatorFr   r   r   rA   rB   r    __all__cannot_delete_authenticatorrs   )r   return_valuer   r   r   r   r"   r#   r$   r   r%   )r&   r>   rC   cda_mockr   s        r   test_cannot_deactivate_totpr     s   	H
 
 
	 %w'<==>>3&&&&J**73K+L+LMMMMMZ 0:}2MNN3&&&&w'<==>>|F#*45RST/
 
 
 
 
 (= > >??3&&&&|F#*45RST/
 
 
 
 
 
#
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   EEE#&E#)'unittest.mockr   r   r}   django.confr   django.urlsr   pytestpytest_django.assertsr   allauth.account.authenticationr   allauth.account.modelsr	   allauth.mfar
   allauth.mfa.adapterr   allauth.mfa.modelsr   markparametrizer   r(   r1   r:   r?   rD   rG   rI   rY   r^   rc   rk   rm   rt   r   r    r   r   <module>r      s   $ $ $ $ $ $ $ $                     1 1 1 1 1 1 M M M M M M / / / / / / $ $ $ $ $ $ + + + + + + , , , , , ,  A A A    $  *, , ,
4 4 4# # #
> > >  4V V VQ Q Q+ + +&     F
 
 
" " "J
 
 
 
 
r   