a }|ägEã@s–dZddlZddlZddlmZddlZddlmZddlm Z ddlm Z ddl m Z Gdd „d e jƒZed kr’e e ejd d…eg¡¡dS) z/Tests for certbot.plugins.storage.PluginStorageéN)Úmock)Úerrors)Ú filesystem)Úos)Úutilcs`eZdZdZ‡fdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z ‡Z S)ÚPluginStorageTestz.Test for certbot.plugins.storage.PluginStoragecs`tƒ ¡tj|_t |jj¡t   d¡"|j|jdd|_ Wdƒn1sR0YdS)Núcertbot.reverter.utilÚ mockplugin)ÚconfigÚname) ÚsuperÚsetUpÚ test_utilZDummyInstallerÚ plugin_clsrÚmkdirr Ú config_dirrÚpatchÚplugin©Úself©Ú __class__©úP/usr/lib/python3.9/site-packages/certbot/_internal/tests/plugins/storage_test.pyr s   zPluginStorageTest.setUpc Cs*ttj |jjd¡dƒ}| d¡Wdƒn1s80Yt ¡}t |_ tj |jjd¡|j j _ t d|¡ tjdddrt d¡Ht tj¡|j j  ¡Wdƒn1sÀ0YWdƒn1sÞ0YWdƒn1sü0YWdƒn1s0YdS) Nú.pluginstorage.jsonÚwZdummyz builtins.openzcertbot.compat.os.path.isfileT)Z return_valuer)ÚopenrÚpathÚjoinr rÚwriterÚ mock_openÚIOErrorÚ side_effectrÚstorageÚ _storagepathrÚpytestÚraisesrÚPluginStorageErrorÚ_load)rÚfhr rrrÚtest_load_errors_cant_reads"ÿÿ( ÿ  z,PluginStorageTest.test_load_errors_cant_readc CsÞttj |jjd¡dƒ}| d¡Wdƒn1s80Yt d¡~}t d¡|  |jd¡}Wdƒn1s|0Yt   t ¡|j  d¡Wdƒn1s²0YWdƒn1sÐ0YdS)NrrÚz$certbot.plugins.storage.logger.debugrr Úvalue)rrrrr rrrrrr%r&ÚKeyErrorr#Úfetch)rr)Úmock_logZ nocontentrrrÚtest_load_errors_empty's(  , *z(PluginStorageTest.test_load_errors_emptyc Csàttj |jjd¡dƒ}| d¡Wdƒn1s80Yt d¡€}t d¡|  |jd¡}Wdƒn1s|0Yt   t j ¡|j d¡Wdƒn1s´0YWdƒn1sÒ0YdS)Nrrz invalid jsonú$certbot.plugins.storage.logger.errorrr r,)rrrrr rrrrrr%r&rZ PluginErrorr#r.)rr)r/Z corruptedrrrÚtest_load_errors_corrupted3sÿÿ(  ,*z,PluginStorageTest.test_load_errors_corruptedc Cs†t d¡h}d|jj_d|jj_|j|jj_t  t j ¡|jj  ¡Wdƒn1sZ0YWdƒn1sx0YdS)Nr1Tú /tmp/whatever) rrrr#Ú _initializedr$rÚ_datar%r&rr'Úsave)rr/rrrÚtest_save_errors_cant_serialize>s    *z1PluginStorageTest.test_save_errors_cant_serializec CsÂt ¡}t|_t d|¡”t d¡j}ddi|jj_d|jj_d|jj_ t   t j ¡|jj ¡Wdƒn1sx0YWdƒn1s–0YWdƒn1s´0YdS)Nzcertbot.compat.filesystem.openr1ZvalidÚdataTr3)rr r!r"rrr#r5r4r$r%r&rr'r6)rr r/rrrÚ%test_save_errors_unable_to_write_fileHs   *z7PluginStorageTest.test_save_errors_unable_to_write_filec Csnt d¡Pt tj¡$| |jd¡j  ¡Wdƒn1sB0YWdƒn1s`0YdS)NrÚx) rrr%r&rr'rr r#r6rrrrÚtest_save_uninitializedTs z)PluginStorageTest.test_save_uninitializedcCsÄt d¡,| |jd¡}| |jd¡}Wdƒn1s<0Y|j dd¡t t¡|j  d¡Wdƒn1s€0Yt t¡|j  d¡Wdƒn1s¶0YdS)NrÚfirstÚsecondZ first_keyZ first_value) rrrr r#Úputr%r&r-r.)rZplugin1Zplugin2rrrÚtest_namespace_isolationYs , * *z*PluginStorageTest.test_namespace_isolationcCs¢|jj dd¡|jj ¡t d¡| |jd¡}Wdƒn1sJ0Ytt j   |jj d¡dƒ}|  ¡}Wdƒn1sŠ0Yt |¡}dS)NZtestkeyZ testvaluerr rÚr)rr#r>r6rrrr rrrrrÚreadÚjsonÚloads)rZanotherr)ZpsdataZpsjsonrrrÚtest_saved_stateds  ,ÿÿ& z"PluginStorageTest.test_saved_state)Ú__name__Ú __module__Ú __qualname__Ú__doc__r r*r0r2r7r9r;r?rDÚ __classcell__rrrrrs      rÚ__main__é)rHrBÚsysZunittestrr%ZcertbotrZcertbot.compatrrZ certbot.testsrrZConfigTestCaserrEÚexitÚmainÚargvÚ__file__rrrrÚs     g