Hello community,
here is the log from the commit of package python-certbot-dns-linode for
openSUSE:Factory checked in at 2020-01-03 17:39:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-certbot-dns-linode (Old)
and /work/SRC/openSUSE:Factory/.python-certbot-dns-linode.new.6675 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-certbot-dns-linode"
Fri Jan 3 17:39:14 2020 rev:6 rq:760658 version:1.0.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-certbot-dns-linode/python-certbot-dns-linode.changes
2019-11-15 00:26:35.527818935 +0100
+++
/work/SRC/openSUSE:Factory/.python-certbot-dns-linode.new.6675/python-certbot-dns-linode.changes
2020-01-03 17:39:36.759376617 +0100
@@ -1,0 +2,6 @@
+Fri Jan 3 12:58:41 UTC 2020 - Marketa Calabkova <[email protected]>
+
+- update to version 1.0.0
+ * Sync with main certbot package.
+
+-------------------------------------------------------------------
Old:
----
certbot-dns-linode-0.40.1.tar.gz
New:
----
certbot-dns-linode-1.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-certbot-dns-linode.spec ++++++
--- /var/tmp/diff_new_pack.dnRKUB/_old 2020-01-03 17:39:37.803377152 +0100
+++ /var/tmp/diff_new_pack.dnRKUB/_new 2020-01-03 17:39:37.807377155 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-certbot-dns-linode
#
-# 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,24 +18,23 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-certbot-dns-linode
-Version: 0.40.1
+Version: 1.0.0
Release: 0
Summary: Linode DNS Authenticator plugin for Certbot
License: Apache-2.0
URL: https://github.com/certbot/certbot
Source:
https://files.pythonhosted.org/packages/source/c/certbot-dns-linode/certbot-dns-linode-%{version}.tar.gz
-BuildRequires: %{python_module acme >= 0.25.0}
-BuildRequires: %{python_module boto3}
-BuildRequires: %{python_module certbot >= 0.34.0}
+BuildRequires: %{python_module acme >= 0.31.0}
+BuildRequires: %{python_module certbot >= 1.0.0}
BuildRequires: %{python_module dns-lexicon >= 2.2.3}
BuildRequires: %{python_module mock}
+BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module zope.interface}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-acme >= 0.29.0
-Requires: python-boto3
-Requires: python-certbot >= 0.34.0
+Requires: python-acme >= 0.31.0
+Requires: python-certbot >= 1.0.0
Requires: python-dns-lexicon
Requires: python-zope.interface
BuildArch: noarch
++++++ certbot-dns-linode-0.40.1.tar.gz -> certbot-dns-linode-1.0.0.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/certbot-dns-linode-0.40.1/MANIFEST.in
new/certbot-dns-linode-1.0.0/MANIFEST.in
--- old/certbot-dns-linode-0.40.1/MANIFEST.in 2019-11-06 03:24:51.000000000
+0100
+++ new/certbot-dns-linode-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-linode-0.40.1/PKG-INFO
new/certbot-dns-linode-1.0.0/PKG-INFO
--- old/certbot-dns-linode-0.40.1/PKG-INFO 2019-11-06 03:25:15.000000000
+0100
+++ new/certbot-dns-linode-1.0.0/PKG-INFO 2019-12-03 18:21:05.000000000
+0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: certbot-dns-linode
-Version: 0.40.1
+Version: 1.0.0
Summary: Linode DNS 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-linode-0.40.1/certbot_dns_linode/_internal/__init__.py
new/certbot-dns-linode-1.0.0/certbot_dns_linode/_internal/__init__.py
--- old/certbot-dns-linode-0.40.1/certbot_dns_linode/_internal/__init__.py
1970-01-01 01:00:00.000000000 +0100
+++ new/certbot-dns-linode-1.0.0/certbot_dns_linode/_internal/__init__.py
2019-12-03 18:20:30.000000000 +0100
@@ -0,0 +1 @@
+"""Internal implementation of `~certbot_dns_linode.dns_linode` plugin."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-linode-0.40.1/certbot_dns_linode/_internal/dns_linode.py
new/certbot-dns-linode-1.0.0/certbot_dns_linode/_internal/dns_linode.py
--- old/certbot-dns-linode-0.40.1/certbot_dns_linode/_internal/dns_linode.py
1970-01-01 01:00:00.000000000 +0100
+++ new/certbot-dns-linode-1.0.0/certbot_dns_linode/_internal/dns_linode.py
2019-12-03 18:20:30.000000000 +0100
@@ -0,0 +1,108 @@
+"""DNS Authenticator for Linode."""
+import logging
+import re
+
+import zope.interface
+from lexicon.providers import linode
+from lexicon.providers import linode4
+
+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__)
+
+API_KEY_URL = 'https://manager.linode.com/profile/api'
+API_KEY_URL_V4 = 'https://cloud.linode.com/profile/tokens'
+
[email protected](interfaces.IAuthenticator)
[email protected](interfaces.IPluginFactory)
+class Authenticator(dns_common.DNSAuthenticator):
+ """DNS Authenticator for Linode
+
+ This Authenticator uses the Linode API to fulfill a dns-01 challenge.
+ """
+
+ description = 'Obtain certs using a DNS TXT record (if you are using
Linode for DNS).'
+
+ 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=1200)
+ add('credentials', help='Linode 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 Linode API.'
+
+ def _setup_credentials(self):
+ self.credentials = self._configure_credentials(
+ 'credentials',
+ 'Linode credentials INI file',
+ {
+ 'key': 'API key for Linode account, obtained from {0} or {1}'
+ .format(API_KEY_URL, API_KEY_URL_V4)
+ }
+ )
+
+ def _perform(self, domain, validation_name, validation):
+ self._get_linode_client().add_txt_record(domain, validation_name,
validation)
+
+ def _cleanup(self, domain, validation_name, validation):
+ self._get_linode_client().del_txt_record(domain, validation_name,
validation)
+
+ def _get_linode_client(self):
+ api_key = self.credentials.conf('key')
+ api_version = self.credentials.conf('version')
+ if api_version == '':
+ api_version = None
+
+ if not api_version:
+ api_version = 3
+
+ # Match for v4 api key
+ regex_v4 = re.compile('^[0-9a-f]{64}$')
+ regex_match = regex_v4.match(api_key)
+ if regex_match:
+ api_version = 4
+ else:
+ api_version = int(api_version)
+
+ return _LinodeLexiconClient(api_key, api_version)
+
+
+class _LinodeLexiconClient(dns_common_lexicon.LexiconClient):
+ """
+ Encapsulates all communication with the Linode API.
+ """
+
+ def __init__(self, api_key, api_version):
+ super(_LinodeLexiconClient, self).__init__()
+
+ self.api_version = api_version
+
+ if api_version == 3:
+ config = dns_common_lexicon.build_lexicon_config('linode', {}, {
+ 'auth_token': api_key,
+ })
+
+ self.provider = linode.Provider(config)
+ elif api_version == 4:
+ config = dns_common_lexicon.build_lexicon_config('linode4', {}, {
+ 'auth_token': api_key,
+ })
+
+ self.provider = linode4.Provider(config)
+ else:
+ raise errors.PluginError('Invalid api version specified: {0}.
(Supported: 3, 4)'
+ .format(api_version))
+
+ def _handle_general_error(self, e, domain_name):
+ if not str(e).startswith('Domain not found'):
+ return errors.PluginError('Unexpected error determining zone
identifier for {0}: {1}'
+ .format(domain_name, e))
+ return None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-linode-0.40.1/certbot_dns_linode/dns_linode.py
new/certbot-dns-linode-1.0.0/certbot_dns_linode/dns_linode.py
--- old/certbot-dns-linode-0.40.1/certbot_dns_linode/dns_linode.py
2019-11-06 03:24:51.000000000 +0100
+++ new/certbot-dns-linode-1.0.0/certbot_dns_linode/dns_linode.py
1970-01-01 01:00:00.000000000 +0100
@@ -1,108 +0,0 @@
-"""DNS Authenticator for Linode."""
-import logging
-import re
-
-import zope.interface
-from lexicon.providers import linode
-from lexicon.providers import linode4
-
-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__)
-
-API_KEY_URL = 'https://manager.linode.com/profile/api'
-API_KEY_URL_V4 = 'https://cloud.linode.com/profile/tokens'
-
[email protected](interfaces.IAuthenticator)
[email protected](interfaces.IPluginFactory)
-class Authenticator(dns_common.DNSAuthenticator):
- """DNS Authenticator for Linode
-
- This Authenticator uses the Linode API to fulfill a dns-01 challenge.
- """
-
- description = 'Obtain certs using a DNS TXT record (if you are using
Linode for DNS).'
-
- 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=1200)
- add('credentials', help='Linode 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 Linode API.'
-
- def _setup_credentials(self):
- self.credentials = self._configure_credentials(
- 'credentials',
- 'Linode credentials INI file',
- {
- 'key': 'API key for Linode account, obtained from {0} or {1}'
- .format(API_KEY_URL, API_KEY_URL_V4)
- }
- )
-
- def _perform(self, domain, validation_name, validation):
- self._get_linode_client().add_txt_record(domain, validation_name,
validation)
-
- def _cleanup(self, domain, validation_name, validation):
- self._get_linode_client().del_txt_record(domain, validation_name,
validation)
-
- def _get_linode_client(self):
- api_key = self.credentials.conf('key')
- api_version = self.credentials.conf('version')
- if api_version == '':
- api_version = None
-
- if not api_version:
- api_version = 3
-
- # Match for v4 api key
- regex_v4 = re.compile('^[0-9a-f]{64}$')
- regex_match = regex_v4.match(api_key)
- if regex_match:
- api_version = 4
- else:
- api_version = int(api_version)
-
- return _LinodeLexiconClient(api_key, api_version)
-
-
-class _LinodeLexiconClient(dns_common_lexicon.LexiconClient):
- """
- Encapsulates all communication with the Linode API.
- """
-
- def __init__(self, api_key, api_version):
- super(_LinodeLexiconClient, self).__init__()
-
- self.api_version = api_version
-
- if api_version == 3:
- config = dns_common_lexicon.build_lexicon_config('linode', {}, {
- 'auth_token': api_key,
- })
-
- self.provider = linode.Provider(config)
- elif api_version == 4:
- config = dns_common_lexicon.build_lexicon_config('linode4', {}, {
- 'auth_token': api_key,
- })
-
- self.provider = linode4.Provider(config)
- else:
- raise errors.PluginError('Invalid api version specified: {0}.
(Supported: 3, 4)'
- .format(api_version))
-
- def _handle_general_error(self, e, domain_name):
- if not str(e).startswith('Domain not found'):
- return errors.PluginError('Unexpected error determining zone
identifier for {0}: {1}'
- .format(domain_name, e))
- return None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-linode-0.40.1/certbot_dns_linode/dns_linode_test.py
new/certbot-dns-linode-1.0.0/certbot_dns_linode/dns_linode_test.py
--- old/certbot-dns-linode-0.40.1/certbot_dns_linode/dns_linode_test.py
2019-11-06 03:24:51.000000000 +0100
+++ new/certbot-dns-linode-1.0.0/certbot_dns_linode/dns_linode_test.py
1970-01-01 01:00:00.000000000 +0100
@@ -1,144 +0,0 @@
-"""Tests for certbot_dns_linode.dns_linode."""
-
-import unittest
-
-import mock
-
-from certbot import errors
-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
-from certbot_dns_linode.dns_linode import Authenticator
-
-TOKEN = 'a-token'
-TOKEN_V3 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ64'
-TOKEN_V4 = '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'
-
-class AuthenticatorTest(test_util.TempDirTestCase,
- dns_test_common_lexicon.BaseLexiconAuthenticatorTest):
-
- def setUp(self):
- super(AuthenticatorTest, self).setUp()
-
- path = os.path.join(self.tempdir, 'file.ini')
- dns_test_common.write({"linode_key": TOKEN}, path)
-
- self.config = mock.MagicMock(linode_credentials=path,
- linode_propagation_seconds=0) # don't
wait during tests
-
- self.auth = Authenticator(self.config, "linode")
-
- self.mock_client = mock.MagicMock()
- # _get_linode_client | pylint: disable=protected-access
- self.auth._get_linode_client =
mock.MagicMock(return_value=self.mock_client)
-
- # pylint: disable=protected-access
- def test_api_version_3_detection(self):
- path = os.path.join(self.tempdir, 'file_3_auto.ini')
- dns_test_common.write({"linode_key": TOKEN_V3}, path)
-
- config = mock.MagicMock(linode_credentials=path,
- linode_propagation_seconds=0)
- auth = Authenticator(config, "linode")
- auth._setup_credentials()
- client = auth._get_linode_client()
- self.assertEqual(3, client.api_version)
-
- # pylint: disable=protected-access
- def test_api_version_4_detection(self):
- path = os.path.join(self.tempdir, 'file_4_auto.ini')
- dns_test_common.write({"linode_key": TOKEN_V4}, path)
-
- config = mock.MagicMock(linode_credentials=path,
- linode_propagation_seconds=0)
- auth = Authenticator(config, "linode")
- auth._setup_credentials()
- client = auth._get_linode_client()
- self.assertEqual(4, client.api_version)
-
- # pylint: disable=protected-access
- def test_api_version_3_detection_empty_version(self):
- path = os.path.join(self.tempdir, 'file_3_auto_empty.ini')
- dns_test_common.write({"linode_key": TOKEN_V3, "linode_version": ""},
path)
-
- config = mock.MagicMock(linode_credentials=path,
- linode_propagation_seconds=0)
- auth = Authenticator(config, "linode")
- auth._setup_credentials()
- client = auth._get_linode_client()
- self.assertEqual(3, client.api_version)
-
- # pylint: disable=protected-access
- def test_api_version_4_detection_empty_version(self):
- path = os.path.join(self.tempdir, 'file_4_auto_empty.ini')
- dns_test_common.write({"linode_key": TOKEN_V4, "linode_version": ""},
path)
-
- config = mock.MagicMock(linode_credentials=path,
- linode_propagation_seconds=0)
- auth = Authenticator(config, "linode")
- auth._setup_credentials()
- client = auth._get_linode_client()
- self.assertEqual(4, client.api_version)
-
- # pylint: disable=protected-access
- def test_api_version_3_manual(self):
- path = os.path.join(self.tempdir, 'file_3_manual.ini')
- dns_test_common.write({"linode_key": TOKEN_V4, "linode_version": 3},
path)
-
- config = mock.MagicMock(linode_credentials=path,
- linode_propagation_seconds=0)
- auth = Authenticator(config, "linode")
- auth._setup_credentials()
- client = auth._get_linode_client()
- self.assertEqual(3, client.api_version)
-
- # pylint: disable=protected-access
- def test_api_version_4_manual(self):
- path = os.path.join(self.tempdir, 'file_4_manual.ini')
- dns_test_common.write({"linode_key": TOKEN_V3, "linode_version": 4},
path)
-
- config = mock.MagicMock(linode_credentials=path,
- linode_propagation_seconds=0)
- auth = Authenticator(config, "linode")
- auth._setup_credentials()
- client = auth._get_linode_client()
- self.assertEqual(4, client.api_version)
-
- # pylint: disable=protected-access
- def test_api_version_error(self):
- path = os.path.join(self.tempdir, 'file_version_error.ini')
- dns_test_common.write({"linode_key": TOKEN_V3, "linode_version": 5},
path)
-
- config = mock.MagicMock(linode_credentials=path,
- linode_propagation_seconds=0)
- auth = Authenticator(config, "linode")
- auth._setup_credentials()
- self.assertRaises(errors.PluginError, auth._get_linode_client)
-
-class LinodeLexiconClientTest(unittest.TestCase,
dns_test_common_lexicon.BaseLexiconClientTest):
-
- DOMAIN_NOT_FOUND = Exception('Domain not found')
-
- def setUp(self):
- from certbot_dns_linode.dns_linode import _LinodeLexiconClient
-
- self.client = _LinodeLexiconClient(TOKEN, 3)
-
- self.provider_mock = mock.MagicMock()
- self.client.provider = self.provider_mock
-
-class Linode4LexiconClientTest(unittest.TestCase,
dns_test_common_lexicon.BaseLexiconClientTest):
-
- DOMAIN_NOT_FOUND = Exception('Domain not found')
-
- def setUp(self):
- from certbot_dns_linode.dns_linode import _LinodeLexiconClient
-
- self.client = _LinodeLexiconClient(TOKEN, 4)
-
- 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-linode-0.40.1/certbot_dns_linode.egg-info/PKG-INFO
new/certbot-dns-linode-1.0.0/certbot_dns_linode.egg-info/PKG-INFO
--- old/certbot-dns-linode-0.40.1/certbot_dns_linode.egg-info/PKG-INFO
2019-11-06 03:25:15.000000000 +0100
+++ new/certbot-dns-linode-1.0.0/certbot_dns_linode.egg-info/PKG-INFO
2019-12-03 18:21:05.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: certbot-dns-linode
-Version: 0.40.1
+Version: 1.0.0
Summary: Linode DNS 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-linode-0.40.1/certbot_dns_linode.egg-info/SOURCES.txt
new/certbot-dns-linode-1.0.0/certbot_dns_linode.egg-info/SOURCES.txt
--- old/certbot-dns-linode-0.40.1/certbot_dns_linode.egg-info/SOURCES.txt
2019-11-06 03:25:15.000000000 +0100
+++ new/certbot-dns-linode-1.0.0/certbot_dns_linode.egg-info/SOURCES.txt
2019-12-03 18:21:05.000000000 +0100
@@ -4,18 +4,18 @@
setup.cfg
setup.py
certbot_dns_linode/__init__.py
-certbot_dns_linode/dns_linode.py
-certbot_dns_linode/dns_linode_test.py
certbot_dns_linode.egg-info/PKG-INFO
certbot_dns_linode.egg-info/SOURCES.txt
certbot_dns_linode.egg-info/dependency_links.txt
certbot_dns_linode.egg-info/entry_points.txt
certbot_dns_linode.egg-info/requires.txt
certbot_dns_linode.egg-info/top_level.txt
+certbot_dns_linode/_internal/__init__.py
+certbot_dns_linode/_internal/dns_linode.py
docs/.gitignore
docs/Makefile
docs/api.rst
docs/conf.py
docs/index.rst
docs/make.bat
-docs/api/dns_linode.rst
\ No newline at end of file
+tests/dns_linode_test.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-linode-0.40.1/certbot_dns_linode.egg-info/entry_points.txt
new/certbot-dns-linode-1.0.0/certbot_dns_linode.egg-info/entry_points.txt
--- old/certbot-dns-linode-0.40.1/certbot_dns_linode.egg-info/entry_points.txt
2019-11-06 03:25:15.000000000 +0100
+++ new/certbot-dns-linode-1.0.0/certbot_dns_linode.egg-info/entry_points.txt
2019-12-03 18:21:05.000000000 +0100
@@ -1,3 +1,3 @@
[certbot.plugins]
-dns-linode = certbot_dns_linode.dns_linode:Authenticator
+dns-linode = certbot_dns_linode._internal.dns_linode:Authenticator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/certbot-dns-linode-0.40.1/docs/api/dns_linode.rst
new/certbot-dns-linode-1.0.0/docs/api/dns_linode.rst
--- old/certbot-dns-linode-0.40.1/docs/api/dns_linode.rst 2019-11-06
03:24:51.000000000 +0100
+++ new/certbot-dns-linode-1.0.0/docs/api/dns_linode.rst 1970-01-01
01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-:mod:`certbot_dns_linode.dns_linode`
-------------------------------------------------
-
-.. automodule:: certbot_dns_linode.dns_linode
- :members:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/certbot-dns-linode-0.40.1/docs/api.rst
new/certbot-dns-linode-1.0.0/docs/api.rst
--- old/certbot-dns-linode-0.40.1/docs/api.rst 2019-11-06 03:24:51.000000000
+0100
+++ new/certbot-dns-linode-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-linode-0.40.1/setup.py
new/certbot-dns-linode-1.0.0/setup.py
--- old/certbot-dns-linode-0.40.1/setup.py 2019-11-06 03:24:52.000000000
+0100
+++ new/certbot-dns-linode-1.0.0/setup.py 2019-12-03 18:20:32.000000000
+0100
@@ -1,7 +1,9 @@
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'
# Please update tox.ini when modifying dependency version requirements
install_requires = [
@@ -18,6 +20,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-linode',
version=version,
@@ -58,8 +74,10 @@
},
entry_points={
'certbot.plugins': [
- 'dns-linode = certbot_dns_linode.dns_linode:Authenticator',
+ 'dns-linode =
certbot_dns_linode._internal.dns_linode:Authenticator',
],
},
+ tests_require=["pytest"],
test_suite='certbot_dns_linode',
+ cmdclass={"test": PyTest},
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/certbot-dns-linode-0.40.1/tests/dns_linode_test.py
new/certbot-dns-linode-1.0.0/tests/dns_linode_test.py
--- old/certbot-dns-linode-0.40.1/tests/dns_linode_test.py 1970-01-01
01:00:00.000000000 +0100
+++ new/certbot-dns-linode-1.0.0/tests/dns_linode_test.py 2019-12-03
18:20:30.000000000 +0100
@@ -0,0 +1,144 @@
+"""Tests for certbot_dns_linode._internal.dns_linode."""
+
+import unittest
+
+import mock
+
+from certbot import errors
+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
+from certbot_dns_linode._internal.dns_linode import Authenticator
+
+TOKEN = 'a-token'
+TOKEN_V3 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ64'
+TOKEN_V4 = '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'
+
+class AuthenticatorTest(test_util.TempDirTestCase,
+ dns_test_common_lexicon.BaseLexiconAuthenticatorTest):
+
+ def setUp(self):
+ super(AuthenticatorTest, self).setUp()
+
+ path = os.path.join(self.tempdir, 'file.ini')
+ dns_test_common.write({"linode_key": TOKEN}, path)
+
+ self.config = mock.MagicMock(linode_credentials=path,
+ linode_propagation_seconds=0) # don't
wait during tests
+
+ self.auth = Authenticator(self.config, "linode")
+
+ self.mock_client = mock.MagicMock()
+ # _get_linode_client | pylint: disable=protected-access
+ self.auth._get_linode_client =
mock.MagicMock(return_value=self.mock_client)
+
+ # pylint: disable=protected-access
+ def test_api_version_3_detection(self):
+ path = os.path.join(self.tempdir, 'file_3_auto.ini')
+ dns_test_common.write({"linode_key": TOKEN_V3}, path)
+
+ config = mock.MagicMock(linode_credentials=path,
+ linode_propagation_seconds=0)
+ auth = Authenticator(config, "linode")
+ auth._setup_credentials()
+ client = auth._get_linode_client()
+ self.assertEqual(3, client.api_version)
+
+ # pylint: disable=protected-access
+ def test_api_version_4_detection(self):
+ path = os.path.join(self.tempdir, 'file_4_auto.ini')
+ dns_test_common.write({"linode_key": TOKEN_V4}, path)
+
+ config = mock.MagicMock(linode_credentials=path,
+ linode_propagation_seconds=0)
+ auth = Authenticator(config, "linode")
+ auth._setup_credentials()
+ client = auth._get_linode_client()
+ self.assertEqual(4, client.api_version)
+
+ # pylint: disable=protected-access
+ def test_api_version_3_detection_empty_version(self):
+ path = os.path.join(self.tempdir, 'file_3_auto_empty.ini')
+ dns_test_common.write({"linode_key": TOKEN_V3, "linode_version": ""},
path)
+
+ config = mock.MagicMock(linode_credentials=path,
+ linode_propagation_seconds=0)
+ auth = Authenticator(config, "linode")
+ auth._setup_credentials()
+ client = auth._get_linode_client()
+ self.assertEqual(3, client.api_version)
+
+ # pylint: disable=protected-access
+ def test_api_version_4_detection_empty_version(self):
+ path = os.path.join(self.tempdir, 'file_4_auto_empty.ini')
+ dns_test_common.write({"linode_key": TOKEN_V4, "linode_version": ""},
path)
+
+ config = mock.MagicMock(linode_credentials=path,
+ linode_propagation_seconds=0)
+ auth = Authenticator(config, "linode")
+ auth._setup_credentials()
+ client = auth._get_linode_client()
+ self.assertEqual(4, client.api_version)
+
+ # pylint: disable=protected-access
+ def test_api_version_3_manual(self):
+ path = os.path.join(self.tempdir, 'file_3_manual.ini')
+ dns_test_common.write({"linode_key": TOKEN_V4, "linode_version": 3},
path)
+
+ config = mock.MagicMock(linode_credentials=path,
+ linode_propagation_seconds=0)
+ auth = Authenticator(config, "linode")
+ auth._setup_credentials()
+ client = auth._get_linode_client()
+ self.assertEqual(3, client.api_version)
+
+ # pylint: disable=protected-access
+ def test_api_version_4_manual(self):
+ path = os.path.join(self.tempdir, 'file_4_manual.ini')
+ dns_test_common.write({"linode_key": TOKEN_V3, "linode_version": 4},
path)
+
+ config = mock.MagicMock(linode_credentials=path,
+ linode_propagation_seconds=0)
+ auth = Authenticator(config, "linode")
+ auth._setup_credentials()
+ client = auth._get_linode_client()
+ self.assertEqual(4, client.api_version)
+
+ # pylint: disable=protected-access
+ def test_api_version_error(self):
+ path = os.path.join(self.tempdir, 'file_version_error.ini')
+ dns_test_common.write({"linode_key": TOKEN_V3, "linode_version": 5},
path)
+
+ config = mock.MagicMock(linode_credentials=path,
+ linode_propagation_seconds=0)
+ auth = Authenticator(config, "linode")
+ auth._setup_credentials()
+ self.assertRaises(errors.PluginError, auth._get_linode_client)
+
+class LinodeLexiconClientTest(unittest.TestCase,
dns_test_common_lexicon.BaseLexiconClientTest):
+
+ DOMAIN_NOT_FOUND = Exception('Domain not found')
+
+ def setUp(self):
+ from certbot_dns_linode._internal.dns_linode import
_LinodeLexiconClient
+
+ self.client = _LinodeLexiconClient(TOKEN, 3)
+
+ self.provider_mock = mock.MagicMock()
+ self.client.provider = self.provider_mock
+
+class Linode4LexiconClientTest(unittest.TestCase,
dns_test_common_lexicon.BaseLexiconClientTest):
+
+ DOMAIN_NOT_FOUND = Exception('Domain not found')
+
+ def setUp(self):
+ from certbot_dns_linode._internal.dns_linode import
_LinodeLexiconClient
+
+ self.client = _LinodeLexiconClient(TOKEN, 4)
+
+ self.provider_mock = mock.MagicMock()
+ self.client.provider = self.provider_mock
+
+if __name__ == "__main__":
+ unittest.main() # pragma: no cover