diff options
| author | Rahman Syed <rahman.syed@gmail.com> | 2016-03-24 19:21:31 -0500 |
|---|---|---|
| committer | Rahman Syed <rahman.syed@gmail.com> | 2016-03-30 11:23:27 -0500 |
| commit | d2b88c88c529176db0f3c900ddb411d770fd1277 (patch) | |
| tree | 9ca094bb705719e090a7ac900d6799ecad6b15f9 /designateclient/functionaltests/v2 | |
| parent | ce50ad944490e6238597a72106f5be705db3aae8 (diff) | |
| download | python-designateclient-d2b88c88c529176db0f3c900ddb411d770fd1277.tar.gz | |
Implement zone import
Zone import commands (create, list, show, delete)
are missing from the python-designateclient.
This change includes implementation, as well as unit tests
and functionaltests.
Change-Id: I635431b5ef11989247e8d185ad692e4fee9bebba
Closes-Bug: #1550532
Diffstat (limited to 'designateclient/functionaltests/v2')
| -rw-r--r-- | designateclient/functionaltests/v2/fixtures.py | 33 | ||||
| -rw-r--r-- | designateclient/functionaltests/v2/test_zone_export.py | 19 | ||||
| -rw-r--r-- | designateclient/functionaltests/v2/test_zone_import.py | 63 |
3 files changed, 99 insertions, 16 deletions
diff --git a/designateclient/functionaltests/v2/fixtures.py b/designateclient/functionaltests/v2/fixtures.py index 2e61148..75f4406 100644 --- a/designateclient/functionaltests/v2/fixtures.py +++ b/designateclient/functionaltests/v2/fixtures.py @@ -16,6 +16,7 @@ limitations under the License. from __future__ import absolute_import from __future__ import print_function import sys +import tempfile import traceback import fixtures @@ -123,6 +124,38 @@ class ExportFixture(BaseFixture): pass +class ImportFixture(BaseFixture): + """See DesignateCLI.zone_import_create for __init__ args""" + + def __init__(self, zone_file_contents, user='default', *args, **kwargs): + super(ImportFixture, self).__init__(user, *args, **kwargs) + self.zone_file_contents = zone_file_contents + + def _setUp(self): + super(ImportFixture, self)._setUp() + + with tempfile.NamedTemporaryFile() as f: + f.write(self.zone_file_contents) + f.flush() + + self.zone_import = self.client.zone_import_create( + zone_file_path=f.name, + *self.args, **self.kwargs + ) + + self.addCleanup(self.cleanup_zone_import, self.client, + self.zone_import.id) + self.addCleanup(ZoneFixture.cleanup_zone, self.client, + self.zone_import.zone_id) + + @classmethod + def cleanup_zone_import(cls, client, zone_import_id): + try: + client.zone_import_delete(zone_import_id) + except CommandFailed: + pass + + class RecordsetFixture(BaseFixture): """See DesignateCLI.recordset_create for __init__ args""" diff --git a/designateclient/functionaltests/v2/test_zone_export.py b/designateclient/functionaltests/v2/test_zone_export.py index fc10f85..6052a99 100644 --- a/designateclient/functionaltests/v2/test_zone_export.py +++ b/designateclient/functionaltests/v2/test_zone_export.py @@ -39,7 +39,7 @@ class TestZoneExport(BaseDesignateTest): zone_exports = self.clients.zone_export_list() self.assertGreater(len(zone_exports), 0) - self.assertTrue(self._is_export_in_list(zone_export, zone_exports)) + self.assertTrue(self._is_entity_in_list(zone_export, zone_exports)) def test_create_and_show_zone_export(self): zone_export = self.useFixture(ExportFixture( @@ -60,12 +60,12 @@ class TestZoneExport(BaseDesignateTest): )).zone_export zone_exports = self.clients.zone_export_list() - self.assertTrue(self._is_export_in_list(zone_export, zone_exports)) + self.assertTrue(self._is_entity_in_list(zone_export, zone_exports)) self.clients.zone_export_delete(zone_export.id) zone_exports = self.clients.zone_export_list() - self.assertFalse(self._is_export_in_list(zone_export, zone_exports)) + self.assertFalse(self._is_entity_in_list(zone_export, zone_exports)) def test_show_export_file(self): zone_export = self.useFixture(ExportFixture( @@ -79,16 +79,3 @@ class TestZoneExport(BaseDesignateTest): self.assertIn('SOA', fetched_export.data) self.assertIn('NS', fetched_export.data) self.assertIn(self.zone.name, fetched_export.data) - - def _is_export_in_list(self, zone_export, zone_export_list): - """Determines if the given export exists in the given export list. - - Uses the zone export id for comparison. - - Because the zone export list command displays fewer fields than - the show command, an __eq__ method on the FieldValueModel class - is insufficient. - - """ - return any([export_record.id == zone_export.id - for export_record in zone_export_list]) diff --git a/designateclient/functionaltests/v2/test_zone_import.py b/designateclient/functionaltests/v2/test_zone_import.py new file mode 100644 index 0000000..232b57f --- /dev/null +++ b/designateclient/functionaltests/v2/test_zone_import.py @@ -0,0 +1,63 @@ +""" +Copyright 2016 Rackspace + +Author: Rahman Syed <rahman.syed@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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. +""" +from designateclient.functionaltests.base import BaseDesignateTest +from designateclient.functionaltests.datagen import random_zone_file +from designateclient.functionaltests.v2.fixtures import ImportFixture + + +class TestZoneImport(BaseDesignateTest): + + def setUp(self): + super(TestZoneImport, self).setUp() + self.ensure_tld_exists('com') + self.zone_file_contents = random_zone_file() + + def test_list_zone_imports(self): + zone_import = self.useFixture(ImportFixture( + zone_file_contents=self.zone_file_contents + )).zone_import + + zone_imports = self.clients.zone_import_list() + self.assertGreater(len(zone_imports), 0) + self.assertTrue(self._is_entity_in_list(zone_import, zone_imports)) + + def test_create_and_show_zone_import(self): + zone_import = self.useFixture(ImportFixture( + zone_file_contents=self.zone_file_contents + )).zone_import + + fetched_import = self.clients.zone_import_show(zone_import.id) + + self.assertEqual(zone_import.created_at, fetched_import.created_at) + self.assertEqual(zone_import.id, fetched_import.id) + self.assertEqual(zone_import.project_id, fetched_import.project_id) + + self.assertEqual('COMPLETE', fetched_import.status) + + def test_delete_zone_import(self): + zone_import = self.useFixture(ImportFixture( + zone_file_contents=self.zone_file_contents + )).zone_import + + zone_imports = self.clients.zone_import_list() + self.assertTrue(self._is_entity_in_list(zone_import, zone_imports)) + + self.clients.zone_import_delete(zone_import.id) + + zone_imports = self.clients.zone_import_list() + self.assertFalse(self._is_entity_in_list(zone_import, zone_imports)) |
