mirror of
https://github.com/certbot/certbot.git
synced 2026-08-04 08:03:44 +02:00
Check an enhancement is supported before applying (fixes #1432).
This commit is contained in:
@@ -407,9 +407,10 @@ class Client(object):
|
|||||||
logger.warning("No config is specified.")
|
logger.warning("No config is specified.")
|
||||||
raise errors.Error("No config available")
|
raise errors.Error("No config available")
|
||||||
|
|
||||||
redirect = config.redirect
|
supported = self.installer.supported_enhancements()
|
||||||
hsts = config.hsts
|
redirect = config.redirect if "redirect" in supported else False
|
||||||
uir = config.uir # Upgrade Insecure Requests
|
hsts = config.hsts if "ensure-http-header" in supported else False
|
||||||
|
uir = config.uir if "ensure-http-header" in supported else False
|
||||||
|
|
||||||
if redirect is None:
|
if redirect is None:
|
||||||
redirect = enhancements.ask("redirect")
|
redirect = enhancements.ask("redirect")
|
||||||
|
|||||||
@@ -240,6 +240,7 @@ class ClientTest(unittest.TestCase):
|
|||||||
mock_enhancements.ask.return_value = True
|
mock_enhancements.ask.return_value = True
|
||||||
installer = mock.MagicMock()
|
installer = mock.MagicMock()
|
||||||
self.client.installer = installer
|
self.client.installer = installer
|
||||||
|
installer.supported_enhancements.return_value = ["redirect"]
|
||||||
|
|
||||||
self.client.enhance_config(["foo.bar"], config)
|
self.client.enhance_config(["foo.bar"], config)
|
||||||
installer.enhance.assert_called_once_with("foo.bar", "redirect", None)
|
installer.enhance.assert_called_once_with("foo.bar", "redirect", None)
|
||||||
@@ -255,6 +256,7 @@ class ClientTest(unittest.TestCase):
|
|||||||
mock_enhancements.ask.return_value = True
|
mock_enhancements.ask.return_value = True
|
||||||
installer = mock.MagicMock()
|
installer = mock.MagicMock()
|
||||||
self.client.installer = installer
|
self.client.installer = installer
|
||||||
|
installer.supported_enhancements.return_value = ["redirect", "ensure-http-header"]
|
||||||
|
|
||||||
config = ConfigHelper(redirect=True, hsts=False, uir=False)
|
config = ConfigHelper(redirect=True, hsts=False, uir=False)
|
||||||
self.client.enhance_config(["foo.bar"], config)
|
self.client.enhance_config(["foo.bar"], config)
|
||||||
@@ -273,6 +275,17 @@ class ClientTest(unittest.TestCase):
|
|||||||
self.assertEqual(installer.save.call_count, 3)
|
self.assertEqual(installer.save.call_count, 3)
|
||||||
self.assertEqual(installer.restart.call_count, 3)
|
self.assertEqual(installer.restart.call_count, 3)
|
||||||
|
|
||||||
|
@mock.patch("letsencrypt.client.enhancements")
|
||||||
|
def test_enhance_config_unsupported(self, mock_enhancements):
|
||||||
|
installer = mock.MagicMock()
|
||||||
|
self.client.installer = installer
|
||||||
|
installer.supported_enhancements.return_value = []
|
||||||
|
|
||||||
|
config = ConfigHelper(redirect=None, hsts=True, uir=True)
|
||||||
|
self.client.enhance_config(["foo.bar"], config)
|
||||||
|
installer.enhance.assert_not_called()
|
||||||
|
mock_enhancements.ask.assert_not_called()
|
||||||
|
|
||||||
def test_enhance_config_no_installer(self):
|
def test_enhance_config_no_installer(self):
|
||||||
config = ConfigHelper(redirect=True, hsts=False, uir=False)
|
config = ConfigHelper(redirect=True, hsts=False, uir=False)
|
||||||
self.assertRaises(errors.Error,
|
self.assertRaises(errors.Error,
|
||||||
@@ -285,6 +298,7 @@ class ClientTest(unittest.TestCase):
|
|||||||
mock_enhancements.ask.return_value = True
|
mock_enhancements.ask.return_value = True
|
||||||
installer = mock.MagicMock()
|
installer = mock.MagicMock()
|
||||||
self.client.installer = installer
|
self.client.installer = installer
|
||||||
|
installer.supported_enhancements.return_value = ["redirect"]
|
||||||
installer.enhance.side_effect = errors.PluginError
|
installer.enhance.side_effect = errors.PluginError
|
||||||
|
|
||||||
config = ConfigHelper(redirect=True, hsts=False, uir=False)
|
config = ConfigHelper(redirect=True, hsts=False, uir=False)
|
||||||
@@ -301,6 +315,7 @@ class ClientTest(unittest.TestCase):
|
|||||||
mock_enhancements.ask.return_value = True
|
mock_enhancements.ask.return_value = True
|
||||||
installer = mock.MagicMock()
|
installer = mock.MagicMock()
|
||||||
self.client.installer = installer
|
self.client.installer = installer
|
||||||
|
installer.supported_enhancements.return_value = ["redirect"]
|
||||||
installer.save.side_effect = errors.PluginError
|
installer.save.side_effect = errors.PluginError
|
||||||
|
|
||||||
config = ConfigHelper(redirect=True, hsts=False, uir=False)
|
config = ConfigHelper(redirect=True, hsts=False, uir=False)
|
||||||
@@ -317,6 +332,7 @@ class ClientTest(unittest.TestCase):
|
|||||||
mock_enhancements.ask.return_value = True
|
mock_enhancements.ask.return_value = True
|
||||||
installer = mock.MagicMock()
|
installer = mock.MagicMock()
|
||||||
self.client.installer = installer
|
self.client.installer = installer
|
||||||
|
installer.supported_enhancements.return_value = ["redirect"]
|
||||||
installer.restart.side_effect = [errors.PluginError, None]
|
installer.restart.side_effect = [errors.PluginError, None]
|
||||||
|
|
||||||
config = ConfigHelper(redirect=True, hsts=False, uir=False)
|
config = ConfigHelper(redirect=True, hsts=False, uir=False)
|
||||||
@@ -335,6 +351,7 @@ class ClientTest(unittest.TestCase):
|
|||||||
mock_enhancements.ask.return_value = True
|
mock_enhancements.ask.return_value = True
|
||||||
installer = mock.MagicMock()
|
installer = mock.MagicMock()
|
||||||
self.client.installer = installer
|
self.client.installer = installer
|
||||||
|
installer.supported_enhancements.return_value = ["redirect"]
|
||||||
installer.restart.side_effect = errors.PluginError
|
installer.restart.side_effect = errors.PluginError
|
||||||
installer.rollback_checkpoints.side_effect = errors.ReverterError
|
installer.rollback_checkpoints.side_effect = errors.ReverterError
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user