o
    èó·iy  ã                   @   s¨  d dl Z d dlZd dlmZmZ d dlmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ e jjej dd¡ d	d
�dd„ ƒZe jjej dd¡ d	d
�dd„ ƒZe jjej dd¡ d	d
�dd„ ƒZe jjej dd¡ d	d
�dd„ ƒZe jjej dd¡ d	d
�dd„ ƒZe jjej dd¡ d	d
�dd„ ƒZe jjej dd¡ d	d
�dd„ ƒZe jjej dd¡ d	d
�dd„ ƒZe jjej dd¡ d	d
�dd„ ƒZdS )é    N)ÚMockÚcall)ÚPrefixProtocolÚRawSocketClientProtocolÚRawSocketServerProtocolÚWampRawSocketClientFactoryÚWampRawSocketServerFactory)Úget_serializers)Úmessage)ÚTransportDetailsZUSE_ASYNCIOFztest runs on asyncio only)Úreasonc                 C   s8   t ƒ }t|ƒdksJ ‚|d ƒ  t d¡¡}|sJ ‚d S )Nr   Úclose)r	   ÚlenÚ	serializer
   ÚAbort)Ú
event_loopZserializersÚm© r   únC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\autobahn/asyncio/test/test_aio_rawsocket.pyÚ	test_sers   s   r   c                 C   s8  t ƒ }tƒ }tƒ }||_| |¡ d}| |¡ | d¡ t|jƒdks&J ‚| d¡ |j	 
tdƒtdƒg¡ | ¡  | ¡  d}| |dd… ¡ |jrOJ ‚| |dd… ¡ |jr]J ‚| |dd… ¡ |jrkJ ‚| |dd	… ¡ | d
¡ | ¡  | ¡  d}| |¡ | 
tdƒtdƒg¡ |jdksšJ ‚d S )Ns      abcdó   abcdr   s      s      0123456789ABé   é   é   é   s   0123456789ABs      abcd   12345 s   12345ó    )r   r   ÚstringReceivedÚconnection_madeÚdata_receivedÚassert_called_once_withr   Ú_bufferZ
sendStringÚwriteZassert_has_callsr   Z
reset_mockÚcalled)r   ÚpÚ	transportÚreceiverZ	small_msgZbig_msgZtwo_messagesr   r   r   Útest_prefix   s8   








r&   c                 C   sv   G dd„ dt ƒ}|ƒ }tƒ }tƒ }tƒ }||_||_|j ¡ s!J ‚| |¡ |j ¡ r-J ‚| d ¡ |j ¡ s9J ‚d S )Nc                   @   ó   e Zd Zedd„ ƒZdS )ztest_is_closed.<locals>.CPc                 S   ó   dS ©Né   r   ©Úselfr   r   r   Úserializer_idC   ó   z(test_is_closed.<locals>.CP.serializer_idN©Ú__name__Ú
__module__Ú__qualname__Úpropertyr-   r   r   r   r   ÚCPB   ó    r4   )r   r   r   Ú_on_handshake_completeÚ	is_closedÚdoner   Úconnection_lost©r   r4   ÚclientÚon_hsr$   r%   r   r   r   Útest_is_closed@   s   

r=   c                 C   s–   t ƒ }tdd�}tƒ }tƒ }tƒ }||_||_||_||_| |¡ d}| |¡ | d¡ | ¡  |jj	s8J ‚|j d¡ |j
j	rDJ ‚| d¡ d S )NT©Úreturn_valueó   ñ     abcdr*   ó   ñ  r   )r   r   Úsupports_serializerr   r6   r   r   r   r!   r"   r   )r   ÚserverÚserr<   r$   r%   Zhsr   r   r   Útest_raw_socket_server1U   s$   



rE   c                 C   sÄ   t ƒ }tdd�}tƒ }tƒ }tƒ }||_||_||_||_| |¡ | d¡ |j ¡  t ƒ }tdd�}tƒ }tdd�}tƒ }||_||_||_||_| |¡ | d¡ |j ¡  |j	 d¡ d S )	NTr>   s   abcdefF©r   r!   Úget_extra_info©Zspec_setrA   s     )
r   r   rB   r   r6   r   r   r   r   r!   )r   rC   rD   r<   r$   r%   r   r   r   Útest_raw_socket_server_errorsn   s2   








rI   c                 C   s‚   G dd„ dt ƒ}|ƒ }tƒ }tƒ }tƒ }||_||_| |¡ | d¡ | ¡  |jjs.J ‚|j 	d¡ |j
jr:J ‚| d¡ d S )Nc                   @   r'   )z#test_raw_socket_client1.<locals>.CPc                 S   r(   r)   r   r+   r   r   r   r-   �   r.   z1test_raw_socket_client1.<locals>.CP.serializer_idNr/   r   r   r   r   r4   �   r5   r4   r@   rA   r   )r   r   r   r6   r   r   r   r!   r"   Zcalled_one_withr   r:   r   r   r   Útest_raw_socket_client1�   s   

rJ   c                 C   sZ   G dd„ dt ƒ}|ƒ }tƒ }tdd�}tƒ }||_||_| |¡ | d¡ |j ¡  d S )Nc                   @   r'   )z(test_raw_socket_client_error.<locals>.CPc                 S   r(   r)   r   r+   r   r   r   r-   §   r.   z6test_raw_socket_client_error.<locals>.CP.serializer_idNr/   r   r   r   r   r4   ¦   r5   r4   rF   rH   s   ñ )r   r   r   r6   r   r   r   r   r:   r   r   r   Útest_raw_socket_client_error¤   s   


rK   c                    s  t dd�}t ‡ fdd„d�|_t ddgd�‰‡fd	d
„}g ‰ t|ƒƒ }| |¡ |jjdu s0J ‚|jjtjks9J ‚|j	j
s?J ‚|j	j
d j}| ttdd|B ddgƒƒ¡ |jsZJ ‚ˆj |¡ | t d¡¡ ˆ dd … D ]}| |¡ qnˆjjs|J ‚tˆjjd d tjƒsŠJ ‚d S )N©Úabortr   r!   rG   rH   c                    ó
   ˆ   | ¡S ©N©Úappend©r   ©Úmessagesr   r   Ú<lambda>º   ó   
 z"test_wamp_server.<locals>.<lambda>©Zside_effectÚonOpenÚ	onMessage©Úspecc                      ó   ˆ S rO   r   r   )rC   r   r   Úfact_server½   ó   z%test_wamp_server.<locals>.fact_serverTr*   é   éð   r   r   )r   r!   r   r   Útransport_detailsÚ	is_serverÚchannel_framingr   ÚCHANNEL_FRAMING_RAWSOCKETÚfactoryZ_serializersÚRAWSOCKET_SERIALIZER_IDr   ÚbytesÚ	bytearrayÚ_serializerrX   r   Úsendr
   r   rY   r"   Ú
isinstanceÚ	call_args)r   r$   r]   ÚprotoÚsÚdr   )rT   rC   r   Útest_wamp_server·   s&   



 rp   c                    s  t dd�}t ‡fdd„d�|_t ddgd�‰ ‡ fd	d
„}g ‰t|ƒƒ }| |¡ |jjdu s0J ‚|jjtjks9J ‚|j	s>J ‚|j	j
}| ttdd|B ddgƒƒ¡ ˆ j |¡ | t d¡¡ ˆdd … D ]}| |¡ qeˆ jjssJ ‚tˆ jjd d tjƒs�J ‚d S )NrL   rH   c                    rN   rO   rP   rR   rS   r   r   rU   Ö   rV   z"test_wamp_client.<locals>.<lambda>rW   rX   rY   rZ   c                      r\   rO   r   r   )r;   r   r   Úfact_clientÙ   r^   z%test_wamp_client.<locals>.fact_clientFr_   r`   r   r   r*   )r   r!   r   r   ra   rb   rc   r   rd   ri   rf   r   rg   rh   rX   r   rj   r
   r   rY   r"   rk   rl   )r   r$   rq   rm   rn   ro   r   )r;   rT   r   Útest_wamp_clientÓ   s$   



 rr   )ZpytestÚosZunittest.mockr   r   Zautobahn.asyncio.rawsocketr   r   r   r   r   Zautobahn.asyncio.utilr	   Zautobahn.wampr
   Zautobahn.wamp.typesr   ÚmarkZskipifÚenvironÚgetr   r&   r=   rE   rI   rJ   rK   rp   rr   r   r   r   r   Ú<module>   s2    

*





