a }|gM@sdZddlZddlZddlmZddlZddlmZddlZddlZ ddl Z ddl m Z ddl mZedZedZed ZGd d d ejZGd d d ejZGdddejZGdddejZGdddejZGdddejZGdddejZGdddejZGdddejZGdddejZGdddejZ Gd d!d!ejZ!Gd"d#d#ejZ"Gd$d%d%ejZ#Gd&d'd'ejZ$Gd(d)d)ejZ%Gd*d+d+ejZ&e'd,kre(e )ej*d-de+gdS).zTests for acme.messages.N)Dict)mock) challenges) test_utilzcert.derzcsr.derzrsa512_key.pemc@speZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZdS) ErrorTestzTests for acme.messages.Error.cCsddlm}ddlm}ddlm}ddlm}|jdddd |_dd |dd |_|d d d|_||dd|_ |jdd d|j d|_ |jddd|j gd|_ ||_ dS)NrError) ERROR_PREFIX IdentifierIDENTIFIER_FQDN malformedfootitledetailrz some title)rrtypeZcustombar)typr example.comrvalueZcaa)rr identifier)rrZ subproblems) acme.messagesrr r r with_codeerrorjobj error_customrZ subproblemerror_with_subproblemsZ empty_error)selfrr r r r!F/usr/lib/python3.9/site-packages/acme/_internal/tests/messages_test.pysetUps    zErrorTest.setUpcCsddlm}dSNrrrrr rr!r!r"test_default_typ(s zErrorTest.test_default_typcCsddlm}dSr$r%r&r!r!r"test_from_json_empty,s zErrorTest.test_from_json_emptycCs$ddlm}t||jdSr$)rrhash from_jsonrto_jsonr&r!r!r"test_from_json_hashable0s z!ErrorTest.test_from_json_hashablecCs ddlm}||j}dSr$)rrr*rr+)r rZ parsed_errorr!r!r"test_from_json_with_subproblems4s z)ErrorTest.test_from_json_with_subproblemscCsdSNr!r r!r!r"test_description<szErrorTest.test_descriptioncCsddlm}dSr$r%r&r!r!r" test_code@s zErrorTest.test_codecCsddlm}ddlm}dS)Nrr is_acme_error)rrr3r rr3r!r!r"test_is_acme_errorFs  zErrorTest.test_is_acme_errorcCs,ddlm}ddlm}|jdddd}dS)Nrrr2ru عدالةrr)rrr3r)r rr3Z arabic_errorr!r!r"test_unicode_errorOs   zErrorTest.test_unicode_errorcCsPddlm}ddlm}tt|dWdn1sB0YdS)Nrrr2znot an ACME error code)rrr3pytestraises ValueErrorrr4r!r!r"test_with_codeVs   zErrorTest.test_with_codecCsdSr.r!r/r!r!r"test_str]szErrorTest.test_strc Cs@z ddWn.ty:}z|j|j_WYd}~n d}~00dS)Nr)ZeroDivisionError __traceback__r)r er!r!r"test_setting_tracebackhs   z ErrorTest.test_setting_tracebackN)__name__ __module__ __qualname____doc__r#r'r(r,r-r0r1r5r6r:r;r@r!r!r!r"rs  rc@s@eZdZdZddZddZddZdd Zd d Zd d Z dS) ConstantTestz"Tests for acme.messages._Constant.cCs:ddlm}Gddd|}||_|d|_|d|_dS)Nr) _Constantc@seZdZUiZeed<dS)z(ConstantTest.setUp..MockConstantPOSSIBLE_NAMESN)rArBrCrGr__annotations__r!r!r!r" MockConstantys rIab)rrFrIZconst_aZconst_b)r rFrIr!r!r"r#vs   zConstantTest.setUpcCsdSr.r!r/r!r!r"test_to_partial_jsonsz!ConstantTest.test_to_partial_jsoncCs<ttj|jdWdn1s.0YdS)Nc)r7r8joseZDeserializationErrorrIr*r/r!r!r"test_from_jsonszConstantTest.test_from_jsoncCst|jddSNrJ)r)rIr*r/r!r!r"r,sz$ConstantTest.test_from_json_hashablecCsdSr.r!r/r!r!r" test_reprszConstantTest.test_reprcCs|d}dSrP)rI)r Z const_a_primer!r!r" test_equalitys zConstantTest.test_equalityN) rArBrCrDr#rLrOr,rQrRr!r!r!r"rEss rEc@sXeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ dS) DirectoryTestz"Tests for acme.messages.Directory.cCs0ddlm}|dd|jdddgdd |_dS) Nr DirectoryregZcerthttps://example.com/acme/termszhttps://www.example.com/r)terms_of_serviceZwebsiteZcaa_identities)ZnewRegZnewCertmeta)rrUZMetadirr rUr!r!r"r#s zDirectoryTest.setUpcCsddlm}|ddidSNrrTrr)rrUr[r!r!r"!test_init_wrong_key_value_successs z/DirectoryTest.test_init_wrong_key_value_successcCsdSr.r!r/r!r!r" test_getitemszDirectoryTest.test_getitemcCs:tt|jdWdn1s,0YdSNr)r7r8KeyErrorrZ __getitem__r/r!r!r"!test_getitem_fails_with_key_errors z/DirectoryTest.test_getitem_fails_with_key_errorcCsdSr.r!r/r!r!r" test_getattrszDirectoryTest.test_getattrcCs:tt|jdWdn1s,0YdSr_)r7r8AttributeErrorrZ __getattr__r/r!r!r"'test_getattr_fails_with_attribute_errors z5DirectoryTest.test_getattr_fails_with_attribute_errorcCsdSr.r!r/r!r!r" test_to_jsonszDirectoryTest.test_to_jsoncCsddlm}|ddidSr\)rrUr*r[r!r!r"2test_from_json_deserialization_unknown_key_successs z@DirectoryTest.test_from_json_deserialization_unknown_key_successcCs.d}|jjD]}|dkr |jj|dk}q dS)NFrXrW)rZrY)r resultkr!r!r"test_iter_metas  zDirectoryTest.test_iter_metaN) rArBrCrDr#r]r^rbrcrfrgrhrkr!r!r!r"rSs  rSc@seZdZddZddZdS)ExternalAccountBindingTestcCs>ddlm}tjjtd|_d|_d|_ |ddi|_ dS)NrrTkeykid-for-testinghmac-key-for-testing newAccounthttp://url/acme/new-account) rrUrNjwkJWKRSAKEY public_keyrnkidhmac_keyrZr[r!r!r"r#s z ExternalAccountBindingTest.setUpcCs(ddlm}||j|j|j|j}dS)NrExternalAccountBinding)rrz from_datarnrwrxrZ)r rzeabr!r!r"test_from_datas z)ExternalAccountBindingTest.test_from_dataN)rArBrCr#r}r!r!r!r"rls rlc@sXeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ dS)RegistrationTestz%Tests for acme.messages.Registration.cCsjtjjtd}d}d}ddlm}||||d|_||_|||d|_ |j |_ | |j d<dS) Nrm)zmailto:admin@foo.comztel:1234zhttps://letsencrypt.org/termsr Registration)rncontact agreement)rrrnrn) rNrsrtrurvrrrVZreg_nonejobj_tocopy jobj_fromr+)r rnrrrr!r!r"r#s  zRegistrationTest.setUpcCsddlm}|jddd}dS)NrrZ1234 admin@foo.com)Zphoneemail)rrr{)r rrVr!r!r"r}s zRegistrationTest.test_from_datac Cslddlm}ddlm}ddlm}tjjtd}d}d}|dd i}| ||||}|j d |d } dS) NrrTryNewRegistrationrmrorprqrrr)rZexternal_account_binding) rrUrzrrNrsrtrurvr{) r rUrzrrnrwrxZ directoryr|rVr!r!r"(test_new_registration_from_data_with_eabs   z9RegistrationTest.test_new_registration_from_data_with_eabcCsdSr.r!r/r!r!r" test_phonesszRegistrationTest.test_phonescCsdSr.r!r/r!r!r" test_emailsszRegistrationTest.test_emailscCsdSr.r!r/r!r!r"rLsz%RegistrationTest.test_to_partial_jsoncCsddlm}dSNrr)rrr rr!r!r"rOs zRegistrationTest.test_from_jsoncCs ddlm}t||jdSr)rrr)r*rrr!r!r"r,!s z(RegistrationTest.test_from_json_hashablecCs ddlm}|}|dd}dS)Nrrr!)r)rr)r rZ empty_new_regZnew_reg_with_contactr!r!r"test_default_not_transmitted%s  z-RegistrationTest.test_default_not_transmittedN) rArBrCrDr#r}rrrrLrOr,rr!r!r!r"r~sr~c@seZdZdZddZdS)UpdateRegistrationTestz+Tests for acme.messages.UpdateRegistration.cCsddlm}d}dS)Nr)UpdateRegistrationz{"resource": "reg"})rr)r rZjstringr!r!r" test_empty6s z!UpdateRegistrationTest.test_emptyN)rArBrCrDrr!r!r!r"r3src@s eZdZdZddZddZdS)RegistrationResourceTestz-Tests for acme.messages.RegistrationResource.cCs,ddlm}|tjjtjjtjjd|_dS)Nr)RegistrationResource)bodyurirX)rrrsentinelrrrXregr)r rr!r!r"r#@s   zRegistrationResourceTest.setUpcCsdSr.r!r/r!r!r"rLFsz-RegistrationResourceTest.test_to_partial_jsonNrArBrCrDr#rLr!r!r!r"r=src@seZdZdZddZdS)ChallengeResourceTestz*Tests for acme.messages.ChallengeResource.cCsddlm}dS)Nr)ChallengeResource)rr)r rr!r!r"test_uriQs zChallengeResourceTest.test_uriN)rArBrCrDrr!r!r!r"rNsrc@s@eZdZdZddZddZddZdd Zd d Zd d Z dS)ChallengeBodyTestz&Tests for acme.messages.ChallengeBody.cCstjtdd|_ddlm}ddlm}ddlm}||_ |j ddd }|d |j|j |d |_ d |j d d|d |_ |j |_d|jd<ddd|jd<dS)Nz+evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oAtokenr ChallengeBodyr)STATUS_INVALIDZserverInternalz%Unable to communicate with DNS server)rz http://challb)rchallstatusrZdns)urlrrrrZinvalidrz)urn:ietf:params:acme:error:serverInternal)rrr)rDNSrNZ b64decoderrrrrrrchallbrrr)r rrrrr!r!r"r#Zs.       zChallengeBodyTest.setUpcCsdSr.r!r/r!r!r" test_encodeuszChallengeBodyTest.test_encodecCsdSr.r!r/r!r!r"rLxsz&ChallengeBodyTest.test_to_partial_jsoncCsddlm}dSNrr)rrr rr!r!r"rO{s z ChallengeBodyTest.test_from_jsoncCs ddlm}t||jdSr)rrr)r*rrr!r!r"r,s z)ChallengeBodyTest.test_from_json_hashablecCsdSr.r!r/r!r!r" test_proxyszChallengeBodyTest.test_proxyN) rArBrCrDr#rrLrOr,rr!r!r!r"rWsrc@s(eZdZdZddZddZddZdS) AuthorizationTestz&Tests for acme.messages.Authorization.cCsddlm}ddlm}|d|tjddd|d|tjd ddf|_dd lm}dd lm}dd lm }||d d}|||jd|_ | dd|jDd|_ dS)Nrr) STATUS_VALIDhttp://challb1IlirfxKKXAsHtmzK29Pj8Arrrrhttp://challb2DGyRejmCefe7v4NfDGDKfA Authorizationr r rrrrcSsg|] }|qSr!)r+.0rr!r!r" z+AuthorizationTest.setUp..) rrrrHTTP01rchallbsrr r authzr+r)r rrrr r rr!r!r"r#s,       zAuthorizationTest.setUpcCsddlm}||jdSNrr)rrr*rr rr!r!r"rOs z AuthorizationTest.test_from_jsoncCs ddlm}t||jdSr)rrr)r*rrr!r!r"r,s z)AuthorizationTest.test_from_json_hashableN)rArBrCrDr#rOr,r!r!r!r"rsrc@seZdZdZddZdS)AuthorizationResourceTestz.Tests for acme.messages.AuthorizationResource.cCs$ddlm}|tjjtjjd}dS)NrAuthorizationResourcerr)rrrrrr)r rZauthzrr!r!r"test_json_de_serializables  z3AuthorizationResourceTest.test_json_de_serializableN)rArBrCrDrr!r!r!r"rsrc@s eZdZdZddZddZdS)CertificateRequestTestz+Tests for acme.messages.CertificateRequest.cCsddlm}|td|_dS)NrCertificateRequest)Zcsr)rrCSRZreqr rr!r!r"r#s zCertificateRequestTest.setUpcCsddlm}dS)Nrr)rrrr!r!r"rs z0CertificateRequestTest.test_json_de_serializableNrArBrCrDr#rr!r!r!r"rsrc@s eZdZdZddZddZdS)CertificateResourceTestz0Tests for acme.messages.CertificateResourceTest.cCs*ddlm}|ttjjdtjjd|_dS)NrCertificateResourcer!)rrZauthzrscert_chain_uri)rrCERTrrrrZcertrr rr!r!r"r#s   zCertificateResourceTest.setUpcCsddlm}dS)Nrr)rrrr!r!r"rs z1CertificateResourceTest.test_json_de_serializableNrr!r!r!r"rsrc@s eZdZdZddZddZdS)RevocationTestz'Tests for acme.messages.RevocationTest.cCsddlm}|td|_dS)Nr Revocation)Z certificate)rrrrevr rr!r!r"r#s zRevocationTest.setUpcCs$ddlm}t||jdS)Nrr)rrr)r*rr+rr!r!r"r,s z&RevocationTest.test_from_json_hashableN)rArBrCrDr#r,r!r!r!r"rsrc@s(eZdZdZddZddZddZdS) OrderResourceTestz&Tests for acme.messages.OrderResource.cCs&ddlm}|tjjtjjd|_dS)Nr OrderResource)rr)rrrrrrr)r rr!r!r"r#s  zOrderResourceTest.setUpcCsdSr.r!r/r!r!r"rLsz&OrderResourceTest.test_to_partial_jsoncCsddlm}ddlm}|d|tjddd|d|tjd ddf}dd lm}dd lm}dd lm}dd lm }||dd}|d|||dd} ddlm } | |f|t dd|Dd} ddlm } | d| d| fd} | | | | dS)Nrr)STATUS_PENDINGrrrrrrrrr r rrz http://authz1rr)Ordercss|] }|jVqdSr.)rrr!r!r" rz>OrderResourceTest.test_json_de_serializable..) identifiersrauthorizationsrz http://order1s test blob)rrZcsr_pemr)rrrrrrrrr r rtuplerZ assertEqualr*r+)r rrrrrr r rrrrrZorderrr!r!r"rsF           z+OrderResourceTest.test_json_de_serializableN)rArBrCrDr#rLrr!r!r!r"rsrc@s eZdZdZddZddZdS) NewOrderTestz!Tests for acme.messages.NewOrder.cCs ddlm}|tjjd|_dS)Nr)NewOrder)r)rrrrrrV)r rr!r!r"r#s zNewOrderTest.setUpcCsdSr.r!r/r!r!r"rLsz!NewOrderTest.test_to_partial_jsonNrr!r!r!r"rsrc@seZdZdZddZdS)JWSPayloadRFC8555CompliantzFTest for RFC8555 compliance of JWS generated from resources/challengescCs&ddlm}|}|jdd}dS)Nr)NewAuthorization)indent)rrZ json_dumpsencode)r rZ new_orderrr!r!r"test_message_payloads z/JWSPayloadRFC8555Compliant.test_message_payloadN)rArBrCrDrr!r!r!r"rsr__main__r<),rD contextlibsystypingrZunittestrwarningsZjosepyrNr7ZacmerZacme._internal.testsrZload_comparable_certrZload_comparable_csrrZload_rsa_private_keyruZTestCaserrErSrlr~rrrrrrrrrrrrrAexitmainargv__file__r!r!r!r"s@       _&8P  1%   .