mirror of
https://github.com/certbot/certbot.git
synced 2026-04-08 18:48:48 -04:00
Remove fopen argument in favor of mock.
This simplifies the actual production code and is a more standard approach in Python.
This commit is contained in:
parent
b37be61807
commit
b50a71ff4e
2 changed files with 29 additions and 45 deletions
|
|
@ -26,7 +26,6 @@ class Installer(plugins_common.Plugin):
|
|||
policy_config,
|
||||
postfix_dir,
|
||||
fixup=False,
|
||||
fopen=open,
|
||||
version=None):
|
||||
self.fixup = fixup
|
||||
self.postfix_dir = postfix_dir
|
||||
|
|
@ -38,7 +37,7 @@ class Installer(plugins_common.Plugin):
|
|||
self.additions = []
|
||||
self.deletions = []
|
||||
self.fn = self.find_postfix_cf()
|
||||
self.raw_cf = fopen(self.fn).readlines()
|
||||
self.raw_cf = open(self.fn).readlines()
|
||||
self.cf = map(string.strip, self.raw_cf)
|
||||
#self.cf = [line for line in cf if line and not line.startswith("#")]
|
||||
self.policy_lines = []
|
||||
|
|
@ -114,7 +113,7 @@ class Installer(plugins_common.Plugin):
|
|||
self.ensure_cf_var("smtp_tls_protocols", "!SSLv2, !SSLv3", [])
|
||||
self.ensure_cf_var("smtp_tls_mandatory_protocols", "!SSLv2, !SSLv3", [])
|
||||
|
||||
def maybe_add_config_lines(self, fopen=open):
|
||||
def maybe_add_config_lines(self):
|
||||
if not self.additions:
|
||||
return
|
||||
if self.fixup:
|
||||
|
|
@ -135,10 +134,10 @@ class Installer(plugins_common.Plugin):
|
|||
self.new_cf += line
|
||||
self.new_cf += sep + new_cf_lines
|
||||
|
||||
with fopen(self.fn, "w") as f:
|
||||
with open(self.fn, "w") as f:
|
||||
f.write(self.new_cf)
|
||||
|
||||
def set_domainwise_tls_policies(self, fopen=open):
|
||||
def set_domainwise_tls_policies(self):
|
||||
all_acceptable_mxs = self.policy_config.acceptable_mxs
|
||||
for address_domain, properties in all_acceptable_mxs.items():
|
||||
mx_list = properties.accept_mx_domains
|
||||
|
|
@ -164,7 +163,7 @@ class Installer(plugins_common.Plugin):
|
|||
)
|
||||
self.policy_lines.append(entry)
|
||||
|
||||
with fopen(self.policy_file, "w") as f:
|
||||
with open(self.policy_file, "w") as f:
|
||||
f.write("\n".join(self.policy_lines) + "\n")
|
||||
|
||||
### Let's Encrypt client IPlugin ###
|
||||
|
|
|
|||
|
|
@ -6,10 +6,12 @@ from __future__ import division
|
|||
from __future__ import print_function
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import io
|
||||
import logging
|
||||
import unittest
|
||||
|
||||
import mock
|
||||
import six
|
||||
|
||||
from certbot_postfix import installer
|
||||
|
||||
|
||||
|
|
@ -28,61 +30,44 @@ certs_only_config = (
|
|||
smtpd_tls_key_file = /etc/letsencrypt/live/www.fubard.org/privkey.pem""")
|
||||
|
||||
|
||||
def GetFakeOpen(fake_file_contents):
|
||||
fake_file = io.StringIO()
|
||||
# cast this to unicode for py2
|
||||
fake_file.write(fake_file_contents)
|
||||
fake_file.seek(0)
|
||||
|
||||
def FakeOpen(_):
|
||||
return fake_file
|
||||
|
||||
return FakeOpen
|
||||
|
||||
|
||||
class TestPostfixConfigGenerator(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.fopen_names_only_config = GetFakeOpen(names_only_config)
|
||||
self.fopen_certs_only_config = GetFakeOpen(certs_only_config)
|
||||
self.fopen_no_certs_only_config = self.fopen_names_only_config
|
||||
|
||||
#self.config = Config.Config()
|
||||
self.config = None
|
||||
self.postfix_dir = 'tests/'
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
def testGetAllNames(self):
|
||||
sorted_names = ['fubard.org', 'mail.fubard.org']
|
||||
postfix_config_gen = installer.Installer(
|
||||
self.config,
|
||||
self.postfix_dir,
|
||||
fixup=True,
|
||||
fopen=self.fopen_names_only_config
|
||||
)
|
||||
with mock.patch('certbot_postfix.installer.open') as mock_open:
|
||||
mock_open.return_value = six.StringIO(names_only_config)
|
||||
postfix_config_gen = installer.Installer(
|
||||
self.config,
|
||||
self.postfix_dir,
|
||||
fixup=True,
|
||||
)
|
||||
self.assertEqual(sorted_names, postfix_config_gen.get_all_names())
|
||||
|
||||
def testGetAllCertAndKeys(self):
|
||||
return_vals = [('/etc/letsencrypt/live/www.fubard.org/fullchain.pem',
|
||||
'/etc/letsencrypt/live/www.fubard.org/privkey.pem',
|
||||
'tests/main.cf'),]
|
||||
postfix_config_gen = installer.Installer(
|
||||
self.config,
|
||||
self.postfix_dir,
|
||||
fixup=True,
|
||||
fopen=self.fopen_certs_only_config
|
||||
)
|
||||
with mock.patch('certbot_postfix.installer.open') as mock_open:
|
||||
mock_open.return_value = six.StringIO(certs_only_config)
|
||||
postfix_config_gen = installer.Installer(
|
||||
self.config,
|
||||
self.postfix_dir,
|
||||
fixup=True,
|
||||
)
|
||||
self.assertEqual(return_vals, postfix_config_gen.get_all_certs_keys())
|
||||
|
||||
def testGetAllCertsAndKeys_With_None(self):
|
||||
postfix_config_gen = installer.Installer(
|
||||
self.config,
|
||||
self.postfix_dir,
|
||||
fixup=True,
|
||||
fopen=self.fopen_no_certs_only_config
|
||||
)
|
||||
with mock.patch('certbot_postfix.installer.open') as mock_open:
|
||||
mock_open.return_value = six.StringIO(names_only_config)
|
||||
postfix_config_gen = installer.Installer(
|
||||
self.config,
|
||||
self.postfix_dir,
|
||||
fixup=True,
|
||||
)
|
||||
self.assertEqual([], postfix_config_gen.get_all_certs_keys())
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue