a ‚oeš,ã@s2dZddlZddlZddlZddlmZddlZddlmZddlZddl m Z ddl m Z ddl m Z ddl mZdd l mZejd kr˜ddlmZnddlZGd d „d ejƒZejd ddd�Zejdddd�Zed ddd�ZGdd„dejƒZGdd„dejƒZedk�r.e e ejdd…e g¡¡dS)z*Tests for certbot._internal.plugins.disco.éN)ÚList)Úmock)Úerrors)Ú interfaces)Únull)Ú standalone)Úwebroot)éé c@seZdZdd„ZdS)Ú_EntryPointLoadFailcCs tdƒ‚dS)NzLoading failure)Ú RuntimeError©Úself©rúKC:\Program Files\Certbot\pkgs\certbot\_internal\tests\plugins\disco_test.pyÚloadsz_EntryPointLoadFail.loadN)Ú__name__Ú __module__Ú __qualname__rrrrrr sr Úsaz2certbot._internal.plugins.standalone:Authenticatorúcertbot.plugins©ÚnameÚvalueÚgroupÚwrz/certbot._internal.plugins.webroot:Authenticatorc@sˆeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd S)!ÚPluginEntryPointTestz;Tests for certbot._internal.plugins.disco.PluginEntryPoint.cCsbtjdddd�|_tjdddd�|_tjdddd�|_tjdd dd�|_d d lm}|tƒ|_ dS) NÚep1zp1.ep1:Authenticatorrrzp2.pe2:AuthenticatorÚep2zp2.foo.ep2:AuthenticatorÚep3za.ep3:Authenticatorr©ÚPluginEntryPoint) Úimportlib_metadataÚ EntryPointrÚep1primrrÚcertbot._internal.plugins.discor!ÚEP_SAÚ plugin_ep)rr!rrrÚsetUp/s,ýýýý zPluginEntryPointTest.setUpc CsTddlm}|jd|jd|jd|jdtdi}| ¡D]\}}|| |¡ks4J‚q4dS)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|jjvsJ‚dS)Nzserver locally)r'Ú descriptionr rrrÚtest_descriptionTsz%PluginEntryPointTest.test_descriptioncCs$tjdd�|j_d|jjks J‚dS)NZDesc)r-z Desc (sa))rÚ MagicMockr'Ú plugin_clsZdescription_with_namer rrrÚtest_description_with_nameWsz/PluginEntryPointTest.test_description_with_namecCs$tjdd�|j_d|jjks J‚dS)Nz Long desc)Úlong_description©rr/r'r0r2r rrrÚtest_long_description[sÿ z*PluginEntryPointTest.test_long_descriptioncCs(tjddgd�|j_d|jjks$J‚dS)NzLong desc not foundr-)r-Úspecr3r rrrÚ!test_long_description_nonexistent`sÿ z6PluginEntryPointTest.test_long_description_nonexistentcCsD|j tjf¡sJ‚|j tjf¡r(J‚|j tjtjf¡r@J‚dS©N)r'ÚifacesrÚ AuthenticatorÚ Installerr rrrÚ test_ifaceses ÿz PluginEntryPointTest.test_ifacescCs†|jjdusJ‚|jjdus J‚|jjdus0J‚|jjdus@J‚|jjdusPJ‚|jjtus`J‚d|jjkspJ‚|jj t j us‚J‚dS)NFr) r'Ú initializedÚpreparedÚ misconfiguredÚ availableÚproblemr+r&rr0rr9r rrrÚ test__init__ksz!PluginEntryPointTest.test__init__cCsªt ¡}|jj|d�}|jjdus&J‚|j|us4J‚|j ¡|usFJ‚|j|usTJ‚|j d¡|ushJ‚|j|usvJ‚|jjdus†J‚|jjdus–J‚|jjdus¦J‚dS)N©ÚconfigTé{F) rr/r'Úinitr<rCr=r>r?)rrCÚpluginrrrÚ test_initvszPluginEntryPointTest.test_initcCsJt ¡}|jj|d�|j ¡|jjs,J‚|jjdusÚstr)rrCrrrÚ test_prepare†s   z!PluginEntryPointTest.test_preparecCslt ¡}tj|j_||j_t|j ¡tjƒs0J‚|jj sr@r?©rrFrrrÚtest_prepare_misconfigured�s   z/PluginEntryPointTest.test_prepare_misconfiguredcCsdt ¡}tj|j_||j_t|j ¡tjƒs0J‚|jj dus@J‚|jj dusPJ‚|jj dus`J‚dS©NTF) rr/rZNoInstallationErrorrHrKr'rLrMr=r>r?rNrrrÚtest_prepare_no_installation›s z1PluginEntryPointTest.test_prepare_no_installationcCs`t ¡}tj|j_||j_t|j ¡tjƒs0J‚|jj sr?rNrrrÚ!test_prepare_generic_plugin_error¥s  z6PluginEntryPointTest.test_prepare_generic_plugin_errorcCs2t|jƒ}d|vsJ‚d|vs"J‚d|vs.J‚dS)Nr9r:ZPlugin)rIr')rÚoutputrrrÚtest_str¯s   zPluginEntryPointTest.test_strcCsdt|jƒksJ‚dS)NzPluginEntryPoint#sa)Úreprr'r rrrÚ test_reprµszPluginEntryPointTest.test_reprN)rrrÚ__doc__r(r,r.r1r4r6r;rArGrJrOrQrSrUrWrrrrr,s      rc@s”eZdZdZedd„ƒZdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"S)#ÚPluginsRegistryTestz:Tests for certbot._internal.plugins.disco.PluginsRegistry.cCsddlm}||ƒS)Nr©ÚPluginsRegistry)r%r[)ÚclsÚpluginsr[rrrÚ_create_new_registry¼s 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}t d¡�r}tgt|jgg|j_tj  t j d¡�.}t j tj tjtjg|_| ¡}Wdƒn1sp0YWdƒn1sŽ0Y|djt j us¬J‚|djtus¾J‚|djtj usÒJ‚|djtusäJ‚|djtjusøJ‚|dj|ju�sJ‚d|v�sJ‚dS) NrrZú2certbot._internal.plugins.disco.importlib_metadatarrrrzp1:ep1)r%r[rÚpatchr&ÚEP_WRrÚ entry_pointsrKÚobjectr"r#rr9rrr:Úfind_allr0r+)rr[Ú mock_metaZ mock_loadr]rrrÚ test_find_allÌs    ÿþDz!PluginsRegistryTest.test_find_allc Cs”ddlm}t d¡�j}tgt|jgg|j_|  t j ¡�}|  ¡Wdƒn1sV0Ydt |jƒvsrJ‚Wdƒn1s†0YdS)NrrZrbzstandalone' plugin errored)r%r[rrcÚEP_SA_LOADFAILrdrrerKZ assertRaisesrrRrgrIÚ exception)rr[rhÚcmrrrÚtest_find_all_error_messageßs   ÿ&z/PluginsRegistryTest.test_find_all_error_messagecCs|j|jdksJ‚dS©Nr)r'rar rrrÚ test_getitemêsz PluginsRegistryTest.test_getitemcCsdgt|jƒksJ‚dSrn)Úlistrar rrrÚ test_iteríszPluginsRegistryTest.test_itercCs,dt| i¡ƒksJ‚dt|jƒks(J‚dS)Nré)Úlenr^rar rrrÚtest_lenðszPluginsRegistryTest.test_lencCs2d|jj_dg|j d¡ks J‚|jj d¡dS)NÚbazZbar)r'rEÚ return_valueraÚassert_called_once_withr rrrrGôs zPluginsRegistryTest.test_initcCs6|j|j dd„¡ksJ‚i|j dd„¡ks2J‚dS)NcSs |j d¡S)NÚm©rÚ startswith©Zp_eprrrÚûóz1PluginsRegistryTest.test_filter..cSs |j d¡S)NÚbryr{rrrr|ür})r]raÚfilterr rrrÚ test_filterùsÿzPluginsRegistryTest.test_filtercCsBd|jj_|j|j ¡jks J‚d|jj_i|j ¡jks>J‚dSrP)r'r8rvr]raÚ_pluginsr rrrr;þs  zPluginsRegistryTest.test_ifacescCs.d|jj_dg|j ¡ksJ‚|jj ¡dS)Nru)r'rHrvrarwr rrrrJs z PluginsRegistryTest.test_preparecs@g‰‡fdd„tjDƒ}| |¡}| ¡ˆttjƒks sÿz:PluginsRegistryTest.test_prepare_order..)ÚstringÚ ascii_lettersr^rHÚsorted©rr]rarr‡rÚtest_prepare_order s þ z&PluginsRegistryTest.test_prepare_ordercCs>d|j_|j|j ¡jksJ‚d|j_i|j ¡jks:J‚dSrP)r'r?r]rar�r rrrÚtest_availablesz"PluginsRegistryTest.test_availablecCs@|j t ¡¡dusJ‚d|j_|j |j ¡¡|jus.z&PluginsRegistry(PluginEntryPoint#mock))r'Ú__repr__rVrar rrrrW"s ÿzPluginsRegistryTest.test_reprcCsddt| i¡ƒksJ‚dd„|j_dt|jƒks4J‚|jj|jddi}| |¡}dt|ƒks`J‚dS)Nz No pluginscSsdS)Nr�rr’rrrr|)r}z.PluginsRegistryTest.test_str..r�ZfooZBarz Bar Mock)rIr^r'Ú__str__rarr�rrrrU's   zPluginsRegistryTest.test_strN)rrrrXÚ classmethodr^r(rirmrorqrtrGr€r;rJrŽr�r‘rWrUrrrrrY¹s$    rYÚ__main__rr)!rXr‚rŠÚsysÚtypingrZunittestrZpytestZcertbotrrZcertbot._internal.pluginsrrrÚ version_infoÚimportlib.metadataÚmetadatar"r#r r&rdrjZTestCaserrYrÚexitÚmainÚargvÚ__file__rrrrÚsH        ýýýw