a }|äg@µ ã @ sl d Z ddlZddlZddlZddlZddlZddlZddlZddlmZ ddl m Z ddlmZ ddl Z ddlmZ ddlmZ ddlmZ dd lmZ dd lmZ ddlmZ ddlm mZ e d¡Ze d ¡ZG dd„ dejƒZ G dd„ dejƒZ!G dd„ dejƒZ"G dd„ de"ƒZ#G dd„ de"ƒZ$G dd„ dej%ƒZ&e'dkrhe (e )ej*dd… e+g ¡¡ dS )z#Tests for certbot._internal.client.é N)Úmock)Ú MagicMock)Ú interfaces)Úerrors)Úutil)Úaccount)Ú constants)Úobj)Úoszrsa512_key.pemzcsr-san_512.pemc @ sT e Zd ZdZdd„ Zej ej ddi¡dd„ ƒZ ej ej i ¡dd „ ƒZd d„ ZdS ) ÚDetermineUserAgentTestz8Tests for certbot._internal.client.determine_user_agent.c C s ddl m} || jƒS )Nr )Údetermine_user_agent)Úcertbot._internal.clientr Úconfig)Úselfr © r úG/usr/lib/python3.9/site-packages/certbot/_internal/tests/client_test.pyÚ_call s zDetermineUserAgentTest._callZCERTBOT_DOCSÚ1c C s | j dd d S )NT©Úexpect_doc_values©Ú_test©r r r r Útest_docs_value$ s z&DetermineUserAgentTest.test_docs_valuec C s | j dd d S )NFr r r r r r Útest_real_values( s z'DetermineUserAgentTest.test_real_valuesc C sZ | ¡ }|r| j}| j}n| j}| j}|d|ƒ |d|ƒ |t ¡ |ƒ |t ¡ |ƒ d S )NzOS_NAME OS_VERSIONzmajor.minor.patchlevel)r ZassertInZassertNotInr Zget_os_info_uaÚplatformZpython_version)r r ZuaZdoc_value_checkZreal_value_checkr r r r , s zDetermineUserAgentTest._testN) Ú__name__Ú __module__Ú__qualname__Ú__doc__r r ÚpatchÚdictr Úenvironr r r r r r r r s r c s e Zd ZdZ‡ fdd„Zdd„ Zedd„ ƒZedd „ ƒZed d„ ƒZ edd „ ƒZ eejdd„ ƒƒZ dd„ Ze d¡dd„ ƒZe ¡ dd„ ƒZe d¡dd„ ƒZdd„ Zdd„ Ze d¡dd „ ƒZe d¡d!d"„ ƒZe ¡ d#d$„ ƒZe ¡ d%d&„ ƒZd'd(„ Zd)d*„ Z‡ ZS )+ÚRegisterTestz,Tests for certbot._internal.client.register.c sF t ƒ ¡ d| j_d| j_d| j_t ¡ | _t ¡ | _t t ƒ ¡ d S )Ni Fzalias@example.com)ÚsuperÚsetUpr Úrsa_key_sizeÚregister_unsafely_without_emailÚemailr ZAccountMemoryStorageÚaccount_storager r Útos_cbÚdisplay_objZset_displayr ©Ú __class__r r r% ? s zRegisterTest.setUpc C s ddl m} || j| j| jƒS )Nr )Úregister)r r. r r) r* )r r. r r r r H s zRegisterTest._callc C s t jtjd} d| j_| S )Nr, z{"a": 1})r ÚMockr ZJSONDeSerializableZto_partial_jsonÚreturn_value)Úmr r r Ú_public_key_mockL s zRegisterTest._public_key_mockc C s dS )Nz/acme/new-accountr r r r r Ú_new_acct_dir_mockR s zRegisterTest._new_acct_dir_mockc C s dS ©NTr r r r r Ú _true_mockV s zRegisterTest._true_mockc C s dS ©NFr r r r r Ú_false_mockZ s zRegisterTest._false_mockc c s6 t d¡} | jV W d ƒ n1 s(0 Y d S )Nú$certbot._internal.client.acme_client)r r ÚClientV2)Zmock_acme_clientr r r Ú_patched_acme_client^ s z!RegisterTest._patched_acme_clientc C sÚ | ¡ ¾}d| ¡ _| j|ƒ j_t d¡~}tj |ƒ j_t tj ¡ | ¡ W d ƒ n1 sb0 Y |j du szJ ‚d |ƒ j_| ¡ |j du sšJ ‚W d ƒ n1 s®0 Y W d ƒ n1 sÌ0 Y d S )Nz http://tosú*certbot._internal.eff.prepare_subscriptionFT)r: Únew_accountZterms_of_servicer7 Úexternal_account_requiredÚside_effectr r r ÚErrorÚpytestÚraisesr Úcalled)r Úmock_clientÚmock_preparer r r Útest_no_tosd s & zRegisterTest.test_no_tosr; c C sj | ¡ N}ddlm} | i ¡|ƒ _| j|ƒ j_| ¡ | j j du sHJ ‚W d ƒ n1 s\0 Y d S )Nr )Ú DirectoryF)r: Z acme.messagesrF Z from_jsonÚ directoryr7 r= r> r r* rB )r Zunused_mock_preparerC rF r r r Útest_empty_metar s zRegisterTest.test_empty_metac C sz | ¡ ^}| j|ƒ j_t d¡ | ¡ W d ƒ n1 s>0 Y | jjdu sXJ ‚W d ƒ n1 sl0 Y d S )Nú)certbot._internal.eff.handle_subscriptionT) r: r7 r= r> r r r r* rB )r Úunused_mock_get_utilityrC r r r Útest_it s &zRegisterTest.test_itz.certbot._internal.client.display_ops.get_emailc C sÀ ddl m} d| j_d}|jjd|d}| ¡ |}| j|ƒ j_ t d¡F}|t ¡ g|ƒ j _ | ¡ |jdksrJ ‚|jd u s€J ‚W d ƒ n1 s”0 Y W d ƒ n1 s²0 Y d S ) Nr ©ÚmessagesFú3DNS problem: NXDOMAIN looking up MX for example.comÚinvalidContact©Údetailr; é T)ÚacmerM r Únoninteractive_moder? Ú with_coder: r7 r= r> r r r r<