def test_perform_stored(self): self.rec_token.store_token("example4.com", 444) response = self.rec_token.perform( achallenges.RecoveryToken(chall=None, domain="example4.com")) self.assertEqual(response, challenges.RecoveryTokenResponse(token="444"))
def test_perform_not_stored(self, mock_input): mock_input().input.side_effect = [(0, "555"), (1, "000")] response = self.rec_token.perform( achallenges.RecoveryToken(chall=None, domain="example5.com")) self.assertEqual(response, challenges.RecoveryTokenResponse(token="555")) response = self.rec_token.perform( achallenges.RecoveryToken(chall=None, domain="example6.com")) self.assertTrue(response is None)
def perform(self, chall): """Perform the Recovery Token Challenge. :param chall: Recovery Token Challenge :type chall: :class:`letsencrypt.client.achallenges.RecoveryToken` :returns: response :rtype: dict """ token_fp = os.path.join(self.token_dir, chall.domain) if os.path.isfile(token_fp): with open(token_fp) as token_fd: return challenges.RecoveryTokenResponse(token=token_fd.read()) cancel, token = zope.component.getUtility( interfaces.IDisplay).input( "%s - Input Recovery Token: " % chall.domain) if cancel != 1: return challenges.RecoveryTokenResponse(token=token) return None
def setUp(self): self.responses = ( challenges.SimpleHTTPSResponse(path='Hf5GrX4Q7EBax9hc2jJnfw'), None, # null challenges.RecoveryTokenResponse(token='23029d88d9e123e'), ) self.contact = ("mailto:[email protected]", "tel:+12025551212") signature = other.Signature( alg=jose.RS256, jwk=jose.JWKRSA(key=KEY.publickey()), sig='-v\xd8\xc2\xa3\xba0\xd6\x92\x16\xb5.\xbe\xa1[\x04\xbe' '\x1b\xa1X\xd2)\x18\x94\x8f\xd7\xd0\xc0\xbbcI`W\xdf v' '\xe4\xed\xe8\x03J\xe8\xc8<?\xc8W\x94\x94cj(\xe7\xaa$' '\x92\xe9\x96\x11\xc2\xefx\x0bR', nonce='\xab?\x08o\xe6\x81$\x9f\xa1\xc9\x025\x1c\x1b\xa5+') from letsencrypt.acme.messages import AuthorizationRequest self.msg = AuthorizationRequest( session_id='aefoGaavieG9Wihuk2aufai3aeZ5EeW4', nonce='\xec\xd6\xf2oYH\xeb\x13\xd5#q\xe0\xdd\xa2\x92\xa9', responses=self.responses, signature=signature, contact=self.contact, ) self.jmsg_to = { 'type': 'authorizationRequest', 'sessionID': 'aefoGaavieG9Wihuk2aufai3aeZ5EeW4', 'nonce': '7Nbyb1lI6xPVI3Hg3aKSqQ', 'responses': self.responses, 'signature': signature, 'contact': self.contact, } self.jmsg_from = { 'type': 'authorizationRequest', 'sessionID': 'aefoGaavieG9Wihuk2aufai3aeZ5EeW4', 'nonce': '7Nbyb1lI6xPVI3Hg3aKSqQ', 'responses': [ None if response is None else response.fully_serialize() for response in self.responses ], 'signature': signature.fully_serialize(), # TODO: schema validation doesn't recognize tuples as # arrays :( 'contact': list(self.contact), }