mirror of
https://github.com/certbot/certbot.git
synced 2026-01-26 07:41:33 +03:00
Implement an Authenticator which can fulfill a dns-01 challenge using the
DigitalOcean API. Applicable only for domains using DigitalOcean for DNS.
Testing Done:
* `tox -e py27`
* `tox -e lint`
* Manual testing:
* Used `certbot certonly --dns-digitalocean -d`, specifying a
credentials file as a command line argument. Verified that a
certificate was successfully obtained without user interaction.
* Used `certbot certonly --dns-digitalocean -d`, without specifying a
credentials file as a command line argument. Verified that the user
was prompted and that a certificate was successfully obtained.
* Used `certbot certonly -d`. Verified that the user was prompted for
a credentials file after selecting digitalocean interactively and
that a certificate was successfully obtained.
* Used `certbot renew --force-renewal`. Verified that certificates
were renewed without user interaction.
* Negative testing:
* Path to non-existent credentials file.
* Credentials file with unsafe permissions (644).
* Credentials file missing token.
* Credentials file with blank token.
* Credentials file with incorrect token.
* Domain name not registered to DigitalOcean account.
178 lines
6.7 KiB
INI
178 lines
6.7 KiB
INI
# Tox (http://tox.testrun.org/) is a tool for running tests in
|
|
# multiple virtualenvs. To use it, "pip install tox" and then run
|
|
# "tox" from this directory.
|
|
|
|
[tox]
|
|
skipsdist = true
|
|
envlist = modification,py{26,33,34,35,36},cover,lint
|
|
|
|
# nosetest -v => more verbose output, allows to detect busy waiting
|
|
# loops, especially on Travis
|
|
|
|
[base]
|
|
# wraps pip install to use pinned versions of dependencies
|
|
pip_install = {toxinidir}/tools/pip_install.sh
|
|
# packages installed separately to ensure that downstream deps problems
|
|
# are detected, c.f. #1002
|
|
core_commands =
|
|
{[base]pip_install} -e acme[dev]
|
|
nosetests -v acme --processes=-1
|
|
{[base]pip_install} -e .[dev]
|
|
nosetests -v certbot --processes=-1 --process-timeout=100
|
|
core_install_args = -e acme[dev] -e .[dev]
|
|
core_paths = acme/acme certbot
|
|
|
|
plugin_commands =
|
|
{[base]pip_install} -e certbot-apache
|
|
nosetests -v certbot_apache --processes=-1 --process-timeout=80
|
|
{[base]pip_install} -e certbot-nginx
|
|
nosetests -v certbot_nginx --processes=-1
|
|
plugin_install_args = -e certbot-apache -e certbot-nginx
|
|
plugin_paths = certbot-apache/certbot_apache certbot-nginx/certbot_nginx
|
|
|
|
dns_plugin_commands =
|
|
pip install -e certbot-dns-cloudflare
|
|
nosetests -v certbot_dns_cloudflare --processes=-1
|
|
pip install -e certbot-dns-digitalocean
|
|
nosetests -v certbot_dns_digitalocean --processes=-1
|
|
dns_plugin_install_args = -e certbot-dns-cloudflare -e certbot-dns-digitalocean
|
|
dns_plugin_paths = certbot-dns-cloudflare/certbot_dns_cloudflare certbot-dns-digitalocean/certbot_dns_digitalocean
|
|
|
|
compatibility_install_args = -e certbot-compatibility-test
|
|
compatibility_paths = certbot-compatibility-test/certbot_compatibility_test
|
|
|
|
other_commands =
|
|
{[base]pip_install} -e letshelp-certbot
|
|
nosetests -v letshelp_certbot --processes=-1
|
|
python tests/lock_test.py
|
|
other_install_args = -e letshelp-certbot
|
|
other_paths = letshelp-certbot/letshelp_certbot tests/lock_test.py
|
|
|
|
[testenv]
|
|
commands =
|
|
{[base]core_commands}
|
|
{[base]plugin_commands}
|
|
{[base]other_commands}
|
|
|
|
setenv =
|
|
PYTHONPATH = {toxinidir}
|
|
PYTHONHASHSEED = 0
|
|
# https://testrun.org/tox/latest/example/basic.html#special-handling-of-pythonhas
|
|
|
|
# cffi<=1.7 is required for oldest tests due to
|
|
# https://bitbucket.org/cffi/cffi/commits/18cdf37d6b2691301a15b0e54f49757ebd4ed0f2?at=default
|
|
# requests<=2.11.1 required for oldest tests due to
|
|
# https://github.com/shazow/urllib3/pull/930
|
|
deps =
|
|
py{26,27}-oldest: cffi<=1.7
|
|
py{26,27}-oldest: cryptography==0.8
|
|
py{26,27}-oldest: configargparse==0.10.0
|
|
py{26,27}-oldest: PyOpenSSL==0.13
|
|
py{26,27}-oldest: requests<=2.11.1
|
|
|
|
[testenv:py27_install]
|
|
basepython = python2.7
|
|
commands =
|
|
{[base]pip_install} {[base]core_install_args} {[base]plugin_install_args} {[base]dns_plugin_install_args} {[base]other_install_args}
|
|
|
|
[testenv:cover]
|
|
basepython = python2.7
|
|
commands =
|
|
{[base]pip_install} {[base]core_install_args} {[base]plugin_install_args} {[base]dns_plugin_install_args} {[base]other_install_args}
|
|
./tox.cover.sh
|
|
|
|
[testenv:lint]
|
|
# recent versions of pylint do not support Python 2.6 (#97, #187)
|
|
basepython = python2.7
|
|
# separating into multiple invocations disables cross package
|
|
# duplicate code checking; if one of the commands fails, others will
|
|
# continue, but tox return code will reflect previous error
|
|
commands =
|
|
{[base]pip_install} -q {[base]core_install_args} {[base]plugin_install_args} {[base]dns_plugin_install_args} {[base]compatibility_install_args} {[base]other_install_args}
|
|
pylint --reports=n --rcfile=.pylintrc {[base]core_paths} {[base]plugin_paths} {[base]dns_plugin_paths} {[base]compatibility_paths} {[base]other_paths}
|
|
|
|
[testenv:mypy]
|
|
basepython = python3.4
|
|
commands =
|
|
{[base]pip_install} mypy
|
|
{[base]pip_install} -q {[base]core_install_args} {[base]plugin_install_args} {[base]dns_plugin_install_args} {[base]compatibility_install_args} {[base]other_install_args}
|
|
mypy --py2 --ignore-missing-imports {[base]core_paths} {[base]plugin_paths} {[base]dns_plugin_paths} {[base]compatibility_paths} {[base]other_paths}
|
|
|
|
[testenv:apacheconftest]
|
|
#basepython = python2.7
|
|
commands =
|
|
{[base]pip_install} {[base]core_install_args} {[base]plugin_install_args} {[base]compatibility_install_args} {[base]other_install_args}
|
|
{toxinidir}/certbot-apache/certbot_apache/tests/apache-conf-files/apache-conf-test --debian-modules
|
|
|
|
[testenv:nginxroundtrip]
|
|
commands =
|
|
{[base]pip_install} {[base]core_install_args} -e certbot-nginx
|
|
python certbot-compatibility-test/nginx/roundtrip.py certbot-compatibility-test/nginx/nginx-roundtrip-testdata
|
|
|
|
# This is a duplication of the command line in testenv:le_auto to
|
|
# allow users to run the modification check by running `tox`
|
|
[testenv:modification]
|
|
commands =
|
|
{toxinidir}/tests/modification-check.sh
|
|
|
|
[testenv:apache_compat]
|
|
commands =
|
|
docker build -t certbot-compatibility-test -f certbot-compatibility-test/Dockerfile .
|
|
docker build -t apache-compat -f certbot-compatibility-test/Dockerfile-apache .
|
|
docker run --rm -it apache-compat -c apache.tar.gz -vvvv
|
|
whitelist_externals =
|
|
docker
|
|
passenv = DOCKER_*
|
|
|
|
[testenv:nginx_compat]
|
|
commands =
|
|
docker build -t certbot-compatibility-test -f certbot-compatibility-test/Dockerfile .
|
|
docker build -t nginx-compat -f certbot-compatibility-test/Dockerfile-nginx .
|
|
docker run --rm -it nginx-compat -c nginx.tar.gz -vvvv
|
|
whitelist_externals =
|
|
docker
|
|
passenv = DOCKER_*
|
|
|
|
[testenv:le_auto_precise]
|
|
# At the moment, this tests under Python 2.7 only, as only that version is
|
|
# readily available on the Precise Docker image.
|
|
commands =
|
|
docker build -f letsencrypt-auto-source/Dockerfile.precise -t lea letsencrypt-auto-source
|
|
docker run --rm -t -i lea
|
|
whitelist_externals =
|
|
docker
|
|
passenv = DOCKER_*
|
|
|
|
[testenv:le_auto_trusty]
|
|
# At the moment, this tests under Python 2.7 only, as only that version is
|
|
# readily available on the Trusty Docker image.
|
|
commands =
|
|
{toxinidir}/tests/modification-check.sh
|
|
docker build -f letsencrypt-auto-source/Dockerfile.trusty -t lea letsencrypt-auto-source
|
|
docker run --rm -t -i lea
|
|
whitelist_externals =
|
|
docker
|
|
passenv =
|
|
DOCKER_*
|
|
TRAVIS_BRANCH
|
|
|
|
[testenv:le_auto_wheezy]
|
|
# At the moment, this tests under Python 2.7 only, as only that version is
|
|
# readily available on the Wheezy Docker image.
|
|
commands =
|
|
docker build -f letsencrypt-auto-source/Dockerfile.wheezy -t lea letsencrypt-auto-source
|
|
docker run --rm -t -i lea
|
|
whitelist_externals =
|
|
docker
|
|
passenv = DOCKER_*
|
|
|
|
[testenv:le_auto_centos6]
|
|
# At the moment, this tests under Python 2.6 only, as only that version is
|
|
# readily available on the CentOS 6 Docker image.
|
|
commands =
|
|
docker build -f letsencrypt-auto-source/Dockerfile.centos6 -t lea letsencrypt-auto-source
|
|
docker run --rm -t -i lea
|
|
whitelist_externals =
|
|
docker
|
|
passenv = DOCKER_*
|