o
    Ð<•jL  ã                   @   sV   d dl Zd dlm  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dS )
é    N)Ústatus)Úactive_sessionsc                 C   sn  dt  ¡ jd d… › d�}| jd|ddœd�}|j}tj}||k}|sht d|fd	||f¡d
t	 
¡ v s8t |¡r=t |¡nd
t |¡dt	 
¡ v sMt t¡rRt t¡ndt |¡dœ }dd|i }tt |¡ƒ‚d  } }}| ¡ d }dd|› �i}	| jd|ddddœdœ|	d�}
|
j}tj}||k}|sÛt d|fd	||f¡dt	 
¡ v s«t |
¡r°t |
¡ndt |¡dt	 
¡ v sÀt t¡rÅt t¡ndt |¡dœ }dd|i }tt |¡ƒ‚d  } }}|
 ¡ d }|  d|› �¡��<}|tv }|�s9t d|fd|tf¡dt	 
¡ v �st |¡�rt |¡nddt	 
¡ v �s"t t¡�r't t¡ndd œ }d!d"|i }tt |¡ƒ‚d }t| d }d#}||k}|�smt d|fd$||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}t| d( d) }d}||k}|�s§t d|fd$||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}t| d( d* }d}||k}|�sát d|fd$||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}d+}t| }||v }|�st d|fd,||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}| jd-d|id�}|j}tj}||k}|�s|t d|fd.||f¡d/t	 
¡ v �sJt |¡�rOt |¡nd/t |¡dt	 
¡ v �sat t¡�rft t¡ndt |¡dœ }dd|i }tt |¡ƒ‚d  } }}| ¡ d }d0}||k}|�s´t d|fd$||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}t| d }d0}||k}|�sìt d|fd$||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}| jd1|d2d3œd�}|j}tj}||k}|�sRt d|fd.||f¡d4t	 
¡ v �s t |¡�r%t |¡nd4t |¡dt	 
¡ v �s7t t¡�r<t t¡ndt |¡dœ }dd|i }tt |¡ƒ‚d  } }}d5}| ¡ d6 }||v }|�sŠt d|fd,||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}| jd7|d8d3œd�}|j}tj}||k}|�sðt d|fd.||f¡d9t	 
¡ v �s¾t |¡�rÃt |¡nd9t |¡dt	 
¡ v �sÕt t¡�rÚt t¡ndt |¡dœ }dd|i }tt |¡ƒ‚d  } }}| ¡ d6 }d8}||k}|�s(t d|fd$||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}| jd:|d;d<œd�}|j}tj}||k}|�sŽt d|fd.||f¡d=t	 
¡ v �s\t |¡�rat |¡nd=t |¡dt	 
¡ v �sst t¡�rxt t¡ndt |¡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? }d;}||k}|�sþt d|fd$||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}|tv }|�sLt d|fd|tf¡dt	 
¡ v �s"t |¡�r't |¡nddt	 
¡ v �s5t t¡�r:t t¡ndd œ }d!d"|i }tt |¡ƒ‚d }t| d }d>}||k}|�s€t d|fd$||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}| jd7|d@d3œd�}|j}tj}||k}|�sæt d|fdA||f¡dBt	 
¡ v �s´t |¡�r¹t |¡ndBt |¡dt	 
¡ v �sËt t¡�rÐt t¡ndt |¡dœ }dd|i }tt |¡ƒ‚d  } }}dC}| ¡ dD }||v }|�st d|fd,||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}W d   ƒ d S 1 �s0w   Y  d S )ENzdemo-é   ú.comú/api/v1/tenant/registerzLive Chat Demo Store©ÚdomainÚname©Újson©ú==)zY%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py6)s
{%(py6)s = %(py4)s.HTTP_201_CREATED
}Úreg_respr   ©Úpy0Úpy2Úpy4Úpy6úassert %(py8)sÚpy8ÚsiteIdÚOriginúhttp://ú/api/v1/session/initÚusr_demo_888zAlice Visitorzalice@example.com)Úidr	   Úemail)r   Úuser©r   ÚheadersÚ	init_respÚ	sessionIdú/ws/session/©Úin©z%(py0)s in %(py2)sÚ
session_idr   ©r   r   úassert %(py4)sr   ÚRINGING©z%(py1)s == %(py4)s©Úpy1r   úassert %(py6)sr   r   r	   r   Úcountry©z%(py1)s in %(py4)sú/api/v1/handoff/accept©zT%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py6)s
{%(py6)s = %(py4)s.HTTP_200_OK
}Úaccept_respÚIN_CHATz/api/v1/messagez"Hello Agent! Need help with order.©r!   ÚmessageÚmsg_respzdelivered to agentÚreplyú/api/v1/handoff/messagezHi Alice! I am here to help.Úagent_reply_respú/api/v1/handoff/endÚvisitor©r!   ÚendedByÚend_respÚENDEDr=   úAttempt reply after chat ended©z]%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py6)s
{%(py6)s = %(py4)s.HTTP_400_BAD_REQUEST
}Úrejected_replyúended sessionÚdetail)ÚuuidÚuuid4ÚhexÚpostÚstatus_coder   ÚHTTP_201_CREATEDÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr   Úwebsocket_connectr   ÚHTTP_200_OKÚHTTP_400_BAD_REQUEST)Úclientr   r   Ú@py_assert1Ú@py_assert5Ú@py_assert3Ú@py_format7Ú@py_format9Úsite_idr   r    r&   ÚwsÚ@py_format3Ú@py_format5Ú@py_assert0Ú@py_assert2r2   r6   r9   r>   rB   © rb   ú5/web/html/dev/chatbot/backend/tests/test_demo_flow.pyÚ&test_active_sessions_snapshot_and_flow   sl   
þ®ýþù®”pttl¸pp
þ¸p
þ¸p¸pp”p
þ¸r$Òrd   c                    sæ  dt  ¡ jd d… › d�}| jd|ddœd�}| ¡ d }d	|› �d
dœ}| jdd|i|d�}| ¡ d ‰ |  dˆ › �¡��*}ˆ tv }|s‚t d|fdˆ tf¡dt	 
¡ v sZt ˆ ¡r_t ˆ ¡nddt	 
¡ v skt t¡rpt t¡nddœ }dd|i }	tt |	¡ƒ‚d }tˆ  d }
d }|
|u }|sµt d|fd|
|f¡t |
¡t |¡dœ }	dd|	i }tt |¡ƒ‚d  }
 }}tˆ  d }
d
}|
|k}|sìt d|fd|
|f¡t |
¡t |¡dœ }	dd|	i }tt |¡ƒ‚d  }
 }}tˆ  d  }
d!}|
|k}|�s$t d|fd|
|f¡t |
¡t |¡dœ }	dd|	i }tt |¡ƒ‚d  }
 }}|  d"¡}|j}tj}||k}|�s…t d|fd#||f¡d$t	 
¡ v �sSt |¡�rXt |¡nd$t |¡d t	 
¡ v �sjt t¡�rot t¡nd t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}‡ fd(d)„| ¡ D ƒ}t|ƒ}d*}||k}|�sìt d|fd+||f¡d,t	 
¡ v �sºt t¡�r¿t t¡nd,d-t	 
¡ v �sÍt |¡�rÒt |¡nd-t |¡t |¡d.œ }d&d'|i }tt |¡ƒ‚d  } }}|d/ d }
d
}|
|k}|�s$t d|fd|
|f¡t |
¡t |¡dœ }	dd|	i }tt |¡ƒ‚d  }
 }}d0}
|d/ }|
|v }|�sZt d|fd1|
|f¡t |
¡t |¡dœ }	dd|	i }tt |¡ƒ‚d  }
 }}W d   ƒ d S 1 �slw   Y  d S )2Nzanon-r   r   r   z
Anon Storer   r
   r   r   z203.0.113.195)r   zX-Forwarded-Forr   r   r!   r"   r#   r%   r&   r   r'   r(   r   r   )Úis)z%(py1)s is %(py4)sr+   r-   r   Ú	ipAddressr   r*   r   r)   z/api/v1/admin/active-sessionsr1   Ú	res_adminr   r   r   c                    s   g | ]
}|d  ˆ kr|‘qS )r!   rb   )Ú.0Ús©r&   rb   rc   Ú
<listcomp>b   s    z1test_anonymous_active_session.<locals>.<listcomp>é   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenÚmatching)r   r,   Úpy3r   r   r.   r/   )rE   rF   rG   rH   r   rS   r   rK   rL   rM   rN   rO   rP   rQ   rR   ÚgetrI   r   rT   rm   )rV   r   r   r\   r   r    r]   rW   r^   r_   r`   rY   ra   rZ   rg   rX   r[   rn   Ú@py_assert4rb   rj   rc   Útest_anonymous_active_sessionM   s*   
þŠnnp
¸¸pn$ôrr   c                 C   sè  dt  ¡ jd d… › d�}| jd|ddœd�}| ¡ d }d	d
|› �i}| jdd|i|d�}| ¡ d }|  d|› �¡��¬}| jdd|id�}|j}	tj}
|	|
k}|s˜t	 
d|fd|	|
f¡dt ¡ v sht	 |¡rmt	 |¡ndt	 |	¡dt ¡ v s}t	 t¡r‚t	 t¡ndt	 |
¡dœ }dd|i }tt	 |¡ƒ‚d  }	 }}
t| d }d}||k}|sÏt	 
d|fd||f¡t	 |¡t	 |¡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 }d}||k}|�s?t	 
d|fd||f¡t	 |¡t	 |¡dœ }dd|i }tt	 |¡ƒ‚d  } }}| jd|dd œd�}|j}	tj}
|	|
k}|�s¥t	 
d|fd|	|
f¡d!t ¡ v �sst	 |¡�rxt	 |¡nd!t	 |	¡dt ¡ v �sŠt	 t¡�r�t	 t¡ndt	 |
¡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# }d}||k}|�st	 
d|fd||f¡t	 |¡t	 |¡dœ }dd|i }tt	 |¡ƒ‚d  } }}|tv }	|	�sct	 
d$|	fd%|tf¡d&t ¡ v �s9t	 |¡�r>t	 |¡nd&d't ¡ v �sLt	 t¡�rQt	 t¡nd'd(œ }d)d*|i }tt	 |¡ƒ‚d }	t| d }d"}||k}|�s—t	 
d|fd||f¡t	 |¡t	 |¡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 }d"}||k}|�st	 
d|fd||f¡t	 |¡t	 |¡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  } }}| jd+|d,d-œd�}|j}	tj}
|	|
k}|�s£t	 
d|fd.|	|
f¡d/t ¡ v �sqt	 |¡�rvt	 |¡nd/t	 |	¡dt ¡ v �sˆt	 t¡�r�t	 t¡ndt	 |
¡dœ }dd|i }tt	 |¡ƒ‚d  }	 }}
d0}| ¡ d1 }||v }|�sÛt	 
d$|fd2||f¡t	 |¡t	 |¡dœ }dd|i }tt	 |¡ƒ‚d  } }}W d   ƒ d S 1 �síw   Y  d S )3Nz	agentend-r   r   r   zAgent End Test Storer   r
   r   r   r   r   r   r!   r"   r0   r   r1   r2   r   r   r   r   r3   r*   r+   r-   r   ÚtypeÚstatus_changedr:   Úagentr<   r>   r?   r=   r#   r%   r&   r   r'   r(   r   r8   r@   r4   rA   rB   rC   rD   r/   )rE   rF   rG   rH   r   rS   rI   r   rT   rK   rL   rM   rN   rO   rP   rQ   rR   r   Úreceive_jsonrU   )rV   r   r   r\   r   r    r&   r]   r2   rW   rX   rY   rZ   r[   r`   ra   r_   Úaccepted_eventr>   r^   Úended_eventrB   rb   rb   rc   Útest_agent_ends_chat_flowg   sB   
þ®nll¸pp”plll
þ¸r$ßry   )ÚbuiltinsrM   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterK   rE   Úfastapir   Úapp.services.presencer   rd   rr   ry   rb   rb   rb   rc   Ú<module>   s   " H