augeas_configurator_test.py
1 """Test for letsencrypt_apache.augeas_configurator.""" 2 import os 3 import shutil 4 import unittest 5 6 import mock 7 8 from letsencrypt import errors 9 10 from letsencrypt_apache.tests import util 11 12 13 class AugeasConfiguratorTest(util.ApacheTest): 14 """Test for Augeas Configurator base class.""" 15 16 def setUp(self): # pylint: disable=arguments-differ 17 super(AugeasConfiguratorTest, self).setUp() 18 19 self.config = util.get_apache_configurator( 20 self.config_path, self.config_dir, self.work_dir) 21 22 self.vh_truth = util.get_vh_truth( 23 self.temp_dir, "debian_apache_2_4/two_vhost_80") 24 25 def tearDown(self): 26 shutil.rmtree(self.config_dir) 27 shutil.rmtree(self.work_dir) 28 shutil.rmtree(self.temp_dir) 29 30 def test_bad_parse(self): 31 # pylint: disable=protected-access 32 self.config.parser._parse_file(os.path.join( 33 self.config.parser.root, "conf-available", "bad_conf_file.conf")) 34 self.assertRaises( 35 errors.PluginError, self.config.check_parsing_errors, "httpd.aug") 36 37 def test_bad_save(self): 38 mock_save = mock.Mock() 39 mock_save.side_effect = IOError 40 self.config.aug.save = mock_save 41 42 self.assertRaises(errors.PluginError, self.config.save) 43 44 def test_bad_save_checkpoint(self): 45 self.config.reverter.add_to_checkpoint = mock.Mock( 46 side_effect=errors.ReverterError) 47 self.config.parser.add_dir( 48 self.vh_truth[0].path, "Test", "bad_save_ckpt") 49 self.assertRaises(errors.PluginError, self.config.save) 50 51 def test_bad_save_finalize_checkpoint(self): 52 self.config.reverter.finalize_checkpoint = mock.Mock( 53 side_effect=errors.ReverterError) 54 self.config.parser.add_dir( 55 self.vh_truth[0].path, "Test", "bad_save_ckpt") 56 self.assertRaises(errors.PluginError, self.config.save, "Title") 57 58 def test_finalize_save(self): 59 mock_finalize = mock.Mock() 60 self.config.reverter = mock_finalize 61 self.config.save("Example Title") 62 63 self.assertTrue(mock_finalize.is_called) 64 65 def test_recovery_routine(self): 66 mock_load = mock.Mock() 67 self.config.aug.load = mock_load 68 69 self.config.recovery_routine() 70 self.assertEqual(mock_load.call_count, 1) 71 72 def test_recovery_routine_error(self): 73 self.config.reverter.recovery_routine = mock.Mock( 74 side_effect=errors.ReverterError) 75 76 self.assertRaises( 77 errors.PluginError, self.config.recovery_routine) 78 79 def test_revert_challenge_config(self): 80 mock_load = mock.Mock() 81 self.config.aug.load = mock_load 82 83 self.config.revert_challenge_config() 84 self.assertEqual(mock_load.call_count, 1) 85 86 def test_revert_challenge_config_error(self): 87 self.config.reverter.revert_temporary_config = mock.Mock( 88 side_effect=errors.ReverterError) 89 90 self.assertRaises( 91 errors.PluginError, self.config.revert_challenge_config) 92 93 def test_rollback_checkpoints(self): 94 mock_load = mock.Mock() 95 self.config.aug.load = mock_load 96 97 self.config.rollback_checkpoints() 98 self.assertEqual(mock_load.call_count, 1) 99 100 def test_rollback_error(self): 101 self.config.reverter.rollback_checkpoints = mock.Mock( 102 side_effect=errors.ReverterError) 103 self.assertRaises(errors.PluginError, self.config.rollback_checkpoints) 104 105 def test_view_config_changes(self): 106 self.config.view_config_changes() 107 108 def test_view_config_changes_error(self): 109 self.config.reverter.view_config_changes = mock.Mock( 110 side_effect=errors.ReverterError) 111 self.assertRaises(errors.PluginError, self.config.view_config_changes) 112 113 114 if __name__ == "__main__": 115 unittest.main() # pragma: no cover