
    Ϫf&                         d 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
 	 ddlZddlmZ ddlmZ  G d	 d
e      Z ee d       G d de             Zy# e$ r dZeZY /w xY w)zTest SOAP support.    )skipIf)deferreactor)TestCase)errorserverN)soap)SOAPPublisherc                   X    e Zd Zd ZddZde_        d Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)Testc                     ||z   S N selfabs      </usr/lib/python3/dist-packages/twisted/web/test/test_soap.pysoap_addzTest.soap_add       1u    c                     ||z   S r   r   r   s      r   soap_kwargszTest.soap_kwargs   r   r   Tc                     ||d gS r   r   )r   stringnums      r   soap_triplezTest.soap_triple"   s    T""r   c                 0    t        j                  ddi      S )Nr   c)SOAPpy
structTyper   s    r   soap_structzTest.soap_struct%   s      #s,,r   c                 ,    t        j                  |      S r   )r   succeed)r   xs     r   
soap_deferzTest.soap_defer(   s    }}Qr   c                 <    t        j                  t                     S r   r   fail
ValueErrorr"   s    r   soap_deferFailzTest.soap_deferFail+       zz*,''r   c                     t         r   )RuntimeErrorr"   s    r   	soap_failzTest.soap_fail.   s    r   c                 <    t        j                  t                     S r   r)   r"   s    r   soap_deferFaultzTest.soap_deferFault1   r-   r   c                     dddg gddS )Nr   r      foor   Dr   r"   s    r   soap_complexzTest.soap_complex4   s    3B'e44r   c                     ||   S r   r   )r   mapkeys      r   	soap_dictzTest.soap_dict7   s    3xr   N)      )__name__
__module____qualname__r   r   useKeywordsr   r#   r'   r,   r0   r2   r8   r<   r   r   r   r   r      s>     #K#- ((5r   r   zSOAPpy not installedc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)	SOAPTestsc                     t               | _        t        j                  dt	        j
                  | j                        d      | _        | j                  j                         j                  | _        y )Nr   z	127.0.0.1)	interface)	r   	publisherr   	listenTCPr   SitepgetHostportr"   s    r   setUpzSOAPTests.setUp=   sK    ""v{{4>>*k
 FFNN$))	r   c                 6    | j                   j                         S r   )rJ   stopListeningr"   s    r   tearDownzSOAPTests.tearDownD   s    vv##%%r   c                 F    t        j                  d| j                  z        S )Nzhttp://127.0.0.1:%d/)r	   ProxyrL   r"   s    r   proxyzSOAPTests.proxyG   s    zz0499<==r   c                    dddddidfdfddg dfg}g }|D ]T  \  }}} | j                         j                  |g| }|j                  | j                  |       |j	                  |       V | j                         j                  d	      }|j                  d
        |j                  | j                  dddg gdd       |j	                  |       t        j                  |d      S )N)add)r>         )r   )r   r   dictr   r=   triple)r   r=   )r   r=   Ncomplexc                 "    | j                         S r   )_asdict)results    r   <lambda>z'SOAPTests.testResults.<locals>.<lambda>Z   s    V^^%5 r   r   r   r4   r5   r6   T)fireOnOneErrback)rS   
callRemoteaddCallbackassertEqualappendr   DeferredList)r   inputOutputdlmethargsoutpds          r   testResultszSOAPTests.testResultsJ   s    "sAh_a(x0	
  + 	D$'

''4t4AMM$**D1IIaL	 JJL##I.	56	d&&sCR.@u(MN
		! !!"t<<r   c                       j                         j                  d      } j                  |t        j                          fd}|j                  |       |S )zD
        Check that a non existing method return error 500.
        doesntexistc                 P    j                  t        | j                        d       y )Ni  )rb   intstatus)errr   s    r   cbz(SOAPTests.testMethodNotFound.<locals>.cbi   s    S_c2r   )rS   r`   assertFailurer   Errorra   )r   rj   rr   s   `  r   testMethodNotFoundzSOAPTests.testMethodNotFoundb   sG     JJL##M21ekk*	3 	
br   c                     | j                  | j                  j                  d             | j                  | j                  j                  d             | j                  | j                  j                  d             y)zc
        Test lookupFunction method on publisher, to see available remote
        methods.
        rU   r*   foobarN)
assertTruerG   lookupFunctionassertFalser"   s    r   testLookupFunctionzSOAPTests.testLookupFunctiono   sW    
 	55e<=55f=>66x@Ar   N)	r?   r@   rA   rM   rP   rS   rk   ru   r{   r   r   r   rD   rD   ;   s!    *&>=0Br   rD   )__doc__unittestr   twisted.internetr   r   twisted.trial.unittestr   twisted.webr   r   r    r	   twisted.web.soapr
   ImportErrorobjectr   rD   r   r   r   <module>r      sw      + + % .= D F
*+:B :B ,:BQ  FMs   A 	A A 