
    Vh                         d 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mZmZ ddlmZmZmZmZmZmZ ddlmZ ddlmZ  G d	 d
e      Z G d de      Zy)z$
Tests for L{twisted.names.common}.
    )verifyClass)	IResolver)ResolverBase)EFORMATENAMEENOTIMPEREFUSEDESERVERQuery)DNSFormatErrorDNSNameErrorDNSNotImplementedErrorDNSQueryRefusedErrorDNSServerErrorDNSUnknownError)Failure)SynchronousTestCasec                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
ExceptionForCodeTestsz5
    Tests for L{ResolverBase.exceptionForCode}.
    c                 6    t               j                  | _        y N)r   exceptionForCodeselfs    N/home/dcms/DCMS/lib/python3.12/site-packages/twisted/names/test/test_common.pysetUpzExceptionForCodeTests.setUp   s     , ? ?    c                 V    | j                  | j                  t              t               y)zd
        L{ResolverBase.exceptionForCode} converts L{EFORMAT} to
        L{DNSFormatError}.
        N)assertIsr   r   r   r   s    r   test_eformatz"ExceptionForCodeTests.test_eformat"       
 	d++G4nEr   c                 V    | j                  | j                  t              t               y)zd
        L{ResolverBase.exceptionForCode} converts L{ESERVER} to
        L{DNSServerError}.
        N)r   r   r
   r   r   s    r   test_eserverz"ExceptionForCodeTests.test_eserver)   r!   r   c                 V    | j                  | j                  t              t               y)zX
        L{ResolverBase.exceptionForCode} converts L{ENAME} to L{DNSNameError}.
        N)r   r   r   r   r   s    r   
test_enamez ExceptionForCodeTests.test_ename0   s     	d++E2LAr   c                 V    | j                  | j                  t              t               y)zl
        L{ResolverBase.exceptionForCode} converts L{ENOTIMP} to
        L{DNSNotImplementedError}.
        N)r   r   r   r   r   s    r   test_enotimpz"ExceptionForCodeTests.test_enotimp6   s    
 	d++G46LMr   c                 V    | j                  | j                  t              t               y)zk
        L{ResolverBase.exceptionForCode} converts L{EREFUSED} to
        L{DNSQueryRefusedError}.
        N)r   r   r	   r   r   s    r   test_erefusedz#ExceptionForCodeTests.test_erefused=   s    
 	d++H57KLr   c                 ^    | j                  | j                  t                     t               y)zr
        L{ResolverBase.exceptionForCode} converts any other response code to
        L{DNSUnknownError}.
        N)r   r   objectr   r   s    r   
test_otherz ExceptionForCodeTests.test_otherD   s    
 	d++FH5Gr   N)__name__
__module____qualname____doc__r   r    r#   r%   r'   r)   r,    r   r   r   r      s1    @FFBNMHr   r   c                   (    e Zd ZdZd Zd Zd Zd Zy)
QueryTestsz*
    Tests for L{ResolverBase.query}.
    c                 ,    t        t        t               y)zF
        L{ResolverBase} provides the L{IResolver} interface.
        N)r   r   r   r   s    r   "test_resolverBaseProvidesIResolverz-QueryTests.test_resolverBaseProvidesIResolverQ   s     	I|,r   c                     g t               }dfdi|_        t        dd      }|j                  |d       | j	                  dg       y)z
        L{ResolverBase.query} looks up a method to invoke using the type of the
        query passed to it and the C{typeToMethod} mapping on itself.
        90  c                 *    j                  | |f      S r   )append)querytimeoutresultss     r   <lambda>z6QueryTests.test_typeToMethodDispatch.<locals>.<lambda>_   s    '..%9I*J r      example.comnametype{   )r>   rB   N)r   typeToMethodr   r:   assertEqual)r   resolverr:   r<   s      @r   test_typeToMethodDispatchz$QueryTests.test_typeToMethodDispatchW   sQ    
 >J!
 >6uc"/0':r   c                     t               t               }dfdi|_        t        dd      }|j	                  |d      }g }|j                  |j                         | j                  |d          y)z
        L{ResolverBase.query} returns a L{Deferred} which fires with the result
        of the method found in the C{typeToMethod} mapping for the type of the
        query passed to it.
        i1  c                     S r   r1   )r:   r;   expecteds     r   r=   z4QueryTests.test_typeToMethodResult.<locals>.<lambda>m   s    x r   r>   r?   rB   r   N)r+   r   rC   r   r:   addBothr9   rD   )r   rE   r:   queryDeferredresultrI   s        @r   test_typeToMethodResultz"QueryTests.test_typeToMethodResulte   sh     8>!&(G H>6 uc2fmm,6!9-r   c                     t               }i |_        t        dd      }|j                  |d      }g }|j	                  |j
                         | j                  |d   t               |d   j                  t               y)z
        L{ResolverBase.query} returns a L{Deferred} which fails with
        L{NotImplementedError} when called with a query of a type not present in
        its C{typeToMethod} dictionary.
        r>   r7   r?   rB   r   N)
r   rC   r   r:   rJ   r9   assertIsInstancer   trapNotImplementedError)r   rE   r:   rK   rL   s        r   test_unknownQueryTypez QueryTests.test_unknownQueryTypet   sk      > ">6 uc2fmm,fQi1q	*+r   N)r-   r.   r/   r0   r5   rF   rM   rR   r1   r   r   r3   r3   L   s    -;.,r   r3   N)r0   zope.interface.verifyr   twisted.internet.interfacesr   twisted.names.commonr   twisted.names.dnsr   r   r   r	   r
   r   twisted.names.errorr   r   r   r   r   r   twisted.python.failurer   twisted.trial.unittestr   r   r3   r1   r   r   <module>rZ      sJ   
 . 1 - O O  + 6/H/ /Hd5,$ 5,r   