def test_rec_token2(self): token1 = achallenges.RecoveryToken(challb=None, domain="0") token2 = achallenges.RecoveryToken(challb=None, domain="1") self.auth.cleanup([token1, token2]) self.assertEqual(self.mock_cleanup.call_args_list, [mock.call(token1), mock.call(token2)])
def test_perform_not_stored(self, mock_input): mock_input().input.side_effect = [(0, "555"), (1, "000")] response = self.rec_token.perform( achallenges.RecoveryToken(challb=challenges.RecoveryToken(), domain="example5.com")) self.assertEqual(response, challenges.RecoveryTokenResponse(token="555")) response = self.rec_token.perform( achallenges.RecoveryToken(challb=challenges.RecoveryToken(), domain="example6.com")) self.assertTrue(response is None)
def challb_to_achall(challb, key, domain): """Converts a ChallengeBody object to an AnnotatedChallenge. :param challb: ChallengeBody :type challb: :class:`acme.messages.ChallengeBody` :param key: Key :type key: :class:`letsencrypt.le_util.Key` :param str domain: Domain of the challb :returns: Appropriate AnnotatedChallenge :rtype: :class:`letsencrypt.achallenges.AnnotatedChallenge` """ chall = challb.chall logger.info("%s challenge for %s", chall.typ, domain) if isinstance(chall, challenges.DVSNI): return achallenges.DVSNI(challb=challb, domain=domain, key=key) elif isinstance(chall, challenges.SimpleHTTP): return achallenges.SimpleHTTP(challb=challb, domain=domain, key=key) elif isinstance(chall, challenges.DNS): return achallenges.DNS(challb=challb, domain=domain) elif isinstance(chall, challenges.RecoveryToken): return achallenges.RecoveryToken(challb=challb, domain=domain) elif isinstance(chall, challenges.RecoveryContact): return achallenges.RecoveryContact(challb=challb, domain=domain) elif isinstance(chall, challenges.ProofOfPossession): return achallenges.ProofOfPossession(challb=challb, domain=domain) else: raise errors.Error("Received unsupported challenge of type: %s", chall.typ)
def test_unexpected(self): token = achallenges.RecoveryToken(challb=None, domain="0") unexpected = achallenges.DVSNI(challb=None, domain="0", key="dummy_key") self.assertRaises(errors.LetsEncryptContAuthError, self.auth.cleanup, [token, unexpected])
def test_perform_stored(self): self.rec_token.store_token("example4.com", 444) response = self.rec_token.perform( achallenges.RecoveryToken(challb=challenges.RecoveryToken(), domain="example4.com")) self.assertEqual(response, challenges.RecoveryTokenResponse(token="444"))
def test_cleanup(self): self.rec_token.store_token("example3.com", 333) self.assertFalse(self.rec_token.requires_human("example3.com")) self.rec_token.cleanup( achallenges.RecoveryToken(challb=challenges.RecoveryToken(), domain="example3.com")) self.assertTrue(self.rec_token.requires_human("example3.com")) # Shouldn't throw an error self.rec_token.cleanup( achallenges.RecoveryToken(challb=None, domain="example4.com")) # SHOULD throw an error (OSError other than nonexistent file) self.assertRaises( OSError, self.rec_token.cleanup, achallenges.RecoveryToken(challb=None, domain=("a" + "r" * 10000 + ".com")))
def test_rec_token5(self): tokens = [] for i in xrange(5): tokens.append(achallenges.RecoveryToken(challb=None, domain=str(i))) responses = self.auth.perform(tokens) self.assertEqual(len(responses), 5) for i in xrange(5): self.assertEqual(responses[i], "RecoveryToken%d" % i)
def test_pop_and_rec_token(self): achalls = [] for i in xrange(4): if i % 2 == 0: achalls.append(achallenges.RecoveryToken(challb=None, domain=str(i))) else: achalls.append(achallenges.ProofOfPossession(challb=None, domain=str(i))) responses = self.auth.perform(achalls) self.assertEqual(len(responses), 4) for i in xrange(4): if i % 2 == 0: self.assertEqual(responses[i], "RecoveryToken%d" % i) else: self.assertEqual(responses[i], "ProofOfPossession%d" % i)
def test_rec_token1(self): token = achallenges.RecoveryToken(challb=None, domain="0") responses = self.auth.perform([token]) self.assertEqual(responses, ["RecoveryToken0"])