From 462e39d73f875e26bab1685f647eab1ea49491d0 Mon Sep 17 00:00:00 2001 From: Arkady Shtempler Date: Wed, 14 Jun 2023 17:06:53 +0300 Subject: [PATCH] Removes "DDT" module from Designate-Tempest-Plugin This patch removes DDT module from the code as well as all *.json files related to it. Change-Id: I2203d52c4a816dee0960339a8ea3e0ea023b131d --- .../tests/api/v2/invalid_mx_dataset.json | 5 - .../tests/api/v2/invalid_sshfp_dataset.json | 6 - .../tests/api/v2/invalid_txt_dataset.json | 5 - .../tests/api/v2/recordset_data_invalid.json | 12 -- .../tests/api/v2/recordset_wildcard_data.json | 53 ------ .../tests/api/v2/test_recordset.py | 71 +++++++- .../tests/api/v2/test_recordset_validation.py | 166 ++++++++++-------- .../tests/api/v2/valid_txt_dataset.json | 5 - .../tests/scenario/v2/recordset_data.json | 79 --------- .../tests/scenario/v2/test_recordsets.py | 102 ++++++++++- requirements.txt | 1 - 11 files changed, 252 insertions(+), 253 deletions(-) delete mode 100644 designate_tempest_plugin/tests/api/v2/invalid_mx_dataset.json delete mode 100644 designate_tempest_plugin/tests/api/v2/invalid_sshfp_dataset.json delete mode 100644 designate_tempest_plugin/tests/api/v2/invalid_txt_dataset.json delete mode 100644 designate_tempest_plugin/tests/api/v2/recordset_data_invalid.json delete mode 100644 designate_tempest_plugin/tests/api/v2/recordset_wildcard_data.json delete mode 100644 designate_tempest_plugin/tests/api/v2/valid_txt_dataset.json delete mode 100644 designate_tempest_plugin/tests/scenario/v2/recordset_data.json diff --git a/designate_tempest_plugin/tests/api/v2/invalid_mx_dataset.json b/designate_tempest_plugin/tests/api/v2/invalid_mx_dataset.json deleted file mode 100644 index 100995a4..00000000 --- a/designate_tempest_plugin/tests/api/v2/invalid_mx_dataset.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "empty_preference": {"pref": ""}, - "minus_zero_preference": {"pref": "-0"}, - "minus_one_preference": {"pref": "-1"} -} diff --git a/designate_tempest_plugin/tests/api/v2/invalid_sshfp_dataset.json b/designate_tempest_plugin/tests/api/v2/invalid_sshfp_dataset.json deleted file mode 100644 index 133b460d..00000000 --- a/designate_tempest_plugin/tests/api/v2/invalid_sshfp_dataset.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "minus_zero_algorithm": {"algo": "-0", "finger": null}, - "minus_zero_fingerprint": {"algo": null, "finger": "-0"}, - "minus_one_algorithm": {"algo": "-1", "finger": null}, - "minus_one_fingerprint": {"algo": null, "finger": "-1"} -} diff --git a/designate_tempest_plugin/tests/api/v2/invalid_txt_dataset.json b/designate_tempest_plugin/tests/api/v2/invalid_txt_dataset.json deleted file mode 100644 index 449d90cc..00000000 --- a/designate_tempest_plugin/tests/api/v2/invalid_txt_dataset.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "trailing_slash": {"data": "\\"}, - "trailing_double_slash": {"data": "\\\\"}, - "trailing_slash_after_text": {"data": "testtext\\"} -} diff --git a/designate_tempest_plugin/tests/api/v2/recordset_data_invalid.json b/designate_tempest_plugin/tests/api/v2/recordset_data_invalid.json deleted file mode 100644 index 413698f5..00000000 --- a/designate_tempest_plugin/tests/api/v2/recordset_data_invalid.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "CNAME multiple": { - "name": "www", - "type": "CNAME", - "records": ["target1.example.org.", "target2.example.org."] - }, - "CNAME at Apex": { - "name": null, - "type": "CNAME", - "records": ["target1.example.org."] - } -} diff --git a/designate_tempest_plugin/tests/api/v2/recordset_wildcard_data.json b/designate_tempest_plugin/tests/api/v2/recordset_wildcard_data.json deleted file mode 100644 index c56727db..00000000 --- a/designate_tempest_plugin/tests/api/v2/recordset_wildcard_data.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "A at APEX": { - "name": "*", - "type": "A", - "records": ["192.0.2.1", "192.0.2.2", "192.0.2.3"] - }, - "A under APEX": { - "name": "*.sub", - "type": "A", - "records": ["192.0.2.1", "192.0.2.2", "192.0.2.3"] - }, - "AAAA at APEX": { - "name": "*", - "type": "AAAA", - "records": ["2001:db8::1", "2001:db8::1", "2001:db8::"] - }, - "AAAA under APEX": { - "name": "*.sub", - "type": "AAAA", - "records": ["2001:db8::1", "2001:db8::1", "2001:db8::"] - }, - "MX at APEX": { - "name": "*", - "type": "MX", - "records": ["10 mail1.example.org.", - "20 mail2.example.org."] - }, - "MX under APEX": { - "name": "*.sub", - "type": "MX", - "records": ["10 mail.example.org."] - }, - "SPF at APEX": { - "name": "*", - "type": "SPF", - "records": ["\"v=spf1; a -all\""] - }, - "SPF under APEX": { - "name": "*.sub", - "type": "SPF", - "records": ["\"v=spf1; a -all\""] - }, - "TXT at APEX": { - "name": "*", - "type": "TXT", - "records": ["\"Can you read me?\""] - }, - "TXT under APEX": { - "name": "*.sub", - "type": "TXT", - "records": ["\"Can you read me?\""] - } -} diff --git a/designate_tempest_plugin/tests/api/v2/test_recordset.py b/designate_tempest_plugin/tests/api/v2/test_recordset.py index 2249a680..a7cb4bc9 100644 --- a/designate_tempest_plugin/tests/api/v2/test_recordset.py +++ b/designate_tempest_plugin/tests/api/v2/test_recordset.py @@ -16,7 +16,6 @@ from tempest import config from tempest.lib import decorators from tempest.lib import exceptions as lib_exc from tempest.lib.common.utils import data_utils -import ddt from designate_tempest_plugin.tests import base from designate_tempest_plugin.common import constants as const @@ -63,7 +62,6 @@ class BaseRecordsetsTest(base.BaseDnsV2Test): super(BaseRecordsetsTest, cls).resource_cleanup() -@ddt.ddt class RecordsetsTest(BaseRecordsetsTest): credentials = ["admin", "system_admin", "system_reader", "primary", "alt", @@ -190,9 +188,7 @@ class RecordsetsTest(BaseRecordsetsTest): self._test_create_recordset_type( "www", "TXT", ["\"Any Old Text Goes Here\""]) - @decorators.idempotent_id('69f002e5-6511-43d3-abae-7abdd45ae03e') - @ddt.file_data("recordset_wildcard_data.json") - def test_create_wildcard_recordset(self, name, type, records): + def _test_create_wildcard_recordset(self, name, type, records): if name is not None: recordset_name = name + "." + self.zone['name'] @@ -215,6 +211,56 @@ class RecordsetsTest(BaseRecordsetsTest): LOG.info('Ensure we respond with PENDING') self.assertEqual(const.PENDING, body['status']) + @decorators.idempotent_id('69f002e5-6511-43d3-abae-7abdd45ae03e') + def test_create_wildcard_recordset_A_at_APEX(self): + self._test_create_wildcard_recordset( + "*", "A", ["192.0.2.1", "192.0.2.2", "192.0.2.3"]) + + @decorators.idempotent_id('d97ee452-0dc3-11ee-8b75-201e8823901f') + def test_create_wildcard_recordset_A_under_APEX(self): + self._test_create_wildcard_recordset( + "*.sub", "A", ["192.0.2.1", "192.0.2.2", "192.0.2.3"]) + + @decorators.idempotent_id('1b3c1cc0-0dc4-11ee-8b75-201e8823901f') + def test_create_wildcard_recordset_AAAA_at_APEX(self): + self._test_create_wildcard_recordset( + "*", "AAAA", ["2001:db8::1", "2001:db8::1", "2001:db8::"]) + + @decorators.idempotent_id('928e735e-0dc4-11ee-8b75-201e8823901f') + def test_create_wildcard_recordset_AAAA_under_APEX(self): + self._test_create_wildcard_recordset( + "*.sub", "AAAA", ["2001:db8::1", "2001:db8::1", "2001:db8::"]) + + @decorators.idempotent_id('d96138f2-0dc4-11ee-8b75-201e8823901f') + def test_create_wildcard_recordset_MX_at_APEX(self): + self._test_create_wildcard_recordset( + "*", "MX", ["10 mail1.example.org.", "20 mail2.example.org."]) + + @decorators.idempotent_id('ff273c94-0dc4-11ee-8b75-201e8823901f') + def test_create_wildcard_recordset_MX_under_APEX(self): + self._test_create_wildcard_recordset( + "*.sub", "MX", ["10 mail.example.org."]) + + @decorators.idempotent_id('3097f16a-0dc5-11ee-8b75-201e8823901f') + def test_create_wildcard_recordset_SPF_at_APEX(self): + self._test_create_wildcard_recordset( + "*", "SPF", ["\"v=spf1; a -all\""]) + + @decorators.idempotent_id('50b3f390-0dc5-11ee-8b75-201e8823901f') + def test_create_wildcard_recordset_SPF_under_APEX(self): + self._test_create_wildcard_recordset( + "*.sub", "SPF", ["\"v=spf1; a -all\""]) + + @decorators.idempotent_id('5b73981c-0dc5-11ee-8b75-201e8823901f') + def test_create_wildcard_recordset_TXT_at_APEX(self): + self._test_create_wildcard_recordset( + "*", "TXT", ["\"Can you read me?\""]) + + @decorators.idempotent_id('5b73981c-0dc5-11ee-8b75-201e8823901f') + def test_create_wildcard_recordset_TXT_under_APEX(self): + self._test_create_wildcard_recordset( + "*.sub", "TXT", ["\"Can you read me?\""]) + @decorators.idempotent_id('5964f730-5546-46e6-9105-5030e9c492b2') def test_list_recordsets(self): recordset_data = dns_data_utils.rand_recordset_data( @@ -565,7 +611,6 @@ class RecordsetsTest(BaseRecordsetsTest): lambda: self.client.show_recordset(zone['id'], record['id'])) -@ddt.ddt class RecordsetsNegativeTest(BaseRecordsetsTest): credentials = ["admin", "system_admin", "primary", "alt"] @@ -582,9 +627,7 @@ class RecordsetsNegativeTest(BaseRecordsetsTest): cls.client = cls.os_primary.dns_v2.RecordsetClient() cls.alt_client = cls.os_alt.dns_v2.RecordsetClient() - @decorators.idempotent_id('98c94f8c-217a-4056-b996-b1f856d0753e') - @ddt.file_data("recordset_data_invalid.json") - def test_create_recordset_invalid(self, name, type, records): + def _test_create_recordset_invalid(self, name, type, records): if name is not None: recordset_name = name + "." + self.zone['name'] @@ -602,6 +645,16 @@ class RecordsetsNegativeTest(BaseRecordsetsTest): lambda: self.client.create_recordset( self.zone['id'], recordset_data)) + @decorators.idempotent_id('98c94f8c-217a-4056-b996-b1f856d0753e') + def test_create_recordset_invalid_CNAME_multiple(self): + self._test_create_recordset_invalid( + 'www', 'CNAME', ["target1.example.org.", "target2.example.org."]) + + @decorators.idempotent_id('43385ce8-0dd3-11ee-8b75-201e8823901f') + def test_create_recordset_invalid_CNAME_at_Apex(self): + self._test_create_recordset_invalid( + None, 'CNAME', ["target1.example.org."]) + @decorators.idempotent_id('b6dad57e-5ce9-4fa5-8d66-aebbcd23b4ad') def test_get_nonexistent_recordset(self): LOG.info('Attempt to get an invalid Recordset') diff --git a/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py b/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py index 534e107e..e61e7fae 100644 --- a/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py +++ b/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py @@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ -import ddt +from oslo_log import log as logging from tempest import config from tempest.lib import decorators @@ -25,6 +25,7 @@ from designate_tempest_plugin import data_utils as dns_data_utils CONF = config.CONF +LOG = logging.getLogger(__name__) RECORDSETS_DATASET = [ 'A', 'AAAA', @@ -35,9 +36,25 @@ RECORDSETS_DATASET = [ 'SSHFP', 'TXT', ] +INVALID_TXT_DATASET = { + "trailing_slash": {"data": "\\"}, + "trailing_double_slash": {"data": "\\\\"}, + "trailing_slash_after_text": {"data": "testtext\\"}} +VALID_TXT_DATASET = { + "slash_with_one_trailing_space": {"data": "\"\\ \""}, + "slash_with_many_trailing_space": {"data": "\"\\ \""}, + "text_with_slash_and_trailing_space": {"data": "\"the txts \""}} +INVALID_MX_DATASET = { + "empty_preference": {"pref": ""}, + "minus_zero_preference": {"pref": "-0"}, + "minus_one_preference": {"pref": "-1"}} +INVALID_SSHFP_DATASET = { + "minus_zero_algorithm": {"algo": "-0", "finger": None}, + "minus_zero_fingerprint": {"algo": None, "finger": "-0"}, + "minus_one_algorithm": {"algo": "-1", "finger": None}, + "minus_one_fingerprint": {"algo": None, "finger": "-1"}} -@ddt.ddt class RecordsetValidationTest(base.BaseDnsV2Test): credentials = ["admin", "primary", "system_admin"] @@ -88,39 +105,35 @@ class RecordsetValidationTest(base.BaseDnsV2Test): return body @decorators.idempotent_id('c5ef87e2-cb79-4758-b968-18eef2c251df') - @ddt.data(*RECORDSETS_DATASET) - def test_create_invalid(self, rtype): - data = ["b0rk"] - - for i in data: - model = dns_data_utils.make_rand_recordset( - self.zone['name'], rtype) - model['data'] = i - - self.assertRaisesDns( - exceptions.BadRequest, 'invalid_object', 400, - self.recordset_client.create_recordset, - self.zone['id'], model - ) + def test_create_invalid(self): + for rtype in RECORDSETS_DATASET: + data = ["b0rk"] + for i in data: + model = dns_data_utils.make_rand_recordset( + self.zone['name'], rtype) + model['data'] = i + self.assertRaisesDns( + exceptions.BadRequest, 'invalid_object', 400, + self.recordset_client.create_recordset, + self.zone['id'], model + ) @decorators.idempotent_id('1164c826-dceb-4557-9a22-7d65c4a4f5f4') - @ddt.data(*RECORDSETS_DATASET) - def test_update_invalid(self, rtype): - data = ["b0rk"] - - post_model = dns_data_utils.make_rand_recordset( - self.zone['name'], rtype) - recordset = self.create_recordset(post_model) - - for i in data: - model = dns_data_utils.make_rand_recordset( + def test_update_invalid(self): + for rtype in RECORDSETS_DATASET: + data = ["b0rk"] + post_model = dns_data_utils.make_rand_recordset( self.zone['name'], rtype) - model['data'] = i - self.assertRaisesDns( - exceptions.BadRequest, 'invalid_object', 400, - self.recordset_client.update_recordset, - self.zone['id'], recordset['id'], model - ) + recordset = self.create_recordset(post_model) + for i in data: + model = dns_data_utils.make_rand_recordset( + self.zone['name'], rtype) + model['data'] = i + self.assertRaisesDns( + exceptions.BadRequest, 'invalid_object', 400, + self.recordset_client.update_recordset, + self.zone['id'], recordset['id'], model + ) @decorators.idempotent_id('61da1015-291f-43d1-a1a8-345cff12d201') def test_cannot_create_wildcard_NS_recordset(self): @@ -147,57 +160,68 @@ class RecordsetValidationTest(base.BaseDnsV2Test): ) @decorators.idempotent_id('22a9544b-2382-4ed2-ba12-4dbaedb8e880') - @ddt.file_data("invalid_txt_dataset.json") - def test_cannot_create_TXT_with(self, data): - post_model = dns_data_utils.rand_txt_recordset(self.zone['name'], data) - self.assertRaisesDns( - exceptions.BadRequest, 'invalid_object', 400, - self.recordset_client.create_recordset, - self.zone['id'], post_model - ) + def test_cannot_create_TXT_with(self): + for key, data in INVALID_TXT_DATASET.items(): + LOG.info('Tested INVALID_TXT_DATASET: {}'.format(key)) + post_model = dns_data_utils.rand_txt_recordset( + self.zone['name'], data['data']) + self.assertRaisesDns( + exceptions.BadRequest, 'invalid_object', 400, + self.recordset_client.create_recordset, + self.zone['id'], post_model + ) @decorators.idempotent_id('03e4f811-0c37-4ce2-8b16-662c824f8f18') - @ddt.file_data("valid_txt_dataset.json") - def test_create_TXT_with(self, data): - post_model = dns_data_utils.rand_txt_recordset(self.zone['name'], data) + def test_create_TXT_with(self): + for key, data in VALID_TXT_DATASET.items(): + LOG.info('Tested VALID_TXT_DATASET: {}'.format(key)) + post_model = dns_data_utils.rand_txt_recordset( + self.zone['name'], data['data']) recordset = self.create_recordset(post_model) waiters.wait_for_recordset_status( self.recordset_client, self.zone['id'], recordset['id'], 'ACTIVE') @decorators.idempotent_id('775b3db5-ec60-4dd7-85d2-f05a9c544978') - @ddt.file_data("valid_txt_dataset.json") - def test_create_SPF_with(self, data): - post_model = dns_data_utils.rand_spf_recordset(self.zone['name'], data) - recordset = self.create_recordset(post_model) + def test_create_SPF_with(self): + for key, data in VALID_TXT_DATASET.items(): + LOG.info('Tested VALID_TXT_DATASET: {}'.format(key)) + post_model = dns_data_utils.rand_spf_recordset( + self.zone['name'], data['data']) + recordset = self.create_recordset(post_model) - waiters.wait_for_recordset_status( - self.recordset_client, self.zone['id'], recordset['id'], 'ACTIVE') + waiters.wait_for_recordset_status( + self.recordset_client, self.zone['id'], + recordset['id'], 'ACTIVE') @decorators.idempotent_id('7fa7783f-1624-4122-bfb2-6cfbf7a5b49b') - @ddt.file_data("invalid_mx_dataset.json") - def test_cannot_create_MX_with(self, pref): - post_model = dns_data_utils.rand_mx_recordset( - self.zone['name'], pref=pref - ) + def test_cannot_create_MX_with(self): + for key, pref in INVALID_MX_DATASET.items(): + LOG.info('Tested INVALID_MX_DATASET: {}'.format(key)) - self.assertRaisesDns( - exceptions.BadRequest, 'invalid_object', 400, - self.recordset_client.create_recordset, - self.zone['id'], post_model, - ) + post_model = dns_data_utils.rand_mx_recordset( + self.zone['name'], pref=pref['pref'] + ) + + self.assertRaisesDns( + exceptions.BadRequest, 'invalid_object', 400, + self.recordset_client.create_recordset, + self.zone['id'], post_model, + ) @decorators.idempotent_id('3016f998-4e4a-4712-b15a-4e8dfbc5a60b') - @ddt.data("invalid_sshfp_dataset.json") - def test_cannot_create_SSHFP_with(self, algo=None, finger=None): - post_model = dns_data_utils.rand_sshfp_recordset( - zone_name=self.zone['name'], - algorithm_number=algo, - fingerprint_type=finger, - ) + def test_cannot_create_SSHFP_with(self): + for key, data in INVALID_SSHFP_DATASET.items(): + LOG.info('Tested INVALID_SSHFP_DATASET: {}'.format(key)) - self.assertRaisesDns( - exceptions.BadRequest, 'invalid_object', 400, - self.recordset_client.create_recordset, - self.zone['id'], post_model, - ) + post_model = dns_data_utils.rand_sshfp_recordset( + zone_name=self.zone['name'], + algorithm_number=data['algo'], + fingerprint_type=data['finger'], + ) + + self.assertRaisesDns( + exceptions.BadRequest, 'invalid_object', 400, + self.recordset_client.create_recordset, + self.zone['id'], post_model, + ) diff --git a/designate_tempest_plugin/tests/api/v2/valid_txt_dataset.json b/designate_tempest_plugin/tests/api/v2/valid_txt_dataset.json deleted file mode 100644 index 3abcf10a..00000000 --- a/designate_tempest_plugin/tests/api/v2/valid_txt_dataset.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "slash_with_one_trailing_space": {"data": "\"\\ \""}, - "slash_with_many_trailing_space": {"data": "\"\\ \""}, - "text_with_slash_and_trailing_space": {"data": "\"the txts \""} -} diff --git a/designate_tempest_plugin/tests/scenario/v2/recordset_data.json b/designate_tempest_plugin/tests/scenario/v2/recordset_data.json deleted file mode 100644 index 6dda9869..00000000 --- a/designate_tempest_plugin/tests/scenario/v2/recordset_data.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "A": { - "name": "www", - "type": "A", - "records": ["192.0.2.1", "192.0.2.2", "192.0.2.3"] - }, - "AAAA": { - "name": "www", - "type": "AAAA", - "records": ["2001:db8::1", "2001:db8::1", "2001:db8::"] - }, - "SRV TCP": { - "name": "_sip._tcp", - "type": "SRV", - "records": ["10 60 5060 server1.example.com.", - "20 60 5060 server2.example.com.", - "20 30 5060 server3.example.com."] - }, - "SRV UDP": { - "name": "_sip._udp", - "type": "SRV", - "records": ["10 60 5060 server1.example.com.", - "10 60 5060 server2.example.com.", - "20 30 5060 server3.example.com."] - }, - "CNAME": { - "name": "alias-of-target", - "type": "CNAME", - "records": ["target.example.org."] - }, - "MX at APEX": { - "name": null, - "type": "MX", - "records": ["10 mail1.example.org.", - "20 mail2.example.org."] - }, - "MX under APEX": { - "name": "under", - "type": "MX", - "records": ["10 mail.example.org."] - }, - "SSHFP": { - "name": "www", - "type": "SSHFP", - "records": ["2 1 123456789abcdef67890123456789abcdef67890"] - }, - "TXT": { - "name": "www", - "type": "TXT", - "records": ["\"Any Old Text Goes Here\""] - }, - "SPF": { - "name": "*.sub", - "type": "SPF", - "records": ["\"v=spf1; a -all\""] - }, - "PTR_IPV4": { - "name": "PTR_Record_IPV4", - "type": "PTR", - "records": ["34.216.184.93.in-addr.arpa."] - }, - "PTR_IPV6":{ - "name":"PTR_Record_IPV6", - "type":"PTR", - "records":[ - "6.4.9.1.8.c.5.2.3.9.8.1.8.4.2.0.1.0.0.0.0.2.2.0.0.0.8.2.6.0.6.2.ip6.arpa." - ] - }, - "CAA_Record": { - "name": "CAA_Record", - "type": "CAA", - "records": ["0 issue letsencrypt.org"] - }, - "NAPTR_Record": { - "name": "NAPTR_Record", - "type": "NAPTR", - "records": ["0 0 S SIP+D2U !^.*$!sip:customer-service@example.com! _sip._udp.example.com."] - } -} \ No newline at end of file diff --git a/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py b/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py index c830c259..96634e2d 100644 --- a/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py +++ b/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py @@ -12,7 +12,6 @@ import time -import ddt from oslo_log import log as logging from tempest import config from tempest.lib.common.utils import test_utils @@ -32,7 +31,6 @@ LOG = logging.getLogger(__name__) CONF = config.CONF -@ddt.ddt class RecordsetsTest(base.BaseDnsV2Test): credentials = ["admin", "system_admin", "primary"] @@ -80,11 +78,8 @@ class RecordsetsTest(base.BaseDnsV2Test): cls.admin_tld_client.delete_tld(cls.class_tld[1]['id']) super(RecordsetsTest, cls).resource_cleanup() - @decorators.attr(type='slow') - @decorators.idempotent_id('4664ed66-9ff1-45f2-9e60-d4913195c505') - @ddt.file_data("recordset_data.json") - def test_create_and_delete_records_on_existing_zone(self, name, - type, records): + def _test_create_and_delete_records_on_existing_zone( + self, name, type, records): if name is not None: recordset_name = name + "." + self.zone['name'] @@ -125,6 +120,99 @@ class RecordsetsTest(base.BaseDnsV2Test): lambda: self.recordset_client.show_recordset( self.zone['id'], recordset['id'])) + @decorators.attr(type='slow') + @decorators.idempotent_id('4664ed66-9ff1-45f2-9e60-d4913195c505') + def test_create_and_delete_records_on_existing_zone_01_A(self): + self._test_create_and_delete_records_on_existing_zone( + "www", "A", ["192.0.2.1", "192.0.2.2", "192.0.2.3"]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('cecd9f20-0b62-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_02_AAAA(self): + self._test_create_and_delete_records_on_existing_zone( + "www", "AAAA", ["2001:db8::1", "2001:db8::1", "2001:db8::"]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('f5368d7a-0b62-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_03_SRV(self): + self._test_create_and_delete_records_on_existing_zone( + "_sip._tcp", "SRV", ["10 60 5060 server1.example.com.", + "20 60 5060 server2.example.com.", + "20 30 5060 server3.example.com."]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('74ff9efc-0b63-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_04_SRV(self): + self._test_create_and_delete_records_on_existing_zone( + "_sip._udp", "SRV", ["10 60 5060 server1.example.com.", + "10 60 5060 server2.example.com.", + "20 30 5060 server3.example.com."]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('82a14a2e-0b63-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_05_CNAME(self): + self._test_create_and_delete_records_on_existing_zone( + "alias-of-target", "CNAME", ["target.example.org."]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('ae7a295e-0b63-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_06_MX(self): + self._test_create_and_delete_records_on_existing_zone( + None, "MX", ["10 mail1.example.org.", + "20 mail2.example.org."]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('f9aa8512-0b64-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_07_MX(self): + self._test_create_and_delete_records_on_existing_zone( + "under", "MX", ["10 mail.example.org."]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('fa6cbd12-0b64-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_08_SSHFP(self): + self._test_create_and_delete_records_on_existing_zone( + "www", "SSHFP", ["2 1 123456789abcdef67890123456789abcdef67890"]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('fa124a1c-0b64-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_09_TXT(self): + self._test_create_and_delete_records_on_existing_zone( + "www", "TXT", ["\"Any Old Text Goes Here\""]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('3e347c28-0b66-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_10_SPF(self): + self._test_create_and_delete_records_on_existing_zone( + "*.sub", "SPF", ["\"v=spf1; a -all\""]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('88f6c2ac-0b66-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_11_PTR(self): + self._test_create_and_delete_records_on_existing_zone( + "PTR_Record_IPV4", "PTR", ["34.216.184.93.in-addr.arpa."]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('b9591eea-0b66-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_12_PTR(self): + self._test_create_and_delete_records_on_existing_zone( + "PTR_Record_IPV6", "PTR", + ["6.4.9.1.8.c.5.2.3.9.8.1.8.4.2.0.1.0.0.0.0.2.2.0.0.0.8" + ".2.6.0.6.2.ip6.arpa."]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('c98cd9b4-0b66-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_13_CAA(self): + self._test_create_and_delete_records_on_existing_zone( + "CAA_Record", "CAA", ["0 issue letsencrypt.org"]) + + @decorators.attr(type='slow') + @decorators.idempotent_id('f78d6e8c-0b66-11ee-bbcc-201e8823901f') + def test_create_and_delete_records_on_existing_zone_14_NAPTR(self): + self._test_create_and_delete_records_on_existing_zone( + "NAPTR_Record", "NAPTR", + ["0 0 S SIP+D2U !^.*$!sip:customer-service@example" + ".com! _sip._udp.example.com."]) + @testtools.skipUnless( config.CONF.dns.nameservers, "Config option dns.nameservers is missing or empty") diff --git a/requirements.txt b/requirements.txt index 2ba3e1a1..497e29e5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,6 @@ # process, which may cause wedges in the gate later. dnspython>=1.16.0 # http://www.dnspython.org/LICENSE -ddt>=1.0.1 # MIT oslo.serialization>=2.25.0 # Apache-2.0 oslo.utils>=3.33.0 # Apache-2.0 testtools>=2.2.0 # MIT