a
    €AWe˜  ã                   @   s–   d dl Zd dlm  mZ d dl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 G dd„ dƒZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZdS )é    N)Úpatch)ÚRegisterSchema)Úconnect)ÚTestingConfigc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestAuthRegisterAPIc           
      C   s$  |  d¡}|j}d}||k}|sˆt d|fd||f¡dt ¡ v sJt |¡rTt |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}d	}|j
}||v }	|	st d
|	fd||f¡t |¡dt ¡ v sÞt |¡rèt |¡ndt |¡dœ }dd|i }tt 	|¡ƒ‚d  } }	}d S )Nú/éÈ   ©ú==©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚresponse©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7s)   Welcome to the Authentication Service API©Úin©z,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.data
}©Úpy1Úpy3r   )ÚgetÚstatus_codeÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚdata©
ÚselfÚclientr   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert0Ú@py_assert2© r.   ú%/app/tests/apis/test_apis_endpoint.pyÚtest_home_endpoint
   s    
Šz&TestAuthRegisterAPI.test_home_endpointc                 C   sž   |j dd dd}|j}d}||k}|sŽt d|fd||f¡dt ¡ v sPt |¡rZt |¡ndt |¡t |¡dœ }d	d
|i }tt 	|¡ƒ‚d  } }}d S )Nú/api/auth/registerúapplication/json©ÚjsonÚcontent_typeé  r	   r   r   r   r   r   ©
Úpostr   r   r   r   r   r   r    r!   r"   ©r%   r&   r   r'   r(   r)   r*   r+   r.   r.   r/   Útest_register_with_no_data   s    z.TestAuthRegisterAPI.test_register_with_no_datac                 C   sÜ   t  | ¡ ¡}t|d ƒ |d |d |d |d |d dœ}|jd|dd}d	}|j}||v }|sÌt d
|fd||f¡t |¡dt	 
¡ v s–t |¡r t |¡ndt |¡dœ }	dd|	i }
tt |
¡ƒ‚d  } }}d S )NÚemailÚcompany_nameÚusernameÚpassword)r<   r;   r=   r>   Úpassword_confirmr1   r2   r3   s   Company type is required.r   r   r   r   r   r   )r4   ÚloadsÚto_jsonÚprintr8   r#   r   r   r    r   r   r   r!   r"   )r%   r&   Úuser_model_factoryÚpayload_userÚpayloadr   r,   r(   r-   r*   r+   r.   r.   r/   Ú)test_register_with_missing_required_value   s    ûz=TestAuthRegisterAPI.test_register_with_missing_required_valuec                 C   sf  t  | ¡ ¡}|d |d |d |d |d |d dœ}|jd|dd	}|j}d
}||k}|sÆt d|fd||f¡dt ¡ v sˆt 	|¡r’t 
|¡ndt 
|¡t 
|¡dœ }	dd|	i }
tt |
¡ƒ‚d  } }}d}|j}||v }|sVt d|fd||f¡t 
|¡dt ¡ v s t 	|¡r*t 
|¡ndt 
|¡dœ }	dd|	i }
tt |
¡ƒ‚d  } }}d S )Nr<   Úcompany_typer;   r=   r>   ©r<   rG   r;   r=   r>   r?   r1   r2   r3   éÉ   r	   r   r   r   r   r   s   User registered successfullyr   r   r   )r4   r@   rA   r8   r   r   r   r   r   r   r    r!   r"   r#   )r%   r&   rC   rD   rE   r   r'   r(   r)   r*   r+   r,   r-   r.   r.   r/   Útest_user_are_created"   s    úŠz)TestAuthRegisterAPI.test_user_are_createdc                 C   sÖ   t  | ¡ ¡}|d |d |d |d |d |d dœ}|jd|dd	}|j}d
}||k}|sÆt d|fd||f¡dt ¡ v sˆt 	|¡r’t 
|¡ndt 
|¡t 
|¡dœ }	dd|	i }
tt |
¡ƒ‚d  } }}d S )Nr<   rG   r;   r=   r>   rH   r1   r2   r3   r6   r	   r   r   r   r   r   )r4   r@   rA   r8   r   r   r   r   r   r   r    r!   r"   )r%   r&   Úuser_model_weak_passrD   rE   r   r'   r(   r)   r*   r+   r.   r.   r/   Ú)test_register_endpoint_with_weak_password1   s    úz=TestAuthRegisterAPI.test_register_endpoint_with_weak_passwordN)Ú__name__Ú
__module__Ú__qualname__r0   r:   rF   rJ   rL   r.   r.   r.   r/   r      s
   r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestLoginAPIc                 C   s˜   |  d¡}|j}d}||k}|sˆt d|fd||f¡dt ¡ v sJt |¡rTt |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}d S )	Nr1   i•  r	   r   r   r   r   r   )
r   r   r   r   r   r   r   r    r!   r"   r9   r.   r.   r/   Ú$test_login_with_wrong_request_method@   s    
z1TestLoginAPI.test_login_with_wrong_request_methodc                 C   sâ   |}|d |d |d |d |d |d dœ}|j d|dd	}|j d
d|d id}|j}d}||k}	|	sÒt d|	fd||f¡dt ¡ v s”t |¡ržt |¡ndt |¡t |¡dœ }
dd|
i }tt 	|¡ƒ‚d  } }	}d S ©Nr<   rG   r;   r=   r>   rH   r1   r2   r3   ú/api/auth/login©r4   r6   r	   r   r   r   r   r   r7   ©r%   r&   Úuser_model_loginrD   rE   Úregisterr   r'   r(   r)   r*   r+   r.   r.   r/   Ú test_login_with_missing_passwordE   s    ú
ÿz-TestLoginAPI.test_login_with_missing_passwordc                 C   sâ   |}|d |d |d |d |d |d dœ}|j d|dd	}|j d
d|d id}|j}d}||k}	|	sÒt d|	fd||f¡dt ¡ v s”t |¡ržt |¡ndt |¡t |¡dœ }
dd|
i }tt 	|¡ƒ‚d  } }	}d S rR   r7   rU   r.   r.   r/   Útest_login_with_missing_emailW   s    ú
ÿz*TestLoginAPI.test_login_with_missing_emailc                 C   sè   |}|d |d |d |d |d |d dœ}|j d|dd	}|j d
|d |d dœd}|j}d}||k}	|	sØt d|	fd||f¡dt ¡ v sšt |¡r¤t |¡ndt |¡t |¡dœ }
dd|
i }tt 	|¡ƒ‚d  } }	}d S )Nr<   rG   r;   r=   r>   rH   r1   r2   r3   rS   ©r;   r>   rT   r   r	   r   r   r   r   r   r7   rU   r.   r.   r/   Útest_login_with_correct_datai   s    úþÿz)TestLoginAPI.test_login_with_correct_dataN)rM   rN   rO   rQ   rX   rY   r[   r.   r.   r.   r/   rP   ?   s   rP   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestLogoutAPIc           
      C   s$  |  d¡}d}|j}||v }|sˆt d|fd||f¡t |¡dt ¡ v sRt |¡r\t |¡ndt |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}|j
}d	}||k}	|	st d
|	fd||f¡dt ¡ v sÖt |¡ràt |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }	}d S )Nú/api/auth/logoutó   Missing Authorization Headerr   r   r   r   r   r   é‘  r	   r   r   )r8   r#   r   r   r    r   r   r   r!   r"   r   )
r%   r&   r   r,   r(   r-   r*   r+   r'   r)   r.   r.   r/   Útest_logout_without_jwt   s    
Šz%TestLogoutAPI.test_logout_without_jwtc                 C   s¶  |}|d |d |d |d |d |d dœ}|j d|dd	}|j d
|d |d dœd}dd|jd d › i}d|jd d i}|j d||dd}	d}
|	j}|
|v }|st d|fd|
|f¡t |
¡dt ¡ v sàt |	¡rêt |	¡ndt |¡dœ }dd|i }t	t 
|¡ƒ‚d  }
 }}|	j}d}||k}|s¦t d|fd||f¡dt ¡ v sht |	¡rrt |	¡ndt |¡t |¡dœ }dd|i }t	t 
|¡ƒ‚d  } }}d S )Nr<   rG   r;   r=   r>   rH   r1   r2   r3   rS   rZ   rT   ÚAuthorizationúBearer ÚtokenÚaccessÚrefreshr]   )r4   Úheadersr5   s   User logged out successfullyr   r   Úlogoutr   r   r   r   r	   r   r   )r8   r4   r#   r   r   r    r   r   r   r!   r"   r   )r%   r&   rV   rD   rE   rW   r   rf   r#   rg   r,   r(   r-   r*   r+   r'   r)   r.   r.   r/   Útest_logout_with_jwt‡   s&    úÿÿÿŒz"TestLogoutAPI.test_logout_with_jwtN)rM   rN   rO   r`   rh   r.   r.   r.   r/   r\   €   s   r\   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestVerifyTokenAPIc           
      C   s(  |j dd d}|j}d}||k}|sŒt d|fd||f¡dt ¡ v sNt |¡rXt |¡ndt |¡t |¡dœ }dd	|i }tt 	|¡ƒ‚d  } }}d
}|j
}||v }	|	st d|	fd||f¡t |¡dt ¡ v sât |¡rìt |¡ndt |¡dœ }dd	|i }tt 	|¡ƒ‚d  } }	}d S )Nz/api/auth/token/verify©rf   r_   r	   r   r   r   r   r   r^   r   r   r   )r8   r   r   r   r   r   r   r    r!   r"   r#   r$   r.   r.   r/   Ú#test_verify_token_api_without_token¤   s    Šz6TestVerifyTokenAPI.test_verify_token_api_without_tokenc                 C   s"  |}|d |d |d |d |d |d dœ}|j d|dd	}|j d
|d |d dœd}dd|jd d › i}d|jd d i}|jd|d}	d}
|	j}|
|v }|st d|fd|
|f¡t |
¡dt ¡ v sÜt 	|	¡ræt |	¡ndt |¡dœ }dd|i }t
t |¡ƒ‚d  }
 }}d S )Nr<   rG   r;   r=   r>   rH   r1   r2   r3   rS   rZ   rT   ra   rb   rc   rd   re   zapi/auth/token/verifyrj   s   Token verified successfully.r   r   Úverifyr   r   r   )r8   r4   r   r#   r   r   r    r   r   r   r!   r"   )r%   r&   rV   rD   rE   rW   r   rf   r#   rl   r,   r(   r-   r*   r+   r.   r.   r/   Útest_verify_token_are_valid©   s$    úÿÿÿz.TestVerifyTokenAPI.test_verify_token_are_validN)rM   rN   rO   rk   rm   r.   r.   r.   r/   ri   £   s   ri   )Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   Úpytestr4   Zunittest.mockr   Úapp.schema.registerr   Úmongoenginer   Úapp.config.settingsr   r   rP   r\   ri   r.   r.   r.   r/   Ú<module>   s   "7A#