o
    i?                     @   s  d dl mZ d dlZd dlZd dlZd dlZd dl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 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 d dlmZ d dlmZ d dlm Z m!Z!m"Z" d dlm#Z#m$Z$m%Z%m&Z& d dl'm(Z( d dl)m*Z*m+Z+m,Z, d dl)m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl2m4Z4 d dl2m5Z5 d dl2m6Z6 G dd dej7Z8G dd  d ej7Z9G d!d" d"ej7Z:G d#d$ d$ej7Z;G d%d& d&ej7Z<G d'd( d(ej7Z=G d)d* d*ej7Z>G d+d, d,ej7Z?G d-d. d.ej7Z@G d/d0 d0ej7ZAG d1d2 d2ej7ZBG d3d4 d4ej7ZCG d5d6 d6ej7ZDG d7d8 d8ej7ZEG d9d: d:ej7ZFeGd;kr^eH  dS dS )<    )print_functionN)pprint)Decimal)datetime)etree)MAX_STRING_FIELD_LENGTH)srpc)Application)XmlAttributeTypeInfoComplexModel)Iterable)Array)DateTime)Integer)Unicode)Service)AttrDictAttrDictCollget_version)memoizememoize_ignore_nonememoize_ignore
memoize_id)deserialize_request_string)get_dict_as_objectget_object_as_yamlget_object_as_json)get_object_as_dict)tdict)tlist)get_object_as_xml)get_xml_as_object)get_schema_documents)get_validation_schemac                   @      e Zd Zdd ZdS )TestUtilc                 C   s:   t dt tks
J ddd t dD tjksJ d S )N
sqlalchemy.c                 S   s   g | ]}t |qS  )str).0ir*   r*   Y/var/www/html/LicenciasMIG/venv/lib/python3.10/site-packages/spyne/test/util/test_util.py
<listcomp>6   s    z)TestUtil.test_version.<locals>.<listcomp>)r   r(   join__version__selfr*   r*   r.   test_version4   s   zTestUtil.test_versionN)__name__
__module____qualname__r4   r*   r*   r*   r.   r'   3       r'   c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestTypeInfoc                 C   s   t  }d|d< |d |d   krdksJ  J |dd |d |d   kr.dks1J  J |d |d   kr@dksCJ  J d S )N   ar   b   r>   r?   r   insertr3   dr*   r*   r.   test_insert;   s   $$(zTestTypeInfo.test_insertc                 C   s   t  }d|d< d|d< |d |d   krdksJ  J |dd |d |d   kr2dks5J  J |d |d   krDdksGJ  J d S )Nr;   r<   r?   r>   r   )r>      rE   r@   rB   r*   r*   r.   test_insert_existingF   s   $$(z!TestTypeInfo.test_insert_existingc                 C   sf   t  }d|d< |dg |d |d   krdksJ  J |d |d   kr.dks1J  J d S )Nr;   r<   r=   r   r>   r?   )r   updaterB   r*   r*   r.   test_updateQ   s
   $(zTestTypeInfo.test_updateN)r5   r6   r7   rD   rF   rH   r*   r*   r*   r.   r:   :   s    r:   c                   @      e Zd Zdd Zdd ZdS )TestXmlc                 C   s   G dd dt }|ddd}t||}tt| |jdks!J t||d}tt| |jdks5J t||dd	d
}tt| |jdksKJ t||d	d
}tt| |jdks`J d S )Nc                   @   s   e Zd ZdZeZeZdS )z!TestXml.test_serialize.<locals>.CtnsN)r5   r6   r7   __namespace__r   r-   r   sr*   r*   r*   r.   C\   s    rN      x)r-   rM   z{tns}CXz{tns}XT)no_namespace)r   r"   printr   tostringtag)r3   rN   cretr*   r*   r.   test_serializeZ   s   
zTestXml.test_serializec              
   C   sV  G dd dt }G dd dt }t||g}t| |d jdks#J |d jdks,J t  td|d jd	   |d jd	 d
ksEJ ttj|d dd t  td|d jd	   |d jd	 dksiJ ttj|d dd t  |ddt	dt
dddtjddd}t||}ttj|dd t||}||ksJ t||g d S )Nc                   @   s    e Zd ZdZeZeZeZ	e
ZdS )z&TestXml.test_deserialize.<locals>.Punksome_namespaceN)r5   r6   r7   rL   r   r<   r   r>   r   rV   r   rC   r*   r*   r*   r.   Punkt   s    rZ   c                   @   s0   e Zd ZdZeZeZeZ	e
ZeeZdd ZdS )z%TestXml.test_deserialize.<locals>.Foosome_other_namespacec                 S   sD   | j |j kr| j|jkr| j|jkr| j|jkr| j|jks J dS )NTr<   r>   rV   rC   er3   otherr*   r*   r.   __eq__   s   z,TestXml.test_deserialize.<locals>.Foo.__eq__N)r5   r6   r7   rL   r   r<   r   r>   r   rV   r   rC   r
   r]   r`   r*   r*   r*   r.   Foo|   s    ra   s0z({http://www.w3.org/2001/XMLSchema}schemarK   zthe other namespace %r:targetNamespacerY   T)pretty_printr[   r<   r;   z3.4  r?      tzinforO   r\   )r   r$   r   rU   rS   attribr   rT   decimalr   r   pytzutcr"   r#   r%   )r3   rZ   ra   docsfoodocfoo_backr*   r*   r.   test_deserializes   s.   

zTestXml.test_deserializeN)r5   r6   r7   rX   rq   r*   r*   r*   r.   rJ   Y   s    rJ   c                   @   r&   )	TestCDictc                 C   s   ddl m} G dd dt}G dd d|}G dd d|}G d	d
 d
|}G dd dt}||d|di}|| dks>J || dksFJ || dksNJ z	||  W td tya   Y d S w )Nr   )cdictc                   @      e Zd ZdS )zTestCDict.test_cdict.<locals>.ANr5   r6   r7   r*   r*   r*   r.   A       rv   c                   @   rt   )zTestCDict.test_cdict.<locals>.BNru   r*   r*   r*   r.   B   rw   rx   c                   @   rt   )zTestCDict.test_cdict.<locals>.ENru   r*   r*   r*   r.   E   rw   ry   c                   @   rt   )zTestCDict.test_cdict.<locals>.FNru   r*   r*   r*   r.   F   rw   rz   c                   @   rt   )zTestCDict.test_cdict.<locals>.CNru   r*   r*   r*   r.   rN      rw   rN   funzanz
Must fail.)spyne.util.cdictrs   objectKeyError	Exception)r3   rs   rv   rx   ry   rz   rN   rC   r*   r*   r.   
test_cdict   s    
zTestCDict.test_cdictN)r5   r6   r7   r   r*   r*   r*   r.   rr      r8   rr   c                   @   r9   )	TestTDictc                 C   sd   t  }d|d< |d dksJ t  }|ddi |d dks!J t dgd}|d dks0J d S )Nr;   r   )r    rG   fromkeysrB   r*   r*   r.   test_tdict_notype   s   zTestTDict.test_tdict_notypec                 C   sR   t t}z	d|d< W td ty   Y nw t t}d|d< |d dks'J d S )Nr;   r   	must failrM   r    r+   	TypeErrorr   rB   r*   r*   r.   test_tdict_k   s   
zTestTDict.test_tdict_kc                 C   sV   t td}z	d|d< W td ty   Y nw t td}d|d< |d dks)J d S )N)vtr;   r   r   rM   r   rB   r*   r*   r.   test_tdict_v   s   


zTestTDict.test_tdict_vN)r5   r6   r7   r   r   r   r*   r*   r*   r.   r      s    r   c                   @   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 )TestLogReprc                    s   ddl m} ddlm  ddlm} G  fddd|}td }t||d| d	 td
dt   ||d| d	d
dt  ksDJ |g dt dksQJ d S )Nr   r   Stringlog_reprc                       s   e Zd Z ZdS )z+TestLogRepr.test_log_repr_simple.<locals>.ZN)r5   r6   r7   zr*   r   r*   r.   Z   s    r   d   r<   )r   zZ(z='%s'(...)))r<   r>   rV   z['a', 'b', (...)])	spyne.model.complexr   spyne.model.primitiver   spyne.util.webr   r   rS   r   )r3   r   r   r   lr*   r   r.   test_log_repr_simple   s   
z TestLogRepr.test_log_repr_simplec                    s   ddl m  ddl m ddlm} ddlm ddlm} G  fddd|}t	d	 }|d
g| dgj
ddgdd}tt| ||dksMJ d S )Nr   )	ByteArray)Filer   r   r   c                       s2   e Zd Zdddfd ddfdefgZdS )z,TestLogRepr.test_log_repr_complex.<locals>.ZfFloggedtr   N)r5   r6   r7   r   
_type_infor*   r   r   r   r*   r.   r     s
    
r   r   abcr   aaa)namedata)r   r   r   zZ(z=['abc', 'abc', (...)]))spyne.modelr   r   r   r   r   r   r   r   r   ValuerS   repr)r3   r   r   r   r   valr*   r   r.   test_log_repr_complex  s   "z!TestLogRepr.test_log_repr_complexc                 C   s   ddl m} ddlm} |}|ddi|dksJ |ddd|dks%J |ddd	d
|dks2J |dg|dks<J |ddg|dksGJ |g d
|dksRJ d S )Nr   AnyDictr   r;   z{1: 1}r?   )r;   r?   z{1: 1, 2: 2}rE   r;   r?   rE   z{1: 1, 2: 2, (...)}[1]z[1, 2]z[1, 2, (...)]r   r   r   r   r3   r   r   r   r*   r*   r.   test_log_repr_dict_vanilla  s   z&TestLogRepr.test_log_repr_dict_vanillac                 C   P   ddl m} ddlm} |dd}|ddi|dksJ |dg|dks&J d S )	Nr   r   r   keysr   r;   z
{1: (...)}r   r   r   r*   r*   r.   test_log_repr_dict_keys'  
   
z#TestLogRepr.test_log_repr_dict_keysc                 C   r   )	Nr   r   r   valuesr   r;   z
{(...): 1}r   r   r   r*   r*   r.   test_log_repr_dict_values1  r   z%TestLogRepr.test_log_repr_dict_valuesc                 C   V   ddl m} ddlm} |dd}|dddd	|d
ksJ |g d	|dks)J d S )Nr   r   r   fullr   r;   r?   rE   r   z{1: 1, 2: 2, 3: 3}	[1, 2, 3]r   r   r*   r*   r.   test_log_repr_dict_full;  
   
z#TestLogRepr.test_log_repr_dict_fullc                 C   r   )Nr   r   r   z	keys-fullr   r;   r?   rE   r   z{1: (...), 2: (...), 3: (...)}r   r   r   r*   r*   r.   test_log_repr_dict_keys_fullD  r   z(TestLogRepr.test_log_repr_dict_keys_fullc                 C   r   )Nr   r   r   zvalues-fullr   r;   r?   rE   r   z{(...): 1, (...): 2, (...): 3}r   r   r   r*   r*   r.   test_log_repr_dict_values_fullM  r   z*TestLogRepr.test_log_repr_dict_values_fullN)r5   r6   r7   r   r   r   r   r   r   r   r   r*   r*   r*   r.   r      s    

		r   c                   @   r&   )TestDeserializec                 C   sZ   ddl m} G dd dt}t|gd| | d}d}d| }t||}|j|ks+J d S )	Nr   )Soap11c                   @   s$   e Zd Zeeeeddd ZdS )z5TestDeserialize.test_deserialize.<locals>.SomeService)_returnsc                 S   s   t | S )N)range)yor*   r*   r.   	some_call\  s   z?TestDeserialize.test_deserialize.<locals>.SomeService.some_callN)r5   r6   r7   r   r   r   r   r*   r*   r*   r.   SomeService[  s    r   rK   )in_protocolout_protocol   a(  
            <x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/">
                <x:Body>
                    <tns:some_call xmlns:tns="tns">
                        <tns:yo>%s</tns:yo>
                    </tns:some_call>
                </x:Body>
            </x:Envelope>
        )spyne.protocol.soapr   r   r	   r   r   )r3   r   r   appmeatstringobjr*   r*   r.   rq   X  s   

z TestDeserialize.test_deserializeN)r5   r6   r7   rq   r*   r*   r*   r.   r   W  r8   r   c                   @   s    e Zd ZdZdd Zdd ZdS )TestEtreeDictTc                 C   s8   ddl m} ddlm} ||dddiidksJ d S )Nr   rT   root_dict_to_etreer<   r>   rV   s   <a><b>c</b></a>)
lxml.etreerT   spyne.util.etreeconvr   )r3   rT   r   r*   r*   r.   test_simplex  s    zTestEtreeDict.test_simplec           	      C   s   ddl m} ddlm} |dddii}| ||dd |ddd ii}| ||d	d
 |ddi}| ||dd |dd i}| ||dd
 |ddi}| ||dd |dddii}| ||dd d S )Nr   r   r   r<   r>   r;   s   <a><b>1</b></a>z4The integer should be properly rendered in the etrees   <a><b/></a>z(None should not be rendered in the etrees   <a>1</a>s   <a/>lols
   <a>lol</a>z'A string should be rendered as a strings   <a><b>lol</b></a>)r   rT   r   r   assertEqual)	r3   rT   r   complex_valuecomplex_nonesimple_value
none_valuestring_valuecomplex_string_valuer*   r*   r.   test_not_sized}  s4   zTestEtreeDict.test_not_sizedN)r5   r6   r7   longMessager   r   r*   r*   r*   r.   r   t  s    r   c                   @   r&   )TestDictDocc              	   C   s   G dd dt }|ddtdddtjdgd	}d
tfdtfd
tfdtffD ],\}}t  td| t|||d}t| t|||d}t| t| ||ksQJ q%d S )Nc                   @   s(   e Zd ZdZeZeZee	Z
dd ZdS )zTestDictDoc.test_the.<locals>.CrK   c                 S   s,   t d | j|jko| j|jko| j|jkS )NzYaaay!)rS   r-   rM   r<   r^   r*   r*   r.   r`     s   

z&TestDictDoc.test_the.<locals>.C.__eq__N)r5   r6   r7   rL   r   r-   r   rM   r   r   r<   r`   r*   r*   r*   r.   rN     s    rN   rO   rP   re         rg   )r-   rM   r<   FTzcomplex_as:
complex_as)	r   r   rk   rl   dictlistrS   r   r   )r3   rN   rV   iwcarC   or*   r*   r.   test_the  s   $
zTestDictDoc.test_theN)r5   r6   r7   r   r*   r*   r*   r.   r     r8   r   c                   @   rI   )TestAttrDictc                 C   s   t ddd dksJ d S )Nr;   r<   r<   )r   r2   r*   r*   r.   test_attr_dict  s   zTestAttrDict.test_attr_dictc                 C   sN   t djjdks
J t djddd dksJ t djddjdks%J d S )NSomeDictr;   r   r<   )r   r   NAMEr2   r*   r*   r.   test_attr_dict_coll  s   z TestAttrDict.test_attr_dict_collN)r5   r6   r7   r   r   r*   r*   r*   r.   r     s    r   c                   @   r&   )TestYamlc                 C   s6   G dd dt }t|dtdd|}|dksJ d S )Nc                   @   s   e Zd ZeZeZdS )zTestYaml.test_deser.<locals>.CN)r5   r6   r7   r   r<   r   r>   r*   r*   r*   r.   rN     s    rN   burakr   r<   r>   s   C:
    a: burak
    b: '30'
)r   r   Dr3   rN   rW   r*   r*   r.   
test_deser  s   zTestYaml.test_deserNr5   r6   r7   r   r*   r*   r*   r.   r     r8   r   c                   @   r&   )TestJsonc                 C   sn   G dd dt }t|dtdd|}|dksJ t|dtdd|td}t|dtd	ks5J d S )
Nc                   @   s   e Zd ZdefdefgZdS )zTestJson.test_deser.<locals>.Cr<   r>   N)r5   r6   r7   r   r   r   r*   r*   r*   r.   rN     s    rN   r   r   r   s   ["burak", "30"]r   utf8z{"a": "burak", "b": "30"})r   r   r   r   jsonloadsdecoder   r*   r*   r.   r     s   zTestJson.test_deserNr   r*   r*   r*   r.   r     r8   r   c                   @   r&   )TestFifoc           	      C   s   dd l }g d}g d}dddd}||}||}||}| }|| || ||d d  tt||ksBJ tt||ksLJ ztt| W td	 ty`   Y nw ||dd   tt||kstJ d S )
Nr   )r;   r?   rE      )rO            	   
      )   a   b   cr   r   )msgpackpackbUnpackerfeednextiterStopIterationr   )	r3   r  v1v2v3s1s2s3unpackerr*   r*   r.   test_msgpack_fifo  s*   




zTestFifo.test_msgpack_fifoN)r5   r6   r7   r  r*   r*   r*   r.   r     r8   r   c                   @   r&   )	TestTlistc                 C   s   t g t t ddgt}|d |dg7 }dg|g }|dg }d|d< dg|dd < z*t g dt |d	 |d	g7 }d	g| }|d	g }d	|d< d	|dd < W td
 ty`   Y d S w )Nr;   r?   rE   r   rO   r   r   )r;   r?   r<   r<   z	Must fail)r!   intappendr   r   )r3   r<   _r*   r*   r.   
test_tlist  s(   







zTestTlist.test_tlistN)r5   r6   r7   r  r*   r*   r*   r.   r    r8   r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestMemoizationc                    sR   dg t  fdd}|d |d  d dksJ |d  d dks'J d S )Nr   c                    s    d  d7  < t |   d S Nr   r;   rS   argcounterr*   r.   r     s   z'TestMemoization.test_memoize.<locals>.fr;   r?   )r   r3   r   r*   r  r.   test_memoize  s   zTestMemoization.test_memoizec                    sj   dg t  fdd}|d  |d   d dksJ |d  d dks'J |d  d dks3J d S )Nr   c                        d  d7  < t |   | S r  r  r  r  r*   r.   r   %     
z3TestMemoization.test_memoize_ignore_none.<locals>.fr?   r;   rE   )r   r   r*   r  r.   test_memoize_ignore_none#  s   z(TestMemoization.test_memoize_ignore_nonec                    sn   dg t d fdd}|d |d  d dksJ |d  d dks)J |d  d dks5J d S )Nr   )r;   c                    r"  r  r  r  r  r*   r.   r   6  r#  z5TestMemoization.test_memoize_ignore_values.<locals>.fr;   r?   rE   )r   r   r*   r  r.   test_memoize_ignore_values4  s   z*TestMemoization.test_memoize_ignore_valuesc                    sn   dg t  fdd}i }|| ||  d dksJ |i   d dks)J |i   d dks5J d S )Nr   c                    r"  r  r  r  r  r*   r.   r   G  r#  z*TestMemoization.test_memoize_id.<locals>.fr;   r?   rE   )r   )r3   r   rC   r*   r  r.   test_memoize_idE  s   zTestMemoization.test_memoize_idN)r5   r6   r7   r!  r$  r%  r&  r*   r*   r*   r.   r    s
    r  __main__)I
__future__r   r   rj   unittestrk   r(   r   r   r   r   lxmlr   spyne.constr   spyne.decoratorr   spyne.applicationr	   r   r
   r   r   r   r   r   r   r   r   spyne.servicer   
spyne.utilr   r   r   r   r   r   r   spyne.util.protocolr   spyne.util.dictdocr   r   r   r   spyne.util.tdictr    spyne.util.tlistr!   spyne.util.xmlr"   r#   r$   r%   TestCaser'   r:   rJ   rr   r   r   r   r   r   r   r   r   r   r  r  r5   mainr*   r*   r*   r.   <module>   sf   T (b&

D