def _test_registration(self): return ( DeferredContext(self._test_create_client()) .addCallback(partial(setattr, self, 'client')) .addCallback(lambda _: self._test_register()) .addCallback(tap( lambda reg1: self.assertEqual(reg1.body.contact, ()))) .addCallback(tap( lambda reg1: self._test_register( NewRegistration.from_data(email=u'*****@*****.**')) .addCallback(tap( lambda reg2: self.assertEqual(reg1.uri, reg2.uri))) .addCallback(lambda reg2: self.assertEqual( reg2.body.contact, (u'mailto:[email protected]',))))) .addCallback(self._test_agree_to_tos) .addCallback( lambda _: self._test_request_challenges(self.HOST)) .addCallback(partial(setattr, self, 'authzr')) .addCallback(lambda _: self._create_responder()) .addCallback(tap(lambda _: self._test_poll_pending(self.authzr))) .addCallback(self._test_answer_challenge) .addCallback(tap(lambda _: self._test_poll(self.authzr))) .addCallback(lambda stop_responding: stop_responding()) .addCallback(lambda _: self._test_issue(self.HOST)) .addCallback(self._test_chain) .addActionFinish())
def test_new_registration_from_data_with_eab(self): from acme.messages import NewRegistration, ExternalAccountBinding, Directory key = jose.jwk.JWKRSA(key=KEY.public_key()) kid = "kid-for-testing" hmac_key = "hmac-key-for-testing" directory = Directory({ 'newAccount': 'http://url/acme/new-account', }) eab = ExternalAccountBinding.from_data(key, kid, hmac_key, directory) reg = NewRegistration.from_data(email='*****@*****.**', external_account_binding=eab) self.assertEqual(reg.contact, ('mailto:[email protected]', )) self.assertEqual(sorted(reg.external_account_binding.keys()), sorted(['protected', 'payload', 'signature']))
def test_new_registration_from_data_with_eab(self): from acme.messages import NewRegistration, ExternalAccountBinding, Directory key = jose.jwk.JWKRSA(key=KEY.public_key()) kid = "kid-for-testing" hmac_key = "hmac-key-for-testing" directory = Directory({ 'newAccount': 'http://url/acme/new-account', }) eab = ExternalAccountBinding.from_data(key, kid, hmac_key, directory) reg = NewRegistration.from_data(email='*****@*****.**', external_account_binding=eab) self.assertEqual(reg.contact, ( 'mailto:[email protected]', )) self.assertEqual(sorted(reg.external_account_binding.keys()), sorted(['protected', 'payload', 'signature']))
async def get_or_create_account(self, email): msg = NewRegistration.from_data( email=email, terms_of_service_agreed=True ) return await self.client.get_or_create_account(msg)