mirror of
https://github.com/certbot/certbot.git
synced 2026-05-28 04:34:11 -04:00
* Use josepy instead of acme.jose. (#5203)
* Parse variables without whitespace separator correctly in CentOS family of distributions (#5318)
* Pin josepy in letsencrypt-auto (#5321)
* pin josepy in le-auto
* Put pinned versions in sorted order
* Pin dependencies in oldest tests (#5316)
* Add tools/merge_requirements.py
* Revert "Fix oldest tests by pinning Google DNS deps (#5000)"
This reverts commit f68fba2be2.
* Add tools/oldest_constraints.txt
* Remove oldest constraints from tox.ini
* Rename dev constraints file
* Update tools/pip_install.sh
* Update install_and_test.sh
* Fix pip_install.sh
* Don't cat when you can cp
* Add ng-httpsclient to dev constraints for oldest tests
* Bump tested setuptools version
* Update dev_constraints comment
* Better document oldest dependencies
* test against oldest versions we say we require
* Update dev constraints
* Properly handle empty lines
* Update constraints gen in pip_install
* Remove duplicated zope.component
* Reduce pyasn1-modules dependency
* Remove blank line
* pin back google-api-python-client
* pin back uritemplate
* pin josepy for oldest tests
* Undo changes to install_and_test.sh
* Update install_and_test.sh description
* use split instead of partition
* More pip dependency resolution workarounds (#5339)
* remove pyopenssl and six deps
* remove outdated tox.ini dep requirement
* Fix auto_tests on systems with new bootstrappers (#5348)
* Fix pytest on macOS in Travis (#5360)
* Add tools/pytest.sh
* pass TRAVIS through in tox.ini
* Use tools/pytest.sh to run pytest
* Add quiet to pytest.ini
* ignore pytest cache
* print as a string (#5359)
* Use apache2ctl modules for Gentoo systems. (#5349)
* Do not call Apache binary for module reset in cleanup()
* Use apache2ctl modules for Gentoo
* Broader git ignore for pytest cache files (#5361)
Make gitignore take pytest cache directories in to account, even if
they reside in subdirectories.
If pytest is run for a certain module, ie. `pytest certbot-apache` the
cache directory is created under `certbot-apache` directory.
* Fix letsencrypt-auto name and long forms of -n (#5375)
* Deprecate Python2.6 by using Python3 on CentOS/RHEL 6 (#5329)
* If there's no python or there's only python2.6 on red hat systems, install python3
* Always check for python2.6
* address style, documentation, nits
* factor out all initialization code
* fix up python version return value when no python installed
* add no python error and exit
* document DeterminePythonVersion parameters
* build letsencrypt-auto
* close brace
* build leauto
* fix syntax errors
* set USE_PYTHON_3 for all cases
* rip out NOCRASH
* replace NOCRASH, update LE_PYTHON set logic
* use built-in venv for py3
* switch to LE_PYTHON not affecting bootstrap selection and not overwriting LE_PYTHON
* python3ify fetch.py
* get fetch.py working with python2 and 3
* don't verify server certificates in fetch.py HttpsGetter
* Use SSLContext and an environment variable so that our tests continue to never verify server certificates.
* typo
* build
* remove commented out code
* address review comments
* add documentation for YES_FLAG and QUIET_FLAG
* Add tests to centos6 Dockerfile to make sure we install python3 if and only if appropriate to do so.
* Allow non-interactive revocation without deleting certificates (#5386)
* Add --delete-after-revoke flags
* Use delete_after_revoke value
* Add delete_after_revoke unit tests
* Add integration tests for delete-after-revoke.
* Have letsencrypt-auto do a real upgrade in leauto-upgrades option 2 (#5390)
* Make leauto_upgrades do a real upgrade
* Cleanup vars and output
* Sleep until the server is ready
* add simple_http_server.py
* Use a randomly assigned port
* s/realpath/readlink
* wait for server before getting port
* s/localhost/all interfaces
* update Apache ciphersuites (#5383)
* Fix macOS builds for Python2.7 in Travis (#5378)
* Add OSX Python2 tests
* Make sure python2 is originating from homebrew on macOS
* Upgrade the already installed python2 instead of trying to reinstall
125 lines
5 KiB
Python
125 lines
5 KiB
Python
"""Test for certbot_apache.configurator for Centos overrides"""
|
|
import os
|
|
import unittest
|
|
|
|
import mock
|
|
|
|
from certbot_apache import obj
|
|
from certbot_apache import override_centos
|
|
from certbot_apache.tests import util
|
|
|
|
def get_vh_truth(temp_dir, config_name):
|
|
"""Return the ground truth for the specified directory."""
|
|
prefix = os.path.join(
|
|
temp_dir, config_name, "httpd/conf.d")
|
|
|
|
aug_pre = "/files" + prefix
|
|
vh_truth = [
|
|
obj.VirtualHost(
|
|
os.path.join(prefix, "centos.example.com.conf"),
|
|
os.path.join(aug_pre, "centos.example.com.conf/VirtualHost"),
|
|
set([obj.Addr.fromstring("*:80")]),
|
|
False, True, "centos.example.com"),
|
|
obj.VirtualHost(
|
|
os.path.join(prefix, "ssl.conf"),
|
|
os.path.join(aug_pre, "ssl.conf/VirtualHost"),
|
|
set([obj.Addr.fromstring("_default_:443")]),
|
|
True, True, None)
|
|
]
|
|
return vh_truth
|
|
|
|
class MultipleVhostsTestCentOS(util.ApacheTest):
|
|
"""Multiple vhost tests for CentOS / RHEL family of distros"""
|
|
|
|
_multiprocess_can_split_ = True
|
|
|
|
def setUp(self): # pylint: disable=arguments-differ
|
|
test_dir = "centos7_apache/apache"
|
|
config_root = "centos7_apache/apache/httpd"
|
|
vhost_root = "centos7_apache/apache/httpd/conf.d"
|
|
super(MultipleVhostsTestCentOS, self).setUp(test_dir=test_dir,
|
|
config_root=config_root,
|
|
vhost_root=vhost_root)
|
|
|
|
self.config = util.get_apache_configurator(
|
|
self.config_path, self.vhost_path, self.config_dir, self.work_dir,
|
|
os_info="centos")
|
|
self.vh_truth = get_vh_truth(
|
|
self.temp_dir, "centos7_apache/apache")
|
|
|
|
def test_get_parser(self):
|
|
self.assertTrue(isinstance(self.config.parser,
|
|
override_centos.CentOSParser))
|
|
|
|
@mock.patch("certbot_apache.parser.ApacheParser._get_runtime_cfg")
|
|
def test_opportunistic_httpd_runtime_parsing(self, mock_get):
|
|
define_val = (
|
|
'Define: TEST1\n'
|
|
'Define: TEST2\n'
|
|
'Define: DUMP_RUN_CFG\n'
|
|
)
|
|
mod_val = (
|
|
'Loaded Modules:\n'
|
|
' mock_module (static)\n'
|
|
' another_module (static)\n'
|
|
)
|
|
def mock_get_cfg(command):
|
|
"""Mock httpd process stdout"""
|
|
if command == ['apachectl', '-t', '-D', 'DUMP_RUN_CFG']:
|
|
return define_val
|
|
elif command == ['apachectl', '-t', '-D', 'DUMP_MODULES']:
|
|
return mod_val
|
|
return ""
|
|
mock_get.side_effect = mock_get_cfg
|
|
self.config.parser.modules = set()
|
|
self.config.parser.variables = {}
|
|
|
|
with mock.patch("certbot.util.get_os_info") as mock_osi:
|
|
# Make sure we have the have the CentOS httpd constants
|
|
mock_osi.return_value = ("centos", "7")
|
|
self.config.parser.update_runtime_variables()
|
|
|
|
self.assertEquals(mock_get.call_count, 3)
|
|
self.assertEquals(len(self.config.parser.modules), 4)
|
|
self.assertEquals(len(self.config.parser.variables), 2)
|
|
self.assertTrue("TEST2" in self.config.parser.variables.keys())
|
|
self.assertTrue("mod_another.c" in self.config.parser.modules)
|
|
|
|
def test_get_virtual_hosts(self):
|
|
"""Make sure all vhosts are being properly found."""
|
|
vhs = self.config.get_virtual_hosts()
|
|
self.assertEqual(len(vhs), 2)
|
|
found = 0
|
|
|
|
for vhost in vhs:
|
|
for centos_truth in self.vh_truth:
|
|
if vhost == centos_truth:
|
|
found += 1
|
|
break
|
|
else:
|
|
raise Exception("Missed: %s" % vhost) # pragma: no cover
|
|
self.assertEqual(found, 2)
|
|
|
|
@mock.patch("certbot_apache.parser.ApacheParser._get_runtime_cfg")
|
|
def test_get_sysconfig_vars(self, mock_cfg):
|
|
"""Make sure we read the sysconfig OPTIONS variable correctly"""
|
|
# Return nothing for the process calls
|
|
mock_cfg.return_value = ""
|
|
self.config.parser.sysconfig_filep = os.path.realpath(
|
|
os.path.join(self.config.parser.root, "../sysconfig/httpd"))
|
|
self.config.parser.variables = {}
|
|
|
|
with mock.patch("certbot.util.get_os_info") as mock_osi:
|
|
# Make sure we have the have the CentOS httpd constants
|
|
mock_osi.return_value = ("centos", "7")
|
|
self.config.parser.update_runtime_variables()
|
|
|
|
self.assertTrue("mock_define" in self.config.parser.variables.keys())
|
|
self.assertTrue("mock_define_too" in self.config.parser.variables.keys())
|
|
self.assertTrue("mock_value" in self.config.parser.variables.keys())
|
|
self.assertEqual("TRUE", self.config.parser.variables["mock_value"])
|
|
self.assertTrue("MOCK_NOSEP" in self.config.parser.variables.keys())
|
|
self.assertEqual("NOSEP_VAL", self.config.parser.variables["NOSEP_TWO"])
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main() # pragma: no cover
|