JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/acme/_internal/tests/__pycache__/client_test.cpython-39.pyc

a

}|�g��@s�dZddlZddlZddlmZddlZddlZddlm	Z	ddl
Z
ddl
mZddlZ
ddlZddlZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZe�d
�Ze�d�Ze�d�Ze
j �!e�d��Z"e�#ddddej#�$�d��Z%Gdd�de
j&�Z'Gdd�de
j(�Z)Gdd�de
j&�Z*Gdd�de
j&�Z+e,dk�r�e�-e�.ej/dd�e0g��dS) zTests for acme.client.�N)�Dict)�mock)�
challenges)�errors)�jws)�messages)�
messages_test)�	test_util)�
ClientNetwork)�ClientV2zcert-san.pemz
csr-mixed.pemzcsr-nosans.pemzrsa512_key.pemz1https://www.letsencrypt-demo.org/acme/new-account�/https://www.letsencrypt-demo.org/acme/new-noncez/https://www.letsencrypt-demo.org/acme/new-orderz1https://www.letsencrypt-demo.org/acme/revoke-cert)�
newAccount�newNonceZnewOrder�
revokeCert�metac@sTeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Ze
�d�dd��Ze
�d�dd��Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Z d9d:�Z!e
�d�d;d<��Z"e
�d�d=d>��Z#e
�d�d?d@��Z$e
�d�dAdB��Z%dCdD�Z&dES)F�ClientV2TestzTests for acme.client.ClientV2.cCs�tjdtjiid�|_t��|_|j|jj_|j|jj_t	j
t	jdd�|_d|_
t	j|j
t��d�}t|�}t	jfi|��|_t	j|dd�|_d	}t	j|d
t	jtjt�d�d�d
�}t	j||d�|_t	jt	j
t	jdd�|fd�|_t	j |j|d�|_!d|_"t#|_$t%|j$|j�|_&|jj'dd�|_d|_(|jj't	j
t	jdd�t	j)d�|_*t	j |j*|j(d�|_+t	j,|jj|j*jft	j)|j!j-|j(fdd�|_.t	j/|j.d|j!|j+gt0d�|_1t	j/|j.d|j!|j+gt2d�|_3dS)NT)�ok�status_code�headers�linkszexample.com)�typ�value)zmailto:cert-admin@example.comztel:+12025551212)�contact�key�+https://www.letsencrypt-demo.org/acme/reg/1��body�uriz-https://www.letsencrypt-demo.org/acme/authz/1z/1z+evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA)�token)r�statusZchall)r�
authzr_uri)�
identifierr�)Zterms_of_service_agreedz-https://www.letsencrypt-demo.org/acme/authz/2zwww.example.com)r!rz=https://www.letsencrypt-demo.org/acme/acct/1/order/1/finalize)Zidentifiersr�authorizations�finalizez4https://www.letsencrypt-demo.org/acme/acct/1/order/1)rrr#Zcsr_pem)4r�	MagicMock�http_client�OK�response�net�post�return_value�getrZ
IdentifierZIDENTIFIER_FQDNr!rZRegistration�KEYZ
public_key�dictZNewRegistration�new_regZRegistrationResource�regrZ
ChallengeBody�STATUS_VALIDrZDNS�jose�	b64decodeZChallengeResource�challrZ
Authorization�authz�AuthorizationResource�authzr�rsn�DIRECTORY_V2�	directoryr�client�update�authzr_uri2ZSTATUS_PENDING�authz2�authzr2ZOrderr�orderZ
OrderResource�
CSR_MIXED_PEM�orderr�CSR_NO_SANS_PEM�orderr2)�selfZregZthe_argr �challb�rG�D/usr/lib/python3.9/site-packages/acme/_internal/tests/client_test.py�setUp*s�
�
�
��
������
������zClientV2Test.setUpcCsHtj|j_|jj��|jj_|jj	|jj
d<|j|j�|j
�ksDJ�dS�N�Location)r&�CREATEDr(rr0r�to_json�jsonr+rrr;�new_accountr/�rErGrGrH�test_new_accountjs
zClientV2Test.test_new_accountcCs^tj|j_|jj��|jj_|jj	|jj
d<|jj�dddii�|j
�|j�jdksZJ�dS)NrKzterms-of-service�urlz$https://www.letsencrypt-demo.org/tos)r&rLr(rr0rrMrNr+rrrr<r;rOr/Zterms_of_servicerPrGrGrH�test_new_account_tos_linkqs
��z&ClientV2Test.test_new_account_tos_linkcCsXtj|j_|jj|jjd<t�t	j
��|j�|j
�Wd�n1sJ0YdSrJ)r&r'r(rr0rr�pytest�raisesr�
ConflictErrorr;rOr/rPrGrGrH�test_new_account_conflict}s
z&ClientV2Test.test_new_account_conflictcCs^|jj|jjjdd�d�}|j��|jj_tj|j_	|jj
|jjd<|j�
|j�|ksZJ�dS)NZdeactivated�r�rrK)r0r<rrMr(rNr+r&r'rrrr;Zdeactivate_registration)rEZdeactivated_regrrGrGrH�test_deactivate_account�s�
z$ClientV2Test.test_deactivate_accountcCs�|jj|jjjtjd�d�}|j��|jj_|j	�
|j�}|j|jksJJ�|j	jjj
dks^J�|jj|jjjddvs|J�dS)NrXrYr"r)r7r<rrZSTATUS_DEACTIVATEDrMr(rNr+r;Zdeactivate_authorizationr)r*�
call_countr�call_args_list)rEZdeactivated_authzr7rGrGrH�test_deactivate_authorization�s�z*ClientV2Test.test_deactivate_authorizationcCst�|j�}tj|_|j��|j_	|j
j|jd<||j
j_	t�|j�}|j��|j_	|jj|jd<|j}|j��|j_	|jj|jd<t�d��0}||f|_|j�t�|j
ks�J�Wd�n1s�0Yt�d��0}||f|_|j�t�|jks�J�Wd�n1�s0YdS)NrKz!acme.client.ClientV2._post_as_get)�copy�deepcopyr(r&rLrr@rMrNr+rBrrr)r*r5r7r>r?r�patch�side_effectr;Z	new_orderrArCrD)rEZorder_responseZauthz_responseZauthz_response2Zmock_post_as_getrGrGrH�test_new_order�s"

4
zClientV2Test.test_new_ordercCs�d|jji|jjd<|jj��|jj_tj	dd�}|j
�|jj|�t�
tj��*|j
�|jjjdd�|�Wd�n1s�0YdS)NrRZup�Z
validation�foo)r)r4r r(rrrMrNr+r�DNSResponser;�answer_challengerTrUr�UnexpectedUpdater<)rEZchall_responserGrGrH�test_answer_challege�sz!ClientV2Test.test_answer_challegecCsJt�tj��*|j�|jjtj	dd��Wd�n1s<0YdS)Nrc)
rTrUr�ClientErrorr;rfr4rrrerPrGrGrH�"test_answer_challenge_missing_next�sz/ClientV2Test.test_answer_challenge_missing_nextzacme.client.datetimecCs�t�ddd�|jj_tj|_|j��tjdd�}tj|jd�|j_tj|jd�|j_	|j�
|j�|jksnJ�|jj�|j|�|jj	�|j|�dS)N�����Z�Zseconds�r+)�datetime�nowr+�	timedeltarZMockrBr;�poll_authorizations�finalize_orderZpoll_and_finalize�assert_called_once_with)rE�
mock_datetimeZexpected_deadlinerGrGrH�test_poll_and_finalize�sz#ClientV2Test.test_poll_and_finalizecCs�t�ddd�t�ddd�t�ddd�g}||jj_|j��|j��|j��g|jj_t�	t
j��$|j�
|j|d�Wd�n1s�0YdS)Nrkrlrm��r")rqrrrar5rMr>r(rNrTrUr�TimeoutErrorr;rtrB)rErwZnow_side_effectrGrGrH� test_poll_authorizations_timeout�s�
�
z-ClientV2Test.test_poll_authorizations_timeoutcCs�t�ddd�}|jjjtjtj�d�d�}|jjtj|fd�}|�	�|j
j_t
�tj�� |j�|j|�Wd�n1s~0YdS)N�'�	�unauthorized)r�error)rr)rqr4rr<r�STATUS_INVALID�Error�	with_coder5rMr(rNr+rTrUrZValidationErrorr;rtrB)rE�deadlinerFr5rGrGrH� test_poll_authorizations_failure�s
�z-ClientV2Test.test_poll_authorizations_failurecCs~t�ddd�}|jjtjd�}tj||jd�}|jj|j|gd�}|j	�
�|j�
�|�
�f|jj_
|j�|j|�|kszJ�dS)Nr}r~rXr)r#)rqr>r<rr1r6r=rBr7r5rMr(rNrar;rt)rEr�Zupdated_authz2Zupdated_authzr2�updated_orderrrGrGrH� test_poll_authorizations_success�s��
z-ClientV2Test.test_poll_authorizations_successcCsd|jj|jjdd�d�}|��|jj_t�t	j
��|j�|j
�Wd�n1sV0YdS)Nrd�r)r!)r5r<r!rMr(rNr+rTrUrrgr;�pollr7)rEZ
updated_authzrGrGrH�test_poll_unexpected_update�sz(ClientV2Test.test_poll_unexpected_updatecCsb|jjdtjd�}|jj|td�}|��|jj_	t|j_
t�ddd�}|j�
|j|�|ks^J�dS)N�+https://www.letsencrypt-demo.org/acme/cert/�Zcertificater)r�
fullchain_pemr}r~)r@r<rr1rB�CERT_SAN_PEMrMr(rNr+�textrqr;ru)rE�
updated_orderr�r�rGrGrH�test_finalize_order_success�s�z(ClientV2Test.test_finalize_order_successcCsv|jjtj�d�tjd�}|��|jj_	t
�
ddd�}t�t
j�� |j�|j|�Wd�n1sh0YdS)Nr�r�rr}r~)r@r<rr�r�r�rMr(rNr+rqrTrUrZ
IssuanceErrorr;rurB)rEr�r�rGrGrH�test_finalize_order_error�s
�z&ClientV2Test.test_finalize_order_errorc	Csn|jjdtjd�}|��|jj_tj	t
jdd��*|j�
|jt�ddd��Wd�n1s`0YdS)Nr�zThe certificate order failed)�matchr}r~)r@r<rr�rMr(rNr+rTrUrr�r;rurBrq)rEr@rGrGrH�"test_finalize_order_invalid_statussz/ClientV2Test.test_finalize_order_invalid_statuscCsVtj��tjdd�}t�tj�� |j�|j	|�Wd�n1sH0YdS)N�<ro)
rqrrrsrTrUrr{r;rurB)rEr�rGrGrH�test_finalize_order_timeoutsz(ClientV2Test.test_finalize_order_timeoutcCs�|jjdtjd�}|jj|tttgd�}|��|jj_	t|j_
d|jjd<t�ddd�}|j
j|j|dd	�}|jjjd
tjtjd�|jjjdtjtjd�||ks�J�|jjd=|j
j|j|dd	�}||jgd
�ks�J�dS)Nr�r�)rr��alternative_fullchains_pemz�<https://example.com/acme/cert/1>;rel="alternate", <https://example.com/dir>;rel="index", <https://example.com/acme/cert/2>;title="foo";rel="alternate"ZLinkr}r~T)Zfetch_alternative_chainszhttps://example.com/acme/cert/1��
new_nonce_urlzhttps://example.com/acme/cert/2)r�)r@r<rr1rBr�rMr(rNr+r�rrqr;rur)r*Zassert_any_callr�ANY)rEr�r�r�ZresprGrGrH�test_finalize_order_alt_chains
s2���
�
�
z+ClientV2Test.test_finalize_order_alt_chainscCs6|j�tj|j�|jjj|jdt	j
tdd�dS)Nrrr�)r;�revoker�CERTr8r)r*rvr:rr�r9rPrGrGrH�test_revoke(s�zClientV2Test.test_revokecCsLtj|j_t�tj��"|j�	t
j|j�Wd�n1s>0YdS�N)
r&�METHOD_NOT_ALLOWEDr(rrTrUrrir;r�rr�r8rPrGrGrH�#test_revoke_bad_status_raises_error-s


�z0ClientV2Test.test_revoke_bad_status_raises_errorcCs�|jj|jjd<|jj��|jj_|j|j�	|j�ks:J�|jj
jdusLJ�|jj
jj
dks`J�tj|j
jjddvs|J�|jjjdd���|jj_dS)NrKrlrrG)r)r0rr(rrrMrNr+r;Zupdate_registrationr)�accountr*r[r9r
r\r<rPrGrGrH�test_update_registration3s�z%ClientV2Test.test_update_registrationcCs.t�dtjjdd�i�|j_|j��s*J�dS)NrT��external_account_required�r�	Directory�Metar;r:r�rPrGrGrH�#test_external_account_required_true?s�
z0ClientV2Test.test_external_account_required_truecCs.t�dtjjdd�i�|j_|j��r*J�dS)NrFr�r�rPrGrGrH�$test_external_account_required_falseFs�
z1ClientV2Test.test_external_account_required_falsecCs|j��rJ�dSr�)r;r�rPrGrGrH�&test_external_account_required_defaultMsz3ClientV2Test.test_external_account_required_defaultcCs:|jj��|jj_d|jjd<|j|j�|j�ks6J�dS)NrrK)	r0rrMr(rNr+rr;Zquery_registrationrPrGrGrH�test_query_registration_clientPsz+ClientV2Test.test_query_registration_clientcCslt�d��N}|j|_|j�|j�|jjjj|jj	ddd�|jjj
��Wd�n1s^0YdS)Nz*acme.client.ClientV2._authzr_from_responserr�)rr`r?r+r;r�r)r*rvrr,Zassert_not_called)rEZmock_clientrGrGrH�test_post_as_getUs
�zClientV2Test.test_post_as_getcCs:d|jjd<t�dddddd�|jj|jdd	�ks6J�dS)
NzFri, 31 Dec 1999 23:59:59 GMT�Retry-Afteri�����;�
�r(�default)r(rrqr;�retry_afterrPrGrGrH�test_retry_after_date`s�z"ClientV2Test.test_retry_after_datecCsVt�ddd�|jj_tj|_d|jjd<t�dddddd�|jj|jdd�ksRJ�dS)	N����Zfoooor�rr�r��rqrrr+rsr(rr;r��rEZdt_mockrGrGrH�test_retry_after_invalides�z%ClientV2Test.test_retry_after_invalidcCs`t�ddd�|jj_tj|_tj|j_d|jjd<t�dddddd�|jj|jdd�ks\J�dS)	Nr�r�r�zTue, 116 Feb 2016 11:50:00 MSTr�rr�r�)	rqrrr+rsrar(rr;r�r�rGrGrH�test_retry_after_overflowns
�z&ClientV2Test.test_retry_after_overflowcCsVt�ddd�|jj_tj|_d|jjd<t�dddddd�|jj|jdd	�ksRJ�dS)
Nr�r�r�Z50r�r�2r�r�r�r�rGrGrH�test_retry_after_secondsxs�z%ClientV2Test.test_retry_after_secondscCsJt�ddd�|jj_tj|_t�dddddd�|jj|jdd�ksFJ�dS)Nr�r�r�rr�r�)rqrrr+rsr;r�r(r�rGrGrH�test_retry_after_missing�s
�z%ClientV2Test.test_retry_after_missingcCs0t��|jj_t��t�d|j���ks,J�dS)Nzhttps://example.com/dir)	r9rMr(rNr+�to_partial_jsonrZ
get_directoryr)rPrGrGrH�test_get_directory�s�zClientV2Test.test_get_directoryN)'�__name__�
__module__�__qualname__�__doc__rIrQrSrWrZr]rbrhrjrr`rxr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rGrGrGrHr'sP@		





	

rc@s(eZdZdd�Zdd�Zedd��ZdS)�MockJSONDeSerializablecCs
||_dSr�r�)rErrGrGrH�__init__�szMockJSONDeSerializable.__init__cCs
d|jiS)Nrdr�rPrGrGrHr��sz&MockJSONDeSerializable.to_partial_jsoncCsdSr�rG)�clsZjobjrGrGrH�	from_json�sz MockJSONDeSerializable.from_jsonN)r�r�r�r�r��classmethodr�rGrGrGrHr��sr�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Ze
�d�dd��Ze
�d�dd��Zdd�Zdd�Zdd�Ze
�d�dd ��Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd3d*d+�Zd,d-�Ze
�d.�d/d0��Zd1d2�Zd)S)4�ClientNetworkTestz$Tests for acme.client.ClientNetwork.cCsXt��|_tjtjjd�|_tttj	|jdd�|_
tjdtjd�|_
i|j
_i|j
_dS)Nrp�acme-python-test)r�alg�
verify_sslZ
user_agentT�rr)rr%r��sentinel�wrappedZwrap_in_jwsr
r-r2ZRS256r)r&r'r(rrrPrGrGrHrI�s

�zClientNetworkTest.setUpcCs|jj|jusJ�dSr�)r)r�rPrGrGrH�	test_init�szClientNetworkTest.test_initcCsT|jjtd�ddd�}tj�|�}t�|j�	��ddiks>J�|j
jjdksPJ�dS)Nrd�TgrR��noncerR)
r)�_wrap_in_jwsr��acme_jws�JWS�
json_loadsrN�loads�payload�decode�	signature�combinedr��rEZjws_dumprrGrGrH�test_wrap_in_jws�s
�z"ClientNetworkTest.test_wrap_in_jwscCs�ddi|j_|jjtd�ddd�}tj�|�}t�|j	�
��ddiksJJ�|jjj
dks\J�|jjjdksnJ�|jjjdks�J�dS)Nrzacct-urirdr�rRr�)r)r�r�r�r�r�r�rNr�r�r�r�r�r�ZkidrRr�rGrGrH�test_wrap_in_jws_v2�s
�z%ClientNetworkTest.test_wrap_in_jws_v2c	Cs�d|j_i|jj_t�d��R}tj|_t	�
tj��|j
�|j�Wd�n1sV0YWd�n1st0YdS)NFz$acme.client.messages.Error.from_json)r(rrNr+rr`r2ZDeserializationErrorrarTrUrrir)�_check_response)rEr�rGrGrH�(test_check_response_not_ok_jobj_no_error�s
z:ClientNetworkTest.test_check_response_not_ok_jobj_no_errorcCsbd|j_tjjdddd���|jj_t�	tj��|j
�|j�Wd�n1sT0YdS)NFZserverInternalrdz
some title)Zdetail�title)r(rrr�r�rMrNr+rTrUr)r�rPrGrGrH�%test_check_response_not_ok_jobj_error�s�z7ClientNetworkTest.test_check_response_not_ok_jobj_errorcCsPd|j_t|jj_t�tj��|j	�
|j�Wd�n1sB0YdS)NF)r(r�
ValueErrorrNrarTrUrrir)r�rPrGrGrH�"test_check_response_not_ok_no_jobj�s
z4ClientNetworkTest.test_check_response_not_ok_no_jobjc	Csnt|jj_|jjdfD]R}||jjd<t�t	j
��&|jj|j|jjd�Wd�q1s^0YqdS)Nrd�Content-Type��content_type)r�r(rNrar)�JSON_CONTENT_TYPErrTrUrrir��rEZresponse_ctrGrGrH�*test_check_response_ok_no_jobj_ct_required�s

�z<ClientNetworkTest.test_check_response_ok_no_jobj_ct_requiredcCsDt|jj_|jjdfD](}||jjd<|j|j�|j�ksJ�qdS�Nrdr�)r�r(rNrar)r�rr�r�rGrGrH�$test_check_response_ok_no_jobj_no_ct�s
z6ClientNetworkTest.test_check_response_ok_no_jobj_no_ctzacme.client.loggercCsfi|jj_d|jjd<|j|jj|jdd�ks2J�z|j�dd�WntyXYdS0td��dS)Nzapplication/json; charset=utf-8r��application/jsonr��<Ignoring wrong Content-Type (%r) for JSON decodable responsez5Expected Content-Type warning to not have been logged)	r(rNr+rr)r��debug�assert_called_with�AssertionError�rEZmock_loggerrGrGrH�&test_check_response_ok_ct_with_charset�s

��z8ClientNetworkTest.test_check_response_ok_ct_with_charsetcCsDi|jj_d|jjd<|j|jj|jdd�ks2J�|j�dd�dS)Nz
text/plainr�r�r�r�)r(rNr+rr)r�r�r�r�rGrGrH�test_check_response_ok_bad_ct�s

��z/ClientNetworkTest.test_check_response_ok_bad_ctcCsNd|j_d|j_t�tj��|j�|j�Wd�n1s@0YdS)NFi�)	r(rrrTrUrrVr)r�rPrGrGrH�test_check_response_conflictsz.ClientNetworkTest.test_check_response_conflictcCsDi|jj_|jjdfD](}||jjd<|j|j�|j�ksJ�qdSr�)r(rNr+r)r�rr�r�rGrGrH�test_check_response_jobj
s
z*ClientNetworkTest.test_check_response_jobjc	Cs`t��|j_|j|jjj_|j|jjddddd�ks8J�|jjjjdddtj	tj	tj	dd�dS)N�HEAD�http://example.com/rd�baz��bar)r�verify�timeoutr�
rr%r)�sessionr(�requestr+�
_send_requestrvr�rPrGrGrH�test_send_requests
�
�z#ClientNetworkTest.test_send_requestcCsZt��|j_tjdtjdd�|jjj_|jjdddtj	ddd	id
�|j
�ddd
d�dS)NTshi)rrZcontentr�r�rdr�ZAcceptzapplication/pkix-cert)rrrz!Received response:
HTTP %d
%s

%s���saGk=)rr%r)rr&r'rr+rr�r�r�r�rGrGrH�test_send_request_get_ders���z+ClientNetworkTest.test_send_request_get_derc
Csdt��|j_|j|jjj_|j|jjdddddd�ks:J�|jjjjdddtj	tj	tj	ddd�dS)NZPOSTr�rdZquxr�)�datar)rrrrrrrPrGrGrH�test_send_request_post+s

�
�z(ClientNetworkTest.test_send_request_postcCsfdD]\}t��|j_|j|jjj_||j_|j|j�dd�ksBJ�|jjjj	dd|tj
tj
d�qdS)N)TF�GETr��rrr)rr%r)rr(rr+r�rrvr�)rErrGrGrH�test_send_request_verify_ssl5s�
�z.ClientNetworkTest.test_send_request_verify_sslcCs�t��|j_|jjddddid�|jjjjddtjtjddd�d�|jjddd	d
id�|jjjjddtjtjd	d
id�dS)Nrr�rr��rr�)�
User-AgentrrrZfoo2)	rr%r)rrrrvr�r�rPrGrGrH�test_send_request_user_agentBs 
�
�
�
�z.ClientNetworkTest.test_send_request_user_agentcCsHt��|j_|jjddddid�|jjjjtjtjtjtjdd�dS)Nrr�rr�r�-)rrr)rr%r)rrrrvr�rPrGrGrH�test_send_request_timeoutRs
�
�z+ClientNetworkTest.test_send_request_timeoutNcCs2t��}|dur||j_||j_|`|j��dSr�)rr%�closerar)rrv)rEZclose_exceptionZsessrGrGrH�test_del[szClientNetworkTest.test_delcCs|�t�dSr�)r�ReferenceErrorrPrGrGrH�test_del_erroresz ClientNetworkTest.test_del_errorzacme.client.requestscCsTtj|_tjj|j_t�tjj��|j�dd�Wd�n1sF0YdS)Nrr)	�requests�
exceptions�RequestExceptionrrarTrUr)r)rEZ
mock_requestsrGrGrH�test_requests_error_passthroughhsz1ClientNetworkTest.test_requests_error_passthroughc
Cs�z|j�dd�WnvtyF}zdt|�ks2J�WYd}~nLd}~0tjjy�}z(dt|�vstdt|�vstJ�WYd}~n
d}~00dS)Nrz&http://localhost:19123/nonexistent.txtz4Requesting localhost/nonexistent: Connection refusedz'Connection aborted.'z[WinError 10061])r)rr��strrr�ConnectionError)rE�y�zrGrGrH�test_urllib_errorps�z#ClientNetworkTest.test_urllib_error)N)r�r�r�r�rIr�r�r�r�r�r�r�r�rr`r�r�r�r�rrr
rrrrrrr"rGrGrGrHr��s8		





	


r�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd S)!�#ClientNetworkWithMockedResponseTestz<Tests for acme.client.ClientNetwork which mock out response.cs�tddd��_tjdtjd��_i�j_i�j_d�j_	tjdtj
d��_i�j_t���_t���_
tjj�_t�d�t�d�t�d�g�_�jdd��_�fdd	�}tj|d
��j_�_�j�j_tj�j
d��j_dS)N)rr�Tr�FsNoncesNonce2sNonce3csdd|vsJ�|d}|d}|dkr4|dkr4�j}n�j}�jrZ�jj�j����i|_ni|_|S)Nr�rr"r��
new_nonce_uri)�acmev1_nonce_responser(�available_noncesr)ZREPLAY_NONCE_HEADER�popr�r)�args�kwargs�methodrr(rPrGrH�send_request�s�z?ClientNetworkWithMockedResponseTest.setUp.<locals>.send_request)rarp)r
r)rr%r&r'r(rr�checkedr�r%�objZwrapped_objr�r�r2�	b64encode�
all_noncesr&rr+�check_responser�r�)rEr+rGrPrHrI�s,�


��
z)ClientNetworkWithMockedResponseTest.setUpcCs6|j|ksJ�|j|ksJ�|jjs(J�d|j_|jS)NT)r(r�rr,)rEr(r�rGrGrHr0�s
z2ClientNetworkWithMockedResponseTest.check_responsecCs4|j|jjdddd�ksJ�|jjddddd�dS)Nr�rdr�rr�)r%r)�headr+rvrPrGrGrH�	test_head�s
��z-ClientNetworkWithMockedResponseTest.test_headcCs4|j|jjdddd�ksJ�|jjddddd�dS)Nr$rdr�rr�)r(r)r1r+rvrPrGrGrH�test_head_v2�s
��z0ClientNetworkWithMockedResponseTest.test_head_v2cCs@|j|jjd|jdd�ksJ�|jjs*J�|jjdddd�dS)Nr�r�)r�rrr)r(r)r,r�r,r+rvrPrGrGrH�test_get�s
��z,ClientNetworkWithMockedResponseTest.test_getcCs4|jj|_|j|j�d|j�ks$J�|jjs0J�dS)Nr)r)ZJOSE_CONTENT_TYPEr�r(r*r-r,rPrGrGrH�test_post_no_content_type�s
z=ClientNetworkWithMockedResponseTest.test_post_no_content_typecCs�|j|jjd|j|jd�ks J�|jjs,J�|jj�|jt�	|j
���d�g|_t
�tj��&|jjd|j|jd�Wd�n1s�0Y|jj�|jt�	|j
���d�dS)Nrr�)r(r)r*r-r�r,r�rvr2r3r/r'r&rTrUrZMissingNoncer�rPrGrGrH�	test_post�s

��4�z-ClientNetworkWithMockedResponseTest.test_postcCsVdt�d�g|_t�tj��&|jjd|j	|j
d�Wd�n1sH0YdS)N�f�goodrr��r2r.r&rTrUrZBadNoncer)r*r-r�rPrGrGrH�test_post_wrong_initial_nonce�s
�zAClientNetworkWithMockedResponseTest.test_post_wrong_initial_noncecCsVt�d�dg|_t�tj��&|jjd|j	|j
d�Wd�n1sH0YdS)Nr8r7rr�r9rPrGrGrH�#test_post_wrong_post_response_nonce�s
�zGClientNetworkWithMockedResponseTest.test_post_wrong_post_response_noncecCsdt��}tj�d�|_||j_t�	tj��&|jj
d|j|jd�Wd�n1sV0YdS�NZbadNoncerr�)
rr%rr�r�rar)r�rTrUr*r-r��rEr0rGrGrH�test_post_failed_retry�s�z:ClientNetworkWithMockedResponseTest.test_post_failed_retrycCsjt��}tj�d�|jg|_||j_t	�
tj��&|jjd|j|j
d�Wd�n1s\0YdS)NZ	malformedrr�)rr%rr�r�r(rar)r�rTrUr*r-r�r=rGrGrH�test_post_not_retried�s
��z9ClientNetworkWithMockedResponseTest.test_post_not_retriedcCs@t��}tj�d�|jg|_|j|jjd|j	|j
d�ks<J�dSr<)rr%rr�r�r(rar)r*r-r�)rEZ	post_oncerGrGrH�test_post_successful_retry�s
�

�z>ClientNetworkWithMockedResponseTest.test_post_successful_retryc	Cs�tjj|j_|jj|jjfD]<}t�	tjj��|dd�Wd�q1sN0Yqt�	tjj��"|jj
d|jd�Wd�n1s�0YdS)Nrr)r-)rrrr+rar)r1r,rTrUr*r-)rEr*rGrGrH�$test_head_get_post_error_passthroughs*zHClientNetworkWithMockedResponseTest.test_head_get_post_error_passthroughcCs�tjdtjd�}t��|j_||jj_d|_t��}||j_t	�
tj��(|jj
d|j|jdd�Wd�n1sv0Y|jdks�J�dS)NFr�rr$�r�r�r")rr%r&ZSERVICE_UNAVAILABLEr)rr+r�r�rTrUrrir*r-r[)rEZbad_responser0rGrGrH�test_post_bad_nonce_heads
�$z<ClientNetworkWithMockedResponseTest.test_post_bad_nonce_headcCs d|_|jjd|jddd�dS)Nrr$rB)r�r)r*r-rPrGrGrH�test_new_nonce_uri_removedsz>ClientNetworkWithMockedResponseTest.test_new_nonce_uri_removedN)r�r�r�r�rIr0r2r3r4r5r6r:r;r>r?r@rArCrDrGrGrGrHr#�s +
	r#�__main__r")1r�r^rqZhttp.clientr;r&rN�sys�typingrZunittestrZjosepyr2rTrZacmerrrr�rZacme._internal.testsrr	Zacme.clientr
rZload_vectorr�rArCZJWKRSA�loadr-r�r�r9ZTestCaserZJSONDeSerializabler�r�r#r��exit�main�argv�__file__rGrGrGrH�<module>sP


�	j
e#

Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg