o
    ¼>hKa  ã                   @   s‚   d dl mZ d dlmZmZmZ d dlZG dd„ dejƒZG dd„ dejƒZ	G dd	„ d	e
ƒZG d
d„ deƒZG dd„ dejƒZdS )é    )Úwamp)ÚPatternÚRegisterOptionsÚSubscribeOptionsNc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestUrisc                 C   s    dD ]}|   tt|tj¡ qd S )N)Ú zcom.myapp.<product:foo>.updatezcom.myapp.<123:int>.updatezcom.myapp.<:product>.updatezcom.myapp.<product:>.updatezcom.myapp.<int:>.update)ÚassertRaisesÚ	Exceptionr   ÚURI_TARGET_ENDPOINT)ÚselfÚu© r   úˆ/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/autobahn/wamp/test/test_wamp_uri_pattern.pyÚtest_invalid_uris#   s   ùzTestUris.test_invalid_urisc                 C   s&   dD ]}t |t jƒ}|  |t ¡ qd S )N)zcom.myapp.proc1Ú123úcom.myapp.<product:int>.updatezIcom.myapp.<category:string>.<subcategory>.listcom.myapp.something..update)r   r
   ÚassertIsInstance)r   r   Úpr   r   r   Útest_valid_uris-   s   ùzTestUris.test_valid_urisc           	   	   C   s  ddddifdddifddd	gfd
dddifdddifdgfddddifdddifdgfdddddœfdddgfddddifgfddd d!ifgfg}|D ]3}t |d t jƒ}|d" D ]$}|d }|d" }|d urv| |¡\}}|  ||¡ qZ|  t|j|¡ qZqLd S )#Nr   zcom.myapp.0.updateÚproductr   zcom.myapp.123456.updateé@â )zcom.myapp.aaa.updateN)zcom.myapp..updateN)zcom.myapp.0.deleteNz!com.myapp.<product:string>.updatezcom.myapp.box.updateÚboxÚ123456zcom.myapp.<product>.updateÚ0zcom.myapp.abc.updateÚabcz5com.myapp.<category:string>.<subcategory:string>.listzcom.myapp.cosmetic.shampoo.listÚcosmeticÚshampoo)ÚcategoryÚsubcategory)zcom.myapp...listN)zcom.myapp.cosmetic..listN)zcom.myapp..shampoo.listNz4eth.pydefi.tradeclock.<clock_oid:str>.get_clock_infozIeth.pydefi.tradeclock.ba3b1e9f-3006-4eae-ae88-cf5896b36342.get_clock_infoÚ	clock_oidz$ba3b1e9f-3006-4eae-ae88-cf5896b36342z0eth.wamp.network.catalog.<catalog_adr:str>.ownerzIeth.wamp.network.catalog.0xAA8Cc377db31a354137d8Bb86D0E38495dbD5266.ownerÚcatalog_adrÚ*0xAA8Cc377db31a354137d8Bb86D0E38495dbD5266é   )r   r
   ÚmatchÚassertEqualr   r	   )	r   ÚtestsÚtestÚpatÚptestÚuriÚkwargs_shouldÚargs_isÚ	kwargs_isr   r   r   Útest_parse_uris7   sZ   

û

ý

ýüÿÿÿÿä!ùþzTestUris.test_parse_urisN)Ú__name__Ú
__module__Ú__qualname__r   r   r-   r   r   r   r   r   !   s    

r   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestDecoratorsc                 C   sj  t  d¡dd„ ƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t|jƒd¡ |  	|jd t
¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d¡ |  |jd jt
j¡ t  d¡ddd	„ƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t|jƒd¡ |  	|jd t
¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d¡ |  |jd jt
j¡ t  d
¡ddd„ƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t|jƒd¡ |  	|jd t
¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d
¡ |  |jd jt
j¡ t  dtddd¡ddd„ƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t|jƒd¡ |  	|jd t
¡ |  	|jd jt¡ |  |jd jjd¡ |  |jd jjd¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d¡ |  |jd jt
j¡ t  dtddd¡ddd„ƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t|jƒd¡ |  	|jd t
¡ |  	|jd jt¡ |  |jd jjd¡ |  |jd jjd¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d¡ |  |jd jt
j¡ d S )Núcom.calculator.squarec                 S   ó   dS ©úDo nothing.Nr   )Ú_r   r   r   Úsquareh   ó    z5TestDecorators.test_decorate_endpoint.<locals>.squareÚ	_wampurisr"   r   ú&com.myapp.product.<product:int>.updatec                 S   r3   r4   r   ©r   Úlabelr   r   r   Úupdate_productv   r8   z=TestDecorators.test_decorate_endpoint.<locals>.update_productú,com.myapp.<category:string>.<cid:int>.updatec                 S   r3   r4   r   )r   Úcidr   r   r   Úupdate„   r8   z5TestDecorators.test_decorate_endpoint.<locals>.updatezcom.myapp.circle.<name:string>ÚwildcardÚdetails©r#   Údetails_argc                 S   r3   ©z Do nothing. Nr   )ÚnamerB   r   r   r   Úcircle’   r8   z5TestDecorators.test_decorate_endpoint.<locals>.circlezcom.myapp.something..updatec                 S   r3   rE   r   )ÚdynamicrB   r   r   r   Ú	something¤   r8   z8TestDecorators.test_decorate_endpoint.<locals>.something©NN)r   ÚregisterÚ
assertTrueÚhasattrÚtyper9   Úlistr$   Úlenr   r   Úis_endpointÚassertFalseÚ
is_handlerÚis_exceptionr)   Ú_typeÚURI_TYPE_EXACTÚURI_TYPE_WILDCARDr   Úoptionsr#   rD   )r   r7   r=   r@   rG   rI   r   r   r   Útest_decorate_endpointg   s‚   

ÿ
ÿz%TestDecorators.test_decorate_endpointc                 C   s\  t  d¡dd„ ƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t|jƒd¡ |  	|jd t
¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d¡ |  |jd jt
j¡ t  d¡ddd	„ƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t|jƒd¡ |  	|jd t
¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d¡ |  |jd jt
j¡ t  d
¡ddd„ƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t|jƒd¡ |  	|jd t
¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d
¡ |  |jd jt
j¡ t  dtddd¡ddd„ƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t|jƒd¡ |  	|jd t
¡ |  	|jd jt¡ |  |jd jjd¡ |  |jd jjd¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d¡ |  |jd jt
j¡ d S )Núcom.myapp.on_shutdownc                   S   r3   r4   r   r   r   r   r   Úon_shutdown·   r8   z9TestDecorators.test_decorate_handler.<locals>.on_shutdownr9   r"   r   ú)com.myapp.product.<product:int>.on_updatec                 S   r3   r4   r   r;   r   r   r   Úon_product_updateÅ   r8   z?TestDecorators.test_decorate_handler.<locals>.on_product_updateú/com.myapp.<category:string>.<cid:int>.on_updatec                 S   r3   r4   r   ©r   r?   r<   r   r   r   Ú	on_updateÓ   r8   z7TestDecorators.test_decorate_handler.<locals>.on_updatezcom.myapp.on.<event:string>rA   rB   rC   c                 S   r3   rE   r   )ÚeventrB   r   r   r   Úon_eventá   r8   z6TestDecorators.test_decorate_handler.<locals>.on_eventrJ   ©NNN)r   Ú	subscriberL   rM   rN   r9   rO   r$   rP   r   r   rR   rQ   rS   rT   r)   rU   rV   rW   r   rX   r#   rD   )r   r[   r]   r`   rb   r   r   r   Útest_decorate_handler¶   sb   

ÿz$TestDecorators.test_decorate_handlerc                 C   sb  t  d¡G dd„ dtƒƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t	|jƒd¡ |  
|jd t¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d¡ |  |jd jtj¡ t  d¡G dd	„ d	tƒƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t	|jƒd¡ |  
|jd t¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d¡ |  |jd jtj¡ t  d
¡G dd„ dtƒƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t	|jƒd¡ |  
|jd t¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ ¡ |  |jd  ¡ d
¡ |  |jd jtj¡ d S )Núcom.myapp.errorc                   @   ó   e Zd ZdZdS )z8TestDecorators.test_decorate_exception.<locals>.AppErrorr5   N©r.   r/   r0   Ú__doc__r   r   r   r   ÚAppErrorô   ó    rj   r9   r"   r   ú0com.myapp.product.<product:int>.product_inactivec                   @   rg   )zDTestDecorators.test_decorate_exception.<locals>.ProductInactiveErrorr5   Nrh   r   r   r   r   ÚProductInactiveError  rk   rm   ú2com.myapp.<category:string>.<product:int>.inactivec                   @   rg   )zCTestDecorators.test_decorate_exception.<locals>.ObjectInactiveErrorr5   Nrh   r   r   r   r   ÚObjectInactiveError  rk   ro   )r   Úerrorr	   rL   rM   rN   r9   rO   r$   rP   r   r   rR   rQ   rS   rT   r)   rU   rV   rW   )r   rj   rm   ro   r   r   r   Útest_decorate_exceptionó   sB   z&TestDecorators.test_decorate_exceptionc                 C   sÌ   t  d¡dd„ ƒ}|jd  d¡\}}|  |di |¤Žd¡ t  d¡ddd„ƒ}|jd  d	¡\}}d
|d< |  |di |¤Žd¡ t  d¡ddd„ƒ}|jd  d	¡\}}d
|d< |  |di |¤Žd¡ d S )Nr2   c                 S   s   | S ©Nr   ©Úxr   r   r   r7     ó   z<TestDecorators.test_match_decorated_endpoint.<locals>.squarer   éš  r:   c                 S   ó   | |fS rr   r   r;   r   r   r   r=   &  ó   zDTestDecorators.test_match_decorated_endpoint.<locals>.update_productzcom.myapp.product.123456.updateÚfoobarr<   ©r   ry   r>   c                 S   ó
   | ||fS rr   r   r_   r   r   r   r@   .  ó   
z<TestDecorators.test_match_decorated_endpoint.<locals>.update©r   r   ry   )rv   rJ   r   rc   )r   rK   r9   r#   r$   )r   r7   ÚargsÚkwargsr=   r@   r   r   r   Útest_match_decorated_endpoint  ó   
z,TestDecorators.test_match_decorated_endpointc                 C   sÌ   t  d¡dd„ ƒ}|jd  d¡\}}|  |di |¤Žd ¡ t  d¡ddd„ƒ}|jd  d¡\}}d	|d
< |  |di |¤Žd¡ t  d¡ddd„ƒ}|jd  d¡\}}d	|d
< |  |di |¤Žd¡ d S )NrZ   c                   S   s   d S rr   r   r   r   r   r   r[   7  ru   z@TestDecorators.test_match_decorated_handler.<locals>.on_shutdownr   r\   c                 S   rw   rr   r   r;   r   r   r   r]   >  rx   zFTestDecorators.test_match_decorated_handler.<locals>.on_product_updatez"com.myapp.product.123456.on_updatery   r<   rz   r^   c                 S   r{   rr   r   r_   r   r   r   r`   F  r|   z>TestDecorators.test_match_decorated_handler.<locals>.on_updater}   r   rJ   rc   )r   rd   r9   r#   r$   )r   r[   r~   r   r]   r`   r   r   r   Útest_match_decorated_handler6  r   z+TestDecorators.test_match_decorated_handlerc                 C   sâ   t  d¡G dd„ dtƒƒ}|jd  d¡\}}|  |di |¤Ž|dƒ¡ t  d¡G dd„ dtƒƒ}|jd  d	¡\}}|  |di |¤Ž|dd
ƒ¡ t  d¡G dd„ dtƒƒ}|jd  d¡\}}|  |di |¤Ž|ddd
ƒ¡ d S )Nrf   c                   @   s   e Zd Zdd„ Zdd„ ZdS )z?TestDecorators.test_match_decorated_exception.<locals>.AppErrorc                 S   s   t  | |¡ d S rr   )r	   Ú__init__)r   Úmsgr   r   r   rƒ   R  s   zHTestDecorators.test_match_decorated_exception.<locals>.AppError.__init__c                 S   s   | j |j ko| j|jkS rr   )Ú	__class__r~   ©r   Úotherr   r   r   Ú__eq__U  s   zFTestDecorators.test_match_decorated_exception.<locals>.AppError.__eq__N©r.   r/   r0   rƒ   rˆ   r   r   r   r   rj   O  s    rj   r   Úfuckrl   c                   @   ó   e Zd Zddd„Zdd„ ZdS )zKTestDecorators.test_match_decorated_exception.<locals>.ProductInactiveErrorNc                 S   ó   t  | |¡ || _d S rr   ©r	   rƒ   r   ©r   r„   r   r   r   r   rƒ   _  ó   
zTTestDecorators.test_match_decorated_exception.<locals>.ProductInactiveError.__init__c                 S   s$   | j |j ko| j|jko| j|jkS rr   )r…   r~   r   r†   r   r   r   rˆ   c  s   $zRTestDecorators.test_match_decorated_exception.<locals>.ProductInactiveError.__eq__rr   r‰   r   r   r   r   rm   \  s    
rm   z)com.myapp.product.123456.product_inactiver   rn   c                   @   r‹   )zJTestDecorators.test_match_decorated_exception.<locals>.ObjectInactiveErrorNc                 S   s   t  | |¡ || _|| _d S rr   )r	   rƒ   r   r   )r   r„   r   r   r   r   r   rƒ   l  s   
zSTestDecorators.test_match_decorated_exception.<locals>.ObjectInactiveError.__init__c                 S   s0   | j |j ko| j|jko| j|jko| j|jkS rr   )r…   r~   r   r   r†   r   r   r   rˆ   q  s
   
ÿ
ÿzQTestDecorators.test_match_decorated_exception.<locals>.ObjectInactiveError.__eq__rJ   r‰   r   r   r   r   ro   i  s    
ro   z!com.myapp.product.123456.inactiver   )rŠ   )r   rp   r	   r9   r#   r$   )r   rj   r~   r   rm   ro   r   r   r   Útest_match_decorated_exceptionN  s   	"z-TestDecorators.test_match_decorated_exceptionN)	r.   r/   r0   rY   re   rq   r€   r‚   r   r   r   r   r   r1   e   s    O=+r1   c                   @   s   e Zd Zdd„ ZdS )ÚKwExceptionc                 O   s   t j| g|¢R Ž  || _d S rr   )r	   rƒ   r   )r   r~   r   r   r   r   rƒ   z  s   
zKwException.__init__N©r.   r/   r0   rƒ   r   r   r   r   r‘   y  s    r‘   c                   @   s(   e Zd Zdd„ Zddd„Zd	dd„ZdS )
ÚMockSessionc                 C   s   i | _ i | _d S rr   )Ú_ecls_to_uri_patÚ_uri_to_ecls)r   r   r   r   rƒ   Œ  s   
zMockSession.__init__Nc                 C   sj   |d u rt |dƒsJ ‚|j| j|< || j|jd  ¡ < d S t |dƒr$J ‚t|tjƒg| j|< || j|< d S )Nr9   r   )rM   r9   r”   r•   r)   r   ÚURI_TARGET_HANDLER)r   Ú	exceptionrp   r   r   r   Údefine  s   zMockSession.definec                 C   s¾   || j v rJ| j | }z*|r|r||i |¤Ž}n|di |¤Ž}n|r&||Ž }n|ƒ }W |S W |S W |S W |S  tyI   t|g|¢R i |¤Ž}Y |S w |pMg }|pQi }t|g|¢R i |¤Ž}|S )Nr   )r•   r	   r‘   )r   rp   r~   r   ÚeclsÚexcr   r   r   Ú	map_errorš  s2   


	òðõøøzMockSession.map_errorrr   rJ   )r.   r/   r0   rƒ   r˜   r›   r   r   r   r   r“   Š  s    

r“   c                   @   sD   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S )ÚTestDecoratorsAdvancedc                 C   s   dd„ }|   t|¡ d S )Nc                  S   s   t  d¡G dd„ dtƒƒ} d S )Nzcom.test.errorc                   @   ó   e Zd ZdS )zWTestDecoratorsAdvanced.test_decorate_exception_non_exception.<locals>.test.<locals>.FooN©r.   r/   r0   r   r   r   r   ÚFooÁ  ó    rŸ   )r   rp   Úobject)rŸ   r   r   r   r&   ¿  s   zJTestDecoratorsAdvanced.test_decorate_exception_non_exception.<locals>.test)r   r	   )r   r&   r   r   r   Ú%test_decorate_exception_non_exception½  s   z<TestDecoratorsAdvanced.test_decorate_exception_non_exceptionc                 C   sô   t  d¡t  d¡dd„ ƒƒ}|  t|dƒ¡ |  t|jƒtk¡ |  t|jƒd¡ t	dƒD ]4}|  
|j| t¡ |  |j|  ¡ ¡ |  |j|  ¡ ¡ |  |j|  ¡ ¡ |  |j| jtj¡ q-|  |jd  ¡ d¡ |  |jd  ¡ d¡ d S )	Nzcom.oldapp.oldprocr2   c                 S   r3   r4   r   rs   r   r   r   r7   Ê  r8   zFTestDecoratorsAdvanced.test_decorate_endpoint_multiple.<locals>.squarer9   é   r   r"   )r   rK   rL   rM   rN   r9   rO   r$   rP   Úranger   r   rQ   rR   rS   rT   rU   rV   r)   )r   r7   Úir   r   r   Útest_decorate_endpoint_multipleÇ  s   z6TestDecoratorsAdvanced.test_decorate_endpoint_multiplec              
   C   sÒ   t  d¡G dd„ dtƒƒ}z|dƒ‚ ty. } z|  |jd  ¡ d¡ W Y d }~nd }~ww t  d¡G dd„ dtƒƒ}z|dd	ƒ‚ ty^ } z|  |jd  ¡ d¡ W Y d }~nd }~ww tƒ }| |¡ d S )
Nrf   c                   @   r   )zITestDecoratorsAdvanced.test_marshal_decorated_exception.<locals>.AppErrorNrž   r   r   r   r   rj   ß  r    rj   rŠ   r   rl   c                   @   ó   e Zd Zddd„ZdS )zUTestDecoratorsAdvanced.test_marshal_decorated_exception.<locals>.ProductInactiveErrorNc                 S   rŒ   rr   r   rŽ   r   r   r   rƒ   ë  r   z^TestDecoratorsAdvanced.test_marshal_decorated_exception.<locals>.ProductInactiveError.__init__rr   r’   r   r   r   r   rm   è  s    rm   r   )r   rp   r	   r$   r9   r)   r“   r˜   )r   rj   Úerm   Úsessionr   r   r   Ú test_marshal_decorated_exceptionÝ  s$   "€ÿ
"€ÿz7TestDecoratorsAdvanced.test_marshal_decorated_exceptionc                 C   sL   t ƒ }G dd„ dtƒ}|  t|j|¡ | |d¡ | d¡}|  ||¡ d S )Nc                   @   r   )zJTestDecoratorsAdvanced.test_define_exception_undecorated.<locals>.AppErrorNrž   r   r   r   r   rj   û  s    rj   rf   )r“   r	   r   r˜   r›   r   ©r   r©   rj   rš   r   r   r   Ú!test_define_exception_undecorated÷  s   
z8TestDecoratorsAdvanced.test_define_exception_undecoratedc                 C   sV   t ƒ }t d¡G dd„ dtƒƒ}|  t|j|d¡ | |¡ | d¡}|  ||¡ d S )Nrf   c                   @   r   )zHTestDecoratorsAdvanced.test_define_exception_decorated.<locals>.AppErrorNrž   r   r   r   r   rj     r    rj   )r“   r   rp   r	   r   r˜   r›   r   r«   r   r   r   Útest_define_exception_decorated  s   

z6TestDecoratorsAdvanced.test_define_exception_decoratedc                 C   s    t ƒ }| d¡}|  |t¡ d S )Nrf   )r“   r›   r   r	   )r   r©   rš   r   r   r   Útest_map_exception_undefined  s   
z3TestDecoratorsAdvanced.test_map_exception_undefinedc           
      C   sÐ   t ƒ }t d¡G dd„ dtƒƒ}t d¡G dd„ dtƒƒ}| |¡ | |¡ dg i |fddgi |fdg d¢i |fdg i |fdg d	d
i|ffD ]}|\}}}}| |||¡}	|  |	|¡ |  t|	j	ƒ|¡ qGd S )Nrf   c                   @   r   )z@TestDecoratorsAdvanced.test_map_exception_args.<locals>.AppErrorNrž   r   r   r   r   rj   #  r    rj   z com.myapp.error.product_inactivec                   @   r§   )zLTestDecoratorsAdvanced.test_map_exception_args.<locals>.ProductInactiveErrorNc                 S   s
   || _ d S rr   )r   )r   r   r   r   r   rƒ   )  s   
zUTestDecoratorsAdvanced.test_map_exception_args.<locals>.ProductInactiveError.__init__rr   r’   r   r   r   r   rm   '  s    rm   úyou are doing it wrong)r¯   r"   r£   é   r   r   )
r“   r   rp   r	   r˜   r›   r   r$   rO   r~   )
r   r©   rj   rm   r&   rp   r~   r   r™   rš   r   r   r   Útest_map_exception_args  s$   



ù	óz.TestDecoratorsAdvanced.test_map_exception_argsN)
r.   r/   r0   r¢   r¦   rª   r¬   r­   r®   r±   r   r   r   r   rœ   »  s    
rœ   )Úautobahnr   Úautobahn.wamp.urir   r   r   ÚunittestÚTestCaser   r1   r	   r‘   r¡   r“   rœ   r   r   r   r   Ú<module>   s   D  1