mirror of
https://github.com/certbot/certbot.git
synced 2026-02-25 19:00:56 -05:00
* Fix account_tests * Fix hook executable test * Remove the temporary decorator @broken_on_windows * Fix util_test * No broken unit test on Windows anymore * More elegant mock * Fix context manager * Fix lint * Fix mypy * Adapt coverage * Corrections * Fix lint * Adapt coverage * Update certbot/tests/compat/filesystem_test.py Co-Authored-By: Brad Warren <bmw@users.noreply.github.com> * Update util_test.py * Fix pylint * Forbid os.access * Update os_test.py * Update os.py * Fix lint * Update filesystem.py * Update filesystem.py * Update filesystem.py * Update os.py * Start fixing tests * Platform independent hooks * Fix probe fd close * Add broken_on_windows for integration tests * Fix a lot of tests * Use a python hook script, to prepare cross-platform * New approach to be compliant with Linux and Windows on hook scripts * New tests fixed * Test for permissions on Windows * Permissions comparison for Windows * No broken tests in certbot core anymore * Change mode * Specific config for appveyor * Use forked pebble for now * Various fixes * Assert file permissions for world on private keys * Clean code * Fix several things * Add integration target * Optimize integration env * Re-enable all AppVeyor envs * Use again official pebble * Update pebble_artifacts.py * Set PYTEST_ADDOPTS silently * Update appveyor.yml * Pin pywin32 for tests, give a minimal requirement for certbot. * Remove injection of nginx in PATH * Clean debug code * Various cleanup, ensure to remove workspace after tests * Update tox target * Improve assertions. Control the keyword echoed in hooks * Fix for virtualenv on Python 3.7.4 for Windows * Update certbot-ci/certbot_integration_tests/certbot_tests/assertions.py Co-Authored-By: Brad Warren <bmw@users.noreply.github.com> * Add conditionally pywin in certbot-ci like in certbot
53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
import json
|
|
import os
|
|
import stat
|
|
|
|
import pkg_resources
|
|
import requests
|
|
|
|
from certbot_integration_tests.utils.constants import MOCK_OCSP_SERVER_PORT
|
|
|
|
PEBBLE_VERSION = 'v2.2.1'
|
|
ASSETS_PATH = pkg_resources.resource_filename('certbot_integration_tests', 'assets')
|
|
|
|
|
|
def fetch(workspace):
|
|
suffix = 'linux-amd64' if os.name != 'nt' else 'windows-amd64.exe'
|
|
|
|
pebble_path = _fetch_asset('pebble', suffix)
|
|
challtestsrv_path = _fetch_asset('pebble-challtestsrv', suffix)
|
|
pebble_config_path = _build_pebble_config(workspace)
|
|
|
|
return pebble_path, challtestsrv_path, pebble_config_path
|
|
|
|
|
|
def _fetch_asset(asset, suffix):
|
|
asset_path = os.path.join(ASSETS_PATH, '{0}_{1}_{2}'.format(asset, PEBBLE_VERSION, suffix))
|
|
if not os.path.exists(asset_path):
|
|
asset_url = ('https://github.com/letsencrypt/pebble/releases/download/{0}/{1}_{2}'
|
|
.format(PEBBLE_VERSION, asset, suffix))
|
|
response = requests.get(asset_url)
|
|
response.raise_for_status()
|
|
with open(asset_path, 'wb') as file_h:
|
|
file_h.write(response.content)
|
|
os.chmod(asset_path, os.stat(asset_path).st_mode | stat.S_IEXEC)
|
|
|
|
return asset_path
|
|
|
|
|
|
def _build_pebble_config(workspace):
|
|
config_path = os.path.join(workspace, 'pebble-config.json')
|
|
with open(config_path, 'w') as file_h:
|
|
file_h.write(json.dumps({
|
|
'pebble': {
|
|
'listenAddress': '0.0.0.0:14000',
|
|
'managementListenAddress': '0.0.0.0:15000',
|
|
'certificate': os.path.join(ASSETS_PATH, 'cert.pem'),
|
|
'privateKey': os.path.join(ASSETS_PATH, 'key.pem'),
|
|
'httpPort': 5002,
|
|
'tlsPort': 5001,
|
|
'ocspResponderURL': 'http://127.0.0.1:{0}'.format(MOCK_OCSP_SERVER_PORT),
|
|
},
|
|
}))
|
|
|
|
return config_path
|