Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-certbot-dns-digitalocean for
openSUSE:Factory checked in at 2023-06-07 23:08:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-certbot-dns-digitalocean (Old)
and /work/SRC/openSUSE:Factory/.python-certbot-dns-digitalocean.new.15902
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-certbot-dns-digitalocean"
Wed Jun 7 23:08:22 2023 rev:37 rq:1091323 version:2.6.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-certbot-dns-digitalocean/python-certbot-dns-digitalocean.changes
2022-10-27 13:55:14.796896295 +0200
+++
/work/SRC/openSUSE:Factory/.python-certbot-dns-digitalocean.new.15902/python-certbot-dns-digitalocean.changes
2023-06-07 23:08:57.599879196 +0200
@@ -1,0 +2,10 @@
+Wed Jun 7 16:05:11 UTC 2023 - Markéta Machová <[email protected]>
+
+- update to version 2.6.0
+ * Support for Python 3.11 was added to Certbot and all of its components.
+ * All Certbot components now require pytest to run tests.
+ * Packaged tests for all Certbot components besides josepy were moved inside
the _internal/tests module.
+ * There is now a new Other annotated challenge object to allow plugins to
support entirely novel challenges.
+ * Certbot no longer depends on zope.
+
+-------------------------------------------------------------------
Old:
----
certbot-dns-digitalocean-1.31.0.tar.gz
New:
----
certbot-dns-digitalocean-2.6.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-certbot-dns-digitalocean.spec ++++++
--- /var/tmp/diff_new_pack.N9mLu8/_old 2023-06-07 23:08:58.123882239 +0200
+++ /var/tmp/diff_new_pack.N9mLu8/_new 2023-06-07 23:08:58.123882239 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-certbot-dns-digitalocean
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-certbot-dns-digitalocean
-Version: 1.31.0
+Version: 2.6.0
Release: 0
Summary: DigitalOcean Authenticator plugin for Certbot
License: Apache-2.0
@@ -34,8 +34,6 @@
Requires: python-acme >= %{version}
Requires: python-certbot >= %{version}
Requires: python-digitalocean >= 1.11
-Requires: python-six
-Requires: python-zope.interface
BuildArch: noarch
%python_subpackages
++++++ certbot-dns-digitalocean-1.31.0.tar.gz ->
certbot-dns-digitalocean-2.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/certbot-dns-digitalocean-1.31.0/MANIFEST.in
new/certbot-dns-digitalocean-2.6.0/MANIFEST.in
--- old/certbot-dns-digitalocean-1.31.0/MANIFEST.in 2022-10-04
16:40:41.000000000 +0200
+++ new/certbot-dns-digitalocean-2.6.0/MANIFEST.in 2023-05-09
21:44:36.000000000 +0200
@@ -1,7 +1,6 @@
include LICENSE.txt
include README.rst
recursive-include docs *
-recursive-include tests *
include certbot_dns_digitalocean/py.typed
global-exclude __pycache__
global-exclude *.py[cod]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/certbot-dns-digitalocean-1.31.0/PKG-INFO
new/certbot-dns-digitalocean-2.6.0/PKG-INFO
--- old/certbot-dns-digitalocean-1.31.0/PKG-INFO 2022-10-04
16:41:01.283488500 +0200
+++ new/certbot-dns-digitalocean-2.6.0/PKG-INFO 2023-05-09 21:44:47.242066000
+0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: certbot-dns-digitalocean
-Version: 1.31.0
+Version: 2.6.0
Summary: DigitalOcean DNS Authenticator plugin for Certbot
Home-page: https://github.com/certbot/certbot
Author: Certbot Project
@@ -17,6 +17,7 @@
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Security
Classifier: Topic :: System :: Installation/Setup
@@ -25,4 +26,5 @@
Classifier: Topic :: Utilities
Requires-Python: >=3.7
Provides-Extra: docs
+Provides-Extra: test
License-File: LICENSE.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean/_internal/dns_digitalocean.py
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean/_internal/dns_digitalocean.py
---
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean/_internal/dns_digitalocean.py
2022-10-04 16:40:41.000000000 +0200
+++
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean/_internal/dns_digitalocean.py
2023-05-09 21:44:36.000000000 +0200
@@ -2,6 +2,7 @@
import logging
from typing import Any
from typing import Callable
+from typing import cast
from typing import Optional
import digitalocean
@@ -56,7 +57,7 @@
def _get_digitalocean_client(self) -> "_DigitalOceanClient":
if not self.credentials: # pragma: no cover
raise errors.Error("Plugin has not been prepared.")
- return _DigitalOceanClient(self.credentials.conf('token'))
+ return _DigitalOceanClient(cast(str, self.credentials.conf('token')))
class _DigitalOceanClient:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean/_internal/tests/__init__.py
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean/_internal/tests/__init__.py
---
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean/_internal/tests/__init__.py
1970-01-01 01:00:00.000000000 +0100
+++
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean/_internal/tests/__init__.py
2023-05-09 21:44:36.000000000 +0200
@@ -0,0 +1 @@
+"""certbot-dns-digitalocean tests"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean/_internal/tests/dns_digitalocean_test.py
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean/_internal/tests/dns_digitalocean_test.py
---
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean/_internal/tests/dns_digitalocean_test.py
1970-01-01 01:00:00.000000000 +0100
+++
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean/_internal/tests/dns_digitalocean_test.py
2023-05-09 21:44:36.000000000 +0200
@@ -0,0 +1,174 @@
+"""Tests for certbot_dns_digitalocean._internal.dns_digitalocean."""
+
+import sys
+import unittest
+from unittest import mock
+
+import digitalocean
+import pytest
+
+from certbot import errors
+from certbot.compat import os
+from certbot.plugins import dns_test_common
+from certbot.plugins.dns_test_common import DOMAIN
+from certbot.tests import util as test_util
+
+API_ERROR = digitalocean.DataReadError()
+TOKEN = 'a-token'
+
+
+class AuthenticatorTest(test_util.TempDirTestCase,
dns_test_common.BaseAuthenticatorTest):
+
+ def setUp(self):
+ from certbot_dns_digitalocean._internal.dns_digitalocean import
Authenticator
+
+ super().setUp()
+
+ path = os.path.join(self.tempdir, 'file.ini')
+ dns_test_common.write({"digitalocean_token": TOKEN}, path)
+
+ self.config = mock.MagicMock(digitalocean_credentials=path,
+ digitalocean_propagation_seconds=0) #
don't wait during tests
+
+ self.auth = Authenticator(self.config, "digitalocean")
+
+ self.mock_client = mock.MagicMock()
+ # _get_digitalocean_client | pylint: disable=protected-access
+ self.auth._get_digitalocean_client =
mock.MagicMock(return_value=self.mock_client)
+
+ @test_util.patch_display_util()
+ def test_perform(self, unused_mock_get_utility):
+ self.auth.perform([self.achall])
+
+ expected = [mock.call.add_txt_record(DOMAIN,
'_acme-challenge.'+DOMAIN, mock.ANY, 30)]
+ assert expected == self.mock_client.mock_calls
+
+ def test_cleanup(self):
+ # _attempt_cleanup | pylint: disable=protected-access
+ self.auth._attempt_cleanup = True
+ self.auth.cleanup([self.achall])
+
+ expected = [mock.call.del_txt_record(DOMAIN,
'_acme-challenge.'+DOMAIN, mock.ANY)]
+ assert expected == self.mock_client.mock_calls
+
+
+class DigitalOceanClientTest(unittest.TestCase):
+
+ id_num = 1
+ record_prefix = "_acme-challenge"
+ record_name = record_prefix + "." + DOMAIN
+ record_content = "bar"
+ record_ttl = 60
+
+ def setUp(self):
+ from certbot_dns_digitalocean._internal.dns_digitalocean import
_DigitalOceanClient
+
+ self.digitalocean_client = _DigitalOceanClient(TOKEN)
+
+ self.manager = mock.MagicMock()
+ self.digitalocean_client.manager = self.manager
+
+ def test_add_txt_record(self):
+ wrong_domain_mock = mock.MagicMock()
+ wrong_domain_mock.name = "other.invalid"
+ wrong_domain_mock.create_new_domain_record.side_effect =
AssertionError('Wrong Domain')
+
+ domain_mock = mock.MagicMock()
+ domain_mock.name = DOMAIN
+ domain_mock.create_new_domain_record.return_value = {'domain_record':
{'id': self.id_num}}
+
+ self.manager.get_all_domains.return_value = [wrong_domain_mock,
domain_mock]
+
+ self.digitalocean_client.add_txt_record(DOMAIN, self.record_name,
self.record_content,
+ self.record_ttl)
+
+ domain_mock.create_new_domain_record.assert_called_with(type='TXT',
+
name=self.record_prefix,
+
data=self.record_content,
+
ttl=self.record_ttl)
+
+ def test_add_txt_record_fail_to_find_domain(self):
+ self.manager.get_all_domains.return_value = []
+
+ with pytest.raises(errors.PluginError):
+ self.digitalocean_client.add_txt_record(DOMAIN, self.record_name,
self.record_content, self.record_ttl)
+
+ def test_add_txt_record_error_finding_domain(self):
+ self.manager.get_all_domains.side_effect = API_ERROR
+
+ with pytest.raises(errors.PluginError):
+ self.digitalocean_client.add_txt_record(DOMAIN, self.record_name,
self.record_content, self.record_ttl)
+
+ def test_add_txt_record_error_creating_record(self):
+ domain_mock = mock.MagicMock()
+ domain_mock.name = DOMAIN
+ domain_mock.create_new_domain_record.side_effect = API_ERROR
+
+ self.manager.get_all_domains.return_value = [domain_mock]
+
+ with pytest.raises(errors.PluginError):
+ self.digitalocean_client.add_txt_record(DOMAIN, self.record_name,
self.record_content, self.record_ttl)
+
+ def test_del_txt_record(self):
+ first_record_mock = mock.MagicMock()
+ first_record_mock.type = 'TXT'
+ first_record_mock.name = "DIFFERENT"
+ first_record_mock.data = self.record_content
+
+ correct_record_mock = mock.MagicMock()
+ correct_record_mock.type = 'TXT'
+ correct_record_mock.name = self.record_prefix
+ correct_record_mock.data = self.record_content
+
+ last_record_mock = mock.MagicMock()
+ last_record_mock.type = 'TXT'
+ last_record_mock.name = self.record_prefix
+ last_record_mock.data = "DIFFERENT"
+
+ domain_mock = mock.MagicMock()
+ domain_mock.name = DOMAIN
+ domain_mock.get_records.return_value = [first_record_mock,
+ correct_record_mock,
+ last_record_mock]
+
+ self.manager.get_all_domains.return_value = [domain_mock]
+
+ self.digitalocean_client.del_txt_record(DOMAIN, self.record_name,
self.record_content)
+
+ assert correct_record_mock.destroy.called
+
+ assert not first_record_mock.destroy.call_args_list
+ assert not last_record_mock.destroy.call_args_list
+
+ def test_del_txt_record_error_finding_domain(self):
+ self.manager.get_all_domains.side_effect = API_ERROR
+
+ self.digitalocean_client.del_txt_record(DOMAIN, self.record_name,
self.record_content)
+
+ def test_del_txt_record_error_finding_record(self):
+ domain_mock = mock.MagicMock()
+ domain_mock.name = DOMAIN
+ domain_mock.get_records.side_effect = API_ERROR
+
+ self.manager.get_all_domains.return_value = [domain_mock]
+
+ self.digitalocean_client.del_txt_record(DOMAIN, self.record_name,
self.record_content)
+
+ def test_del_txt_record_error_deleting_record(self):
+ record_mock = mock.MagicMock()
+ record_mock.type = 'TXT'
+ record_mock.name = self.record_prefix
+ record_mock.data = self.record_content
+ record_mock.destroy.side_effect = API_ERROR
+
+ domain_mock = mock.MagicMock()
+ domain_mock.name = DOMAIN
+ domain_mock.get_records.return_value = [record_mock]
+
+ self.manager.get_all_domains.return_value = [domain_mock]
+
+ self.digitalocean_client.del_txt_record(DOMAIN, self.record_name,
self.record_content)
+
+
+if __name__ == "__main__":
+ sys.exit(pytest.main(sys.argv[1:] + [__file__])) # pragma: no cover
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean.egg-info/PKG-INFO
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean.egg-info/PKG-INFO
---
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean.egg-info/PKG-INFO
2022-10-04 16:41:01.000000000 +0200
+++
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean.egg-info/PKG-INFO
2023-05-09 21:44:47.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: certbot-dns-digitalocean
-Version: 1.31.0
+Version: 2.6.0
Summary: DigitalOcean DNS Authenticator plugin for Certbot
Home-page: https://github.com/certbot/certbot
Author: Certbot Project
@@ -17,6 +17,7 @@
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Security
Classifier: Topic :: System :: Installation/Setup
@@ -25,4 +26,5 @@
Classifier: Topic :: Utilities
Requires-Python: >=3.7
Provides-Extra: docs
+Provides-Extra: test
License-File: LICENSE.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean.egg-info/SOURCES.txt
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean.egg-info/SOURCES.txt
---
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean.egg-info/SOURCES.txt
2022-10-04 16:41:01.000000000 +0200
+++
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean.egg-info/SOURCES.txt
2023-05-09 21:44:47.000000000 +0200
@@ -12,10 +12,11 @@
certbot_dns_digitalocean.egg-info/top_level.txt
certbot_dns_digitalocean/_internal/__init__.py
certbot_dns_digitalocean/_internal/dns_digitalocean.py
+certbot_dns_digitalocean/_internal/tests/__init__.py
+certbot_dns_digitalocean/_internal/tests/dns_digitalocean_test.py
docs/.gitignore
docs/Makefile
docs/api.rst
docs/conf.py
docs/index.rst
-docs/make.bat
-tests/dns_digitalocean_test.py
\ No newline at end of file
+docs/make.bat
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean.egg-info/requires.txt
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean.egg-info/requires.txt
---
old/certbot-dns-digitalocean-1.31.0/certbot_dns_digitalocean.egg-info/requires.txt
2022-10-04 16:41:01.000000000 +0200
+++
new/certbot-dns-digitalocean-2.6.0/certbot_dns_digitalocean.egg-info/requires.txt
2023-05-09 21:44:47.000000000 +0200
@@ -1,8 +1,11 @@
python-digitalocean>=1.11
setuptools>=41.6.0
-acme>=1.31.0
-certbot>=1.31.0
+acme>=2.6.0
+certbot>=2.6.0
[docs]
Sphinx>=1.0
sphinx_rtd_theme
+
+[test]
+pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/certbot-dns-digitalocean-1.31.0/setup.py
new/certbot-dns-digitalocean-2.6.0/setup.py
--- old/certbot-dns-digitalocean-1.31.0/setup.py 2022-10-04
16:40:42.000000000 +0200
+++ new/certbot-dns-digitalocean-2.6.0/setup.py 2023-05-09 21:44:37.000000000
+0200
@@ -4,7 +4,7 @@
from setuptools import find_packages
from setuptools import setup
-version = '1.31.0'
+version = '2.6.0'
install_requires = [
'python-digitalocean>=1.11', # 1.15.0 or newer is recommended for TTL
support
@@ -30,6 +30,10 @@
'sphinx_rtd_theme',
]
+test_extras = [
+ 'pytest',
+]
+
setup(
name='certbot-dns-digitalocean',
version=version,
@@ -51,6 +55,7 @@
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
+ 'Programming Language :: Python :: 3.11',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Security',
'Topic :: System :: Installation/Setup',
@@ -64,6 +69,7 @@
install_requires=install_requires,
extras_require={
'docs': docs_extras,
+ 'test': test_extras,
},
entry_points={
'certbot.plugins': [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/certbot-dns-digitalocean-1.31.0/tests/dns_digitalocean_test.py
new/certbot-dns-digitalocean-2.6.0/tests/dns_digitalocean_test.py
--- old/certbot-dns-digitalocean-1.31.0/tests/dns_digitalocean_test.py
2022-10-04 16:40:41.000000000 +0200
+++ new/certbot-dns-digitalocean-2.6.0/tests/dns_digitalocean_test.py
1970-01-01 01:00:00.000000000 +0100
@@ -1,178 +0,0 @@
-"""Tests for certbot_dns_digitalocean._internal.dns_digitalocean."""
-
-import unittest
-
-import digitalocean
-try:
- import mock
-except ImportError: # pragma: no cover
- from unittest import mock # type: ignore
-
-from certbot import errors
-from certbot.compat import os
-from certbot.plugins import dns_test_common
-from certbot.plugins.dns_test_common import DOMAIN
-from certbot.tests import util as test_util
-
-API_ERROR = digitalocean.DataReadError()
-TOKEN = 'a-token'
-
-
-class AuthenticatorTest(test_util.TempDirTestCase,
dns_test_common.BaseAuthenticatorTest):
-
- def setUp(self):
- from certbot_dns_digitalocean._internal.dns_digitalocean import
Authenticator
-
- super().setUp()
-
- path = os.path.join(self.tempdir, 'file.ini')
- dns_test_common.write({"digitalocean_token": TOKEN}, path)
-
- self.config = mock.MagicMock(digitalocean_credentials=path,
- digitalocean_propagation_seconds=0) #
don't wait during tests
-
- self.auth = Authenticator(self.config, "digitalocean")
-
- self.mock_client = mock.MagicMock()
- # _get_digitalocean_client | pylint: disable=protected-access
- self.auth._get_digitalocean_client =
mock.MagicMock(return_value=self.mock_client)
-
- @test_util.patch_display_util()
- def test_perform(self, unused_mock_get_utility):
- self.auth.perform([self.achall])
-
- expected = [mock.call.add_txt_record(DOMAIN,
'_acme-challenge.'+DOMAIN, mock.ANY, 30)]
- self.assertEqual(expected, self.mock_client.mock_calls)
-
- def test_cleanup(self):
- # _attempt_cleanup | pylint: disable=protected-access
- self.auth._attempt_cleanup = True
- self.auth.cleanup([self.achall])
-
- expected = [mock.call.del_txt_record(DOMAIN,
'_acme-challenge.'+DOMAIN, mock.ANY)]
- self.assertEqual(expected, self.mock_client.mock_calls)
-
-
-class DigitalOceanClientTest(unittest.TestCase):
-
- id_num = 1
- record_prefix = "_acme-challenge"
- record_name = record_prefix + "." + DOMAIN
- record_content = "bar"
- record_ttl = 60
-
- def setUp(self):
- from certbot_dns_digitalocean._internal.dns_digitalocean import
_DigitalOceanClient
-
- self.digitalocean_client = _DigitalOceanClient(TOKEN)
-
- self.manager = mock.MagicMock()
- self.digitalocean_client.manager = self.manager
-
- def test_add_txt_record(self):
- wrong_domain_mock = mock.MagicMock()
- wrong_domain_mock.name = "other.invalid"
- wrong_domain_mock.create_new_domain_record.side_effect =
AssertionError('Wrong Domain')
-
- domain_mock = mock.MagicMock()
- domain_mock.name = DOMAIN
- domain_mock.create_new_domain_record.return_value = {'domain_record':
{'id': self.id_num}}
-
- self.manager.get_all_domains.return_value = [wrong_domain_mock,
domain_mock]
-
- self.digitalocean_client.add_txt_record(DOMAIN, self.record_name,
self.record_content,
- self.record_ttl)
-
- domain_mock.create_new_domain_record.assert_called_with(type='TXT',
-
name=self.record_prefix,
-
data=self.record_content,
-
ttl=self.record_ttl)
-
- def test_add_txt_record_fail_to_find_domain(self):
- self.manager.get_all_domains.return_value = []
-
- self.assertRaises(errors.PluginError,
- self.digitalocean_client.add_txt_record,
- DOMAIN, self.record_name, self.record_content,
self.record_ttl)
-
- def test_add_txt_record_error_finding_domain(self):
- self.manager.get_all_domains.side_effect = API_ERROR
-
- self.assertRaises(errors.PluginError,
- self.digitalocean_client.add_txt_record,
- DOMAIN, self.record_name, self.record_content,
self.record_ttl)
-
- def test_add_txt_record_error_creating_record(self):
- domain_mock = mock.MagicMock()
- domain_mock.name = DOMAIN
- domain_mock.create_new_domain_record.side_effect = API_ERROR
-
- self.manager.get_all_domains.return_value = [domain_mock]
-
- self.assertRaises(errors.PluginError,
- self.digitalocean_client.add_txt_record,
- DOMAIN, self.record_name, self.record_content,
self.record_ttl)
-
- def test_del_txt_record(self):
- first_record_mock = mock.MagicMock()
- first_record_mock.type = 'TXT'
- first_record_mock.name = "DIFFERENT"
- first_record_mock.data = self.record_content
-
- correct_record_mock = mock.MagicMock()
- correct_record_mock.type = 'TXT'
- correct_record_mock.name = self.record_prefix
- correct_record_mock.data = self.record_content
-
- last_record_mock = mock.MagicMock()
- last_record_mock.type = 'TXT'
- last_record_mock.name = self.record_prefix
- last_record_mock.data = "DIFFERENT"
-
- domain_mock = mock.MagicMock()
- domain_mock.name = DOMAIN
- domain_mock.get_records.return_value = [first_record_mock,
- correct_record_mock,
- last_record_mock]
-
- self.manager.get_all_domains.return_value = [domain_mock]
-
- self.digitalocean_client.del_txt_record(DOMAIN, self.record_name,
self.record_content)
-
- self.assertTrue(correct_record_mock.destroy.called)
-
- self.assertFalse(first_record_mock.destroy.call_args_list)
- self.assertFalse(last_record_mock.destroy.call_args_list)
-
- def test_del_txt_record_error_finding_domain(self):
- self.manager.get_all_domains.side_effect = API_ERROR
-
- self.digitalocean_client.del_txt_record(DOMAIN, self.record_name,
self.record_content)
-
- def test_del_txt_record_error_finding_record(self):
- domain_mock = mock.MagicMock()
- domain_mock.name = DOMAIN
- domain_mock.get_records.side_effect = API_ERROR
-
- self.manager.get_all_domains.return_value = [domain_mock]
-
- self.digitalocean_client.del_txt_record(DOMAIN, self.record_name,
self.record_content)
-
- def test_del_txt_record_error_deleting_record(self):
- record_mock = mock.MagicMock()
- record_mock.type = 'TXT'
- record_mock.name = self.record_prefix
- record_mock.data = self.record_content
- record_mock.destroy.side_effect = API_ERROR
-
- domain_mock = mock.MagicMock()
- domain_mock.name = DOMAIN
- domain_mock.get_records.return_value = [record_mock]
-
- self.manager.get_all_domains.return_value = [domain_mock]
-
- self.digitalocean_client.del_txt_record(DOMAIN, self.record_name,
self.record_content)
-
-
-if __name__ == "__main__":
- unittest.main() # pragma: no cover