o
    "4g-                     @   sl   d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	 dd Z
dd Zd	d
 Zdd Zdd Zdd ZdS )    )ANYpatch)User)EmailAddressEmailConfirmationHMAC)Flowc                 C   sH   |j |dd| | ddd}|jdksJ tjjdd s"J d S )Nheadless:account:signupwizardusernameemailpasswordapplication/jsondatacontent_type   r   )poststatus_coder   objectsfilterexists)dbclientemail_factorypassword_factorysettingsheadless_reverseheadless_clientresp r!   s/var/www/html/authentication-server/venv/lib/python3.10/site-packages/allauth/headless/account/tests/test_signup.pytest_signup	   s   		r#   c                 C   s2  d|_ d|_| }|j|d|| ddd}|jdksJ tjj|d s)J | }	t	d	d
 |	d d D }
|
d dksBJ t
jj|d}t|j}|j|d|d}|jdks^J | |tdddiddksoJ |j|dd|idd}|jdksJ | }	|	d d sJ |  |jsJ d S )N	mandatoryFr   r   r   r   r     )r   c                 s   s    | ]
}| d r|V  qdS )
is_pendingN)get.0fr!   r!   r"   	<genexpr>6   s    z6test_signup_with_email_verification.<locals>.<genexpr>r   flowsidverify_emailzheadless:account:verify_email)HTTP_X_EMAIL_VERIFICATION_KEYr   )r   useris_authenticatingT)r   metastatuskeyr3   is_authenticated)ACCOUNT_EMAIL_VERIFICATIONACCOUNT_USERNAME_REQUIREDr   r   r   r   r   r   jsonnextr   r(   r   r5   r   refresh_from_dbverified)r   r   r   r   r   r   r   r   r    r   flowaddrr5   r!   r!   r"   #test_signup_with_email_verification   sN   	
r?   c	                 C   s   d|_ d|_d|_|j|d|j| ddd}	t|dks J d	|d
 jv s)J |	jdks0J |	 }
dd |
d d D d
 d sEJ |	|d}	|	 }
dd |
d d D d
 d saJ d S )Nr$   FTr   r%   r   r      z2an account using that email address already existsr   r&   c                 S      g | ]}|d  t jkr|qS r.   r   VERIFY_EMAILr)   r!   r!   r"   
<listcomp>m       z3test_signup_prevent_enumeration.<locals>.<listcomp>r   r-   r'   z headless:account:current_sessionc                 S   rA   rB   rC   r)   r!   r!   r"   rE   r   rF   )
r7   r8   ACCOUNT_PREVENT_ENUMERATIONr   r   lenbodyr   r9   r(   )r   r   r   r   r   r   r   r1   
mailoutboxr    r   r!   r!   r"   test_signup_prevent_enumerationS   s,   rK   c                 C   sp   ddi|_ tdD ],}|j|dd| | | ddd}	|r"d	nd
}
|	j|
ks+J |	 d |
ks5J q	d S )Nsignupz1/m/ip   r   r	   r
   r   r   i  r   r4   )ACCOUNT_RATE_LIMITSranger   r   r9   )r   r   r   r   r   r   enable_cacher   attemptr    expected_statusr!   r!   r"   test_signup_rate_limitw   s   

	rS   c           	      C   sv   t d}d|_|j|dd| | ddd}W d    n1 s"w   Y  |jdks.J tjjdd	 r9J d S )
Nz@allauth.account.adapter.DefaultAccountAdapter.is_open_for_signupFr   r	   r
   r   r   i  r   )r   return_valuer   r   r   r   r   r   )	r   r   r   r   r   r   r   iofsr    r!   r!   r"   test_signup_closed   s    	rV   c                 C   sF   |j |dd| | ddd}|jdksJ | ddiks!J d S )Nr   r	   r
   r   r   i  r4   )r   r   r9   )r   auth_clientr   r   r   r   r   r    r!   r!   r"   test_signup_while_logged_in   s   		rX   N)unittest.mockr   r   django.contrib.auth.modelsr   allauth.account.modelsr   r   allauth.headless.constantsr   r#   r?   rK   rS   rV   rX   r!   r!   r!   r"   <module>   s    4$