o
    j                  	   @   sP  d dl Z zd dlZW n ey   d dlZY nw 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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 G dd deeeeeddZeeeZG dd de jZG dd de jZG dd de jZ e!dkre "  dS dS )    N)MethodContext)Application)rpcsrpc)Service)IntegerUnicodeComplexModel)JsonP)JsonDocument)JsonEncoder)_SpyneJsonRpc1)
ServerBase)
NullServer)TDictDocumentTest)TDryc                       s(   e Zd Z fddZ fddZ  ZS )TestDictDocumentc                    s   t t| |dS Nutf8)superr   dumpsencodeselfo	__class__ ]/var/www/html/LicenciasMiG/venv/lib/python3.10/site-packages/spyne/test/protocol/test_json.pyr   -      zTestDictDocument.dumpsc                    s   t t| |dS r   )r   r   loadsdecoder   r   r   r   r    0   r   zTestDictDocument.loads)__name__
__module____qualname__r   r    __classcell__r   r   r   r   r   +   s    r   cls)dumps_kwargsc                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestSpyneJsonRpc1c                 C   sZ   G dd dt }t|gddddiidd}t| tt|j |jdddks+J d S )	Nc                   @   s    e Zd Zeeeddd ZdS )z0TestSpyneJsonRpc1.test_call.<locals>.SomeService_returnsc                 S   s   t |  | S N)print)ir   r   r   yay8   s   z4TestSpyneJsonRpc1.test_call.<locals>.SomeService.yayN)r"   r#   r$   r   r   r/   r   r   r   r   SomeService7   s    
r0      r/   r.      verbodyT)r   _dry_sjrpc1r-   list
out_stringout_documentr   r0   ctxr   r   r   	test_call6   s   zTestSpyneJsonRpc1.test_callc                    sp   G dd dt  G  fdddt}t|gddd iddid	d
}t| tt|j |jdddks6J d S )Nc                   @      e Zd ZeZdS )z;TestSpyneJsonRpc1.test_call_with_header.<locals>.SomeHeaderNr"   r#   r$   r   r.   r   r   r   r   
SomeHeaderE       r?   c                       s$   e Zd Z Zeeeddd ZdS )z<TestSpyneJsonRpc1.test_call_with_header.<locals>.SomeServicer*   c                 S   s   t | j | jjS r,   )r-   	in_headerr.   )r;   r.   r   r   r   r/   J   s   
z@TestSpyneJsonRpc1.test_call_with_header.<locals>.SomeService.yayN)r"   r#   r$   __in_header__r   r   r/   r   r?   r   r   r0   H   s    
r0   r1   r/   r.   r2   )r4   r5   headTr3   r	   r   r6   r-   r7   r8   r9   r:   r   rC   r   test_call_with_headerD   s   z'TestSpyneJsonRpc1.test_call_with_headerc                    st   G dd dt  G  fdddt}t|gddddgid	d
}t| tt|j |jdddddks8J d S )Nc                   @   r=   )z0TestSpyneJsonRpc1.test_error.<locals>.SomeHeaderNr>   r   r   r   r   r?   W   r@   r?   c                       s&   e Zd Z Zeeeeddd ZdS )z1TestSpyneJsonRpc1.test_error.<locals>.SomeServicer*   c                 S   s   || S r,   r   )r;   dividenddivisorr   r   r   div\   s   z5TestSpyneJsonRpc1.test_error.<locals>.SomeService.divN)r"   r#   r$   rB   r   r   rI   r   rC   r   r   r0   Z   s    r0   r1   rI      r   r3   TServerzInternal Error)	faultcodefaultstring)r4   faultrE   r:   r   rC   r   
test_errorV   s   zTestSpyneJsonRpc1.test_errorN)r"   r#   r$   r<   rF   rO   r   r   r   r   r)   5   s    r)   c                   @      e Zd Zdd Zdd ZdS )TestJsonDocumentc                 C   s   G dd dt }t|gdt t d}d|jjv sJ d|jjvs#J t|gdt tddd}|jjd dks:J d|jjvsBJ d S )Nc                   @   s   e Zd Ze dd ZdS )z5TestJsonDocument.test_out_kwargs.<locals>.SomeServicec                   S   s   d S r,   r   r   r   r   r   r/   l      z9TestJsonDocument.test_out_kwargs.<locals>.SomeService.yayNr"   r#   r$   r   r/   r   r   r   r   r0   k   s    r0   tnsin_protocolout_protocolr'   heyr&   )r   r   r   rW   kwargsrV   )r   r0   appr   r   r   test_out_kwargsj   s   z TestJsonDocument.test_out_kwargsc                 C   sf   G dd dt }t|gdt t d}t|}t|tj}dg|_|j|dd\}|jj	dks1J d S )	Nc                   @   s   e Zd ZdS )z8TestJsonDocument.test_invalid_input.<locals>.SomeServiceN)r"   r#   r$   r   r   r   r   r0      s    r0   rT   rU      {r   )in_string_charsetzClient.JsonDecodeError)
r   r   r   r   r   SERVER	in_stringgenerate_contextsin_errorrL   )r   r0   rZ   serverinitial_ctxr;   r   r   r   test_invalid_input~   s   z#TestJsonDocument.test_invalid_inputN)r"   r#   r$   r[   rd   r   r   r   r   rQ   i   s    rQ   c                   @   rP   )	TestJsonPc              
      s  d}G dd dt  d dddG  fdddt}t|gd	t t|d
}t|dd}|j }t|}t	d
| d
|d
|ddtddfksXJ |j }t|}t	d
| d
|d
|ddtdddddfksJ d S )Nsome_callbackc                   @   s   e Zd ZeZeZdS )z6TestJsonP.test_callback_name.<locals>.SomeComplexModelN)r"   r#   r$   r   r.   r   sr   r   r   r   SomeComplexModel   s    rh   *   foo)r.   rg   c                       s8   e Zd ZeedfddZe dfddZdS )z1TestJsonP.test_callback_name.<locals>.SomeServicer*   c                          S r,   r   r   )v1r   r   r/      rR   z5TestJsonP.test_callback_name.<locals>.SomeService.yayc                      rk   r,   r   r   )v2r   r   complex   rR   z9TestJsonP.test_callback_name.<locals>.SomeService.complexN)r"   r#   r$   r   r   r/   rn   r   rh   rl   rm   r   r   r0      s
    r0   rT   rU   Tostr    r      (s   );utf-8)r	   r   r   r   r
   r   servicer/   r7   r-   joinr   strrn   jsonr   )r   callback_namer0   rZ   rb   retr   ro   r   test_callback_name   s,   	

zTestJsonP.test_callback_namec                    s   ddl m}m  ddlm G fddd|G  fdddt}t|gdt td	d
d}t|dd}d	|j
 d}t| |dksKJ d S )Nr   )r	   Arrayr   c                       s   e Zd Zd fd fgZdS )zDTestJsonP.test_wrapped_array_in_wrapped_response.<locals>.PermissionapplicationfeatureN)r"   r#   r$   
_type_infor   r}   r   r   
Permission   s    r   c                       s&   e Zd Ze dfddZdS )zETestJsonP.test_wrapped_array_in_wrapped_response.<locals>.SomeServicer*   c                      s    ddd dddgS )NrZ   f1)r~   r   f2r   r   )r   r   r   r/      s   

zITestJsonP.test_wrapped_array_in_wrapped_response.<locals>.SomeService.yayNrS   r   )r|   r   r   r   r0      s    r0   rT   F)ignore_wrappersrU   Trp   rr   rt   z{"yayResponse": {"yayResult": [{"Permission": {"application": "app", "feature": "f1"}}, {"Permission": {"application": "app", "feature": "f2"}}]}})spyne.model.complexr	   r|   spyne.model.primitiver   r   r   r   r   rv   ru   r/   r!   r-   )r   r	   r0   rZ   rb   retstrr   )r|   r   r   r   &test_wrapped_array_in_wrapped_response   s   z0TestJsonP.test_wrapped_array_in_wrapped_responseN)r"   r#   r$   r{   r   r   r   r   r   re      s    &re   __main__)#unittest
simplejsonrx   ImportErrorspyner   r   r   r   r   spyne.modelr   r   r	   spyne.protocol.jsonr
   r   r   r   spyne.serverr   spyne.server.nullr   !spyne.test.protocol._test_dictdocr   r   dictr   r6   TestCaser)   rQ   re   r"   mainr   r   r   r   <module>   s:   
4%E