import errors at the top

This commit is contained in:
James Kasten
2015-01-26 01:07:50 -08:00
parent f9d968071e
commit ae4c160654
+24 -43
View File
@@ -7,6 +7,8 @@ import unittest
import mock import mock
from letsencrypt.client import errors
class ReverterCheckpointLocalTest(unittest.TestCase): class ReverterCheckpointLocalTest(unittest.TestCase):
# pylint: disable=too-many-instance-attributes # pylint: disable=too-many-instance-attributes
@@ -44,20 +46,16 @@ class ReverterCheckpointLocalTest(unittest.TestCase):
"{0}\n{1}\n".format(self.config1, self.config2)) "{0}\n{1}\n".format(self.config1, self.config2))
def test_add_to_checkpoint_copy_failure(self): def test_add_to_checkpoint_copy_failure(self):
from letsencrypt.client.errors import LetsEncryptReverterError
with mock.patch("letsencrypt.client.reverter." with mock.patch("letsencrypt.client.reverter."
"shutil.copy2") as mock_copy2: "shutil.copy2") as mock_copy2:
mock_copy2.side_effect = IOError("bad copy") mock_copy2.side_effect = IOError("bad copy")
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.add_to_checkpoint, self.reverter.add_to_checkpoint,
self.sets[0], self.sets[0],
"save1") "save1")
def test_checkpoint_conflict(self): def test_checkpoint_conflict(self):
"""Make sure that checkpoint errors are thrown appropriately.""" """Make sure that checkpoint errors are thrown appropriately."""
from letsencrypt.client.errors import LetsEncryptReverterError
config3 = os.path.join(self.dir1, "config3.txt") config3 = os.path.join(self.dir1, "config3.txt")
self.reverter.register_file_creation(True, config3) self.reverter.register_file_creation(True, config3)
update_file(config3, "This is a new file!") update_file(config3, "This is a new file!")
@@ -67,14 +65,14 @@ class ReverterCheckpointLocalTest(unittest.TestCase):
self.reverter.add_to_temp_checkpoint(self.sets[0], "save2") self.reverter.add_to_temp_checkpoint(self.sets[0], "save2")
# Raise error # Raise error
self.assertRaises( self.assertRaises(
LetsEncryptReverterError, self.reverter.add_to_checkpoint, errors.LetsEncryptReverterError, self.reverter.add_to_checkpoint,
self.sets[2], "save3") self.sets[2], "save3")
# Should not cause an error # Should not cause an error
self.reverter.add_to_checkpoint(self.sets[1], "save4") self.reverter.add_to_checkpoint(self.sets[1], "save4")
# Check to make sure new files are also checked... # Check to make sure new files are also checked...
self.assertRaises( self.assertRaises(
LetsEncryptReverterError, errors.LetsEncryptReverterError,
self.reverter.add_to_checkpoint, self.reverter.add_to_checkpoint,
set([config3]), "invalid save") set([config3]), "invalid save")
@@ -118,79 +116,70 @@ class ReverterCheckpointLocalTest(unittest.TestCase):
self.assertEqual(len(files), 1) self.assertEqual(len(files), 1)
def test_register_file_creation_write_error(self): def test_register_file_creation_write_error(self):
from letsencrypt.client.errors import LetsEncryptReverterError
m_open = mock.mock_open() m_open = mock.mock_open()
with mock.patch("letsencrypt.client.reverter.open", with mock.patch("letsencrypt.client.reverter.open",
m_open, create=True): m_open, create=True):
m_open.side_effect = OSError("bad open") m_open.side_effect = OSError("bad open")
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.register_file_creation, self.reverter.register_file_creation,
True, self.config1) True, self.config1)
def test_bad_registration(self): def test_bad_registration(self):
from letsencrypt.client.errors import LetsEncryptReverterError
# Made this mistake and want to make sure it doesn't happen again... # Made this mistake and want to make sure it doesn't happen again...
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.register_file_creation, self.reverter.register_file_creation,
"filepath") "filepath")
def test_recovery_routine_in_progress_failure(self): def test_recovery_routine_in_progress_failure(self):
from letsencrypt.client.errors import LetsEncryptReverterError
self.reverter.add_to_checkpoint(self.sets[0], "perm save") self.reverter.add_to_checkpoint(self.sets[0], "perm save")
# pylint: disable=protected-access # pylint: disable=protected-access
self.reverter._recover_checkpoint = mock.MagicMock( self.reverter._recover_checkpoint = mock.MagicMock(
side_effect=LetsEncryptReverterError) side_effect=errors.LetsEncryptReverterError)
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.recovery_routine) self.reverter.recovery_routine)
def test_recover_checkpoint_revert_temp_failures(self): def test_recover_checkpoint_revert_temp_failures(self):
# pylint: disable=invalid-name # pylint: disable=invalid-name
from letsencrypt.client.errors import LetsEncryptReverterError mock_recover = mock.MagicMock(
side_effect=errors.LetsEncryptReverterError("e"))
mock_recover = mock.MagicMock(side_effect=LetsEncryptReverterError("e"))
# pylint: disable=protected-access # pylint: disable=protected-access
self.reverter._recover_checkpoint = mock_recover self.reverter._recover_checkpoint = mock_recover
self.reverter.add_to_temp_checkpoint(self.sets[0], "config1 save") self.reverter.add_to_temp_checkpoint(self.sets[0], "config1 save")
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.revert_temporary_config) self.reverter.revert_temporary_config)
def test_recover_checkpoint_rollback_failure(self): def test_recover_checkpoint_rollback_failure(self):
from letsencrypt.client.errors import LetsEncryptReverterError mock_recover = mock.MagicMock(
side_effect=errors.LetsEncryptReverterError("e"))
mock_recover = mock.MagicMock(side_effect=LetsEncryptReverterError("e"))
# pylint: disable=protected-access # pylint: disable=protected-access
self.reverter._recover_checkpoint = mock_recover self.reverter._recover_checkpoint = mock_recover
self.reverter.add_to_checkpoint(self.sets[0], "config1 save") self.reverter.add_to_checkpoint(self.sets[0], "config1 save")
self.reverter.finalize_checkpoint("Title") self.reverter.finalize_checkpoint("Title")
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.rollback_checkpoints, 1) self.reverter.rollback_checkpoints, 1)
def test_recover_checkpoint_copy_failure(self): def test_recover_checkpoint_copy_failure(self):
from letsencrypt.client.errors import LetsEncryptReverterError
self.reverter.add_to_temp_checkpoint(self.sets[0], "save1") self.reverter.add_to_temp_checkpoint(self.sets[0], "save1")
with mock.patch("letsencrypt.client.reverter.shutil." with mock.patch("letsencrypt.client.reverter.shutil."
"copy2") as mock_copy2: "copy2") as mock_copy2:
mock_copy2.side_effect = OSError("bad copy") mock_copy2.side_effect = OSError("bad copy")
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.revert_temporary_config) self.reverter.revert_temporary_config)
def test_recover_checkpoint_rm_failure(self): def test_recover_checkpoint_rm_failure(self):
from letsencrypt.client.errors import LetsEncryptReverterError
self.reverter.add_to_temp_checkpoint(self.sets[0], "temp save") self.reverter.add_to_temp_checkpoint(self.sets[0], "temp save")
with mock.patch("letsencrypt.client.reverter.shutil." with mock.patch("letsencrypt.client.reverter.shutil."
"rmtree") as mock_rmtree: "rmtree") as mock_rmtree:
mock_rmtree.side_effect = OSError("Cannot remove tree") mock_rmtree.side_effect = OSError("Cannot remove tree")
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.revert_temporary_config) self.reverter.revert_temporary_config)
@mock.patch("letsencrypt.client.reverter.logging.warning") @mock.patch("letsencrypt.client.reverter.logging.warning")
@@ -202,11 +191,9 @@ class ReverterCheckpointLocalTest(unittest.TestCase):
@mock.patch("letsencrypt.client.reverter.os.remove") @mock.patch("letsencrypt.client.reverter.os.remove")
def test_recover_checkpoint_remove_failure(self, mock_remove): def test_recover_checkpoint_remove_failure(self, mock_remove):
from letsencrypt.client.errors import LetsEncryptReverterError
self.reverter.register_file_creation(True, self.config1) self.reverter.register_file_creation(True, self.config1)
mock_remove.side_effect = OSError("Can't remove") mock_remove.side_effect = OSError("Can't remove")
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.revert_temporary_config) self.reverter.revert_temporary_config)
def test_recovery_routine_temp_and_perm(self): def test_recovery_routine_temp_and_perm(self):
@@ -263,15 +250,14 @@ class TestFullCheckpointsReverter(unittest.TestCase):
shutil.rmtree(self.dir2) shutil.rmtree(self.dir2)
def test_rollback_improper_inputs(self): def test_rollback_improper_inputs(self):
from letsencrypt.client.errors import LetsEncryptReverterError
self.assertRaises( self.assertRaises(
LetsEncryptReverterError, errors.LetsEncryptReverterError,
self.reverter.rollback_checkpoints, "-1") self.reverter.rollback_checkpoints, "-1")
self.assertRaises( self.assertRaises(
LetsEncryptReverterError, errors.LetsEncryptReverterError,
self.reverter.rollback_checkpoints, -1000) self.reverter.rollback_checkpoints, -1000)
self.assertRaises( self.assertRaises(
LetsEncryptReverterError, errors.LetsEncryptReverterError,
self.reverter.rollback_checkpoints, "one") self.reverter.rollback_checkpoints, "one")
def test_rollback_finalize_checkpoint_valid_inputs(self): def test_rollback_finalize_checkpoint_valid_inputs(self):
@@ -311,24 +297,20 @@ class TestFullCheckpointsReverter(unittest.TestCase):
@mock.patch("letsencrypt.client.reverter.shutil.move") @mock.patch("letsencrypt.client.reverter.shutil.move")
def test_finalize_checkpoint_cannot_title(self, mock_move): def test_finalize_checkpoint_cannot_title(self, mock_move):
from letsencrypt.client.errors import LetsEncryptReverterError
self.reverter.add_to_checkpoint(self.sets[0], "perm save") self.reverter.add_to_checkpoint(self.sets[0], "perm save")
mock_move.side_effect = OSError("cannot move") mock_move.side_effect = OSError("cannot move")
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.finalize_checkpoint, self.reverter.finalize_checkpoint,
"Title") "Title")
@mock.patch("letsencrypt.client.reverter.os.rename") @mock.patch("letsencrypt.client.reverter.os.rename")
def test_finalize_checkpoint_no_rename_directory(self, mock_rename): def test_finalize_checkpoint_no_rename_directory(self, mock_rename):
# pylint: disable=invalid-name # pylint: disable=invalid-name
from letsencrypt.client.errors import LetsEncryptReverterError
self.reverter.add_to_checkpoint(self.sets[0], "perm save") self.reverter.add_to_checkpoint(self.sets[0], "perm save")
mock_rename.side_effect = OSError mock_rename.side_effect = OSError
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.finalize_checkpoint, self.reverter.finalize_checkpoint,
"Title") "Title")
@@ -357,12 +339,11 @@ class TestFullCheckpointsReverter(unittest.TestCase):
self.assertTrue(mock_logging.info.call_count > 0) self.assertTrue(mock_logging.info.call_count > 0)
def test_view_config_changes_bad_backups_dir(self): def test_view_config_changes_bad_backups_dir(self):
from letsencrypt.client.errors import LetsEncryptReverterError
# There shouldn't be any "in progess directories when this is called # There shouldn't be any "in progess directories when this is called
# It must just be clean checkpoints # It must just be clean checkpoints
os.makedirs(os.path.join(self.direc['backup'], "in_progress")) os.makedirs(os.path.join(self.direc['backup'], "in_progress"))
self.assertRaises(LetsEncryptReverterError, self.assertRaises(errors.LetsEncryptReverterError,
self.reverter.view_config_changes) self.reverter.view_config_changes)
def _setup_three_checkpoints(self): def _setup_three_checkpoints(self):