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)rr subproblems) acme.messagesrr r r with_codeerrorjobj error_customr subproblemerror_with_subproblems empty_error)selfrr r r r$F/usr/lib/python3.9/site-packages/acme/_internal/tests/messages_test.pysetUps    zErrorTest.setUpcCs ddlm}|jdksJdS)Nrrz about:blank)rrrr#rr$r$r%test_default_typ(s zErrorTest.test_default_typcCs$ddlm}||dks JdS)Nrr{})rr from_jsonr'r$r$r%test_from_json_empty,s zErrorTest.test_from_json_emptycCs$ddlm}t||jdS)Nrr)rrhashr*rto_jsonr'r$r$r%test_from_json_hashable0s z!ErrorTest.test_from_json_hashablecCsFddlm}||j}dt|jks.J|j|jdksBJdS)Nrr)rrr*r!r-lenrr )r#rZ parsed_errorr$r$r%test_from_json_with_subproblems4s z)ErrorTest.test_from_json_with_subproblemscCs$d|jjksJ|jjdus JdS)Nz!The request message was malformed)r descriptionrr#r$r$r%test_description<szErrorTest.test_descriptioncCs@ddlm}d|jjksJ|jjdus,J|jdus.MockConstantPOSSIBLE_NAMESN)rGrHrIrMr__annotations__r$r$r$r% MockConstantys rOab)rrLrOconst_aconst_b)r#rLrOr$r$r%r&vs   zConstantTest.setUpcCs(d|jksJd|jks$JdS)NrPrQ)rRto_partial_jsonrSr3r$r$r%test_to_partial_jsonsz!ConstantTest.test_to_partial_jsoncCsR|j|jdksJttj|jdWdn1sD0YdS)NrPc)rRrOr*r<r=joseZDeserializationErrorr3r$r$r%test_from_jsonszConstantTest.test_from_jsoncCst|jddSNrP)r,rOr*r3r$r$r%r.sz$ConstantTest.test_from_json_hashablecCs(dt|jksJdt|jks$JdS)NzMockConstant(a)zMockConstant(b))reprrRrSr3r$r$r% test_reprszConstantTest.test_reprcCsJ|d}|j|jksJ|j|ks(J|j|jks8J|j|ksFJdSrY)rOrRrS)r#Z const_a_primer$r$r% test_equalitys  zConstantTest.test_equalityN) rGrHrIrJr&rUrXr.r[r\r$r$r$r%rKss rKc@sXeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ dS) DirectoryTestz"Tests for acme.messages.Directory.cCs0ddlm}|dd|jdddgdd |_dS) Nr Directoryregcerthttps://example.com/acme/termshttps://www.example.com/r)terms_of_servicewebsiteZcaa_identitiesnewRegZnewCertmeta)rr_ZMetadirr#r_r$r$r%r&s zDirectoryTest.setUpcCsddlm}|ddidSNrr^rr)rr_rjr$r$r%!test_init_wrong_key_value_successs z/DirectoryTest.test_init_wrong_key_value_successcCsd|jdksJdS)Nr`rg)rir3r$r$r% test_getitemszDirectoryTest.test_getitemcCs:tt|jdWdn1s,0YdSNr)r<r=KeyErrorri __getitem__r3r$r$r%!test_getitem_fails_with_key_errors z/DirectoryTest.test_getitem_fails_with_key_errorcCsd|jjksJdS)Nr`)rirgr3r$r$r% test_getattrszDirectoryTest.test_getattrcCs:tt|jdWdn1s,0YdSrn)r<r=AttributeErrorri __getattr__r3r$r$r%'test_getattr_fails_with_attribute_errors z5DirectoryTest.test_getattr_fails_with_attribute_errorcCs(|jdddddgddks$JdS)Nr`rarbrcr)ZtermsOfServicereZ caaIdentitiesrf)rir-r3r$r$r% test_to_jsonszDirectoryTest.test_to_jsoncCsddlm}|ddidSrk)rr_r*rjr$r$r%2test_from_json_deserialization_unknown_key_successs z@DirectoryTest.test_from_json_deserialization_unknown_key_successcCs6d}|jjD]}|dkr |jj|dk}q |s2JdS)NFrdrb)rirh)r#resultkr$r$r%test_iter_metas  zDirectoryTest.test_iter_metaN) rGrHrIrJr&rlrmrqrrrurvrwrzr$r$r$r%r]s  r]c@seZdZddZddZdS)ExternalAccountBindingTestcCs>ddlm}tjjtd|_d|_d|_ |ddi|_ dS)Nrr^keykid-for-testinghmac-key-for-testing newAccounthttp://url/acme/new-account) rr_rWjwkJWKRSAKEY public_keyr}kidhmac_keyrirjr$r$r%r&s z ExternalAccountBindingTest.setUpcCsTddlm}||j|j|j|j}t|dks4Jt| tgdksPJdS)NrExternalAccountBindingZ protectedZpayloadZ signature) rr from_datar}rrrir0sortedkeys)r#reabr$r$r%test_from_datas z)ExternalAccountBindingTest.test_from_dataN)rGrHrIr&rr$r$r$r%r{s r{c@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) Nr|)mailto:admin@foo.comtel:1234zhttps://letsencrypt.org/termsr Registration)r}contact agreement)rrr}r}) rWrrrrrrr`Zreg_nonejobj_tocopy jobj_fromr-)r#r}rrrr$r$r%r&s  zRegistrationTest.setUpcCs,ddlm}|jddd}|jdks(JdS)Nrr1234 admin@foo.com)Zphoneemail)rr)rrrr)r#rr`r$r$r%rs zRegistrationTest.test_from_datac Csddlm}ddlm}ddlm}tjjtd}d}d}|dd i}| ||||}|j d |d } | j d ksvJt | j t gd ksJdS)Nrr^rNewRegistrationr|r~rrrr)rexternal_account_binding)rr)rr_rrrWrrrrrrrrr) r#r_rrr}rrZ directoryrr`r$r$r%(test_new_registration_from_data_with_eabs     z9RegistrationTest.test_new_registration_from_data_with_eabcCsd|jjksJdS)N)r)r`Zphonesr3r$r$r% test_phonesszRegistrationTest.test_phonescCsd|jjksJdS)N)r)r`Zemailsr3r$r$r% test_emailsszRegistrationTest.test_emailscCs|j|jksJdSN)rr`rTr3r$r$r%rUsz%RegistrationTest.test_to_partial_jsoncCs&ddlm}|j||jks"JdSNrr)rrr`r*rr#rr$r$r%rXs zRegistrationTest.test_from_jsoncCs ddlm}t||jdSr)rrr,r*rrr$r$r%r.!s z(RegistrationTest.test_from_json_hashablecCs|ddlm}|}|dd}|jdks*J|jdks8Jd|vsHJd|vsXJd|vshJd|vsxJdS)Nrrr$)rr)rrrrTZfields_to_partial_json)r#rZ empty_new_regZnew_reg_with_contactr$r$r%test_default_not_transmitted%s  z-RegistrationTest.test_default_not_transmittedN) rGrHrIrJr&rrrrrUrXr.rr$r$r$r%rsrc@seZdZdZddZdS)UpdateRegistrationTestz+Tests for acme.messages.UpdateRegistration.cCs:ddlm}d}d|ks"J|||ks6JdS)Nr)UpdateRegistrationz{"resource": "reg"}r))rr json_dumpsZ json_loads)r#rZjstringr$r$r% test_empty6s z!UpdateRegistrationTest.test_emptyN)rGrHrIrJrr$r$r$r%r3src@s eZdZdZddZddZdS)RegistrationResourceTestz-Tests for acme.messages.RegistrationResource.cCs,ddlm}|tjjtjjtjjd|_dS)Nr)RegistrationResourcebodyurird)rrrsentinelrrrdregr)r#rr$r$r%r&@s   zRegistrationResourceTest.setUpcCs*|jtjjtjjtjjdks&JdS)Nr)rr-rrrrrdr3r$r$r%rUFs z-RegistrationResourceTest.test_to_partial_jsonNrGrHrIrJr&rUr$r$r$r%r=src@seZdZdZddZdS)ChallengeResourceTestz*Tests for acme.messages.ChallengeResource.cCs.ddlm}d|tjddddjks*JdS)Nr)ChallengeResource http://challbrz http://authz)rZ authzr_uri)rrrZ MagicMockr)r#rr$r$r%test_uriQs  zChallengeResourceTest.test_uriN)rGrHrIrJrr$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)N+evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oAtokenr ChallengeBodyr)STATUS_INVALIDZserverInternalz%Unable to communicate with DNS server)rr)rchallstatusrZdns)urlrrrrZinvalidrz)urn:ietf:params:acme:error:serverInternal)rrr)rDNSrW b64decoderrrrrrrchallbrrr)r#rrrrr$r$r%r&Zs.       zChallengeBodyTest.setUpcCs|jd|jjksJdS)Nr)rencoderr3r$r$r% test_encodeuszChallengeBodyTest.test_encodecCs|j|jksJdSr)rrrTr3r$r$r%rUxsz&ChallengeBodyTest.test_to_partial_jsoncCs&ddlm}|j||jks"JdSNrr)rrrr*rr#rr$r$r%rX{s z ChallengeBodyTest.test_from_jsoncCs ddlm}t||jdSr)rrr,r*rrr$r$r%r.s z)ChallengeBodyTest.test_from_json_hashablecCstd|jjksJdS)Nr)rWrrrr3r$r$r% test_proxys zChallengeBodyTest.test_proxyN) rGrHrIrJr&rrUrXr.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%rXs z AuthorizationTest.test_from_jsoncCs ddlm}t||jdSr)rrr,r*rrr$r$r%r.s z)AuthorizationTest.test_from_json_hashableN)rGrHrIrJr&rXr.r$r$r$r%rsrc@seZdZdZddZdS)AuthorizationResourceTestz.Tests for acme.messages.AuthorizationResource.cCs4ddlm}|tjjtjjd}t|tjs0JdS)NrAuthorizationResourcerr) rrrrrr isinstancerWJSONDeSerializable)r#rZauthzrr$r$r%test_json_de_serializables  z3AuthorizationResourceTest.test_json_de_serializableN)rGrHrIrJrr$r$r$r%rsrc@s eZdZdZddZddZdS)CertificateRequestTestz+Tests for acme.messages.CertificateRequest.cCsddlm}|td|_dS)NrCertificateRequest)Zcsr)rrCSRreqr#rr$r$r%r&s zCertificateRequestTest.setUpcCs<t|jtjsJddlm}|j||jks8JdS)Nrr)rrrWrrrr*r-rr$r$r%rs z0CertificateRequestTest.test_json_de_serializableNrGrHrIrJr&rr$r$r$r%rsrc@s eZdZdZddZddZdS)CertificateResourceTestz0Tests for acme.messages.CertificateResourceTest.cCs*ddlm}|ttjjdtjjd|_dS)NrCertificateResourcer$)rrZauthzrscert_chain_uri)rrCERTrrrrcertrr#rr$r$r%r&s   zCertificateResourceTest.setUpcCs<t|jtjsJddlm}|j||jks8JdS)Nrr)rrrWrrrr*r-rr$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)rGrHrIrJr&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.setUpcCs&|jtjjtjjddks"JdS)N)rrauthorizations)rr-rrrrr3r$r$r%rUs z&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|] }|jVqdSrrrr$r$r% rz>OrderResourceTest.test_json_de_serializable..) identifiersrrrz http://order1s test blob)rrZcsr_pemr)rrrrrrrrr r rtuplerZ assertEqualr*r-)r#rrrrrr r rrrrrZorderrr$r$r%rsF           z+OrderResourceTest.test_json_de_serializableN)rGrHrIrJr&rUrr$r$r$r%rsrc@s eZdZdZddZddZdS) NewOrderTestz!Tests for acme.messages.NewOrder.cCs ddlm}|tjjd|_dS)Nr)NewOrder)r)rrrrrr`)r#rr$r$r%r&s zNewOrderTest.setUpcCs|jdtjjiksJdS)Nr)r`r-rrrr3r$r$r%rUsz!NewOrderTest.test_to_partial_jsonNrr$r$r$r%rsrc@seZdZdZddZdS)JWSPayloadRFC8555CompliantzFTest for RFC8555 compliance of JWS generated from resources/challengescCs2ddlm}|}|jdd}|dks.JdS)Nr)NewAuthorization)indents{})rrrr)r#rZ new_orderrr$r$r%test_message_payloads z/JWSPayloadRFC8555Compliant.test_message_payloadN)rGrHrIrJrr$r$r$r%rsr__main__r/),rJ contextlibsystypingrZunittestrwarningsZjosepyrWr<ZacmerZacme._internal.testsrZload_comparable_certrZload_comparable_csrrZload_rsa_private_keyrZTestCaserrKr]r{rrrrrrrrrrrrrrGexitmainargv__file__r$r$r$r%s@       _&8P  1%   .