o
    @»Bi!  ã                   @   sà   d dl Z d dlZd dlmZmZ z
d dlmZmZ W n ey+   d dl	mZmZ Y nw d dl
mZmZmZmZmZ d dlmZ d dlmZ e jjddd	e jjej d
d¡du dd	G dd„ deƒƒƒZedkrneƒ  dS dS )é    N)ÚTestCaseÚmain)ÚMockÚcall)ÚPrefixProtocolÚRawSocketClientProtocolÚRawSocketServerProtocolÚWampRawSocketClientFactoryÚWampRawSocketServerFactory)Úget_serializers)ÚmessageTzpytest sucks)ÚreasonÚUSE_ASYNCIOFzOnly for asyncioc                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestc                 C   sD   t ƒ }|  t|ƒdk¡ |d ƒ  t d¡¡}t|ƒ |  |¡ d S )Nr   Úclose)r   Ú
assertTrueÚlenÚ	serializer   ÚAbortÚprint)ÚselfÚserializersÚm© r   úl/var/www/html/Trade-python/venv/lib/python3.10/site-packages/autobahn/asyncio/test/test_asyncio_rawsocket.pyÚ	test_sers   s
   zTest.test_sersc                 C   s>  t ƒ }tƒ }tƒ }||_| |¡ d}| |¡ | d¡ |  t|jƒd¡ | 	d¡ |j
 tdƒtdƒg¡ | ¡  | ¡  d}| |dd… ¡ |  |j¡ | |dd… ¡ |  |j¡ | |dd… ¡ |  |j¡ | |dd	… ¡ | d
¡ | ¡  | ¡  d}| |¡ | tdƒtdƒg¡ |  |jd¡ d S )Ns      abcdó   abcdr   s      s      0123456789ABé   é   é   é   s   0123456789ABs      abcd   12345 s   12345ó    )r   r   ÚstringReceivedÚconnection_madeÚdata_receivedÚassert_called_once_withÚassertEqualr   Ú_bufferÚ
sendStringÚwriteÚassert_has_callsr   Ú
reset_mockÚassertFalseÚcalled)r   ÚpÚ	transportÚreceiverÚ	small_msgÚbig_msgÚtwo_messagesr   r   r   Útest_prefix   s8   





zTest.test_prefixc                 C   s|   G dd„ dt ƒ}|ƒ }tƒ }tƒ }tƒ }||_||_|  |j ¡ ¡ | |¡ |  |j ¡ ¡ | 	d ¡ |  |j ¡ ¡ d S )Nc                   @   ó   e Zd Zedd„ ƒZdS )zTest.test_is_closed.<locals>.CPc                 S   ó   dS ©Né   r   ©r   r   r   r   Úserializer_idE   ó   z-Test.test_is_closed.<locals>.CP.serializer_idN©Ú__name__Ú
__module__Ú__qualname__Úpropertyr:   r   r   r   r   ÚCPD   ó    rA   )
r   r   r"   Ú_on_handshake_completer   Ú	is_closedÚdoner#   r,   Úconnection_lost©r   rA   ÚclientÚon_hsr/   r0   r   r   r   Útest_is_closedC   s   

zTest.test_is_closedc                 C   sš   t ƒ }tdd}tƒ }tƒ }tƒ }||_||_||_||_| |¡ d}| |¡ | d¡ | ¡  |  |j	j
¡ |j	 d¡ |  |jj
¡ | d¡ d S )NT©Úreturn_valueó   ñ     abcdr8   ó   ñ  r   )r   r   Úsupports_serializerr"   rC   r#   r$   r%   r   r)   r-   r,   r   )r   ÚserverÚserrI   r/   r0   Úhsr   r   r   Útest_raw_socket_server1V   s$   



zTest.test_raw_socket_server1c                 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 )	NTrK   s   abcdefF©r   r)   Úget_extra_info©Úspec_setrN   s     )
r   r   rO   r"   rC   r#   r$   r   r%   r)   )r   rP   rQ   rI   r/   r0   r   r   r   Útest_raw_socket_server_errorsm   s2   








z"Test.test_raw_socket_server_errorsc                 C   s†   G dd„ dt ƒ}|ƒ }tƒ }tƒ }tƒ }||_||_| |¡ | d¡ | ¡  |  |jj	¡ |j 
d¡ |  |jj	¡ | d¡ d S )Nc                   @   r5   )z(Test.test_raw_socket_client1.<locals>.CPc                 S   r6   r7   r   r9   r   r   r   r:   Œ   r;   z6Test.test_raw_socket_client1.<locals>.CP.serializer_idNr<   r   r   r   r   rA   ‹   rB   rA   rM   rN   r   )r   r   r"   rC   r#   r$   r%   r   r)   r-   Úcalled_one_withr,   r   rG   r   r   r   Útest_raw_socket_client1Š   s   

zTest.test_raw_socket_client1c                 C   sZ   G dd„ dt ƒ}|ƒ }tƒ }tdd}tƒ }||_||_| |¡ | d¡ |j ¡  d S )Nc                   @   r5   )z-Test.test_raw_socket_client_error.<locals>.CPc                 S   r6   r7   r   r9   r   r   r   r:   ¡   r;   z;Test.test_raw_socket_client_error.<locals>.CP.serializer_idNr<   r   r   r   r   rA       rB   rA   rT   rV   s   ñ )r   r   r"   rC   r#   r$   r   r%   rG   r   r   r   Útest_raw_socket_client_errorŸ   s   


z!Test.test_raw_socket_client_errorc                    sè  t dd}t ‡fdd„d|_t ddgd‰ ‡ fd	d
„}g ‰t|ƒƒ }| |¡ |  |j¡ |jj}| tt	dd|B ddgƒƒ¡ ˆ j
 |¡ | t d¡¡ ˆdd … D ]}| |¡ qU|  ˆ jj¡ |  tˆ jjd d tjƒ¡ t dd}t ‡fdd„d|_d ‰ t ddgd‰‡fdd„}g ‰t|ƒƒ }| |¡ |  |jj¡ |jjd j}| tt	dd|B ddgƒƒ¡ |  |j¡ ˆj
 |¡ | t d¡¡ ˆdd … D ]}| |¡ qÔ|  ˆjj¡ |  tˆjjd d tjƒ¡ d S )N)Úabortr   r)   rU   rV   c                    ó
   ˆ   | ¡S ©N©Úappend©r   ©Úmessagesr   r   Ú<lambda>²   ó   
 z Test.test_wamp.<locals>.<lambda>)Úside_effectÚonOpenÚ	onMessage)Úspecc                      ó   ˆ S r^   r   r   )rH   r   r   Úfactµ   ó   zTest.test_wamp.<locals>.facté   éð   r   r   r8   c                    r]   r^   r_   ra   rb   r   r   rd   Æ   re   c                      rj   r^   r   r   )rP   r   r   Úfact_serverË   rl   z#Test.test_wamp.<locals>.fact_server)r   r)   r	   r#   r   Ú_serializerÚRAWSOCKET_SERIALIZER_IDr$   ÚbytesÚ	bytearrayrg   r%   Úsendr   r   rh   r-   Ú
isinstanceÚ	call_argsr
   ÚfactoryÚ_serializers)r   r/   rk   ÚprotoÚsÚdro   r   )rH   rc   rP   r   Ú	test_wamp°   sD   





"zTest.test_wampN)r=   r>   r?   r   r4   rJ   rS   rX   rZ   r[   r|   r   r   r   r   r      s    )r   Ú__main__)ÚpytestÚosÚunittestr   r   Úunittest.mockr   r   ÚImportErrorÚmockÚautobahn.asyncio.rawsocketr   r   r   r	   r
   Úautobahn.asyncio.utilr   Úautobahn.wampr   ÚmarkÚskipifÚenvironÚgetr   r=   r   r   r   r   Ú<module>   s$    ÿ L
þ