o
    iF-                     @   sf  d dl mZ d dlZd dlmZ d dlmZ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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)m*Z*m+Z+ d dl,m-Z- dd Z.dZ/G dd deZ0G dd de)Z1G dd de*Z2G dd dej3Z4e5dkre6  dS dS )     )unicode_literalsN)etree)LXMLOutputChecker	PARSE_XML)FaultUnicode	ByteArray)Application)xml)NS_SOAP11_ENV)srpcrpc)Wsdl11)ComplexModel)IntegerString)_join_attachment)Soap12)XmlDocument)WsgiApplication)Service)TestService
TestSingle
TestReturnMultipleReturnService)BytesIOc                 C   s   t | | d S N)print)codeheaders r    _/var/www/html/LicenciasMIG/venv/lib/python3.10/site-packages/spyne/test/protocol/test_soap12.pystart_response   s   r"   s<  
--uuid:2e53e161-b47f-444a-b594-eb6b72e76997
Content-Type: application/xop+xml; charset=UTF-8;
  type="application/soap+xml"; action="sendDocument";
Content-Transfer-Encoding: binary
Content-ID: <root.message@cxf.apache.org>

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Body>
    <ns3:documentRequest xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:ns3="http://gib.gov.tr/vedop3/eFatura">
      <fileName>EA055406-5881-4F02-A3DC-9A5A7510D018.dat</fileName>
      <binaryData xmime:contentType="application/octet-stream">
        <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:04dfbca1-54b8-4631-a556-4addea6716ed-223384@cxf.apache.org"/>
      </binaryData>
      <hash>26981FCD51C95FA47780400B7A45132F</hash>
    </ns3:documentRequest>
  </soap:Body>
</soap:Envelope>

--uuid:2e53e161-b47f-444a-b594-eb6b72e76997
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <04dfbca1-54b8-4631-a556-4addea6716ed-223384@cxf.apache.org>

sample data
--uuid:2e53e161-b47f-444a-b594-eb6b72e76997--
c                   @   s   e Zd ZeZeZeZdS )DownloadPartFileResultN)__name__
__module____qualname__r   	ErrorCoder   ErrorMessageDatar    r    r    r!   r#   >   s    r#   c                   @      e Zd Zdd ZdS )TestSingleSoap12c                 C   sZ   t tgdt t d| _d| j_t | _t| jj}|d |	 | _
t| j
| _d S )Ntnsin_protocolout_protocolz
null.spyneURL)r	   r   r   app	transportsrvr   	interfacebuild_interface_documentget_interface_documentwsdl_strr   
fromstringwsdl_doc)selfwsdlr    r    r!   setUpE   s   

zTestSingleSoap12.setUpNr$   r%   r&   r<   r    r    r    r!   r+   D       r+   c                   @   r*   )TestMultipleSoap12c                 C   s>   t tgdt t d| _d| j_t| jj| _| jd d S )Nr,   r-   noner0   )	r	   r   r   r1   r2   r   r4   r;   r5   )r:   r    r    r!   r<   Q   s   zTestMultipleSoap12.setUpNr=   r    r    r    r!   r?   P   r>   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 )
TestSoap12c                 C   s8   t d}t }|d t|d d }|jdksJ d S )Nsw  
        <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
          <soap:Body>
            <soap:Fault>
                <soap:Code>
                    <soap:Value>env:Sender</soap:Value>
                    <soap:Subcode>
                        <soap:Value>st:SomeDomainProblem</soap:Value>
                    </soap:Subcode>
                </soap:Code>
                <soap:Reason>
                    <soap:Text xml:lang="en-US">
                        Some_Policy
                    </soap:Text>
                </soap:Reason>
            </soap:Fault>
          </soap:Body>
        </soap:Envelope>r   zenv:Sender.st:SomeDomainProblem)r   r8   r   from_elementr   	faultcode)r:   elementsoretr    r    r!   test_soap12Z   s   
zTestSoap12.test_soap12c                 C   s   G dd dt }t|gdt t d}d}t|}td|ddd	d
t|dtd}tj	|dd}t
| d}t ||tsJtd||f d S )Nc                   @   s   e Zd Ze dd ZdS )z7TestSoap12.test_fault_generation.<locals>.SoapExceptionc                   S   s   t dddddid)NzClient.Plausible.issuezA plausible faultzhttp://faultactor.example.comsomez
extra info)detail)r   r    r    r    r!   soap_exceptiont   s   zFTestSoap12.test_fault_generation.<locals>.SoapException.soap_exceptionN)r$   r%   r&   r   rJ   r    r    r    r!   SoapExceptions   s    rK   r,   r-   s  
        <soap12env:Envelope
                xmlns:soap12env="http://www.w3.org/2003/05/soap-envelope"
                xmlns:tns="tns">
            <soap12env:Body>
                <tns:soap_exception/>
            </soap12env:Body>
        </soap12env:Envelope>
             /callPOSTztext/xml; charset=utf8QUERY_STRING	PATH_INFOREQUEST_METHODCONTENT_TYPEz
wsgi.inputhttp://nullTpretty_prints$  
            <soap12env:Envelope xmlns:soap12env="http://www.w3.org/2003/05/soap-envelope">
              <soap12env:Body>
                <soap12env:Fault>
                  <soap12env:Code>
                    <soap12env:Value>soap12env:Sender</soap12env:Value>
                    <soap12env:Subcode>
                      <soap12env:Value>Plausible</soap12env:Value>
                      <soap12env:Subcode>
                        <soap12env:Value>issue</soap12env:Value>
                      </soap12env:Subcode>
                    </soap12env:Subcode>
                  </soap12env:Code>
                  <soap12env:Reason>
                      <soap12env:Text xml:lang="en">A plausible fault</soap12env:Text>
                  </soap12env:Reason>
                  <soap12env:Role>http://faultactor.example.com</soap12env:Role>
                  <soap12env:Detail>
                    <some>extra info</some>
                  </soap12env:Detail>
                </soap12env:Fault>
              </soap12env:Body>
            </soap12env:Envelope>zGot: %s but expected: %s)r   r	   r   r   r   r8   joinr   r"   tostringr   r   check_outputr   	Exception)r:   rK   r1   reqserverresponseresponse_strexpectedr    r    r!   test_fault_generationr   s&   

z TestSoap12.test_fault_generationc                 C   s   d}t  j|d\}}| |dt j  | |d d | |d d d}| t t  j|d\}}W d    d S 1 s@w   Y  d S )	NzServer.Plausible.error)faultstringz%s:Receiverr   	Plausible   errorz UnknownFaultCode.Plausible.error)r   gen_fault_codesassertEqualsoap_envassertRaises	TypeError)r:   fault_stringvaluefaultstringsr    r    r!   test_gen_fault_codes   s   "zTestSoap12.test_gen_fault_codesc                    s   d d}G  fdddt }t|g|t t d}t|}td|ddd	d
tt	dddt
d}tj|dd}t| t|d}t|jd|d gksTJ d S )N(EA055406-5881-4F02-A3DC-9A5A7510D018.dat http://gib.gov.tr/vedop3/eFaturac                       s:   e Zd Zeeddeddedded fddZdS )	z)TestSoap12.test_mtom.<locals>.SomeServicefileNamesub_name
binaryDatahash_returnsc                    s   | ksJ |dksJ |S )N)   sample datar    ctx	file_name	file_data	data_hash	FILE_NAMEr    r!   documentRequest   s   z9TestSoap12.test_mtom.<locals>.SomeService.documentRequestNr$   r%   r&   r   r   r   r   r    r~   r    r!   SomeService   s
    
r   r,   r.   r/   rL   rM   rN   rO   Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:2e53e161-b47f-444a-b594-eb6b72e76997"; start="<root.message@cxf.apache.org>"; start-info="application/soap+xml"; action="sendDocument"   
   
rP   rU   TrV   r,   #.//tns:documentRequestResult/text()
namespacesr   r	   r   r   r   r8   rX   r   MTOM_REQUESTreplacer"   rY   r   dictxpathr:   TNSr   r1   r]   r^   r_   nsdictr    r~   r!   	test_mtom   s0   	


zTestSoap12.test_mtomc                    s   d d}dd G  fdddt }t|g|t t d}t|dd}td	|d
dddtt	dd	ddt
d}tj|dd}t| t|d}t|jd|d gks_J d S )Nro   rp   s   sample data i   c                       s<   e Zd Zeeddeddedded fddZdS )	z>TestSoap12.test_mtom_join_envelope_chunks.<locals>.SomeServicerq   rr   rt   ru   rv   c                    s   | ksJ |fksJ |S r   r    ry   r   PAYLOADr    r!   r      s   zNTestSoap12.test_mtom_join_envelope_chunks.<locals>.SomeService.documentRequestNr   r    r   r    r!   r      s
    
r   r   )block_lengthrL   rM   rN   rO   r   r   r   rx   rP   rU   TrV   r   r   r   r   r   r    r   r!   test_mtom_join_envelope_chunks   s8   	

z)TestSoap12.test_mtom_join_envelope_chunksc                 C   sv   d}d}d| }t t|||\}}t|}|td}| d }| d }	t 	d t
|	}
| ||
j d S )Nz'http://tempuri.org/1/634133419330914808zANJNSLJNDYBC SFDJNIREMX:CMKSAJNa{  
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <DownloadPartFileResponse xmlns="http://tempuri.org/">
      <DownloadPartFileResult
            xmlns:a="http://schemas.datacontract.org/2004/07/KlanApi.Common"
            xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <a:ErrorCode>0</a:ErrorCode>
        <a:ErrorMessage i:nil="true"/>
        <a:Data>
          <xop:Include href="cid:%s"
                             xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
        </a:Data>
      </DownloadPartFileResult>
    </DownloadPartFileResponse>
  </s:Body>
</s:Envelope>
        Bodyr   )r   r   r   r8   findns
SOAP11_ENVgetchildrenr   rB   r#   rg   r)   )r:   href_idpayloadenvelope	joinedmsgnumreplacessoaptreebodyr^   resultrr    r    r!   test_bytes_join_attachment  s   
z%TestSoap12.test_bytes_join_attachmentN)	r$   r%   r&   rG   ra   rn   r   r   r   r    r    r    r!   rA   X   s    9%*rA   __main__)7
__future__r   unittestlxmlr   lxml.doctestcomparer   r   spyner   r   r   spyne.applicationr	   spyne.constr
   r   spyne.const.xmlr   spyne.decoratorr   r   spyne.interfacer   spyne.model.complexr   spyne.model.primitiver   r   spyne.protocol.soap.mimer   spyne.protocol.soap.soap12r   spyne.protocol.xmlr   spyne.server.wsgir   spyne.servicer   spyne.test.protocol.test_soap11r   r   r   r   spyne.util.sixr   r"   r   r#   r+   r?   TestCaserA   r$   mainr    r    r    r!   <module>   s:    Q