U
    2Äcy  ã                   @   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t‚|d ƒ  t d¡¡}|s4t‚d S )Nr   Úclose)r	   ÚlenÚAssertionErrorÚ	serializer
   ÚAbort)Ú
event_loopZserializersÚm© r   úsc:\users\psant\downloads\hotstarbackend\school\venv38\Lib\site-packages\autobahn\asyncio\test\test_aio_rawsocket.pyÚ	test_sers   s    r   c                 C   s:  t ƒ }tƒ }tƒ }||_| |¡ d}| |¡ | d¡ t|jƒdksLt‚| 	d¡ |j
 tdƒtdƒg¡ | ¡  | ¡  d}| |dd… ¡ |jržt‚| |dd… ¡ |jrºt‚| |dd… ¡ |jrÖt‚| |dd	… ¡ | d
¡ | ¡  | ¡  d}| |¡ | tdƒtdƒg¡ |jdk�s6t‚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   Ú_bufferr   Z
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 ¡ sBt‚| |¡ |j ¡ rZt‚| d ¡ |j ¡ srt‚d S )Nc                   @   s   e Zd Zedd„ ƒZdS )ztest_is_closed.<locals>.CPc                 S   s   dS ©Né   r   ©Úselfr   r   r   Úserializer_idC   s    z(test_is_closed.<locals>.CP.serializer_idN©Ú__name__Ú
__module__Ú__qualname__Úpropertyr,   r   r   r   r   ÚCPB   s   r2   )	r   r   r   Ú_on_handshake_completeÚ	is_closedÚdoner   r   Úconnection_lost©r   r2   Ú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	spt
‚|j d¡ |jj	rˆt
‚| d¡ d S )NT©Zreturn_valueó   ñ     abcdr)   ó   ñ  r   )r   r   Úsupports_serializerr   r3   r   r   r    r"   r#   r   r   )r   ÚserverÚserr9   r%   r&   Zhsr   r   r   Útest_raw_socket_server1U   s$    



rA   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_setr=   s     )
r   r   r>   r   r3   r   r   r   r    r"   )r   r?   r@   r9   r%   r&   r   r   r   Útest_raw_socket_server_errorsn   s2    








rE   c                 C   s‚   G dd„ dt ƒ}|ƒ }tƒ }tƒ }tƒ }||_||_| |¡ | d¡ | ¡  |jjs\t	‚|j 
d¡ |jjrtt	‚| d¡ d S )Nc                   @   s   e Zd Zedd„ ƒZdS )z#test_raw_socket_client1.<locals>.CPc                 S   s   dS r(   r   r*   r   r   r   r,   �   s    z1test_raw_socket_client1.<locals>.CP.serializer_idNr-   r   r   r   r   r2   �   s   r2   r<   r=   r   )r   r   r   r3   r   r   r    r"   r#   r   Zcalled_one_withr   r7   r   r   r   Útest_raw_socket_client1�   s    

rF   c                 C   sZ   G dd„ dt ƒ}|ƒ }tƒ }tdd�}tƒ }||_||_| |¡ | d¡ |j ¡  d S )Nc                   @   s   e Zd Zedd„ ƒZdS )z(test_raw_socket_client_error.<locals>.CPc                 S   s   dS r(   r   r*   r   r   r   r,   §   s    z6test_raw_socket_client_error.<locals>.CP.serializer_idNr-   r   r   r   r   r2   ¦   s   r2   rB   rD   s   ñ )r   r   r   r3   r   r   r   r    r7   r   r   r   Útest_raw_socket_client_error¤   s    


rG   c                    s  t dd�}t ‡ fdd„d�|_t ddgd�‰‡fd	d
„}g ‰ t|ƒƒ }| |¡ |jjdks`t‚|jjtj	ksrt‚|j
js~t‚|j
jd j}| ttdd|B ddgƒƒ¡ |js´t‚ˆj |¡ | t d¡¡ ˆ dd … D ]}| |¡ qÜˆjjsøt‚tˆjjd d tjƒ�st‚d S )N©Úabortr   r"   rC   rD   c                    s
   ˆ   | ¡S ©N©Úappend©r   ©Úmessagesr   r   Ú<lambda>º   ó    z"test_wamp_server.<locals>.<lambda>©Zside_effectÚonOpenÚ	onMessage©Úspecc                      s   ˆ S rJ   r   r   )r?   r   r   Úfact_server½   s    z%test_wamp_server.<locals>.fact_serverTr)   é   éð   r   r   )r   r"   r   r   Útransport_detailsÚ	is_serverr   Úchannel_framingr   ÚCHANNEL_FRAMING_RAWSOCKETÚfactoryZ_serializersÚRAWSOCKET_SERIALIZER_IDr   ÚbytesÚ	bytearrayÚ_serializerrS   r    Úsendr
   r   rT   r#   Ú
isinstanceÚ	call_args)r   r%   rW   ÚprotoÚsÚdr   )rO   r?   r   Útest_wamp_server·   s&    



ri   c                    s  t dd�}t ‡fdd„d�|_t ddgd�‰ ‡ fd	d
„}g ‰t|ƒƒ }| |¡ |jjdks`t‚|jjtj	ksrt‚|j
s|t‚|j
j}| ttdd|B ddgƒƒ¡ ˆ j |¡ | t d¡¡ ˆdd … D ]}| |¡ qÊˆ jjsæt‚tˆ jjd d tjƒ�st‚d S )NrH   rD   c                    s
   ˆ   | ¡S rJ   rK   rM   rN   r   r   rP   Ö   rQ   z"test_wamp_client.<locals>.<lambda>rR   rS   rT   rU   c                      s   ˆ S rJ   r   r   )r8   r   r   Úfact_clientÙ   s    z%test_wamp_client.<locals>.fact_clientFrX   rY   r   r   r)   )r   r"   r   r   rZ   r[   r   r\   r   r]   rb   r_   r   r`   ra   rS   r    rc   r
   r   rT   r#   rd   re   )r   r%   rj   rf   rg   rh   r   )r8   rO   r   Útest_wamp_clientÓ   s$    



rk   )Ú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:   rA   rE   rF   rG   ri   rk   r   r   r   r   Ú<module>   s0   

*





