
    f"                        d dl Z d dlZd dlZd dl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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 Zej<                  d        Zej<                  d        Z ej<                  d        Z!ej<                  d        Z"ej<                  d        Z#ej<                  d        Z$ej<                  d        Z%ej<                  d        Z&ej<                  d        Z'ej<                  d        Z( ej<                  d      d        Z)ej<                  d        Z*ej<                  d        Z+ej<                  d        Z,ej<                  d        Z-ej<                  d        Z.ej<                  d        Z/ej<                  d         Z0ej<                  d!        Z1ej<                  d"        Z2ej<                  d#        Z3ej<                  d$        Z4y)%    Ncontextmanager)MockPropertyMockpatch)get_user_model)MessageMiddleware)SessionMiddleware)EmailAddress)
user_emailuser_pk_to_url_struser_username)context)statekit)AuthProcessc                     | j                  d      dk(  rRg }|D ]2  }|j                  d   j                  d      r"|j                  |       4 |D ]  }|j	                  |        y y )Nz--dsztests.headless_only.settingsr   zallauth/headless)	getoptionlocation
startswithappendremove)configitemsremoved_itemsitems       K/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/conftest.pypytest_collection_modifyitemsr      ss    #AA 	+D==#../AB$$T*	+ " 	DLL	 B    c                      |        S N )user_factorys    r   userr#      s
    >r   c                 (    | j                  |       | S r    )force_login)clientr#   s     r   auth_clientr'   $   s    
tMr   c                      d } | S )Nc                  <    t        t        j                               S r    )struuiduuid4r!   r   r   fzpassword_factory.<locals>.f,   s    4::<  r   r!   r-   s    r   password_factoryr/   *   s    ! Hr   c                      |        S r    r!   )r/   s    r   user_passwordr1   2   s    r   c                       y)NTr!   r!   r   r   email_verifiedr3   7   s    r   c                 (     d d dd|d ddf fd	}|S )NTFc                    |st        j                         j                  }| s|r	 |      } t               } |       }	|dk(  r||	_        n|	j                  |n|       t        |	|       t        |	| xs d       |rE|	j                          | r3|r1t        j                  j                  |	| j                         |d       |r0ddlm}
 |
j                  j!                  |	|
j#                                |	S )N)username! T)r#   emailverifiedprimaryr   auth)r+   r,   hexr   passwordset_passwordr   r   saver   objectscreatelowerallauth.mfa.totp.internalr=   TOTPactivategenerate_totp_secret)r9   r6   commit
with_emailr3   r?   with_emailaddress	with_totpUserr#   r=   email_factoryr1   s              r   factoryzuser_factory.<locals>.factory>   s     zz|''H!84Evs?$DMx/?mXNdH%4"%IIK*$$++++-+ 	 ,  6IItT%>%>%@Ar   r!   )rN   dbr1   r3   rO   s   ` `  r   r"   r"   <   s*     %%N Nr   c                      dd} | S )Nc           
      d   |D| st        j                         j                  } |  dt        j                         j                   d}|rRdj                  |D cg c]5  }t	        j
                  |j                         |j                         g      7 c}      }|S |j                         }|S c c}w )N@z.orgr8   )r+   r,   r>   joinrandomchoiceupperrD   )r6   r9   
mixed_casecs       r   rO   zemail_factory.<locals>.factoryj   s    =::<++j$**,"2"2!348EGGERqV]]AGGIqwwy+ABRSE  KKME Ss   :B-)NNFr!   )rO   s    r   rN   rN   h   s    	 Nr   c                      t         d        } | S )Nc               3   b   K   t        d      5 } d| _        d  d d d        y # 1 sw Y   y xY ww)NzIallauth.account.internal.flows.reauthentication.did_recently_authenticateTr   return_valuems    r   r-   z"reauthentication_bypass.<locals>.fz   s2     W
 	!AN		 	 	   /#	/,/r   r.   s    r   reauthentication_bypassra   x   s      Hr   c                      t         d        } | S )Nc              3   `  K   ddl m} ddlm} t	        dt
              5 }t	        d      5 }i ddif|_        t	        d	      5 }t	        d
      5 } |       j                  | j                        d   }t               }d|j                  _        ||_        t               |_        t               }	d|	_        |	|_        t        j                  dd ||      ii       d d d        d d d        d d d        d d d        y # 1 sw Y   "xY w# 1 sw Y   &xY w# 1 sw Y   *xY w# 1 sw Y   y xY ww)Nr   )websafe_encode)get_adapterz>allauth.mfa.webauthn.internal.auth.WebAuthn.authenticator_data)new_callablez+fido2.server.Fido2Server.authenticate_beginstatedummyz.fido2.server.Fido2Server.authenticate_completez@allauth.mfa.webauthn.internal.auth.parse_authentication_responseidcredential_idresponse
userHandle)fido2.utilsrd   allauth.mfa.adapterre   r   r   r]   %get_public_key_credential_user_entityr#   r   credential_datarj   jsondumps)
authenticatorrd   re   ad_mab_mac_mr_   user_handleauthenticator_databindings
             r   r-   z)webauthn_authentication_bypass.<locals>.f   s<    .3L%
 	 DE %''7);$<!KL PTZ 'MOO - 2 2"$ $
 .2V*+ +::H -?))-"&&0?-,3)"jj',{8S)TU #		 	   		 	sd   D.D"DD
BC>	D
%D-D"5	D.>DD

DDD	D""D+'D.r   r.   s    r   webauthn_authentication_bypassrz      s     B Hr   c                      t         d        } | S )Nc              3   :  K   t        d      5 }t        d      5 }t               |_         G fddt              } |d      }||_        t	        j
                  dddiid	d
dddgddd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY ww)Nz*fido2.server.Fido2Server.register_completez>allauth.mfa.webauthn.internal.auth.parse_registration_responsec                       e Zd Z fdZy)Fwebauthn_registration_bypass.<locals>.f.<locals>.FakeAuthenticatorDatac                     S r    r!   )selfpasswordlesss    r   is_user_verifiedzWwebauthn_registration_bypass.<locals>.f.<locals>.FakeAuthenticatorData.is_user_verified   s	    ++r   N)__name__
__module____qualname__r   )r   s   r   FakeAuthenticatorDatar~      s    ,r   r   s   bindingzcross-platform	credPropsrk123456aocdjusb)attestationObjectclientDataJSON
transportsz
public-key)authenticatorAttachmentclientExtensionResultsri   rawIdrk   type)r   r   r]   bytesrq   rr   )r#   r   rc_mr_   r   ry   s    `    r   r-   z'webauthn_registration_bypass.<locals>.f   s     ?@ 	DP !%,E , 0
;$+!jj3C3>|@T2U#!&15.3+0'%
 !- 	 	 	 	s4   BBAB2B:	BB	BBBr   r.   s    r   webauthn_registration_bypassr      s     8 Hr   T)autousec                  B    t         j                  j                  d        y r    )r   _request_varsetr!   r   r   clear_context_requestr      s    T"r   c              #   V   K   ddl m} dddii| _        |j                          d  y w)Nr   )cachedefaultBACKENDz-django.core.cache.backends.locmem.LocMemCache)django.core.cacher   CACHESclear)settingsr   s     r   enable_cacher      s0     ' 	F
HO
 
KKM	s   ')c                      t         d        } | S )Nc               3   b   K   t        d      5 } d| _        d  d d d        y # 1 sw Y   y xY ww)Nz1allauth.mfa.totp.internal.auth.validate_totp_codeTr\   r^   s    r   r-   z!totp_validation_bypass.<locals>.f   s/     FG 	1!AN	 	 	r`   r   r.   s    r   totp_validation_bypassr      s     
 Hr   c                       y)Nzunittest-serverr!   r!   r   r   provider_idr      s    r   c                      d } | S )Nc                 x    ddl m} |j                         }t        |       }|j	                  |       }| d| }|S )Nr   )app_settings-)allauth.accountr   PASSWORD_RESET_TOKEN_GENERATORr   
make_token)r#   r   token_generatoruidtemp_keykeys         r   r-   z'password_reset_key_generator.<locals>.f   sB    0&EEG &"--d3Qxj!
r   r!   r.   s    r   password_reset_key_generatorr      s     Hr   c                 (    ddddgi}d|i| _         |S )NAPPS	client_idsecret)r   r   google)SOCIALACCOUNT_PROVIDERS)r   	gsettingss     r   google_provider_settingsr      s'    xHIJI(0)'<H$r   c                 f    ddl m} |j                  j                  | |j	                                | S Nr   r<   )rE   r=   rF   rG   rH   )r#   r=   s     r   user_with_totpr     s'    .IItT6689Kr   c                 H    ddl m} |j                  j                  |        | S r   )#allauth.mfa.recovery_codes.internalr=   RecoveryCodesrG   )r   r=   s     r   user_with_recovery_codesr     s    8/r   c                 |    ddl m} |j                  j                  | |j                  j
                  ddd      }|S )Nr   )AuthenticatorzTest passkeyT)namer   )r#   r   data)allauth.mfa.modelsr   rB   rC   TypeWEBAUTHN)r#   r   rs   s      r   passkeyr     sB    0!))00(($d; 1 M
 r   c                     | S r    r!   )r#   r   s     r   user_with_passkeyr   !  s    Kr   c                      dd} | S )Nc                     d}| j                   }d|xs t        j                  i|}|r||d<   i }|t        j                         g||<   ||t        j
                  <   |j                          |S )Nr   processnext)sessionr   LOGINtimer   STATES_SESSION_KEYrA   )r&   r   next_urlkwargsstate_idr   rg   statess           r   setupz&sociallogin_setup_state.<locals>.setup(  sn    ..G8{'8'8CFC$E&M!499;/x/5++,r   )NNr!   )r   s    r   sociallogin_setup_stater   &  s    
 Lr   c                 *      G  fdd      } |       S )Nc                       e Zd Z fdZy)'request_factory.<locals>.RequestFactoryc                     j                  |      }t        d       j                  |       t        d       j                  |       |S )Nc                      y r    r!   requests    r   <lambda>z=request_factory.<locals>.RequestFactory.get.<locals>.<lambda><      r   c                      y r    r!   r   s    r   r   z=request_factory.<locals>.RequestFactory.get.<locals>.<lambda>=  r   r   )getr
   process_requestr	   )r   pathr   rfs      r   r   z+request_factory.<locals>.RequestFactory.get:  s=    ffTlG23CCGL23CCGLNr   N)r   r   r   r   )r   s   r   RequestFactoryr   9  s    	r   r   r!   )r   r   s   ` r   request_factoryr   7  s      r   )5rq   rU   r   r+   
contextlibr   unittest.mockr   r   r   django.contrib.authr   "django.contrib.messages.middlewarer	   "django.contrib.sessions.middlewarer
   pytestallauth.account.modelsr   allauth.account.utilsr   r   r   allauth.corer   allauth.socialaccount.internalr   .allauth.socialaccount.providers.base.constantsr   r   fixturer#   r'   r/   r1   r3   r"   rN   ra   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r   <module>r      sW       % 3 3 . @ @  / O O   3 F    
       ( (V   	 	 # #L  B # # 	
 	
     
 
               r   