a }|g,@s2dZddlZddlZddlZddlmZddlZddlmZddlZddl m Z ddl m Z ddl m Z ddl mZdd l mZejd krddlmZnddlZGd d d ejZejd dddZejddddZed dddZGdddejZGdddejZedkr.eeejdde gdS)z*Tests for certbot._internal.plugins.disco.N)List)mock)errors) interfaces)null) standalone)webroot) c@seZdZddZdS)_EntryPointLoadFailcCs tddS)NzLoading failure) RuntimeErrorselfrN/usr/lib/python3.9/site-packages/certbot/_internal/tests/plugins/disco_test.pyloadsz_EntryPointLoadFail.loadN)__name__ __module__ __qualname__rrrrrr sr saz2certbot._internal.plugins.standalone:Authenticatorcertbot.pluginsnamevaluegroupwrz/certbot._internal.plugins.webroot:Authenticatorc@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd S)!PluginEntryPointTestz;Tests for certbot._internal.plugins.disco.PluginEntryPoint.cCsbtjdddd|_tjdddd|_tjdddd|_tjdd dd|_d d lm}|t|_ dS) Nep1zp1.ep1:Authenticatorrrzp2.pe2:Authenticatorep2zp2.foo.ep2:Authenticatorep3za.ep3:AuthenticatorrPluginEntryPoint) importlib_metadata EntryPointrep1primrrcertbot._internal.plugins.discor!EP_SA plugin_ep)rr!rrrsetUp/s, zPluginEntryPointTest.setUpc CsTddlm}|jd|jd|jd|jdtdi}|D]\}}|||ks4Jq4dS)Nrr rrrr) r%r!rr$rrr&itemsZentry_point_to_plugin_name)rr!names entry_pointrrrr,test_entry_point_to_plugin_name_not_prefixedFs zAPluginEntryPointTest.test_entry_point_to_plugin_name_not_prefixedcCsd|jjvsJdS)Nzserver locally)r' descriptionr rrrtest_descriptionTsz%PluginEntryPointTest.test_descriptioncCs$tjdd|j_d|jjks JdS)NZDesc)r-z Desc (sa))r MagicMockr' plugin_clsZdescription_with_namer rrrtest_description_with_nameWsz/PluginEntryPointTest.test_description_with_namecCs$tjdd|j_d|jjks JdS)Nz Long desc)long_descriptionrr/r'r0r2r rrrtest_long_description[s z*PluginEntryPointTest.test_long_descriptioncCs(tjddgd|j_d|jjks$JdS)NzLong desc not foundr-)r-specr3r rrr!test_long_description_nonexistent`s z6PluginEntryPointTest.test_long_description_nonexistentcCsD|jtjfsJ|jtjfr(J|jtjtjfr@JdSN)r'ifacesr Authenticator Installerr rrr test_ifaceses z PluginEntryPointTest.test_ifacescCs|jjdusJ|jjdus J|jjdus0J|jjdus@J|jjdusPJ|jjtus`Jd|jjkspJ|jj t j usJdS)NFr) r' initializedprepared misconfigured availableproblemr+r&rr0rr9r rrr test__init__ksz!PluginEntryPointTest.test__init__cCst}|jj|d}|jjdus&J|j|us4J|j|usFJ|j|usTJ|jd|ushJ|j|usvJ|jjdusJ|jjdusJ|jjdusJdS)NconfigT{F) rr/r'initr<rCr=r>r?)rrCpluginrrr test_initvszPluginEntryPointTest.test_initcCsJt}|jj|d|j|jjs,J|jjdusstr)rrCrrr test_prepares   z!PluginEntryPointTest.test_preparecCslt}tj|j_||j_t|jtjs0J|jj sr@r?rrFrrrtest_prepare_misconfigureds   z/PluginEntryPointTest.test_prepare_misconfiguredcCsdt}tj|j_||j_t|jtjs0J|jj dus@J|jj dusPJ|jj dus`JdSNTF) rr/rZNoInstallationErrorrHrKr'rLrMr=r>r?rNrrrtest_prepare_no_installations z1PluginEntryPointTest.test_prepare_no_installationcCs`t}tj|j_||j_t|jtjs0J|jj sr?rNrrr!test_prepare_generic_plugin_errors  z6PluginEntryPointTest.test_prepare_generic_plugin_errorcCs2t|j}d|vsJd|vs"Jd|vs.JdS)Nr9r:ZPlugin)rIr')routputrrrtest_strs   zPluginEntryPointTest.test_strcCsdt|jksJdS)NzPluginEntryPoint#sa)reprr'r rrr test_reprszPluginEntryPointTest.test_reprN)rrr__doc__r(r,r.r1r4r6r;rArGrJrOrQrSrUrWrrrrr,s      rc@seZdZdZeddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZddZd d!Zd"S)#PluginsRegistryTestz:Tests for certbot._internal.plugins.disco.PluginsRegistry.cCsddlm}||S)NrPluginsRegistry)r%r[)clspluginsr[rrr_create_new_registrys z(PluginsRegistryTest._create_new_registrycCsPt|_d|j_t|jj_|jj|ji|_||j|_ t j dddd|_ dS)Nrrzp1.ep1rr) rr/r'r TypeError__hash__rKr]r^regr"r#rr rrrr(s  zPluginsRegistryTest.setUpc Cs ddlm}tdr}tgt|jgg|j_tj t j d.}t j tj tjtjg|_|}Wdn1sp0YWdn1s0Y|djt j usJ|djtusJ|djtj usJ|djtusJ|djtjusJ|dj|jusJd|vsJdS) NrrZ2certbot._internal.plugins.disco.importlib_metadatarrrrzp1:ep1)r%r[rpatchr&EP_WRr entry_pointsrKobjectr"r#rr9rrr:find_allr0r+)rr[ mock_metaZ mock_loadr]rrr test_find_alls    Dz!PluginsRegistryTest.test_find_allc Csddlm}tdj}tgt|jgg|j_| t j }| Wdn1sV0Ydt |jvsrJWdn1s0YdS)NrrZrbzstandalone' plugin errored)r%r[rrcEP_SA_LOADFAILrdrrerKZ assertRaisesrrRrgrI exception)rr[rhcmrrrtest_find_all_error_messages   &z/PluginsRegistryTest.test_find_all_error_messagecCs|j|jdksJdSNr)r'rar rrr test_getitemsz PluginsRegistryTest.test_getitemcCsdgt|jksJdSrn)listrar rrr test_iterszPluginsRegistryTest.test_itercCs,dt|iksJdt|jks(JdS)Nr)lenr^rar rrrtest_lenszPluginsRegistryTest.test_lencCs2d|jj_dg|jdks J|jjddS)NbazZbar)r'rE return_valueraassert_called_once_withr rrrrGs zPluginsRegistryTest.test_initcCs6|j|jddksJi|jddks2JdS)NcSs |jdS)Nmr startswithZp_eprrrz1PluginsRegistryTest.test_filter..cSs |jdS)Nbryr{rrrr|r})r]rafilterr rrr test_filterszPluginsRegistryTest.test_filtercCsBd|jj_|j|jjks Jd|jj_i|jjks>JdSrP)r'r8rvr]ra_pluginsr rrrr;s  zPluginsRegistryTest.test_ifacescCs.d|jj_dg|jksJ|jjdS)Nru)r'rHrvrarwr rrrrJs z PluginsRegistryTest.test_preparecs@gfddtjD}||}|ttjks sz:PluginsRegistryTest.test_prepare_order..)string ascii_lettersr^rHsortedrr]rarrrtest_prepare_order s  z&PluginsRegistryTest.test_prepare_ordercCs>d|j_|j|jjksJd|j_i|jjks:JdSrP)r'r?r]rarr rrrtest_availablesz"PluginsRegistryTest.test_availablecCs@|jtdusJd|j_|j|j|jus.z&PluginsRegistry(PluginEntryPoint#mock))r'__repr__rVrar rrrrW"s zPluginsRegistryTest.test_reprcCsddt|iksJdd|j_dt|jks4J|jj|jddi}||}dt|ks`JdS)Nz No pluginscSsdS)Nrrrrrrr|)r}z.PluginsRegistryTest.test_str..rZfooZBarz Bar Mock)rIr^r'__str__rarrrrrrU's   zPluginsRegistryTest.test_strN)rrrrX classmethodr^r(rirmrorqrtrGrr;rJrrrrWrUrrrrrYs$    rY__main__rr)!rXrrsystypingrZunittestrZpytestZcertbotrrZcertbot._internal.pluginsrrr version_infoimportlib.metadatametadatar"r#r r&rdrjZTestCaserrYrexitmainargv__file__rrrrsH        w