mirror of
https://github.com/certbot/certbot.git
synced 2026-04-25 08:07:16 -04:00
Rewrap after errors rename, doc fixes.
This commit is contained in:
parent
cfa7e28106
commit
57f67c4109
24 changed files with 109 additions and 158 deletions
|
|
@ -321,7 +321,7 @@ class Client(object): # pylint: disable=too-many-instance-attributes
|
|||
:returns: Challenge Resource with updated body.
|
||||
:rtype: `.ChallengeResource`
|
||||
|
||||
:raises errors.UnexpectedUpdate:
|
||||
:raises .UnexpectedUpdate:
|
||||
|
||||
"""
|
||||
response = self._post(challb.uri, response)
|
||||
|
|
|
|||
|
|
@ -205,8 +205,7 @@ class Account(object):
|
|||
|
||||
:param str email: Email address
|
||||
|
||||
:raises letsencrypt.errors.Error: If invalid
|
||||
email address is given.
|
||||
:raises .errors.Error: If invalid email address is given.
|
||||
|
||||
"""
|
||||
if not email or cls.safe_email(email):
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ class AuthHandler(object):
|
|||
form of (`completed`, `failed`)
|
||||
:rtype: tuple
|
||||
|
||||
:raises AuthorizationError: If unable to retrieve all
|
||||
:raises .AuthorizationError: If unable to retrieve all
|
||||
authorizations
|
||||
|
||||
"""
|
||||
|
|
@ -296,8 +296,7 @@ class AuthHandler(object):
|
|||
:class:`letsencrypt.achallenges.Indexed`
|
||||
:rtype: tuple
|
||||
|
||||
:raises errors.Error: If Challenge type is not
|
||||
recognized
|
||||
:raises .errors.Error: if challenge type is not recognized
|
||||
|
||||
"""
|
||||
dv_chall = []
|
||||
|
|
@ -354,8 +353,7 @@ def challb_to_achall(challb, key, domain):
|
|||
|
||||
else:
|
||||
raise errors.Error(
|
||||
"Received unsupported challenge of type: %s",
|
||||
chall.typ)
|
||||
"Received unsupported challenge of type: %s", chall.typ)
|
||||
|
||||
|
||||
def gen_challenge_path(challbs, preferences, combinations):
|
||||
|
|
|
|||
|
|
@ -147,8 +147,7 @@ class Client(object):
|
|||
logging.warning(msg)
|
||||
raise errors.Error(msg)
|
||||
if self.account.regr is None:
|
||||
raise errors.Error(
|
||||
"Please register with the ACME server first.")
|
||||
raise errors.Error("Please register with the ACME server first.")
|
||||
|
||||
# Perform Challenges/Get Authorizations
|
||||
authzr = self.auth_handler.get_authorizations(domains)
|
||||
|
|
@ -339,8 +338,8 @@ class Client(object):
|
|||
:param redirect: If traffic should be forwarded from HTTP to HTTPS.
|
||||
:type redirect: bool or None
|
||||
|
||||
:raises letsencrypt.errors.Error: if
|
||||
no installer is specified in the client.
|
||||
:raises .errors.Error: if no installer is specified in the
|
||||
client.
|
||||
|
||||
"""
|
||||
if self.installer is None:
|
||||
|
|
@ -386,8 +385,7 @@ def validate_key_csr(privkey, csr=None):
|
|||
:param csr: CSR
|
||||
:type csr: :class:`letsencrypt.le_util.CSR`
|
||||
|
||||
:raises letsencrypt.errors.Error: when
|
||||
validation fails
|
||||
:raises .errors.Error: when validation fails
|
||||
|
||||
"""
|
||||
# TODO: Handle all of these problems appropriately
|
||||
|
|
@ -396,8 +394,7 @@ def validate_key_csr(privkey, csr=None):
|
|||
|
||||
# Key must be readable and valid.
|
||||
if privkey.pem and not crypto_util.valid_privkey(privkey.pem):
|
||||
raise errors.Error(
|
||||
"The provided key is not a valid key")
|
||||
raise errors.Error("The provided key is not a valid key")
|
||||
|
||||
if csr:
|
||||
if csr.form == "der":
|
||||
|
|
@ -406,16 +403,14 @@ def validate_key_csr(privkey, csr=None):
|
|||
|
||||
# If CSR is provided, it must be readable and valid.
|
||||
if csr.data and not crypto_util.valid_csr(csr.data):
|
||||
raise errors.Error(
|
||||
"The provided CSR is not a valid CSR")
|
||||
raise errors.Error("The provided CSR is not a valid CSR")
|
||||
|
||||
# If both CSR and key are provided, the key must be the same key used
|
||||
# in the CSR.
|
||||
if csr.data and privkey.pem:
|
||||
if not crypto_util.csr_matches_pubkey(
|
||||
csr.data, privkey.pem):
|
||||
raise errors.Error(
|
||||
"The key and CSR do not match")
|
||||
raise errors.Error("The key and CSR do not match")
|
||||
|
||||
|
||||
def determine_account(config):
|
||||
|
|
|
|||
|
|
@ -21,8 +21,7 @@ def ask(enhancement):
|
|||
:returns: True if feature is desired, False otherwise
|
||||
:rtype: bool
|
||||
|
||||
:raises letsencrypt.errors.Error: If
|
||||
the enhancement provided is not supported.
|
||||
:raises .errors.Error: if the enhancement provided is not supported
|
||||
|
||||
"""
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -68,10 +68,10 @@ class IPlugin(zope.interface.Interface):
|
|||
|
||||
Finish up any additional initialization.
|
||||
|
||||
:raises letsencrypt.errors.MisconfigurationError:
|
||||
when full initialization cannot be completed. Plugin will be
|
||||
displayed on a list of available plugins.
|
||||
:raises letsencrypt.errors.NoInstallationError:
|
||||
:raises .MisconfigurationError:
|
||||
when full initialization cannot be completed. Plugin will
|
||||
be displayed on a list of available plugins.
|
||||
:raises .NoInstallationError:
|
||||
when the necessary programs/files cannot be located. Plugin
|
||||
will NOT be displayed on a list of available plugins.
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ def make_or_verify_dir(directory, mode=0o755, uid=0):
|
|||
:param int mode: Directory mode.
|
||||
:param int uid: Directory owner.
|
||||
|
||||
:raises Error: if a directory already exists,
|
||||
:raises .errors.Error: if a directory already exists,
|
||||
but has wrong permissions or owner
|
||||
|
||||
:raises OSError: if invalid or inaccessible file names and
|
||||
|
|
|
|||
|
|
@ -102,8 +102,7 @@ class PluginEntryPoint(object):
|
|||
@property
|
||||
def misconfigured(self):
|
||||
"""Is plugin misconfigured?"""
|
||||
return isinstance(
|
||||
self._prepared, errors.MisconfigurationError)
|
||||
return isinstance(self._prepared, errors.MisconfigurationError)
|
||||
|
||||
@property
|
||||
def available(self):
|
||||
|
|
|
|||
|
|
@ -30,8 +30,7 @@ class Reverter(object):
|
|||
This function should reinstall the users original configuration files
|
||||
for all saves with temporary=True
|
||||
|
||||
:raises letsencrypt.errors.ReverterError: when
|
||||
unable to revert config
|
||||
:raises .ReverterError: when unable to revert config
|
||||
|
||||
"""
|
||||
if os.path.isdir(self.config.temp_checkpoint_dir):
|
||||
|
|
@ -41,8 +40,7 @@ class Reverter(object):
|
|||
# We have a partial or incomplete recovery
|
||||
logging.fatal("Incomplete or failed recovery for %s",
|
||||
self.config.temp_checkpoint_dir)
|
||||
raise errors.ReverterError(
|
||||
"Unable to revert temporary config")
|
||||
raise errors.ReverterError("Unable to revert temporary config")
|
||||
|
||||
def rollback_checkpoints(self, rollback=1):
|
||||
"""Revert 'rollback' number of configuration checkpoints.
|
||||
|
|
@ -50,9 +48,9 @@ class Reverter(object):
|
|||
:param int rollback: Number of checkpoints to reverse. A str num will be
|
||||
cast to an integer. So "2" is also acceptable.
|
||||
|
||||
:raises letsencrypt.errors.ReverterError: If
|
||||
there is a problem with the input or if the function is unable to
|
||||
correctly revert the configuration checkpoints.
|
||||
:raises .ReverterError:
|
||||
if there is a problem with the input or if the function is
|
||||
unable to correctly revert the configuration checkpoints
|
||||
|
||||
"""
|
||||
try:
|
||||
|
|
@ -161,9 +159,8 @@ class Reverter(object):
|
|||
:param set save_files: set of files to save
|
||||
:param str save_notes: notes about changes made during the save
|
||||
|
||||
:raises IOError: If unable to open cp_dir + FILEPATHS file
|
||||
:raises letsencrypt.errors.ReverterError: If
|
||||
unable to add checkpoint
|
||||
:raises IOError: if unable to open cp_dir + FILEPATHS file
|
||||
:raises .ReverterError: if unable to add checkpoint
|
||||
|
||||
"""
|
||||
le_util.make_or_verify_dir(
|
||||
|
|
|
|||
|
|
@ -89,8 +89,7 @@ class Revoker(object):
|
|||
# This should never happen given the assumptions of the
|
||||
# module. If it does, it is probably best to delete the
|
||||
# the offending key/cert. For now... just raise an exception
|
||||
raise errors.RevokerError(
|
||||
"%s - backup file is corrupted.")
|
||||
raise errors.RevokerError("%s - backup file is corrupted.")
|
||||
|
||||
if clean_pem == test_pem:
|
||||
certs.append(
|
||||
|
|
|
|||
|
|
@ -102,8 +102,8 @@ class AccountTest(unittest.TestCase):
|
|||
def test_from_email(self):
|
||||
from letsencrypt.account import Account
|
||||
|
||||
self.assertRaises(errors.Error,
|
||||
Account.from_email, self.config, "not_valid...email")
|
||||
self.assertRaises(
|
||||
errors.Error, Account.from_email, self.config, "not_valid...email")
|
||||
|
||||
def test_save_from_existing_account(self):
|
||||
from letsencrypt.account import Account
|
||||
|
|
@ -170,10 +170,8 @@ class AccountTest(unittest.TestCase):
|
|||
def test_failed_existing_account(self):
|
||||
from letsencrypt.account import Account
|
||||
|
||||
self.assertRaises(
|
||||
errors.Error,
|
||||
Account.from_existing_account,
|
||||
self.config, "non-existant@email.org")
|
||||
self.assertRaises(errors.Error, Account.from_existing_account,
|
||||
self.config, "non-existant@email.org")
|
||||
|
||||
class SafeEmailTest(unittest.TestCase):
|
||||
"""Test safe_email."""
|
||||
|
|
|
|||
|
|
@ -61,8 +61,8 @@ class ChallengeFactoryTest(unittest.TestCase):
|
|||
[mock.Mock(chall="chall", typ="unrecognized")],
|
||||
[messages.STATUS_PENDING])
|
||||
|
||||
self.assertRaises(errors.Error,
|
||||
self.handler._challenge_factory, "failure.com", [0])
|
||||
self.assertRaises(
|
||||
errors.Error, self.handler._challenge_factory, "failure.com", [0])
|
||||
|
||||
|
||||
class GetAuthorizationsTest(unittest.TestCase):
|
||||
|
|
@ -153,8 +153,8 @@ class GetAuthorizationsTest(unittest.TestCase):
|
|||
gen_dom_authzr, challs=acme_util.CHALLENGES)
|
||||
self.mock_dv_auth.perform.side_effect = errors.AuthorizationError
|
||||
|
||||
self.assertRaises(errors.AuthorizationError,
|
||||
self.handler.get_authorizations, ["0"])
|
||||
self.assertRaises(
|
||||
errors.AuthorizationError, self.handler.get_authorizations, ["0"])
|
||||
|
||||
def _validate_all(self, unused_1, unused_2):
|
||||
for dom in self.handler.authzr.keys():
|
||||
|
|
@ -218,9 +218,9 @@ class PollChallengesTest(unittest.TestCase):
|
|||
@mock.patch("letsencrypt.auth_handler.time")
|
||||
def test_poll_challenges_failure(self, unused_mock_time):
|
||||
self.mock_net.poll.side_effect = self._mock_poll_solve_one_invalid
|
||||
self.assertRaises(errors.AuthorizationError,
|
||||
self.handler._poll_challenges,
|
||||
self.chall_update, False)
|
||||
self.assertRaises(
|
||||
errors.AuthorizationError, self.handler._poll_challenges,
|
||||
self.chall_update, False)
|
||||
|
||||
@mock.patch("letsencrypt.auth_handler.time")
|
||||
def test_unable_to_find_challenge_status(self, unused_mock_time):
|
||||
|
|
@ -229,8 +229,8 @@ class PollChallengesTest(unittest.TestCase):
|
|||
self.chall_update[self.doms[0]].append(
|
||||
challb_to_achall(acme_util.RECOVERY_CONTACT_P, "key", self.doms[0]))
|
||||
self.assertRaises(
|
||||
errors.AuthorizationError,
|
||||
self.handler._poll_challenges, self.chall_update, False)
|
||||
errors.AuthorizationError, self.handler._poll_challenges,
|
||||
self.chall_update, False)
|
||||
|
||||
def test_verify_authzr_failure(self):
|
||||
self.assertRaises(
|
||||
|
|
@ -348,8 +348,8 @@ class GenChallengePathTest(unittest.TestCase):
|
|||
prefs = [challenges.DVSNI]
|
||||
combos = ((0, 1),)
|
||||
|
||||
self.assertRaises(errors.AuthorizationError,
|
||||
self._call, challbs, prefs, combos)
|
||||
self.assertRaises(
|
||||
errors.AuthorizationError, self._call, challbs, prefs, combos)
|
||||
|
||||
|
||||
class MutuallyExclusiveTest(unittest.TestCase):
|
||||
|
|
|
|||
|
|
@ -91,8 +91,8 @@ class CleanupTest(unittest.TestCase):
|
|||
token = achallenges.RecoveryToken(challb=None, domain="0")
|
||||
unexpected = achallenges.DVSNI(challb=None, domain="0", key="dummy_key")
|
||||
|
||||
self.assertRaises(errors.ContAuthError,
|
||||
self.auth.cleanup, [token, unexpected])
|
||||
self.assertRaises(
|
||||
errors.ContAuthError, self.auth.cleanup, [token, unexpected])
|
||||
|
||||
|
||||
def gen_client_resp(chall):
|
||||
|
|
|
|||
|
|
@ -27,8 +27,7 @@ class AskTest(unittest.TestCase):
|
|||
self.assertTrue(self._call("redirect"))
|
||||
|
||||
def test_key_error(self):
|
||||
self.assertRaises(
|
||||
errors.Error, self._call, "unknown_enhancement")
|
||||
self.assertRaises(errors.Error, self._call, "unknown_enhancement")
|
||||
|
||||
|
||||
class RedirectTest(unittest.TestCase):
|
||||
|
|
|
|||
|
|
@ -44,8 +44,7 @@ class MakeOrVerifyDirTest(unittest.TestCase):
|
|||
self.assertEqual(stat.S_IMODE(os.stat(self.path).st_mode), 0o400)
|
||||
|
||||
def test_existing_wrong_mode_fails(self):
|
||||
self.assertRaises(
|
||||
errors.Error, self._call, self.path, 0o600)
|
||||
self.assertRaises(errors.Error, self._call, self.path, 0o600)
|
||||
|
||||
def test_reraises_os_error(self):
|
||||
with mock.patch.object(os, 'makedirs') as makedirs:
|
||||
|
|
|
|||
|
|
@ -50,10 +50,9 @@ class ReverterCheckpointLocalTest(unittest.TestCase):
|
|||
def test_add_to_checkpoint_copy_failure(self):
|
||||
with mock.patch("letsencrypt.reverter.shutil.copy2") as mock_copy2:
|
||||
mock_copy2.side_effect = IOError("bad copy")
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.add_to_checkpoint,
|
||||
self.sets[0],
|
||||
"save1")
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.add_to_checkpoint,
|
||||
self.sets[0], "save1")
|
||||
|
||||
def test_checkpoint_conflict(self):
|
||||
"""Make sure that checkpoint errors are thrown appropriately."""
|
||||
|
|
@ -65,17 +64,14 @@ class ReverterCheckpointLocalTest(unittest.TestCase):
|
|||
# This shouldn't throw an error
|
||||
self.reverter.add_to_temp_checkpoint(self.sets[0], "save2")
|
||||
# Raise error
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.add_to_checkpoint,
|
||||
self.sets[2], "save3")
|
||||
self.assertRaises(errors.ReverterError, self.reverter.add_to_checkpoint,
|
||||
self.sets[2], "save3")
|
||||
# Should not cause an error
|
||||
self.reverter.add_to_checkpoint(self.sets[1], "save4")
|
||||
|
||||
# Check to make sure new files are also checked...
|
||||
self.assertRaises(
|
||||
errors.ReverterError,
|
||||
self.reverter.add_to_checkpoint,
|
||||
set([config3]), "invalid save")
|
||||
self.assertRaises(errors.ReverterError, self.reverter.add_to_checkpoint,
|
||||
set([config3]), "invalid save")
|
||||
|
||||
def test_multiple_saves_and_temp_revert(self):
|
||||
self.reverter.add_to_temp_checkpoint(self.sets[0], "save1")
|
||||
|
|
@ -120,15 +116,15 @@ class ReverterCheckpointLocalTest(unittest.TestCase):
|
|||
m_open = mock.mock_open()
|
||||
with mock.patch("letsencrypt.reverter.open", m_open, create=True):
|
||||
m_open.side_effect = OSError("bad open")
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.register_file_creation,
|
||||
True, self.config1)
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.register_file_creation,
|
||||
True, self.config1)
|
||||
|
||||
def test_bad_registration(self):
|
||||
# Made this mistake and want to make sure it doesn't happen again...
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.register_file_creation,
|
||||
"filepath")
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.register_file_creation,
|
||||
"filepath")
|
||||
|
||||
def test_recovery_routine_in_progress_failure(self):
|
||||
self.reverter.add_to_checkpoint(self.sets[0], "perm save")
|
||||
|
|
@ -136,8 +132,7 @@ class ReverterCheckpointLocalTest(unittest.TestCase):
|
|||
# pylint: disable=protected-access
|
||||
self.reverter._recover_checkpoint = mock.MagicMock(
|
||||
side_effect=errors.ReverterError)
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.recovery_routine)
|
||||
self.assertRaises(errors.ReverterError, self.reverter.recovery_routine)
|
||||
|
||||
def test_recover_checkpoint_revert_temp_failures(self):
|
||||
# pylint: disable=invalid-name
|
||||
|
|
@ -149,8 +144,8 @@ class ReverterCheckpointLocalTest(unittest.TestCase):
|
|||
|
||||
self.reverter.add_to_temp_checkpoint(self.sets[0], "config1 save")
|
||||
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.revert_temporary_config)
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.revert_temporary_config)
|
||||
|
||||
def test_recover_checkpoint_rollback_failure(self):
|
||||
mock_recover = mock.MagicMock(
|
||||
|
|
@ -161,24 +156,24 @@ class ReverterCheckpointLocalTest(unittest.TestCase):
|
|||
self.reverter.add_to_checkpoint(self.sets[0], "config1 save")
|
||||
self.reverter.finalize_checkpoint("Title")
|
||||
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.rollback_checkpoints, 1)
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.rollback_checkpoints, 1)
|
||||
|
||||
def test_recover_checkpoint_copy_failure(self):
|
||||
self.reverter.add_to_temp_checkpoint(self.sets[0], "save1")
|
||||
|
||||
with mock.patch("letsencrypt.reverter.shutil.copy2") as mock_copy2:
|
||||
mock_copy2.side_effect = OSError("bad copy")
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.revert_temporary_config)
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.revert_temporary_config)
|
||||
|
||||
def test_recover_checkpoint_rm_failure(self):
|
||||
self.reverter.add_to_temp_checkpoint(self.sets[0], "temp save")
|
||||
|
||||
with mock.patch("letsencrypt.reverter.shutil.rmtree") as mock_rmtree:
|
||||
mock_rmtree.side_effect = OSError("Cannot remove tree")
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.revert_temporary_config)
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.revert_temporary_config)
|
||||
|
||||
@mock.patch("letsencrypt.reverter.logging.warning")
|
||||
def test_recover_checkpoint_missing_new_files(self, mock_warn):
|
||||
|
|
@ -191,8 +186,8 @@ class ReverterCheckpointLocalTest(unittest.TestCase):
|
|||
def test_recover_checkpoint_remove_failure(self, mock_remove):
|
||||
self.reverter.register_file_creation(True, self.config1)
|
||||
mock_remove.side_effect = OSError("Can't remove")
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.revert_temporary_config)
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.revert_temporary_config)
|
||||
|
||||
def test_recovery_routine_temp_and_perm(self):
|
||||
# Register a new perm checkpoint file
|
||||
|
|
@ -251,14 +246,11 @@ class TestFullCheckpointsReverter(unittest.TestCase):
|
|||
|
||||
def test_rollback_improper_inputs(self):
|
||||
self.assertRaises(
|
||||
errors.ReverterError,
|
||||
self.reverter.rollback_checkpoints, "-1")
|
||||
errors.ReverterError, self.reverter.rollback_checkpoints, "-1")
|
||||
self.assertRaises(
|
||||
errors.ReverterError,
|
||||
self.reverter.rollback_checkpoints, -1000)
|
||||
errors.ReverterError, self.reverter.rollback_checkpoints, -1000)
|
||||
self.assertRaises(
|
||||
errors.ReverterError,
|
||||
self.reverter.rollback_checkpoints, "one")
|
||||
errors.ReverterError, self.reverter.rollback_checkpoints, "one")
|
||||
|
||||
def test_rollback_finalize_checkpoint_valid_inputs(self):
|
||||
# pylint: disable=invalid-name
|
||||
|
|
@ -299,9 +291,8 @@ class TestFullCheckpointsReverter(unittest.TestCase):
|
|||
self.reverter.add_to_checkpoint(self.sets[0], "perm save")
|
||||
mock_move.side_effect = OSError("cannot move")
|
||||
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.finalize_checkpoint,
|
||||
"Title")
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.finalize_checkpoint, "Title")
|
||||
|
||||
@mock.patch("letsencrypt.reverter.os.rename")
|
||||
def test_finalize_checkpoint_no_rename_directory(self, mock_rename):
|
||||
|
|
@ -309,9 +300,8 @@ class TestFullCheckpointsReverter(unittest.TestCase):
|
|||
self.reverter.add_to_checkpoint(self.sets[0], "perm save")
|
||||
mock_rename.side_effect = OSError
|
||||
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.finalize_checkpoint,
|
||||
"Title")
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.finalize_checkpoint, "Title")
|
||||
|
||||
@mock.patch("letsencrypt.reverter.logging")
|
||||
def test_rollback_too_many(self, mock_logging):
|
||||
|
|
@ -347,8 +337,8 @@ class TestFullCheckpointsReverter(unittest.TestCase):
|
|||
# It must just be clean checkpoints
|
||||
os.makedirs(os.path.join(self.config.backup_dir, "in_progress"))
|
||||
|
||||
self.assertRaises(errors.ReverterError,
|
||||
self.reverter.view_config_changes)
|
||||
self.assertRaises(
|
||||
errors.ReverterError, self.reverter.view_config_changes)
|
||||
|
||||
def _setup_three_checkpoints(self):
|
||||
"""Generate some finalized checkpoints."""
|
||||
|
|
|
|||
|
|
@ -80,14 +80,12 @@ class RevokerTest(RevokerBase):
|
|||
@mock.patch("letsencrypt.revoker.Crypto.PublicKey.RSA.importKey")
|
||||
def test_revoke_by_invalid_keys(self, mock_import):
|
||||
mock_import.side_effect = ValueError
|
||||
self.assertRaises(errors.RevokerError,
|
||||
self.revoker.revoke_from_key,
|
||||
self.key)
|
||||
self.assertRaises(
|
||||
errors.RevokerError, self.revoker.revoke_from_key, self.key)
|
||||
|
||||
mock_import.side_effect = [mock.Mock(), IndexError]
|
||||
self.assertRaises(errors.RevokerError,
|
||||
self.revoker.revoke_from_key,
|
||||
self.key)
|
||||
self.assertRaises(
|
||||
errors.RevokerError, self.revoker.revoke_from_key, self.key)
|
||||
|
||||
@mock.patch("letsencrypt.network.Network.revoke")
|
||||
@mock.patch("letsencrypt.revoker.revocation")
|
||||
|
|
@ -198,9 +196,8 @@ class RevokerTest(RevokerBase):
|
|||
def test_acme_revoke_failure(self, mock_crypto):
|
||||
# pylint: disable=protected-access
|
||||
mock_crypto.side_effect = ValueError
|
||||
self.assertRaises(errors.Error,
|
||||
self.revoker._acme_revoke,
|
||||
self.certs[0])
|
||||
self.assertRaises(
|
||||
errors.Error, self.revoker._acme_revoke, self.certs[0])
|
||||
|
||||
def test_remove_certs_from_list_bad_certs(self):
|
||||
# pylint: disable=protected-access
|
||||
|
|
@ -216,8 +213,7 @@ class RevokerTest(RevokerBase):
|
|||
new_cert.orig_key = Cert.PathStatus("false path", "not here")
|
||||
|
||||
self.assertRaises(errors.RevokerError,
|
||||
self.revoker._remove_certs_from_list,
|
||||
[new_cert])
|
||||
self.revoker._remove_certs_from_list, [new_cert])
|
||||
|
||||
def _backups_exist(self, row):
|
||||
# pylint: disable=protected-access
|
||||
|
|
|
|||
|
|
@ -674,8 +674,8 @@ class ApacheConfigurator(augeas_configurator.AugeasConfigurator):
|
|||
conflict, host_or_addrs = self._conflicting_host(ssl_vhost)
|
||||
if conflict:
|
||||
raise errors.ConfiguratorError(
|
||||
"Unable to create a redirection vhost "
|
||||
"- {}".format(host_or_addrs))
|
||||
"Unable to create a redirection vhost - {}".format(
|
||||
host_or_addrs))
|
||||
|
||||
redirect_addrs = host_or_addrs
|
||||
|
||||
|
|
@ -951,8 +951,7 @@ class ApacheConfigurator(augeas_configurator.AugeasConfigurator):
|
|||
:returns: version
|
||||
:rtype: tuple
|
||||
|
||||
:raises errors.ConfiguratorError:
|
||||
Unable to find Apache version
|
||||
:raises .ConfiguratorError: if unable to find Apache version
|
||||
|
||||
"""
|
||||
try:
|
||||
|
|
@ -969,8 +968,7 @@ class ApacheConfigurator(augeas_configurator.AugeasConfigurator):
|
|||
matches = regex.findall(text)
|
||||
|
||||
if len(matches) != 1:
|
||||
raise errors.ConfiguratorError(
|
||||
"Unable to find Apache version")
|
||||
raise errors.ConfiguratorError("Unable to find Apache version")
|
||||
|
||||
return tuple([int(i) for i in matches[0].split(".")])
|
||||
|
||||
|
|
@ -1079,8 +1077,7 @@ def mod_loaded(module, apache_ctl):
|
|||
except (OSError, ValueError):
|
||||
logging.error(
|
||||
"Error accessing %s for loaded modules!", apache_ctl)
|
||||
raise errors.ConfiguratorError(
|
||||
"Error accessing loaded modules")
|
||||
raise errors.ConfiguratorError("Error accessing loaded modules")
|
||||
# Small errors that do not impede
|
||||
if proc.returncode != 0:
|
||||
logging.warn("Error in checking loaded module list: %s", stderr)
|
||||
|
|
|
|||
|
|
@ -347,8 +347,7 @@ class ApacheParser(object):
|
|||
if os.path.isfile(os.path.join(self.root, name)):
|
||||
return os.path.join(self.root, name)
|
||||
|
||||
raise errors.NoInstallationError(
|
||||
"Could not find configuration root")
|
||||
raise errors.NoInstallationError("Could not find configuration root")
|
||||
|
||||
def _set_user_config_file(self, root):
|
||||
"""Set the appropriate user configuration file
|
||||
|
|
|
|||
|
|
@ -197,17 +197,14 @@ class TwoVhost80Test(util.ApacheTest):
|
|||
|
||||
mock_popen().communicate.return_value = (
|
||||
"Server Version: Apache (Debian)", "")
|
||||
self.assertRaises(
|
||||
errors.ConfiguratorError, self.config.get_version)
|
||||
self.assertRaises(errors.ConfiguratorError, self.config.get_version)
|
||||
|
||||
mock_popen().communicate.return_value = (
|
||||
"Server Version: Apache/2.3{0} Apache/2.4.7".format(os.linesep), "")
|
||||
self.assertRaises(
|
||||
errors.ConfiguratorError, self.config.get_version)
|
||||
self.assertRaises(errors.ConfiguratorError, self.config.get_version)
|
||||
|
||||
mock_popen.side_effect = OSError("Can't find program")
|
||||
self.assertRaises(
|
||||
errors.ConfiguratorError, self.config.get_version)
|
||||
self.assertRaises(errors.ConfiguratorError, self.config.get_version)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
|
|
@ -380,7 +380,7 @@ class NginxConfigurator(common.Plugin):
|
|||
:returns: version
|
||||
:rtype: tuple
|
||||
|
||||
:raises errors.ConfiguratorError:
|
||||
:raises .ConfiguratorError:
|
||||
Unable to find Nginx version or version is unsupported
|
||||
|
||||
"""
|
||||
|
|
@ -404,22 +404,19 @@ class NginxConfigurator(common.Plugin):
|
|||
ssl_matches = ssl_regex.findall(text)
|
||||
|
||||
if not version_matches:
|
||||
raise errors.ConfiguratorError(
|
||||
"Unable to find Nginx version")
|
||||
raise errors.ConfiguratorError("Unable to find Nginx version")
|
||||
if not ssl_matches:
|
||||
raise errors.ConfiguratorError(
|
||||
"Nginx build is missing SSL module (--with-http_ssl_module).")
|
||||
if not sni_matches:
|
||||
raise errors.ConfiguratorError(
|
||||
"Nginx build doesn't support SNI")
|
||||
raise errors.ConfiguratorError("Nginx build doesn't support SNI")
|
||||
|
||||
nginx_version = tuple([int(i) for i in version_matches[0].split(".")])
|
||||
|
||||
# nginx < 0.8.48 uses machine hostname as default server_name instead of
|
||||
# the empty string
|
||||
if nginx_version < (0, 8, 48):
|
||||
raise errors.ConfiguratorError(
|
||||
"Nginx version must be 0.8.48+")
|
||||
raise errors.ConfiguratorError("Nginx version must be 0.8.48+")
|
||||
|
||||
return nginx_version
|
||||
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ class NginxDvsni(common.Dvsni):
|
|||
:param list ll_addrs: list of lists of
|
||||
:class:`letsencrypt_nginx.obj.Addr` to apply
|
||||
|
||||
:raises errors.MisconfigurationError:
|
||||
:raises .MisconfigurationError:
|
||||
Unable to find a suitable HTTP block to include DVSNI hosts.
|
||||
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -45,10 +45,8 @@ class NginxConfiguratorTest(util.NginxTest):
|
|||
self.assertEqual([], self.config.supported_enhancements())
|
||||
|
||||
def test_enhance(self):
|
||||
self.assertRaises(errors.ConfiguratorError,
|
||||
self.config.enhance,
|
||||
'myhost',
|
||||
'redirect')
|
||||
self.assertRaises(
|
||||
errors.ConfiguratorError, self.config.enhance, 'myhost', 'redirect')
|
||||
|
||||
def test_get_chall_pref(self):
|
||||
self.assertEqual([challenges.DVSNI],
|
||||
|
|
@ -218,22 +216,19 @@ class NginxConfiguratorTest(util.NginxTest):
|
|||
" (based on LLVM 3.5svn)",
|
||||
"TLS SNI support enabled",
|
||||
"configure arguments: --with-http_ssl_module"]))
|
||||
self.assertRaises(errors.ConfiguratorError,
|
||||
self.config.get_version)
|
||||
self.assertRaises(errors.ConfiguratorError, self.config.get_version)
|
||||
|
||||
mock_popen().communicate.return_value = (
|
||||
"", "\n".join(["nginx version: nginx/1.4.2",
|
||||
"TLS SNI support enabled"]))
|
||||
self.assertRaises(errors.ConfiguratorError,
|
||||
self.config.get_version)
|
||||
self.assertRaises(errors.ConfiguratorError, self.config.get_version)
|
||||
|
||||
mock_popen().communicate.return_value = (
|
||||
"", "\n".join(["nginx version: nginx/1.4.2",
|
||||
"built by clang 6.0 (clang-600.0.56)"
|
||||
" (based on LLVM 3.5svn)",
|
||||
"configure arguments: --with-http_ssl_module"]))
|
||||
self.assertRaises(errors.ConfiguratorError,
|
||||
self.config.get_version)
|
||||
self.assertRaises(errors.ConfiguratorError, self.config.get_version)
|
||||
|
||||
mock_popen().communicate.return_value = (
|
||||
"", "\n".join(["nginx version: nginx/0.8.1",
|
||||
|
|
@ -241,12 +236,10 @@ class NginxConfiguratorTest(util.NginxTest):
|
|||
" (based on LLVM 3.5svn)",
|
||||
"TLS SNI support enabled",
|
||||
"configure arguments: --with-http_ssl_module"]))
|
||||
self.assertRaises(errors.ConfiguratorError,
|
||||
self.config.get_version)
|
||||
self.assertRaises(errors.ConfiguratorError, self.config.get_version)
|
||||
|
||||
mock_popen.side_effect = OSError("Can't find program")
|
||||
self.assertRaises(
|
||||
errors.ConfiguratorError, self.config.get_version)
|
||||
self.assertRaises(errors.ConfiguratorError, self.config.get_version)
|
||||
|
||||
@mock.patch("letsencrypt_nginx.configurator.subprocess.Popen")
|
||||
def test_nginx_restart(self, mock_popen):
|
||||
|
|
|
|||
|
|
@ -163,8 +163,8 @@ class DvsniPerformTest(util.NginxTest):
|
|||
root = self.sni.configurator.parser.loc["root"]
|
||||
self.sni.configurator.parser.parsed[root] = [['include', 'foo.conf']]
|
||||
# pylint: disable=protected-access
|
||||
self.assertRaises(errors.MisconfigurationError,
|
||||
self.sni._mod_config, [])
|
||||
self.assertRaises(
|
||||
errors.MisconfigurationError, self.sni._mod_config, [])
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main() # pragma: no cover
|
||||
|
|
|
|||
Loading…
Reference in a new issue