o
    @»Bi˜`  ã                   @   sŽ   d dl mZ 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 )é    )Úabsolute_import)Ú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   úc/var/www/html/Trade-python/venv/lib/python3.10/site-packages/autobahn/wamp/test/test_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g}|D ]3}t |d t jƒ}|d D ]$}|d }|d }|d urf| |¡\}}|  ||¡ qJ|  t|j|¡ qJq<d 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.listNé   )r   r   ÚmatchÚassertEqualr	   r
   )	r   ÚtestsÚtestÚpatÚptestÚuriÚkwargs_shouldÚargs_isÚ	kwargs_isr   r   r   Útest_parse_uris9   sF   

û

ý

ýüëùþ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   Úsquareg   ó    z5TestDecorators.test_decorate_endpoint.<locals>.squareÚ	_wampurisr    r   ú&com.myapp.product.<product:int>.updatec                 S   r1   r2   r   ©r   Úlabelr   r   r   Úupdate_productu   r6   z=TestDecorators.test_decorate_endpoint.<locals>.update_productú,com.myapp.<category:string>.<cid:int>.updatec                 S   r1   r2   r   )r   Úcidr   r   r   Úupdateƒ   r6   z5TestDecorators.test_decorate_endpoint.<locals>.updatezcom.myapp.circle.<name:string>ÚwildcardÚdetails©r!   Údetails_argc                 S   r1   ©z Do nothing. Nr   )Únamer@   r   r   r   Úcircle‘   r6   z5TestDecorators.test_decorate_endpoint.<locals>.circlezcom.myapp.something..updatec                 S   r1   rC   r   )Údynamicr@   r   r   r   Ú	something£   r6   z8TestDecorators.test_decorate_endpoint.<locals>.something©NN)r   ÚregisterÚ
assertTrueÚhasattrÚtyper7   Úlistr"   Úlenr   r   Úis_endpointÚassertFalseÚ
is_handlerÚis_exceptionr'   Ú_typeÚURI_TYPE_EXACTÚURI_TYPE_WILDCARDr   Úoptionsr!   rB   )r   r5   r;   r>   rE   rG   r   r   r   Útest_decorate_endpointe   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   r1   r2   r   r   r   r   r   Úon_shutdown¶   r6   z9TestDecorators.test_decorate_handler.<locals>.on_shutdownr7   r    r   ú)com.myapp.product.<product:int>.on_updatec                 S   r1   r2   r   r9   r   r   r   Úon_product_updateÄ   r6   z?TestDecorators.test_decorate_handler.<locals>.on_product_updateú/com.myapp.<category:string>.<cid:int>.on_updatec                 S   r1   r2   r   ©r   r=   r:   r   r   r   Ú	on_updateÒ   r6   z7TestDecorators.test_decorate_handler.<locals>.on_updatezcom.myapp.on.<event:string>r?   r@   rA   c                 S   r1   rC   r   )Úeventr@   r   r   r   Úon_eventà   r6   z6TestDecorators.test_decorate_handler.<locals>.on_eventrH   ©NNN)r   Ú	subscriberJ   rK   rL   r7   rM   r"   rN   r   r   rP   rO   rQ   rR   r'   rS   rT   rU   r   rV   r!   rB   )r   rY   r[   r^   r`   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>.AppErrorr3   N©r,   r-   r.   Ú__doc__r   r   r   r   ÚAppErrorô   ó    rh   r7   r    r   ú0com.myapp.product.<product:int>.product_inactivec                   @   re   )zDTestDecorators.test_decorate_exception.<locals>.ProductInactiveErrorr3   Nrf   r   r   r   r   ÚProductInactiveError  ri   rk   ú2com.myapp.<category:string>.<product:int>.inactivec                   @   re   )zCTestDecorators.test_decorate_exception.<locals>.ObjectInactiveErrorr3   Nrf   r   r   r   r   ÚObjectInactiveError  ri   rm   )r   Úerrorr
   rJ   rK   rL   r7   rM   r"   rN   r   r   rP   rO   rQ   rR   r'   rS   rT   rU   )r   rh   rk   rm   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 )Nr0   c                 S   s   | S ©Nr   ©Úxr   r   r   r5      ó   z<TestDecorators.test_match_decorated_endpoint.<locals>.squarer   éš  r8   c                 S   ó   | |fS rp   r   r9   r   r   r   r;   '  ó   zDTestDecorators.test_match_decorated_endpoint.<locals>.update_productzcom.myapp.product.123456.updateÚfoobarr:   ©r   rw   r<   c                 S   ó
   | ||fS rp   r   r]   r   r   r   r>   /  ó   
z<TestDecorators.test_match_decorated_endpoint.<locals>.update©r   r   rw   )rt   rH   r   ra   )r   rI   r7   r!   r"   )r   r5   Ú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 )NrX   c                   S   s   d S rp   r   r   r   r   r   rY   9  rs   z@TestDecorators.test_match_decorated_handler.<locals>.on_shutdownr   rZ   c                 S   ru   rp   r   r9   r   r   r   r[   @  rv   zFTestDecorators.test_match_decorated_handler.<locals>.on_product_updatez"com.myapp.product.123456.on_updaterw   r:   rx   r\   c                 S   ry   rp   r   r]   r   r   r   r^   H  rz   z>TestDecorators.test_match_decorated_handler.<locals>.on_updater{   r   rH   ra   )r   rb   r7   r!   r"   )r   rY   r|   r}   r[   r^   r   r   r   Útest_match_decorated_handler7  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 )Nrd   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 rp   )r
   Ú__init__)r   Úmsgr   r   r   r   U  s   zHTestDecorators.test_match_decorated_exception.<locals>.AppError.__init__c                 S   s   | j |j ko| j|jkS rp   )Ú	__class__r|   ©r   Úotherr   r   r   Ú__eq__X  s   
ÿzFTestDecorators.test_match_decorated_exception.<locals>.AppError.__eq__N©r,   r-   r.   r   r†   r   r   r   r   rh   R  s    rh   r   Úfuckrj   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 rp   ©r
   r   r   ©r   r‚   r   r   r   r   r   c  ó   
zTTestDecorators.test_match_decorated_exception.<locals>.ProductInactiveError.__init__c                 S   s$   | j |j ko| j|jko| j|jkS rp   )rƒ   r|   r   r„   r   r   r   r†   g  s
   
ÿ
þzRTestDecorators.test_match_decorated_exception.<locals>.ProductInactiveError.__eq__rp   r‡   r   r   r   r   rk   `  s    
rk   z)com.myapp.product.123456.product_inactiver   rl   c                   @   r‰   )zJTestDecorators.test_match_decorated_exception.<locals>.ObjectInactiveErrorNc                 S   s   t  | |¡ || _|| _d S rp   )r
   r   r   r   )r   r‚   r   r   r   r   r   r   r  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 rp   )rƒ   r|   r   r   r„   r   r   r   r†   w  s   
ÿ
þ
ýzQTestDecorators.test_match_decorated_exception.<locals>.ObjectInactiveError.__eq__rH   r‡   r   r   r   r   rm   o  s    
rm   z!com.myapp.product.123456.inactiver   )rˆ   )r   rn   r
   r7   r!   r"   )r   rh   r|   r}   rk   rm   r   r   r   Útest_match_decorated_exceptionP  s   	"z-TestDecorators.test_match_decorated_exceptionN)	r,   r-   r.   rW   rc   ro   r~   r€   rŽ   r   r   r   r   r/   c   s    O>,r/   c                   @   s   e Zd Zdd„ ZdS )ÚKwExceptionc                 O   s   t j| g|¢R Ž  || _d S rp   )r
   r   r}   )r   r|   r}   r   r   r   r   ‚  s   
zKwException.__init__N©r,   r-   r.   r   r   r   r   r   r     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 rp   )Ú_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 )Nr7   r   )rK   r7   r’   r“   r'   r   ÚURI_TARGET_HANDLER)r   Ú	exceptionrn   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   rn   r|   r}   ÚeclsÚexcr   r   r   Ú	map_error¡  s2   


	òðõøøzMockSession.map_errorrp   rH   )r,   r-   r.   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-   r.   r   r   r   r   ÚFooÈ  ó    r   )r   rn   Ú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.oldprocr0   c                 S   r1   r2   r   rq   r   r   r   r5   Ñ  r6   zFTestDecoratorsAdvanced.test_decorate_endpoint_multiple.<locals>.squarer7   é   r   r    )r   rI   rJ   rK   rL   r7   rM   r"   rN   Úranger   r   rO   rP   rQ   rR   rS   rT   r'   )r   r5   Ú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 )
Nrd   c                   @   r›   )zITestDecoratorsAdvanced.test_marshal_decorated_exception.<locals>.AppErrorNrœ   r   r   r   r   rh   æ  rž   rh   rˆ   r   rj   c                   @   ó   e Zd Zddd„ZdS )zUTestDecoratorsAdvanced.test_marshal_decorated_exception.<locals>.ProductInactiveErrorNc                 S   rŠ   rp   r‹   rŒ   r   r   r   r   ò  r   z^TestDecoratorsAdvanced.test_marshal_decorated_exception.<locals>.ProductInactiveError.__init__rp   r   r   r   r   r   rk   ï  s    rk   r   )r   rn   r
   r"   r7   r'   r‘   r–   )r   rh   Úerk   Ú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   rh     s    rh   rd   )r‘   r
   r	   r–   r™   r   ©r   r§   rh   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 )Nrd   c                   @   r›   )zHTestDecoratorsAdvanced.test_define_exception_decorated.<locals>.AppErrorNrœ   r   r   r   r   rh     rž   rh   )r‘   r   rn   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 )Nrd   )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 )Nrd   c                   @   r›   )z@TestDecoratorsAdvanced.test_map_exception_args.<locals>.AppErrorNrœ   r   r   r   r   rh   *  rž   rh   z com.myapp.error.product_inactivec                   @   r¥   )zLTestDecoratorsAdvanced.test_map_exception_args.<locals>.ProductInactiveErrorNc                 S   s
   || _ d S rp   )r   )r   r   r   r   r   r   0  s   
zUTestDecoratorsAdvanced.test_map_exception_args.<locals>.ProductInactiveError.__init__rp   r   r   r   r   r   rk   .  s    rk   úyou are doing it wrong)r­   r    r¡   é   r   r   )
r‘   r   rn   r
   r–   r™   r   r"   rM   r|   )
r   r§   rh   rk   r$   rn   r|   r}   r—   r˜   r   r   r   Útest_map_exception_args&  s$   



ù	óz.TestDecoratorsAdvanced.test_map_exception_argsN)
r,   r-   r.   r    r¤   r¨   rª   r«   r¬   r¯   r   r   r   r   rš   Â  s    
rš   )Ú
__future__r   Úautobahnr   Úautobahn.wamp.urir   r   r   ÚunittestÚTestCaser   r/   r
   r   rŸ   r‘   rš   r   r   r   r   Ú<module>   s   @   1