Hello community, here is the log from the commit of package python-certbot-dns-luadns for openSUSE:Factory checked in at 2020-01-03 17:39:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-certbot-dns-luadns (Old) and /work/SRC/openSUSE:Factory/.python-certbot-dns-luadns.new.6675 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-certbot-dns-luadns" Fri Jan 3 17:39:17 2020 rev:15 rq:760660 version:1.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-certbot-dns-luadns/python-certbot-dns-luadns.changes 2019-11-15 00:27:16.483804705 +0100 +++ /work/SRC/openSUSE:Factory/.python-certbot-dns-luadns.new.6675/python-certbot-dns-luadns.changes 2020-01-03 17:39:39.223377881 +0100 @@ -1,0 +2,6 @@ +Fri Jan 3 13:03:12 UTC 2020 - Marketa Calabkova <mcalabk...@suse.com> + +- update to version 1.0.0 + * sync with main certbot package. + +------------------------------------------------------------------- Old: ---- certbot-dns-luadns-0.40.1.tar.gz New: ---- certbot-dns-luadns-1.0.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-certbot-dns-luadns.spec ++++++ --- /var/tmp/diff_new_pack.9SyqTL/_old 2020-01-03 17:39:39.791378173 +0100 +++ /var/tmp/diff_new_pack.9SyqTL/_new 2020-01-03 17:39:39.795378175 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-certbot-dns-luadns # -# Copyright (c) 2019 SUSE LLC. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,20 +18,21 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-certbot-dns-luadns -Version: 0.40.1 +Version: 1.0.0 Release: 0 Summary: LuaDNS Authenticator plugin for Certbot License: Apache-2.0 URL: https://github.com/certbot/certbot Source: https://files.pythonhosted.org/packages/source/c/certbot-dns-luadns/certbot-dns-luadns-%{version}.tar.gz -BuildRequires: %{python_module certbot >= 0.34.0} +BuildRequires: %{python_module certbot >= 1.0.0} BuildRequires: %{python_module dns-lexicon >= 2.2.1} BuildRequires: %{python_module mock} +BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros -Requires: python-acme >= 0.29.0 -Requires: python-certbot >= 0.34.0 +Requires: python-acme >= 0.31.0 +Requires: python-certbot >= 1.0.0 Requires: python-dns-lexicon >= 2.2.1 Requires: python-zope.interface BuildArch: noarch ++++++ certbot-dns-luadns-0.40.1.tar.gz -> certbot-dns-luadns-1.0.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/MANIFEST.in new/certbot-dns-luadns-1.0.0/MANIFEST.in --- old/certbot-dns-luadns-0.40.1/MANIFEST.in 2019-11-06 03:24:51.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/MANIFEST.in 2019-12-03 18:20:30.000000000 +0100 @@ -1,3 +1,6 @@ include LICENSE.txt include README.rst recursive-include docs * +recursive-include tests * +global-exclude __pycache__ +global-exclude *.py[cod] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/PKG-INFO new/certbot-dns-luadns-1.0.0/PKG-INFO --- old/certbot-dns-luadns-0.40.1/PKG-INFO 2019-11-06 03:25:18.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/PKG-INFO 2019-12-03 18:21:08.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: certbot-dns-luadns -Version: 0.40.1 +Version: 1.0.0 Summary: LuaDNS Authenticator plugin for Certbot Home-page: https://github.com/certbot/certbot Author: Certbot Project diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/certbot_dns_luadns/_internal/__init__.py new/certbot-dns-luadns-1.0.0/certbot_dns_luadns/_internal/__init__.py --- old/certbot-dns-luadns-0.40.1/certbot_dns_luadns/_internal/__init__.py 1970-01-01 01:00:00.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/certbot_dns_luadns/_internal/__init__.py 2019-12-03 18:20:30.000000000 +0100 @@ -0,0 +1 @@ +"""Internal implementation of `~certbot_dns_luadns.dns_luadns` plugin.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/certbot_dns_luadns/_internal/dns_luadns.py new/certbot-dns-luadns-1.0.0/certbot_dns_luadns/_internal/dns_luadns.py --- old/certbot-dns-luadns-0.40.1/certbot_dns_luadns/_internal/dns_luadns.py 1970-01-01 01:00:00.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/certbot_dns_luadns/_internal/dns_luadns.py 2019-12-03 18:20:30.000000000 +0100 @@ -0,0 +1,86 @@ +"""DNS Authenticator for LuaDNS DNS.""" +import logging + +import zope.interface +from lexicon.providers import luadns + +from certbot import errors +from certbot import interfaces +from certbot.plugins import dns_common +from certbot.plugins import dns_common_lexicon + +logger = logging.getLogger(__name__) + +ACCOUNT_URL = 'https://api.luadns.com/settings' + + +@zope.interface.implementer(interfaces.IAuthenticator) +@zope.interface.provider(interfaces.IPluginFactory) +class Authenticator(dns_common.DNSAuthenticator): + """DNS Authenticator for LuaDNS + + This Authenticator uses the LuaDNS API to fulfill a dns-01 challenge. + """ + + description = 'Obtain certificates using a DNS TXT record (if you are using LuaDNS for DNS).' + ttl = 60 + + def __init__(self, *args, **kwargs): + super(Authenticator, self).__init__(*args, **kwargs) + self.credentials = None + + @classmethod + def add_parser_arguments(cls, add): # pylint: disable=arguments-differ + super(Authenticator, cls).add_parser_arguments(add, default_propagation_seconds=30) + add('credentials', help='LuaDNS credentials INI file.') + + def more_info(self): # pylint: disable=missing-docstring,no-self-use + return 'This plugin configures a DNS TXT record to respond to a dns-01 challenge using ' + \ + 'the LuaDNS API.' + + def _setup_credentials(self): + self.credentials = self._configure_credentials( + 'credentials', + 'LuaDNS credentials INI file', + { + 'email': 'email address associated with LuaDNS account', + 'token': 'API token for LuaDNS account, obtained from {0}'.format(ACCOUNT_URL) + } + ) + + def _perform(self, domain, validation_name, validation): + self._get_luadns_client().add_txt_record(domain, validation_name, validation) + + def _cleanup(self, domain, validation_name, validation): + self._get_luadns_client().del_txt_record(domain, validation_name, validation) + + def _get_luadns_client(self): + return _LuaDNSLexiconClient(self.credentials.conf('email'), + self.credentials.conf('token'), + self.ttl) + + +class _LuaDNSLexiconClient(dns_common_lexicon.LexiconClient): + """ + Encapsulates all communication with the LuaDNS via Lexicon. + """ + + def __init__(self, email, token, ttl): + super(_LuaDNSLexiconClient, self).__init__() + + config = dns_common_lexicon.build_lexicon_config('luadns', { + 'ttl': ttl, + }, { + 'auth_username': email, + 'auth_token': token, + }) + + self.provider = luadns.Provider(config) + + def _handle_http_error(self, e, domain_name): + hint = None + if str(e).startswith('401 Client Error: Unauthorized for url:'): + hint = 'Are your email and API token values correct?' + + return errors.PluginError('Error determining zone identifier for {0}: {1}.{2}' + .format(domain_name, e, ' ({0})'.format(hint) if hint else '')) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/certbot_dns_luadns/dns_luadns.py new/certbot-dns-luadns-1.0.0/certbot_dns_luadns/dns_luadns.py --- old/certbot-dns-luadns-0.40.1/certbot_dns_luadns/dns_luadns.py 2019-11-06 03:24:51.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/certbot_dns_luadns/dns_luadns.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,86 +0,0 @@ -"""DNS Authenticator for LuaDNS DNS.""" -import logging - -import zope.interface -from lexicon.providers import luadns - -from certbot import errors -from certbot import interfaces -from certbot.plugins import dns_common -from certbot.plugins import dns_common_lexicon - -logger = logging.getLogger(__name__) - -ACCOUNT_URL = 'https://api.luadns.com/settings' - - -@zope.interface.implementer(interfaces.IAuthenticator) -@zope.interface.provider(interfaces.IPluginFactory) -class Authenticator(dns_common.DNSAuthenticator): - """DNS Authenticator for LuaDNS - - This Authenticator uses the LuaDNS API to fulfill a dns-01 challenge. - """ - - description = 'Obtain certificates using a DNS TXT record (if you are using LuaDNS for DNS).' - ttl = 60 - - def __init__(self, *args, **kwargs): - super(Authenticator, self).__init__(*args, **kwargs) - self.credentials = None - - @classmethod - def add_parser_arguments(cls, add): # pylint: disable=arguments-differ - super(Authenticator, cls).add_parser_arguments(add, default_propagation_seconds=30) - add('credentials', help='LuaDNS credentials INI file.') - - def more_info(self): # pylint: disable=missing-docstring,no-self-use - return 'This plugin configures a DNS TXT record to respond to a dns-01 challenge using ' + \ - 'the LuaDNS API.' - - def _setup_credentials(self): - self.credentials = self._configure_credentials( - 'credentials', - 'LuaDNS credentials INI file', - { - 'email': 'email address associated with LuaDNS account', - 'token': 'API token for LuaDNS account, obtained from {0}'.format(ACCOUNT_URL) - } - ) - - def _perform(self, domain, validation_name, validation): - self._get_luadns_client().add_txt_record(domain, validation_name, validation) - - def _cleanup(self, domain, validation_name, validation): - self._get_luadns_client().del_txt_record(domain, validation_name, validation) - - def _get_luadns_client(self): - return _LuaDNSLexiconClient(self.credentials.conf('email'), - self.credentials.conf('token'), - self.ttl) - - -class _LuaDNSLexiconClient(dns_common_lexicon.LexiconClient): - """ - Encapsulates all communication with the LuaDNS via Lexicon. - """ - - def __init__(self, email, token, ttl): - super(_LuaDNSLexiconClient, self).__init__() - - config = dns_common_lexicon.build_lexicon_config('luadns', { - 'ttl': ttl, - }, { - 'auth_username': email, - 'auth_token': token, - }) - - self.provider = luadns.Provider(config) - - def _handle_http_error(self, e, domain_name): - hint = None - if str(e).startswith('401 Client Error: Unauthorized for url:'): - hint = 'Are your email and API token values correct?' - - return errors.PluginError('Error determining zone identifier for {0}: {1}.{2}' - .format(domain_name, e, ' ({0})'.format(hint) if hint else '')) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/certbot_dns_luadns/dns_luadns_test.py new/certbot-dns-luadns-1.0.0/certbot_dns_luadns/dns_luadns_test.py --- old/certbot-dns-luadns-0.40.1/certbot_dns_luadns/dns_luadns_test.py 2019-11-06 03:24:51.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/certbot_dns_luadns/dns_luadns_test.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,52 +0,0 @@ -"""Tests for certbot_dns_luadns.dns_luadns.""" - -import unittest - -import mock -from requests.exceptions import HTTPError - -from certbot.compat import os -from certbot.plugins import dns_test_common -from certbot.plugins import dns_test_common_lexicon -from certbot.tests import util as test_util - -EMAIL = 'f...@example.com' -TOKEN = 'foo' - - -class AuthenticatorTest(test_util.TempDirTestCase, - dns_test_common_lexicon.BaseLexiconAuthenticatorTest): - - def setUp(self): - super(AuthenticatorTest, self).setUp() - - from certbot_dns_luadns.dns_luadns import Authenticator - - path = os.path.join(self.tempdir, 'file.ini') - dns_test_common.write({"luadns_email": EMAIL, "luadns_token": TOKEN}, path) - - self.config = mock.MagicMock(luadns_credentials=path, - luadns_propagation_seconds=0) # don't wait during tests - - self.auth = Authenticator(self.config, "luadns") - - self.mock_client = mock.MagicMock() - # _get_luadns_client | pylint: disable=protected-access - self.auth._get_luadns_client = mock.MagicMock(return_value=self.mock_client) - - -class LuaDNSLexiconClientTest(unittest.TestCase, dns_test_common_lexicon.BaseLexiconClientTest): - - LOGIN_ERROR = HTTPError("401 Client Error: Unauthorized for url: ...") - - def setUp(self): - from certbot_dns_luadns.dns_luadns import _LuaDNSLexiconClient - - self.client = _LuaDNSLexiconClient(EMAIL, TOKEN, 0) - - self.provider_mock = mock.MagicMock() - self.client.provider = self.provider_mock - - -if __name__ == "__main__": - unittest.main() # pragma: no cover diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/certbot_dns_luadns.egg-info/PKG-INFO new/certbot-dns-luadns-1.0.0/certbot_dns_luadns.egg-info/PKG-INFO --- old/certbot-dns-luadns-0.40.1/certbot_dns_luadns.egg-info/PKG-INFO 2019-11-06 03:25:18.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/certbot_dns_luadns.egg-info/PKG-INFO 2019-12-03 18:21:08.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: certbot-dns-luadns -Version: 0.40.1 +Version: 1.0.0 Summary: LuaDNS Authenticator plugin for Certbot Home-page: https://github.com/certbot/certbot Author: Certbot Project diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/certbot_dns_luadns.egg-info/SOURCES.txt new/certbot-dns-luadns-1.0.0/certbot_dns_luadns.egg-info/SOURCES.txt --- old/certbot-dns-luadns-0.40.1/certbot_dns_luadns.egg-info/SOURCES.txt 2019-11-06 03:25:18.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/certbot_dns_luadns.egg-info/SOURCES.txt 2019-12-03 18:21:08.000000000 +0100 @@ -4,18 +4,18 @@ setup.cfg setup.py certbot_dns_luadns/__init__.py -certbot_dns_luadns/dns_luadns.py -certbot_dns_luadns/dns_luadns_test.py certbot_dns_luadns.egg-info/PKG-INFO certbot_dns_luadns.egg-info/SOURCES.txt certbot_dns_luadns.egg-info/dependency_links.txt certbot_dns_luadns.egg-info/entry_points.txt certbot_dns_luadns.egg-info/requires.txt certbot_dns_luadns.egg-info/top_level.txt +certbot_dns_luadns/_internal/__init__.py +certbot_dns_luadns/_internal/dns_luadns.py docs/.gitignore docs/Makefile docs/api.rst docs/conf.py docs/index.rst docs/make.bat -docs/api/dns_luadns.rst \ No newline at end of file +tests/dns_luadns_test.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/certbot_dns_luadns.egg-info/entry_points.txt new/certbot-dns-luadns-1.0.0/certbot_dns_luadns.egg-info/entry_points.txt --- old/certbot-dns-luadns-0.40.1/certbot_dns_luadns.egg-info/entry_points.txt 2019-11-06 03:25:18.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/certbot_dns_luadns.egg-info/entry_points.txt 2019-12-03 18:21:08.000000000 +0100 @@ -1,3 +1,3 @@ [certbot.plugins] -dns-luadns = certbot_dns_luadns.dns_luadns:Authenticator +dns-luadns = certbot_dns_luadns._internal.dns_luadns:Authenticator diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/docs/api/dns_luadns.rst new/certbot-dns-luadns-1.0.0/docs/api/dns_luadns.rst --- old/certbot-dns-luadns-0.40.1/docs/api/dns_luadns.rst 2019-11-06 03:24:51.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/docs/api/dns_luadns.rst 1970-01-01 01:00:00.000000000 +0100 @@ -1,5 +0,0 @@ -:mod:`certbot_dns_luadns.dns_luadns` ----------------------------------- - -.. automodule:: certbot_dns_luadns.dns_luadns - :members: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/docs/api.rst new/certbot-dns-luadns-1.0.0/docs/api.rst --- old/certbot-dns-luadns-0.40.1/docs/api.rst 2019-11-06 03:24:51.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/docs/api.rst 2019-12-03 18:20:30.000000000 +0100 @@ -2,7 +2,4 @@ API Documentation ================= -.. toctree:: - :glob: - - api/** +Certbot plugins implement the Certbot plugins API, and do not otherwise have an external API. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/setup.py new/certbot-dns-luadns-1.0.0/setup.py --- old/certbot-dns-luadns-0.40.1/setup.py 2019-11-06 03:24:52.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/setup.py 2019-12-03 18:20:32.000000000 +0100 @@ -1,8 +1,10 @@ from setuptools import setup from setuptools import find_packages +from setuptools.command.test import test as TestCommand +import sys -version = '0.40.1' +version = '1.0.0' # Remember to update local-oldest-requirements.txt when changing the minimum # acme/certbot version. @@ -20,6 +22,20 @@ 'sphinx_rtd_theme', ] +class PyTest(TestCommand): + user_options = [] + + def initialize_options(self): + TestCommand.initialize_options(self) + self.pytest_args = '' + + def run_tests(self): + import shlex + # import here, cause outside the eggs aren't loaded + import pytest + errno = pytest.main(shlex.split(self.pytest_args)) + sys.exit(errno) + setup( name='certbot-dns-luadns', version=version, @@ -60,8 +76,10 @@ }, entry_points={ 'certbot.plugins': [ - 'dns-luadns = certbot_dns_luadns.dns_luadns:Authenticator', + 'dns-luadns = certbot_dns_luadns._internal.dns_luadns:Authenticator', ], }, + tests_require=["pytest"], test_suite='certbot_dns_luadns', + cmdclass={"test": PyTest}, ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-0.40.1/tests/dns_luadns_test.py new/certbot-dns-luadns-1.0.0/tests/dns_luadns_test.py --- old/certbot-dns-luadns-0.40.1/tests/dns_luadns_test.py 1970-01-01 01:00:00.000000000 +0100 +++ new/certbot-dns-luadns-1.0.0/tests/dns_luadns_test.py 2019-12-03 18:20:30.000000000 +0100 @@ -0,0 +1,52 @@ +"""Tests for certbot_dns_luadns._internal.dns_luadns.""" + +import unittest + +import mock +from requests.exceptions import HTTPError + +from certbot.compat import os +from certbot.plugins import dns_test_common +from certbot.plugins import dns_test_common_lexicon +from certbot.tests import util as test_util + +EMAIL = 'f...@example.com' +TOKEN = 'foo' + + +class AuthenticatorTest(test_util.TempDirTestCase, + dns_test_common_lexicon.BaseLexiconAuthenticatorTest): + + def setUp(self): + super(AuthenticatorTest, self).setUp() + + from certbot_dns_luadns._internal.dns_luadns import Authenticator + + path = os.path.join(self.tempdir, 'file.ini') + dns_test_common.write({"luadns_email": EMAIL, "luadns_token": TOKEN}, path) + + self.config = mock.MagicMock(luadns_credentials=path, + luadns_propagation_seconds=0) # don't wait during tests + + self.auth = Authenticator(self.config, "luadns") + + self.mock_client = mock.MagicMock() + # _get_luadns_client | pylint: disable=protected-access + self.auth._get_luadns_client = mock.MagicMock(return_value=self.mock_client) + + +class LuaDNSLexiconClientTest(unittest.TestCase, dns_test_common_lexicon.BaseLexiconClientTest): + + LOGIN_ERROR = HTTPError("401 Client Error: Unauthorized for url: ...") + + def setUp(self): + from certbot_dns_luadns._internal.dns_luadns import _LuaDNSLexiconClient + + self.client = _LuaDNSLexiconClient(EMAIL, TOKEN, 0) + + self.provider_mock = mock.MagicMock() + self.client.provider = self.provider_mock + + +if __name__ == "__main__": + unittest.main() # pragma: no cover