o
    j                     @   s:  d dl Z d dlmZ e je jd 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 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 Z#e eee$dde#dZ%G dd dej&Z'e(dkre)  dS dS )    N)six)level)MethodContext)Application)rpc)srpc)Service)Array)String)ComplexModel)Unicode)MessagePackDocument)MessagePackRpc)BytesIO)
ServerBase)WsgiApplication)TDictDocumentTest)start_responsec                 C   sP   t | tjr| dS t | ts| S i }|  D ]\}}t|||d< q|S )Nutf8)
isinstancer   	text_typeencodedictitemsconvert_dict)drkv r   `/var/www/html/LicenciasMiG/venv/lib/python3.10/site-packages/spyne/test/protocol/test_msgpack.pyr   1   s   

r   F)use_list)loads_kwargsr   c                   @   s   e Zd Zdd Zdd ZdS )TestMessagePackRpcc                 C   sb   G dd dt }t|gdt t d}t|}t|tj}dg|_||\}|jj	dks/J d S )Nc                   @   s   e Zd Ze dd ZdS )z:TestMessagePackRpc.test_invalid_input.<locals>.SomeServicec                   S   s   d S )Nr   r   r   r   r    yayH   s   z>TestMessagePackRpc.test_invalid_input.<locals>.SomeService.yayN)__name__
__module____qualname__r   r$   r   r   r   r    SomeServiceG   s    r(   tns)in_protocolout_protocol   zClient.MessagePackDecodeError)
r   r   r   r   r   SERVER	in_stringgenerate_contextsin_error	faultcode)selfr(   appserverinitial_ctxctxr   r   r    test_invalid_inputF   s   z%TestMessagePackRpc.test_invalid_inputc                    s  dddG dd dt  G  fdddt}t|gt tdd	d
dd}t|}tdddddggg}t|}|tt	|ddtt	|ddddddd|dt
}d|}tt| t|}tt| ddd ddddd d!idd"d#d!igiig}t| ||ksJ d S )$Nbr   )acc                   @   s   e Zd ZeZeZdS )z1TestMessagePackRpc.test_rpc.<locals>.KeyValuePairN)r%   r&   r'   r   keyvaluer   r   r   r    KeyValuePairZ   s    r=   c                       s6   e Zd Zeedde ddid fddZdS )	z0TestMessagePackRpc.test_rpc.<locals>.SomeService	unbounded)
max_occurskeysr;   )_returns_in_variable_namesc                 3   s"    |D ]} || dV  qd S )N)r;   r<   r   )r6   r@   r   r=   datar   r    
get_values_   s   z;TestMessagePackRpc.test_rpc.<locals>.SomeService.get_valuesN)r%   r&   r'   r   r
   r	   rE   r   rC   r   r    r(   ^   s    
r(   F)ignore_wrappersr   r)   )r*   r+   namer)   r   rE   r9   r:   zapplication/x-msgpackclose/ 	localhost7000POSThttp)CONTENT_LENGTHCONTENT_TYPEHTTP_CONNECTIONHTTP_CONTENT_LENGTHHTTP_CONTENT_TYPE	PATH_INFOQUERY_STRINGSERVER_NAMESERVER_PORTREQUEST_METHODzwsgi.url_schemez
wsgi.input       s   get_valuesResponses   get_valuesResults   KeyValuePair   a   b)s   keys   value   c   d)r   r   r   r   r   msgpackpackbr   strlenr   joinprintreprunpackb)r2   r(   applicationr4   input_stringinput_streamretsr   rC   r    test_rpcW   sN   




zTestMessagePackRpc.test_rpcN)r%   r&   r'   r7   rl   r   r   r   r    r#   E   s    r#   __main__)*logging
spyne.utilr   basicConfigDEBUGunittestr_   spyner   spyne.applicationr   spyne.decoratorr   r   spyne.servicer   spyne.model.complexr	   spyne.model.primitiver
   r   r   spyne.protocol.msgpackr   r   spyne.util.sixr   spyne.serverr   spyne.server.wsgir   !spyne.test.protocol._test_dictdocr   spyne.test.test_servicer   r   r   TestMessagePackDocumentTestCaser#   r%   mainr   r   r   r    <module>   s:   
L