o
    X’Üig  ã                   @   sš   d Z ddlZddlm  mZ ddlZddlm	Z	 ej
jde	defdd„ƒZej
jde	defdd	„ƒZej
jde	defd
d„ƒZej
jde	fdd„ƒZdS )z9Tests for face registration and identification endpoints.é    N)ÚAsyncClientÚclientÚsample_jpegc                 Ã   s*  | j dddidd|dfidI dH }|j}d	}||k}|sRt d
|fd||f¡dt ¡ v s3t |¡r8t |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d } }}| 
¡ }d}	|	|v }
|
s”t d|
fd|	|f¡t |	¡dt ¡ v s}t |¡r‚t |¡nddœ }dd|i }tt 	|¡ƒ‚d }	}
|d }	d}|	|k}
|
sÇt d|
fd|	|f¡t |	¡t |¡dœ }dd|i }tt 	|¡ƒ‚d }	 }
}|d }t|tƒ}|sdd t ¡ v såt t¡rêt t¡nd t |¡d!t ¡ v sút t¡rÿt t¡nd!t |¡d"œ }tt 	|¡ƒ‚d }}dS )#u8   POST /faces/register â†’ creates new user when no match.ú/api/v1/faces/registerÚ	user_nameu   í…ŒìŠ¤íŠ¸ ì‚¬ìš©ìžÚimageúface.jpgú
image/jpeg©ÚdataÚfilesNéÈ   ©ú==©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚresp©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7Úuser_id©Úin©z%(py1)s in %(py3)sr   ©Úpy1Úpy3úassert %(py5)sr   Ú
confidencer   ©Ú>©z%(py1)s > %(py4)s©r   Úpy4úassert %(py6)sÚpy6Úis_new_userz5assert %(py5)s
{%(py5)s = %(py0)s(%(py2)s, %(py3)s)
}Ú
isinstanceÚbool)r   r   r   r   )ÚpostÚstatus_codeÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚjsonr)   r*   )r   r   r   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8r   Ú@py_assert0Ú@py_assert2Ú@py_format4Ú@py_format5Ú@py_format7© r@   ú//home/ubuntu/ootd-poc-server/tests/test_face.pyÚtest_face_register_new_user   s   €ýŠxjrB   c                 Ã   s®   | j ddd|dfidI dH }|j}d}||k}|sOt d|fd	||f¡d
t ¡ v s0t |¡r5t |¡nd
t |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d } }}dS )uB   POST /faces/register without user_name â†’ 422 (name is required).r   r   r   r	   ©r   Né¦  r   r   r   r   r   r   ©
r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   )r   r   r   r6   r7   r8   r9   r:   r@   r@   rA   Útest_face_register_without_name   s   €þŽrF   c                 Ã   sX  | j dddidd|dfidI dH }|j}d	}||k}|sRt d
|fd||f¡dt ¡ v s3t |¡r8t |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d } }}| j ddd|dfidI dH }|j}d}||v }|s¦t d|fd||f¡dt ¡ v s‡t |¡rŒt |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d } }}|jd	kr*| 
¡ }	d}
|
|	v }|sît d|fd|
|	f¡t |
¡dt ¡ v s×t |	¡rÜt |	¡nddœ }dd|i }tt 	|¡ƒ‚d }
}|	d }
d}|
|k}|s"t d|fd|
|f¡t |
¡t |¡d œ }d!d"|i }tt 	|¡ƒ‚d }
 }}dS dS )#u5   POST /faces/identify â†’ returns matched user or 404.r   r   zID Testr   r   r	   r
   Nr   r   r   Úreg_respr   r   r   z/api/v1/faces/identifyrC   )r   i”  r   )z3%(py2)s
{%(py2)s = %(py0)s.status_code
} in %(py5)sr   r   r   r   r   r   r   r    r   r!   r#   r$   r&   r'   )r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   )r   r   rG   r6   r7   r8   r9   r:   r   r   r;   r<   r=   r>   r?   r@   r@   rA   Útest_face_identify!   s"   €ýŠþŠxpýrH   c                 Ã   s    |   d¡I dH }|j}d}||k}|sHt d|fd||f¡dt ¡ v s)t |¡r.t |¡ndt |¡t |¡dœ }dd	|i }tt 	|¡ƒ‚d } }}dS )
u<   POST /faces/register without image â†’ 422 validation error.r   NrD   r   r   r   r   r   r   rE   )r   r   r6   r7   r8   r9   r:   r@   r@   rA   Ú test_face_register_missing_image9   s   €ŽrI   )Ú__doc__Úbuiltinsr/   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter-   ÚpytestÚhttpxr   ÚmarkÚasyncioÚbytesrB   rF   rH   rI   r@   r@   r@   rA   Ú<module>   s    "	