Hello community,
here is the log from the commit of package python-certbot-dns-cloudxns for
openSUSE:Factory checked in at 2020-01-03 17:38:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-certbot-dns-cloudxns (Old)
and /work/SRC/openSUSE:Factory/.python-certbot-dns-cloudxns.new.6675 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-certbot-dns-cloudxns"
Fri Jan 3 17:38:59 2020 rev:15 rq:760651 version:1.0.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-certbot-dns-cloudxns/python-certbot-dns-cloudxns.changes
2019-11-15 00:23:05.651891858 +0100
+++
/work/SRC/openSUSE:Factory/.python-certbot-dns-cloudxns.new.6675/python-certbot-dns-cloudxns.changes
2020-01-03 17:39:17.023366485 +0100
@@ -1,0 +2,6 @@
+Fri Jan 3 11:43:15 UTC 2020 - Marketa Calabkova <[email protected]>
+
+- update to version 1.0.0
+ * sync with main certbot package
+
+-------------------------------------------------------------------
Old:
----
certbot-dns-cloudxns-0.40.1.tar.gz
New:
----
certbot-dns-cloudxns-1.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-certbot-dns-cloudxns.spec ++++++
--- /var/tmp/diff_new_pack.qWok2X/_old 2020-01-03 17:39:17.907366939 +0100
+++ /var/tmp/diff_new_pack.qWok2X/_new 2020-01-03 17:39:17.911366941 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-certbot-dns-cloudxns
#
-# 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,21 +18,22 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-certbot-dns-cloudxns
-Version: 0.40.1
+Version: 1.0.0
Release: 0
Summary: CloudXNS Authenticator plugin for Certbot
License: Apache-2.0
URL: https://github.com/certbot/certbot
Source:
https://files.pythonhosted.org/packages/source/c/certbot-dns-cloudxns/certbot-dns-cloudxns-%{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: %{python_module zope.interface}
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-cloudxns-0.40.1.tar.gz -> certbot-dns-cloudxns-1.0.0.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/certbot-dns-cloudxns-0.40.1/MANIFEST.in
new/certbot-dns-cloudxns-1.0.0/MANIFEST.in
--- old/certbot-dns-cloudxns-0.40.1/MANIFEST.in 2019-11-06 03:24:51.000000000
+0100
+++ new/certbot-dns-cloudxns-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-cloudxns-0.40.1/PKG-INFO
new/certbot-dns-cloudxns-1.0.0/PKG-INFO
--- old/certbot-dns-cloudxns-0.40.1/PKG-INFO 2019-11-06 03:25:03.000000000
+0100
+++ new/certbot-dns-cloudxns-1.0.0/PKG-INFO 2019-12-03 18:20:52.000000000
+0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: certbot-dns-cloudxns
-Version: 0.40.1
+Version: 1.0.0
Summary: CloudXNS 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-cloudxns-0.40.1/certbot_dns_cloudxns/_internal/__init__.py
new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns/_internal/__init__.py
--- old/certbot-dns-cloudxns-0.40.1/certbot_dns_cloudxns/_internal/__init__.py
1970-01-01 01:00:00.000000000 +0100
+++ new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns/_internal/__init__.py
2019-12-03 18:20:30.000000000 +0100
@@ -0,0 +1 @@
+"""Internal implementation of `~certbot_dns_cloudxns.dns_cloudxns` plugin."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-cloudxns-0.40.1/certbot_dns_cloudxns/_internal/dns_cloudxns.py
new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns/_internal/dns_cloudxns.py
---
old/certbot-dns-cloudxns-0.40.1/certbot_dns_cloudxns/_internal/dns_cloudxns.py
1970-01-01 01:00:00.000000000 +0100
+++
new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns/_internal/dns_cloudxns.py
2019-12-03 18:20:30.000000000 +0100
@@ -0,0 +1,87 @@
+"""DNS Authenticator for CloudXNS DNS."""
+import logging
+
+import zope.interface
+from lexicon.providers import cloudxns
+
+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://www.cloudxns.net/en/AccountManage/apimanage.html'
+
+
[email protected](interfaces.IAuthenticator)
[email protected](interfaces.IPluginFactory)
+class Authenticator(dns_common.DNSAuthenticator):
+ """DNS Authenticator for CloudXNS DNS
+
+ This Authenticator uses the CloudXNS DNS API to fulfill a dns-01 challenge.
+ """
+
+ description = 'Obtain certificates using a DNS TXT record (if you are
using CloudXNS 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='CloudXNS 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 CloudXNS API.'
+
+ def _setup_credentials(self):
+ self.credentials = self._configure_credentials(
+ 'credentials',
+ 'CloudXNS credentials INI file',
+ {
+ 'api-key': 'API key for CloudXNS account, obtained from
{0}'.format(ACCOUNT_URL),
+ 'secret-key': 'Secret key for CloudXNS account, obtained from
{0}'
+ .format(ACCOUNT_URL)
+ }
+ )
+
+ def _perform(self, domain, validation_name, validation):
+ self._get_cloudxns_client().add_txt_record(domain, validation_name,
validation)
+
+ def _cleanup(self, domain, validation_name, validation):
+ self._get_cloudxns_client().del_txt_record(domain, validation_name,
validation)
+
+ def _get_cloudxns_client(self):
+ return _CloudXNSLexiconClient(self.credentials.conf('api-key'),
+ self.credentials.conf('secret-key'),
+ self.ttl)
+
+
+class _CloudXNSLexiconClient(dns_common_lexicon.LexiconClient):
+ """
+ Encapsulates all communication with the CloudXNS via Lexicon.
+ """
+
+ def __init__(self, api_key, secret_key, ttl):
+ super(_CloudXNSLexiconClient, self).__init__()
+
+ config = dns_common_lexicon.build_lexicon_config('cloudxns', {
+ 'ttl': ttl,
+ }, {
+ 'auth_username': api_key,
+ 'auth_token': secret_key,
+ })
+
+ self.provider = cloudxns.Provider(config)
+
+ def _handle_http_error(self, e, domain_name):
+ hint = None
+ if str(e).startswith('400 Client Error:'):
+ hint = 'Are your API key and Secret key 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-cloudxns-0.40.1/certbot_dns_cloudxns/dns_cloudxns.py
new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns/dns_cloudxns.py
--- old/certbot-dns-cloudxns-0.40.1/certbot_dns_cloudxns/dns_cloudxns.py
2019-11-06 03:24:51.000000000 +0100
+++ new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns/dns_cloudxns.py
1970-01-01 01:00:00.000000000 +0100
@@ -1,87 +0,0 @@
-"""DNS Authenticator for CloudXNS DNS."""
-import logging
-
-import zope.interface
-from lexicon.providers import cloudxns
-
-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://www.cloudxns.net/en/AccountManage/apimanage.html'
-
-
[email protected](interfaces.IAuthenticator)
[email protected](interfaces.IPluginFactory)
-class Authenticator(dns_common.DNSAuthenticator):
- """DNS Authenticator for CloudXNS DNS
-
- This Authenticator uses the CloudXNS DNS API to fulfill a dns-01 challenge.
- """
-
- description = 'Obtain certificates using a DNS TXT record (if you are
using CloudXNS 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='CloudXNS 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 CloudXNS API.'
-
- def _setup_credentials(self):
- self.credentials = self._configure_credentials(
- 'credentials',
- 'CloudXNS credentials INI file',
- {
- 'api-key': 'API key for CloudXNS account, obtained from
{0}'.format(ACCOUNT_URL),
- 'secret-key': 'Secret key for CloudXNS account, obtained from
{0}'
- .format(ACCOUNT_URL)
- }
- )
-
- def _perform(self, domain, validation_name, validation):
- self._get_cloudxns_client().add_txt_record(domain, validation_name,
validation)
-
- def _cleanup(self, domain, validation_name, validation):
- self._get_cloudxns_client().del_txt_record(domain, validation_name,
validation)
-
- def _get_cloudxns_client(self):
- return _CloudXNSLexiconClient(self.credentials.conf('api-key'),
- self.credentials.conf('secret-key'),
- self.ttl)
-
-
-class _CloudXNSLexiconClient(dns_common_lexicon.LexiconClient):
- """
- Encapsulates all communication with the CloudXNS via Lexicon.
- """
-
- def __init__(self, api_key, secret_key, ttl):
- super(_CloudXNSLexiconClient, self).__init__()
-
- config = dns_common_lexicon.build_lexicon_config('cloudxns', {
- 'ttl': ttl,
- }, {
- 'auth_username': api_key,
- 'auth_token': secret_key,
- })
-
- self.provider = cloudxns.Provider(config)
-
- def _handle_http_error(self, e, domain_name):
- hint = None
- if str(e).startswith('400 Client Error:'):
- hint = 'Are your API key and Secret key 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-cloudxns-0.40.1/certbot_dns_cloudxns/dns_cloudxns_test.py
new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns/dns_cloudxns_test.py
--- old/certbot-dns-cloudxns-0.40.1/certbot_dns_cloudxns/dns_cloudxns_test.py
2019-11-06 03:24:51.000000000 +0100
+++ new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns/dns_cloudxns_test.py
1970-01-01 01:00:00.000000000 +0100
@@ -1,54 +0,0 @@
-"""Tests for certbot_dns_cloudxns.dns_cloudxns."""
-
-import unittest
-
-import mock
-from requests.exceptions import HTTPError, RequestException
-
-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
-
-DOMAIN_NOT_FOUND = Exception('No domain found')
-GENERIC_ERROR = RequestException
-LOGIN_ERROR = HTTPError('400 Client Error: ...')
-
-API_KEY = 'foo'
-SECRET = 'bar'
-
-
-class AuthenticatorTest(test_util.TempDirTestCase,
- dns_test_common_lexicon.BaseLexiconAuthenticatorTest):
-
- def setUp(self):
- super(AuthenticatorTest, self).setUp()
-
- from certbot_dns_cloudxns.dns_cloudxns import Authenticator
-
- path = os.path.join(self.tempdir, 'file.ini')
- dns_test_common.write({"cloudxns_api_key": API_KEY,
"cloudxns_secret_key": SECRET}, path)
-
- self.config = mock.MagicMock(cloudxns_credentials=path,
- cloudxns_propagation_seconds=0) # don't
wait during tests
-
- self.auth = Authenticator(self.config, "cloudxns")
-
- self.mock_client = mock.MagicMock()
- # _get_cloudxns_client | pylint: disable=protected-access
- self.auth._get_cloudxns_client =
mock.MagicMock(return_value=self.mock_client)
-
-
-class CloudXNSLexiconClientTest(unittest.TestCase,
dns_test_common_lexicon.BaseLexiconClientTest):
-
- def setUp(self):
- from certbot_dns_cloudxns.dns_cloudxns import _CloudXNSLexiconClient
-
- self.client = _CloudXNSLexiconClient(API_KEY, SECRET, 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-cloudxns-0.40.1/certbot_dns_cloudxns.egg-info/PKG-INFO
new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns.egg-info/PKG-INFO
--- old/certbot-dns-cloudxns-0.40.1/certbot_dns_cloudxns.egg-info/PKG-INFO
2019-11-06 03:25:03.000000000 +0100
+++ new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns.egg-info/PKG-INFO
2019-12-03 18:20:52.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: certbot-dns-cloudxns
-Version: 0.40.1
+Version: 1.0.0
Summary: CloudXNS 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-cloudxns-0.40.1/certbot_dns_cloudxns.egg-info/SOURCES.txt
new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns.egg-info/SOURCES.txt
--- old/certbot-dns-cloudxns-0.40.1/certbot_dns_cloudxns.egg-info/SOURCES.txt
2019-11-06 03:25:03.000000000 +0100
+++ new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns.egg-info/SOURCES.txt
2019-12-03 18:20:52.000000000 +0100
@@ -4,18 +4,18 @@
setup.cfg
setup.py
certbot_dns_cloudxns/__init__.py
-certbot_dns_cloudxns/dns_cloudxns.py
-certbot_dns_cloudxns/dns_cloudxns_test.py
certbot_dns_cloudxns.egg-info/PKG-INFO
certbot_dns_cloudxns.egg-info/SOURCES.txt
certbot_dns_cloudxns.egg-info/dependency_links.txt
certbot_dns_cloudxns.egg-info/entry_points.txt
certbot_dns_cloudxns.egg-info/requires.txt
certbot_dns_cloudxns.egg-info/top_level.txt
+certbot_dns_cloudxns/_internal/__init__.py
+certbot_dns_cloudxns/_internal/dns_cloudxns.py
docs/.gitignore
docs/Makefile
docs/api.rst
docs/conf.py
docs/index.rst
docs/make.bat
-docs/api/dns_cloudxns.rst
\ No newline at end of file
+tests/dns_cloudxns_test.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-cloudxns-0.40.1/certbot_dns_cloudxns.egg-info/entry_points.txt
new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns.egg-info/entry_points.txt
---
old/certbot-dns-cloudxns-0.40.1/certbot_dns_cloudxns.egg-info/entry_points.txt
2019-11-06 03:25:03.000000000 +0100
+++
new/certbot-dns-cloudxns-1.0.0/certbot_dns_cloudxns.egg-info/entry_points.txt
2019-12-03 18:20:52.000000000 +0100
@@ -1,3 +1,3 @@
[certbot.plugins]
-dns-cloudxns = certbot_dns_cloudxns.dns_cloudxns:Authenticator
+dns-cloudxns = certbot_dns_cloudxns._internal.dns_cloudxns:Authenticator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-cloudxns-0.40.1/docs/api/dns_cloudxns.rst
new/certbot-dns-cloudxns-1.0.0/docs/api/dns_cloudxns.rst
--- old/certbot-dns-cloudxns-0.40.1/docs/api/dns_cloudxns.rst 2019-11-06
03:24:51.000000000 +0100
+++ new/certbot-dns-cloudxns-1.0.0/docs/api/dns_cloudxns.rst 1970-01-01
01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-:mod:`certbot_dns_cloudxns.dns_cloudxns`
-----------------------------------------
-
-.. automodule:: certbot_dns_cloudxns.dns_cloudxns
- :members:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/certbot-dns-cloudxns-0.40.1/docs/api.rst
new/certbot-dns-cloudxns-1.0.0/docs/api.rst
--- old/certbot-dns-cloudxns-0.40.1/docs/api.rst 2019-11-06
03:24:51.000000000 +0100
+++ new/certbot-dns-cloudxns-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-cloudxns-0.40.1/setup.py
new/certbot-dns-cloudxns-1.0.0/setup.py
--- old/certbot-dns-cloudxns-0.40.1/setup.py 2019-11-06 03:24:52.000000000
+0100
+++ new/certbot-dns-cloudxns-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-cloudxns',
version=version,
@@ -60,8 +76,10 @@
},
entry_points={
'certbot.plugins': [
- 'dns-cloudxns = certbot_dns_cloudxns.dns_cloudxns:Authenticator',
+ 'dns-cloudxns =
certbot_dns_cloudxns._internal.dns_cloudxns:Authenticator',
],
},
+ tests_require=["pytest"],
test_suite='certbot_dns_cloudxns',
+ cmdclass={"test": PyTest},
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-cloudxns-0.40.1/tests/dns_cloudxns_test.py
new/certbot-dns-cloudxns-1.0.0/tests/dns_cloudxns_test.py
--- old/certbot-dns-cloudxns-0.40.1/tests/dns_cloudxns_test.py 1970-01-01
01:00:00.000000000 +0100
+++ new/certbot-dns-cloudxns-1.0.0/tests/dns_cloudxns_test.py 2019-12-03
18:20:30.000000000 +0100
@@ -0,0 +1,54 @@
+"""Tests for certbot_dns_cloudxns._internal.dns_cloudxns."""
+
+import unittest
+
+import mock
+from requests.exceptions import HTTPError, RequestException
+
+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
+
+DOMAIN_NOT_FOUND = Exception('No domain found')
+GENERIC_ERROR = RequestException
+LOGIN_ERROR = HTTPError('400 Client Error: ...')
+
+API_KEY = 'foo'
+SECRET = 'bar'
+
+
+class AuthenticatorTest(test_util.TempDirTestCase,
+ dns_test_common_lexicon.BaseLexiconAuthenticatorTest):
+
+ def setUp(self):
+ super(AuthenticatorTest, self).setUp()
+
+ from certbot_dns_cloudxns._internal.dns_cloudxns import Authenticator
+
+ path = os.path.join(self.tempdir, 'file.ini')
+ dns_test_common.write({"cloudxns_api_key": API_KEY,
"cloudxns_secret_key": SECRET}, path)
+
+ self.config = mock.MagicMock(cloudxns_credentials=path,
+ cloudxns_propagation_seconds=0) # don't
wait during tests
+
+ self.auth = Authenticator(self.config, "cloudxns")
+
+ self.mock_client = mock.MagicMock()
+ # _get_cloudxns_client | pylint: disable=protected-access
+ self.auth._get_cloudxns_client =
mock.MagicMock(return_value=self.mock_client)
+
+
+class CloudXNSLexiconClientTest(unittest.TestCase,
dns_test_common_lexicon.BaseLexiconClientTest):
+
+ def setUp(self):
+ from certbot_dns_cloudxns._internal.dns_cloudxns import
_CloudXNSLexiconClient
+
+ self.client = _CloudXNSLexiconClient(API_KEY, SECRET, 0)
+
+ self.provider_mock = mock.MagicMock()
+ self.client.provider = self.provider_mock
+
+
+if __name__ == "__main__":
+ unittest.main() # pragma: no cover