o
    ÝîiÑ:  ã                   @   sÊ   d dl Z e  d¡Ze e j¡ d dl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 G dd„ deƒZG dd„ deejƒZedkrce ¡  dS dS )é    NÚsuds)Údatetime)Ú	b64encodeÚ	b64decode)ÚParser)ÚClient)ÚMessagePlugin)ÚWebFault)Úsix)ÚSpyneClientTestBaseÚserver_startedc                   @   s   e Zd Zdd„ ZdS )ÚLastReceivedPluginc                 C   s   t ƒ }|j|jd| _d S )N)Ústring)r   ÚparseÚreply)ÚselfÚcontextÚsax© r   ú\/var/www/html/LicenciasMIG/venv/lib/python3.10/site-packages/spyne/test/interop/test_suds.pyÚreceived)   s   zLastReceivedPlugin.receivedN)Ú__name__Ú
__module__Ú__qualname__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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d „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCS )DÚTestSudsc                 C   s8   t  | d¡ t ¡ \}td| d tƒ gd| _d| _d S )NÚhttpzhttp://localhost:%d/?wsdl)ÚcacheÚpluginszspyne.test.interop.server)r   ÚsetUpr   Úkeysr   r   ÚclientÚns)r   Úportr   r   r   r   /   s   

ÿ
zTestSuds.setUpc                 C   ó&   t  ¡ }| jj |¡}||ksJ ‚d S ©N)r   Únowr    ÚserviceÚecho_datetime©r   ÚvalÚretr   r   r   Útest_echo_datetime8   ó   zTestSuds.test_echo_datetimec                 C   r#   r$   )r   r%   r    r&   Ú!echo_datetime_with_invalid_formatr(   r   r   r   Ú&test_echo_datetime_with_invalid_format>   r,   z/TestSuds.test_echo_datetime_with_invalid_formatc                 C   ó*   t  ¡  ¡ }| jj |¡}||ksJ ‚d S r$   )r   r%   Údater    r&   Ú	echo_dater(   r   r   r   Útest_echo_dateD   ó   zTestSuds.test_echo_datec                 C   r/   r$   )r   r%   r0   r    r&   Úecho_date_with_invalid_formatr(   r   r   r   Ú"test_echo_date_with_invalid_formatJ   r3   z+TestSuds.test_echo_date_with_invalid_formatc                 C   r/   r$   )r   r%   Útimer    r&   Ú	echo_timer(   r   r   r   Útest_echo_timeP   r3   zTestSuds.test_echo_timec                 C   r/   r$   )r   r%   r6   r    r&   Úecho_time_with_invalid_formatr(   r   r   r   Ú"test_echo_time_with_invalid_formatV   r3   z+TestSuds.test_echo_time_with_invalid_formatc                 C   s&   g d¢}| j j |¡}||ksJ ‚d S )N)FFFT)r    r&   Úecho_simple_boolean_arrayr(   r   r   r   Útest_echo_simple_boolean_array\   r,   z'TestSuds.test_echo_simple_boolean_arrayc                 C   s@   d}| j j |¡}|  ||¡ d}| j j |¡}|  ||¡ d S )NTF)r    r&   Úecho_booleanÚassertEqualr(   r   r   r   Útest_echo_booleanb   s   zTestSuds.test_echo_booleanc                 C   s2   | j j d¡}|j}| j j |¡}||ksJ ‚d S )NÚDaysOfWeekEnum)r    ÚfactoryÚcreateÚMondayr&   Ú	echo_enum)r   r@   r)   r*   r   r   r   Ú	test_enumk   s   zTestSuds.test_enumc                 C   s.   d}| j j t|ƒ ¡ ¡}|t|ƒksJ ‚d S )Ns    )r    r&   Úecho_bytearrayr   Údecoder   r(   r   r   r   Útest_bytearrays   s   zTestSuds.test_bytearrayc              
   C   sZ   | j j d¡}d|_d |_z| j j |¡ W tdƒ‚ ty, } zW Y d }~d S d }~ww )Nú{hunk.sunk}NonNillableClassé   ú	must fail)	r    rA   rB   ÚiÚsr&   Únon_nillabler	   Ú	Exception)r   Únon_nillable_classÚer   r   r   Útest_validationz   s   ÿý€ÿzTestSuds.test_validationc                 C   s0   | j j d¡}|j g d¢¡ | j j |¡ d S )NÚintegerArray)é   é   é   é   é   )r    rA   rB   ÚintegerÚextendr&   Úecho_integer_array)r   Úiar   r   r   Útest_echo_integer_array‡   s   z TestSuds.test_echo_integer_arrayc                 C   sn   | j j d¡}d|_d|_| j j|d | j j ¡ }| j jd d t|ƒ |  	|j|j¡ |  	|j|j¡ d S )NÚInHeaderÚarV   ©Úsoapheaders)
r    rA   rB   rM   rL   Úset_optionsr&   Úecho_in_headerÚprintr>   )r   Ú	in_headerr*   r   r   r   Útest_echo_in_headerŒ   s   zTestSuds.test_echo_in_headerc              	   C   sÎ   | j j d¡}d|_d|_| j j d¡}d|_ tdddddddd	|_| j j||fd
 | j j 	¡ }| j jd d
 t
|ƒ |  |j|d j¡ |  |j|d j¡ |  |j |d j ¡ |  |j|d j¡ d S )Nr^   r_   rV   ÚInTraceHeaderr   éÐ  rT   r   ©ÚyearÚmonthÚdayÚhourÚminuteÚsecondÚmicrosecondr`   )r    rA   rB   rM   rL   r   ÚcallDaterb   r&   Úecho_in_complex_headerrd   r>   )r   re   Úin_trace_headerr*   r   r   r   Útest_echo_in_complex_headerš   s    
ÿz$TestSuds.test_echo_in_complex_headerc                 C   sh   | j j d¡}tdddd|_d|_| j j ¡ }|  t	|t
|ƒƒ¡ |  |j|j¡ |  |j|j¡ d S )NÚ	OutHeaderrh   rT   ©rj   rk   rl   ç8é/Tû!	@)r    rA   rB   r   ÚdtÚfr&   Úsend_out_headerÚ
assertTrueÚ
isinstanceÚtyper>   )r   Ú
out_headerr*   r   r   r   Útest_send_out_header®   s   zTestSuds.test_send_out_headerc              	   C   sÜ  | j j d¡}tdddd|_d|_| j j d¡}tdddddddd|_tdddddddd|_| j j 	¡ }|  
t|d	 t|ƒƒ¡ |  |d	 j|j¡ |  |d	 j|j¡ |  
t|d t|ƒƒ¡ |  |d j|j¡ |  |d j|j¡ | j jjd	 j d
¡ d¡}| d¡}|  d |j ¡  ¡ |j ¡  ¡ f¡| d¡ ¡ ¡ |  t |j¡| d¡ ¡ ¡ | d¡}|  d |j ¡  ¡ |j ¡  ¡ f¡| d¡ ¡ ¡ |  d |j ¡  ¡ |j ¡  ¡ f¡| d¡ ¡ ¡ d S )Nru   rh   rT   rv   rw   ÚOutTraceHeaderri   éd   r   ÚEnvelopeÚHeaderÚTrx   ry   ÚreceiptDateÚ
returnDate)r    rA   rB   r   rx   ry   r…   r†   r&   Úsend_out_complex_headerr{   r|   r}   r>   Úoptionsr   r   ÚgetChildÚjoinr0   Ú	isoformatr6   ÚgetTextr
   Ú	text_type)r   r~   Úout_trace_headerr*   ra   Úsoap_out_headerÚsoap_out_trace_headerr   r   r   Útest_send_out_complex_header¹   sH   ÿÿ
ÿþ
ÿþÿþz%TestSuds.test_send_out_complex_headerc                 C   s"   d}| j j |¡}|  ||¡ d S )NÚOK)r    r&   Úecho_stringr>   )r   Útest_stringr*   r   r   r   Útest_echo_stringÛ   s   zTestSuds.test_echo_stringc                 C   s0   dddgiddgddgidd	gigg d
gdœiS )NÚtest_subÚtest_subsubsub1zsubsubsub1 valuezsubsub2 value 1zsubsub2 value 2Útest_subsub3sub1zsubsub3sub1 valueÚtest_subsub3sub2zsubsub3sub2 valueÚx)Útest_subsub1Útest_subsub2Útest_subsub3Útest_subsub4Útest_subsub5r   ©r   r   r   r   Ú__get_xml_test_valá   s   ÿÿÿüòÿzTestSuds.__get_xml_test_valc                 C   sL   | j j d¡}d|_d|_| j j |¡}|j|jksJ ‚|j|jks$J ‚d S )Nú&{spyne.test.interop.server}SimpleClassé-   Úasd)r    rA   rB   rL   rM   r&   Úecho_simple_classr(   r   r   r   Útest_echo_simple_classö   s   zTestSuds.test_echo_simple_classc                 C   sj   | j j d¡}d|_| j j d¡|_d|j_d |j_| j j |¡}|j|jks)J ‚|jj|jjks3J ‚d S )Nz1{spyne.test.interop.server}ClassWithSelfReferencer£   é2   )r    rA   rB   rL   Úsrr&   Úecho_class_with_self_referencer(   r   r   r   Ú#test_echo_class_with_self_reference  s   z,TestSuds.test_echo_class_with_self_referencec                 C   sT  | j j d¡}d|_d|_d|_| j j d¡|_|jj g d¢¡ | j j d¡|_	|j	j
 | j j d¡¡ |j	j
 | j j d¡¡ d|j	j
d	 _d|j	j
d	 _d
|j	j
d _d|j	j
d _| j j d¡|_t ¡ |j_d|j_d|j_| j j |¡}|  |j|j¡ |  |jd	 |jd	 ¡ |  |j	j
d	 j|j	j
d	 j¡ |  |jj|jj¡ d S )Nz{punk.tunk}NestedClassr£   r¤   ç®Gáz®(@rS   )	rT   rU   rV   r£   rX   rV   rU   rT   rW   ú+{spyne.test.interop.server}SimpleClassArrayr¢   r   é   rT   Úqweú%{spyne.test.interop.server}OtherClassçw¾Ÿ/Ý^@T)r    rA   rB   rL   rM   ry   ÚairY   rZ   ÚsimpleÚSimpleClassÚappendÚotherr   r%   rx   ÚdÚbr&   Úecho_nested_classr>   r(   r   r   r   Útest_echo_nested_class  s,    zTestSuds.test_echo_nested_classc                 C   s    |   | jj ¡ dtdƒ ¡ d S )NrU   g     jø@)r>   r    r&   Úhuge_numberÚintr    r   r   r   Útest_huge_number-  s    zTestSuds.test_huge_numberc                 C   s   |   | jj ¡ dd ¡ d S )NÚ0123456789abcdefi @  )r>   r    r&   Úlong_stringr    r   r   r   Útest_long_string0  s   ÿzTestSuds.test_long_stringc                 C   s   | j j ¡  d S r$   )r    r&   Ú
test_emptyr    r   r   r   rÀ   4  s   zTestSuds.test_emptyc                 C   sš  | j j d¡}d|_d|_d|_| j j d¡|_|jj | j j d¡¡ |jj | j j d¡¡ d|jjd _d|jjd _d|jjd	 _d
|jjd	 _| j j d¡|_	t
 ¡ |j	_d|j	_d|j	_| j j d¡|_t
dddƒ|j_d|j_d|j_t
dddƒ|_d|_| j j |¡}t|ƒ |  |j|j¡ |  |j|j¡ |  |j|j¡ |  |jjd j|jjd j¡ |  |j	j|j	j¡ |  |jj|jj¡ d S )Nz{bar}ExtensionClassr£   r¤   r«   r¬   r¢   r   r­   rT   r®   r¯   r°   TrI   iÚ  rJ   rU   é{   Úpunké   rX   )r    rA   rB   rL   rM   ry   r²   r³   r´   rµ   r   r%   rx   r¶   r·   ÚpÚlÚqr&   Úecho_extension_classrd   r>   r(   r   r   r   Útest_echo_extension_class7  s:    z"TestSuds.test_echo_extension_classc              
   C   ó<   z
| j j ¡  tdƒ‚ ty } zW Y d }~d S d }~ww ©NrK   )r    r&   Úpython_exceptionrO   r	   ©r   rQ   r   r   r   Útest_python_exception`  ó   €ÿzTestSuds.test_python_exceptionc              
   C   rÉ   rÊ   )r    r&   Úsoap_exceptionrO   r	   rÌ   r   r   r   Útest_soap_exceptiong  rÎ   zTestSuds.test_soap_exceptionc                 C   sN   | j j ¡ }|  |jd¡ |  |jd¡ |  |jd¡ |  |jjd d¡ d S )NrT   ÚTestrÁ   r   ÚMEMBER)	r    r&   Úcomplex_returnr>   Ú
resultCodeÚresultDescriptionÚtransactionIdÚrolesÚRoleEnum©r   r*   r   r   r   Útest_complex_returnn  s
   zTestSuds.test_complex_returnc                 C   s"   z
| j j ¡  tdƒ‚   Y d S rÊ   )r    r&   Úreturn_invalid_datarO   r    r   r   r   Útest_return_invalid_datav  s
   z!TestSuds.test_return_invalid_datac                 C   ó   | j j d¡}|dksJ ‚d S ©NÚtest)r    r&   Úcustom_messagesrÙ   r   r   r   Útest_custom_messages}  ó   zTestSuds.test_custom_messagesc                 C   rÝ   rÞ   )r    r&   Úecho_simple_barerÙ   r   r   r   Útest_echo_simple_bare‚  râ   zTestSuds.test_echo_simple_barec                 C   s@   ddg}| j j d¡}|j |¡ | j j |¡}||ksJ ‚d S )NÚabcÚdefÚstringArray)r    rA   rB   r   rZ   r&   Úecho_complex_bare)r   r)   r\   r*   r   r   r   Ú_test_echo_complex_bare¢  s
   z TestSuds._test_echo_complex_bareN)$r   r   r   r   r+   r.   r2   r5   r8   r:   r<   r?   rE   rH   rR   r]   rf   rt   r   r‘   r•   Ú_TestSuds__get_xml_test_valr¦   rª   r¹   r¼   r¿   rÀ   rÈ   rÍ   rÐ   rÚ   rÜ   rá   rä   ré   r   r   r   r   r   .   sD    		") r   Ú__main__)ÚloggingÚ	getLoggerÚsuds_loggerÚsetLevelÚINFOÚunittestr   Úbase64r   r   Úsuds.sax.parserr   Úsuds.clientr   Úsuds.pluginr   r   r	   Ú
spyne.utilr
   Ú)spyne.test.interop._test_soap_client_baser   r   r   ÚTestCaser   r   Úmainr   r   r   r   Ú<module>   s&   
  ÿ