/ letsencrypt-apache / letsencrypt_apache / tests / augeas_configurator_test.py
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