o
    jD                     @   s*  d dl Z e je jd d dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZmZmZ G dd deZ G dd deZ!G dd dej"Z#G dd dej"Z$e%dkre&  dS dS )    N)level)etreehtml)Application)srpc)IntegerUnicode)String)AnyUri)Array)ComplexModel)HttpRpc)HtmlColumnTableHtmlRowTable)Service)WsgiApplication)showcall_wsgi_app_kwargscall_wsgi_appc                   @   s   e Zd ZdefdefgZdS )CMisN)__name__
__module____qualname__r   r	   
_type_info r   r   c/var/www/html/LicenciasMiG/venv/lib/python3.10/site-packages/spyne/test/protocol/test_html_table.pyr   )   s    r   c                   @   s"   e Zd ZdefdefdefgZdS )CCMcr   r   N)r   r   r   r   r   r	   r   r   r   r   r   r   0   s
    r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestHtmlColumnTablec                 C   s  G dd dt }t|gdt td dd}t|}t|dddd	d
}t|}t|d t	|}|d \}|
d}t|dksCJ |d jdksLJ |
d}t|dksYJ |d jdksbJ |d D ]Z}|d}t|dksuJ |d jdks~J |d}t|dksJ |d jdksJ |d}t|dksJ |d jd	ksJ |d}t|dksJ |d jdksJ qfd S )Nc                   @   s$   e Zd Zeeeeddd ZdS )z;TestHtmlColumnTable.test_complex_array.<locals>.SomeService_returnsc                 S   s
   | gd S )N   r   ccmr   r   r   	some_call;      
zETestHtmlColumnTable.test_complex_array.<locals>.SomeService.some_callN)r   r   r   r   r   r   r&   r   r   r   r   SomeService:   s    r(   tnsfield_type_name_attrin_protocolout_protocol456def123abc)ccm_iccm_sccm_c_iccm_c_s&TestHtmlColumnTable.test_complex_arrayr   zth[@class="i"]   r   zth[@class="s"]r   ztd[@class="i"]ztd[@class="c"]//td[@class="i"]ztd[@class="c"]//td[@class="s"]ztd[@class="s"])r   r   r   r   r   r   r   
fromstringr   r   findalllentextxpath)selfr(   appserver
out_stringeltrowcellr   r   r   test_complex_array9   sF   









r7   c                 C   sj   G dd dt }t|gdt td d dd}t|}t|dd}t|}t|d |	d	d
ks3J d S )Nc                   @   *   e Zd Zeeddeeddd ZdS )z:TestHtmlColumnTable.test_string_array.<locals>.SomeService	unbounded
max_occursr!   c                 S      | S Nr   r   r   r   r   r&   k      zDTestHtmlColumnTable.test_string_array.<locals>.SomeService.some_callNr   r   r   r   r	   r   r&   r   r   r   r   r(   j       r(   r)   field_name_attrr+   r,   )r   1)r   2
body_pairs%TestHtmlColumnTable.test_string_arrayutf8z<table class="string"><thead><tr><th>some_callResponse</th></tr></thead><tbody><tr><td>1</td></tr><tr><td>2</td></tr></tbody></table>)
r   r   r   r   r   r   r   r9   r   decoder>   r(   r?   r@   rA   rB   r   r   r   test_string_arrayi   s   

rW   c                    s   dG dd dt  G  fdddt}t|gdt td dd}t|}t|}t|}t	|d	 |
d
d d jdksBJ |
d
d d jd ksRJ d S )Nhttp://arskom.com.tr/c                   @      e Zd ZeZdS )z1TestHtmlColumnTable.test_anyuri_string.<locals>.CNr   r   r   r
   r   r   r   r   r   C       r_   c                       s(   e Zd Zee d fddZdS )z;TestHtmlColumnTable.test_anyuri_string.<locals>.SomeServicer!   c                      s    dgS Nr   r   r   r_   _linkr   r   r&      s   zETestHtmlColumnTable.test_anyuri_string.<locals>.SomeService.some_callNr   r   r   r   r   r&   r   rc   r   r   r(      s    r(   r)   r*   r,   &TestHtmlColumnTable.test_anyuri_string//td[@class="c"]r   ahref)r   r   r   r   r   r   r   r   r9   r   r=   tagattribrZ   r   rc   r   test_anyuri_string   s   

$rf   c                       ddG dd dt  G  fdddt}t|gdt td dd	}t|}t|}t|}t	tj
|d
d |dd d jdksIJ |dd d jksWJ |dd d jd ksgJ d S )Nr\   Arskomc                   @   r]   )z4TestHtmlColumnTable.test_anyuri_uri_value.<locals>.CNr^   r   r   r   r   r_      r`   r_   c                       s*   e Zd Zee d fddZdS )z>TestHtmlColumnTable.test_anyuri_uri_value.<locals>.SomeServicer!   c                      s    t jddgS N)r<   rb   r
   Valuer   r_   rd   _textr   r   r&      s   zHTestHtmlColumnTable.test_anyuri_uri_value.<locals>.SomeService.some_callNre   r   rr   r   r   r(      s    r(   r)   r*   r,   Tpretty_printrg   r   rh   ri   )r   r   r   r   r   r   r   r   r9   printtostringr=   rj   r<   rk   rZ   r   rr   r   test_anyuri_uri_value      
$z)TestHtmlColumnTable.test_anyuri_uri_valuec           	         s  ddl m  ddlm} ddlm ddlm} G  fddd|}G dd	 d	ttj	| d
t
d dd
G fdddt}t|gdt | d}t|}t|}t|}ttj|dd |dddgkspJ |dddgks{J |dd	gksJ d S )Nr   E)HtmlBase)	urlencode)HtmlMicroFormatc                       s6   e Zd Z fddZ fddZdd Zdd Zd	S )
z<TestHtmlColumnTable.test_row_subprot.<locals>.SearchProtocolc           	         sH   |  |jd |j}d|i}| jd|j d|j|d d S )Nqueryqz	Search %sz{}?{})ri   )
to_unicoder   r   writerh   formaturi)	r>   ctxclsinstparentnamekwargsr   r   r{   r}   r   r   	to_parent   s
   zFTestHtmlColumnTable.test_row_subprot.<locals>.SearchProtocol.to_parentc              	      s$   |   jdi ddi d S )NSearchclasssearch-linkr   )r   theadth)r>   r   r   r   r   rz   r   r   column_table_gen_header   s   zTTestHtmlColumnTable.test_row_subprot.<locals>.SearchProtocol.column_table_gen_headerc           
      [   sd   t |j|  dg }|d}|  || |jdi ddi}	|	  ||	 ||j|  _d S )Narray_subprot_ctxstacktrtdr   r   )r   )getattrprotocolelement	__enter__appendr   )
r>   r   r   r   r   r   _ctxstacktr_ctxtd_ctxr   r   r   column_table_before_row   s   



zTTestHtmlColumnTable.test_row_subprot.<locals>.SearchProtocol.column_table_before_rowc           	      [   s6   |j |  j}t|D ]	}|d d d  q
|d d = d S rK   )r   r   reversed__exit__)	r>   r   r   r   r   r   r   r   elt_ctxr   r   r   column_table_after_row   s   zSTestHtmlColumnTable.test_row_subprot.<locals>.SearchProtocol.column_table_after_rowN)r   r   r   r   r   r   r   r   r   r   r   SearchProtocol   s
    r   c                   @   s   e Zd ZeZeZdS )z4TestHtmlColumnTable.test_row_subprot.<locals>.SearchN)r   r   r   r   r   r   r   r   r   r   r      s    r   )protr*   c                       s"   e Zd Zed fddZdS )z9TestHtmlColumnTable.test_row_subprot.<locals>.SomeServicer!   c                      s    ddd dddgS )Nrn   zhttps://www.google.com/search)r   r   Spynezhttps://www.bing.com/searchr   r   r   r   r   r&      s   

zCTestHtmlColumnTable.test_row_subprot.<locals>.SomeService.some_callNr   r   r   r   r&   r   )r   SearchTabler   r   r(      s    r(   r)   r,   Trt   z#//td[@class="search-link"]/a/text()zSearch ArskomzSearch Spynez"//td[@class="search-link"]/a/@hrefz&https://www.google.com/search?q=Arskomz#https://www.bing.com/search?q=Spynez!//th[@class="search-link"]/text())lxml.html.builderr{   spyne.protocol.htmlr|   !spyne.util.six.moves.urllib.parser}   r~   r   r   	customizer   r   r   r   r   r   r   r9   rv   rw   r=   )	r>   r|   r~   r   r(   r?   r@   rA   rB   r   )r{   r   r   r}   r   test_row_subprot   s4   #

z$TestHtmlColumnTable.test_row_subprotN)r   r   r   rE   r[   rl   rx   r   r   r   r   r   r    8   s    0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 )TestHtmlRowTablec                    s   dG dd dt  G  fdddt}t|gdt td dd}t|}t|}t|}t	tj
|d	d
 |dd d jdksFJ |dd d jd ksVJ d S )Nr\   c                   @   r]   )z.TestHtmlRowTable.test_anyuri_string.<locals>.CNr^   r   r   r   r   r_     r`   r_   c                       s$   e Zd Ze d fddZdS )z8TestHtmlRowTable.test_anyuri_string.<locals>.SomeServicer!   c                      s
    dS ra   r   r   rc   r   r   r&     r'   zBTestHtmlRowTable.test_anyuri_string.<locals>.SomeService.some_callNr   r   rc   r   r   r(     s    r(   r)   r*   r,   Trt   rg   r   rh   ri   )r   r   r   r   r   r   r   r   r9   rv   rw   r=   rj   rk   rZ   r   rc   r   rl      s   
$z#TestHtmlRowTable.test_anyuri_stringc                    rm   )Nr\   rn   c                   @   r]   )z1TestHtmlRowTable.test_anyuri_uri_value.<locals>.CNr^   r   r   r   r   r_     r`   r_   c                       s&   e Zd Ze d fddZdS )z;TestHtmlRowTable.test_anyuri_uri_value.<locals>.SomeServicer!   c                      s    t jddS ro   rp   r   rr   r   r   r&     s   zETestHtmlRowTable.test_anyuri_uri_value.<locals>.SomeService.some_callNr   r   rr   r   r   r(     s    r(   r)   r*   r,   Trt   rg   r   rh   ri   )r   r   r   r   r   r   r   r   r9   rv   rw   r=   rj   r<   rk   rZ   r   rr   r   rx     ry   z&TestHtmlRowTable.test_anyuri_uri_valuec                 C   s@  G dd dt }t|gdtddtd dd}t|}t|dd	d
ddd}t|}t|d 	 t	tj
|dd |d}t|dksFJ |dd dksQJ |dd dks\J |dd dksgJ |dd d
ksrJ |dd dks}J |dd d	ksJ |dd dksJ |dd dksJ d S )Nc                   @   s    e Zd Zeeeddd ZdS )z2TestHtmlRowTable.test_complex.<locals>.SomeServicer!   c                 S   rJ   rK   r   r$   r   r   r   r&   /  rM   z<TestHtmlRowTable.test_complex.<locals>.SomeService.some_callN)r   r   r   r   r   r&   r   r   r   r   r(   .  s    
r(   r)   r   )
hier_delimr*   r,   r&   r2   r1   r/   r0   )r6   r5   r3   r4   TestHtmlRowTable.test_complexTrt   r   r8   ztbody/tr/th[@class="i"]/text()r   r   ztbody/tr/td[@class="i"]/text()z.tbody/tr/td[@class="c"]//th[@class="i"]/text()z.tbody/tr/td[@class="c"]//td[@class="i"]/text()z.tbody/tr/td[@class="c"]//th[@class="s"]/text()r   z.tbody/tr/td[@class="c"]//td[@class="s"]/text()ztbody/tr/th[@class="s"]/text()ztbody/tr/td[@class="s"]/text())r   r   r   r   r   r   r   r9   r   rv   rw   
find_classr;   r=   )r>   r(   r?   r@   rA   rB   respr   r   r   test_complex-  s.   

 
r   c                 C   sf   G dd dt }t|gdt td d dd}t|}t|dd}tt|d |	d	d
ks1J d S )Nc                   @   rF   )z7TestHtmlRowTable.test_string_array.<locals>.SomeServicerG   rH   r!   c                 S   rJ   rK   r   rL   r   r   r   r&   r  rM   zATestHtmlRowTable.test_string_array.<locals>.SomeService.some_callNrN   r   r   r   r   r(   q  rO   r(   r)   rP   r,   rR   rU   "TestHtmlRowTable.test_string_arrayrX   z<div><table class="some_callResponse"><tr><th>string</th><td><table><tr><td>1</td></tr><tr><td>2</td></tr></table></td></tr></table></div>
r   r   r   r   r   r   r   r   r9   rY   r>   r(   r?   r@   rA   r   r   r   r[   p  s   r   c              	   C   sh   G dd dt }t|gdt tdd d dd}t|}t|dd}tt|d	 |	d
dks2J d S )Nc                   @   rF   )zATestHtmlRowTable.test_string_array_no_header.<locals>.SomeServicerG   rH   r!   c                 S   rJ   rK   r   rL   r   r   r   r&     rM   zKTestHtmlRowTable.test_string_array_no_header.<locals>.SomeService.some_callNrN   r   r   r   r   r(     rO   r(   r)   F)headerrQ   r+   r,   rR   rU   ,TestHtmlRowTable.test_string_array_no_headerrX   z{<div><table class="some_callResponse"><tr><td><table><tr><td>1</td></tr><tr><td>2</td></tr></table></td></tr></table></div>r   r   r   r   r   test_string_array_no_header  s   r   c                    s   t dddt dddt dddt dd	dg G  fd
ddt}t|gdt td dd}t|}t|}tt	|d |
ddksFJ d S )Nr8   rh   )r   r      b   r      dc                       s&   e Zd Zeeed fddZdS )z8TestHtmlRowTable.test_complex_array.<locals>.SomeServicer!   c                      s    S rK   r   r   vr   r   r&     rM   zBTestHtmlRowTable.test_complex_array.<locals>.SomeService.some_callN)r   r   r   r   r   r   r&   r   r   r   r   r(     s    r(   r)   r*   r,   #TestHtmlRowTable.test_complex_arrayrX   a7  <div><table class="CM"><tbody><tr><th class="i">i</th><td class="i">1</td></tr><tr><th class="s">s</th><td class="s">a</td></tr></tbody></table><table class="CM"><tbody><tr><th class="i">i</th><td class="i">2</td></tr><tr><th class="s">s</th><td class="s">b</td></tr></tbody></table><table class="CM"><tbody><tr><th class="i">i</th><td class="i">3</td></tr><tr><th class="s">s</th><td class="s">c</td></tr></tbody></table><table class="CM"><tbody><tr><th class="i">i</th><td class="i">4</td></tr><tr><th class="s">s</th><td class="s">d</td></tr></tbody></table></div>)r   r   r   r   r   r   r   r   r   r9   rY   r   r   r   r   rE     s   



r   N)	r   r   r   rl   rx   r   r[   r   rE   r   r   r   r   r      s    C "r   __main__)'loggingbasicConfigDEBUGunittestlxmlr   r   spyne.applicationr   spyne.decoratorr   spyne.model.primitiver   r   r	   r
   spyne.model.complexr   r   spyne.protocol.httpr   spyne.protocol.html.tabler   r   spyne.servicer   spyne.server.wsgir   spyne.util.testr   r   r   r   r   TestCaser    r   r   mainr   r   r   r   <module>   s2    G ~