Ë
    M/ÅeK
  ã                   ó2  — d Z ddlmZ ddlmZ ddlmZ ddlmZ 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Ze	j.                  j1                   ej2                  d«      «      Z G d„ de«      Z G d„ d«      Zdeeef   deddfd„Zy)z'Base test class for DNS authenticators.é    )ÚAny)ÚMapping)ÚProtocol)ÚmockN)Ú
challenges)Úachallenges)Ú
filesystem)ÚDNSAuthenticator)Ú	acme_util)Úutilzexample.comzrsa512_key.pemc                   óL   — e Zd ZU dZeed<   deddfd„Zdeddfd„Zdeddfd„Z	y)	Ú_AuthenticatorCallableTestCasezMProtocol describing a TestCase able to call a real DNSAuthenticator instance.ÚauthÚunused_argsÚreturnNc                  ó   — y)zj
        See
        https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertTrue
        N© ©Úselfr   s     úA/usr/lib/python3/dist-packages/certbot/plugins/dns_test_common.pyÚ
assertTruez)_AuthenticatorCallableTestCase.assertTrue   ó   � ó    c                  ó   — y)zk
        See
        https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertEqual
        Nr   r   s     r   ÚassertEqualz*_AuthenticatorCallableTestCase.assertEqual   r   r   c                  ó   — y)zl
        See
        https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaises
        Nr   r   s     r   ÚassertRaisesz+_AuthenticatorCallableTestCase.assertRaises%   r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   Ú__annotations__r   r   r   r   r   r   r   r   r      sD   … ÙWØ
Óð sð ¨tó ð¨ð °ó ð¨ð °ô r   r   c                   ó~   — e Zd ZdZ ej
                  ej                  ee	¬«      Z
deddfd„Zdeddfd„Zdeddfd„Zy)	ÚBaseAuthenticatorTestzÜ
    A base test class to reduce duplication between test code for DNS Authenticator Plugins.

    Assumes:
     * That subclasses also subclass unittest.TestCase
     * That the authenticator is stored as self.auth
    )ÚchallbÚdomainÚaccount_keyr   r   Nc                 ór   — | j                  t        | j                  j                  «       t        «      «       y )N)r   Ú
isinstancer   Ú	more_infoÚstr©r   s    r   Útest_more_infoz$BaseAuthenticatorTest.test_more_info8   s"   € Ø�‰œ
 4§9¡9×#6Ñ#6Ó#8¼#Ó>Õ?r   c                 óx   — | j                  | j                  j                  d«      t        j                  g«       y )Nzexample.org)r   r   Úget_chall_prefr   ÚDNS01r,   s    r   Útest_get_chall_prefz)BaseAuthenticatorTest.test_get_chall_pref;   s*   € Ø×Ñ˜Ÿ™×1Ñ1°-Ó@Ä:×CSÑCSÐBTÕUr   c                 óÌ   — t        j                  «       }| j                  j                  |«       |j	                  dt
        t         j                  t         j                  ¬«       y )Nzpropagation-seconds)ÚtypeÚdefaultÚhelp)r   Ú	MagicMockr   Úadd_parser_argumentsÚassert_any_callÚintÚANY)r   Úms     r   Útest_parser_argumentsz+BaseAuthenticatorTest.test_parser_arguments>   sC   € Ü�N‰NÓˆØ�	‰	×&Ñ& qÔ)à	×ÑÐ/´cÄ4Ç8Á8ÔRV×RZÑRZÐÕ[r   )r   r   r    r!   r   Ú"KeyAuthorizationAnnotatedChallenger   r0   ÚDOMAINÚKEYÚachallr   r-   r1   r<   r   r   r   r$   r$   ,   sl   „ ñð <ˆ[×;Ñ;Ø�‰ v¸3ô@€Fð@Ð;ð @Àó @ðVÐ"@ð VÀTó Vð\Ð$Bð \Àtô \r   r$   ÚvaluesÚpathr   c                 óÜ   — t        j                  «       }| D ]
  }| |   ||<   Œ t        |d«      5 }|j                  |¬«       ddd«       t	        j
                  |d«       y# 1 sw Y   Œ xY w)z”Write the specified values to a config file.

    :param dict values: A map of values to write.
    :param str path: Where to write the values.
    Úwb)ÚoutfileNi€  )Ú	configobjÚ	ConfigObjÚopenÚwriter	   Úchmod)rA   rB   ÚconfigÚkeyÚfs        r   rI   rI   E   sq   € ô × Ñ Ó"€Fàò "ˆØ˜S‘kˆˆsŠð"ô 
ˆd�DÓ	ð  ˜QØ�‰˜QˆÔ÷ ô ×Ñ�T˜5Õ!÷ ð  ús   °A"Á"A+)r!   Útypingr   r   r   Úunittestr   rF   ÚjosepyÚjoseÚacmer   Úcertbotr   Úcertbot.compatr	   Úcertbot.plugins.dns_commonr
   Úcertbot.testsr   r   Ú	test_utilr>   ÚJWKRSAÚloadÚload_vectorr?   r   r$   r+   rI   r   r   r   ú<module>r[      s�   ðÙ -Ý Ý Ý Ý ã Û å Ý Ý %Ý 7Ý #Ý +à	€Ø
‡k�k×ÑÐ,�y×,Ñ,Ð-=Ó>Ó?€ô Xô ÷.\ñ \ð2"�'˜#˜s˜(Ñ#ð "¨3ð "°4ô "r   