o
    h                     @   s   d dl mZ d dlZd dlmZ d dlmZ dd Zdd Zd	d
 Z	ej
dddgdd Zdd Zdd Zdd Zdd ZdS )    )ANYN)user_logged_in)AuthenticationResponsec                 C   sP   |j | di dd}|jdksJ | dddddddd	dgd
ks&J d S )Nheadless:account:loginapplication/jsondatacontent_type  zThis field is required.requiredusername)messagecodeparampasswordstatuserrors)poststatus_codejson)headless_reverseclientresp r   d/var/www/html/env_mimamsha/lib/python3.10/site-packages/allauth/headless/account/tests/test_login.pytest_auth_password_input_error	   s$   r   c                 C   sV   dh|_ |j| d|jdddd}|jdksJ | ddd	d
dgdks)J d S )Nemailr   wrongr   r   r   r   r
   r   @The email address and/or password you specified are not correct.email_password_mismatch)r   r   r   r   )ACCOUNT_LOGIN_METHODSr   r   r   r   )r   r   usersettingsr   r   r   r   test_auth_password_bad_password!   s"   r%   c           
   	   C   s   ddh|_ | j|d|j|ddd}|jdksJ | j|ddd	}|jdks*J ||fD ]4}i }	|d
kr>||kr>t|	d< | d|jt||j|j	ddt|jddgdddi|	dksbJ q.d S )Nr   r   r   r   r   r      z headless:account:current_session)r	   appsession_tokenT)iddisplayr   r   has_usable_passwordr   )atr   method)r#   methodsis_authenticated)r   r   meta)
r"   r   r   r   getr   r   pkstrr   )
r   r#   user_passwordr$   r   headless_client
login_respsession_respr   
extra_metar   r   r   test_auth_password_success8   sF   
	
r9   zis_active,status_code)Fi  )Tr&   c                 C   sB   ||_ |jdgd | j|d|j|ddd}|j|ksJ d S )N	is_active)update_fieldsr   )r   r   r   r   )r:   saver   r   r   )r   r#   r4   r$   r   r:   r   r   r   r   r    test_auth_password_user_inactivef   s   r=   c                 C   s~   ddi|_ dh|_tdD ]/}| j|d|jdddd	}|jd
ks$J | d |dkr3ddddndddgks<J qd S )Nlogin_failed1/m/ipr      r   r   r   r   r   r
   r   r   r!   r    r   )r   r   r   z0Too many failed login attempts. Try again later.too_many_login_attempts)r   r   )ACCOUNT_RATE_LIMITSr"   ranger   r   r   r   )r   r#   r$   r   r5   enable_cacheattemptr   r   r   r   test_login_failed_rate_limitw   s,   

rF   c           
      C   sZ   ddi|_ dh|_tdD ]}| j|d|j|ddd}|r!d	nd
}	|j|	ks*J qd S )Nloginr?   r   r@   r   r   r   r   i  r&   )rB   r"   rC   r   r   r   )
r   r#   r4   r$   r   r5   rD   rE   r   expected_statusr   r   r   test_login_rate_limit   s   
	rI   c                 C   s6   dh|_ | j|d|j|ddd}|jdksJ d S )Nr   r   r   r   r   i  )r"   r   r   r   )auth_clientr#   r4   r$   r   r   r   r   r   test_login_already_logged_in   s   rK   c              	   C   sb   dh| _ dd }t| z|j|d|j|ddd}|jdks#J W t| d S t| w )	Nr   c                  [   s   | d }t |tsJ d S )Nresponse)
isinstancer   )kwargsrL   r   r   r   on_user_logged_in   s   z:test_custom_post_login_response.<locals>.on_user_logged_inr   r   r   r   r&   )r"   r   connectr   r   r   
disconnect)r$   r   r   r#   r4   rO   r6   r   r   r   test_custom_post_login_response   s   
rR   )unittest.mockr   pytestallauth.account.signalsr   allauth.headless.base.responser   r   r%   r9   markparametrizer=   rF   rI   rK   rR   r   r   r   r   <module>   s    .
$