o
    Lf                     @   s*  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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mZ d dlmZ ejdddgejdddgejdg ddd Zdd Zejdddgejdej dfej!dfgdd Z"dS )    N)ANYpatch)get_user_model)AnonymousUser)MessageMiddleware)SessionMiddleware)reverse)assertTemplateUsed)"AUTHENTICATION_METHODS_SESSION_KEY)context)complete_social_login)SocialAccountSocialToken)AuthProcesswith_emailaddressFTauto_connectsetting)off	on-globalon-providerc
              
   C   s  d|_ d|_d|_d|_d|_d|_|dkrd|_n|dkr-t|j	|_	d|j	d d< nd|_||_
||	d	}
||
jd
d}|d}tdd | tdd | t |_t|5 td!}td}t||}W d   n1 syw   Y  W d   n1 sw   Y  W d   n1 sw   Y  |dkr|d tdksJ |jrJ |jrJ dS |	r|d dksJ n
|d tdksJ t j dksJ tjj|
jd |ksJ |j|ksJ |jrJ dS )zyTests that when an already existing email is given at the social signup
    form, enumeration preventation kicks in.
    TFemail	mandatoryr   r   openid_connectEMAIL_AUTHENTICATION)r   unittest-server)r   provider/c                 S      d S N requestr   r   g/var/www/html/humari/django-venv/lib/python3.10/site-packages/allauth/socialaccount/tests/test_login.py<lambda>>       z+test_email_authentication.<locals>.<lambda>c                 S   r   r   r   r    r   r   r"   r#   ?   r$   z9allauth.socialaccount.signals.social_account_updated.sendz7allauth.socialaccount.signals.social_account_added.sendNr   locationaccount_email_verification_sentz/accounts/profile/   )user)ACCOUNT_EMAIL_REQUIREDACCOUNT_UNIQUE_EMAILACCOUNT_USERNAME_REQUIREDACCOUNT_AUTHENTICATION_METHODACCOUNT_EMAIL_VERIFICATIONSOCIALACCOUNT_AUTO_SIGNUP"SOCIALACCOUNT_EMAIL_AUTHENTICATIONcopydeepcopySOCIALACCOUNT_PROVIDERS/SOCIALACCOUNT_EMAIL_AUTHENTICATION_AUTO_CONNECTr   getr   process_requestr   r   r(   r   request_contextr   r   r   calledr   objectscountr   filterpkexists)dbr   settingsuser_factorysociallogin_factoryclientrf
mailoutboxr   r   r(   socialloginr!   updated_signaladded_signalrespr   r   r"   test_email_authentication   sd   


rH   c                 C   s*   |  td}|jdksJ t|d d S )Nsocialaccount_login_cancelled   z"socialaccount/login_cancelled.html)r4   r   status_coder	   )rA   rG   r   r   r"   test_login_cancelledY   s   rL   store_tokenszprocess,did_recordc	                 C   s  ||_ |ddd}	||	jd< t|	j jddd|	_tjj	|ddd |
d}
td	d
 |
 tdd
 |
 t |
_t|
 t|
|	 W d    n1 sSw   Y  |rl|
jt t|	jjdddgkskJ nt|
jvssJ tjjdddd |ksJ d S )Nr   123)r   uidprocess456)apptokentoken_secret)r(   rO   r   r   c                 S   r   r   r   r    r   r   r"   r#   z   r$   z,test_record_authentication.<locals>.<lambda>c                 S   r   r   r   r    r   r   r"   r#   {   r$   socialaccount)atr   methodrO   )account__uidrS   rT   )SOCIALACCOUNT_STORE_TOKENSstater   accountget_providerrR   rS   r   r8   creater4   r   r5   r   r   r(   r   r6   r   sessionr
   r   r   r:   r<   )r=   r@   rA   rB   r(   rP   
did_recordrM   r>   rD   r!   r   r   r"   test_record_authentication_   s:   

	r`   )#r0   unittest.mockr   r   django.contrib.authr   django.contrib.auth.modelsr   "django.contrib.messages.middlewarer   "django.contrib.sessions.middlewarer   django.urlsr   pytestpytest_django.assertsr	   allauth.account.authenticationr
   allauth.corer   allauth.socialaccount.helpersr   allauth.socialaccount.modelsr   r   $allauth.socialaccount.providers.baser   markparametrizerH   rL   LOGINCONNECTr`   r   r   r   r"   <module>   s6    B