summaryrefslogtreecommitdiff
path: root/designateclient/functionaltests/v2
diff options
context:
space:
mode:
authorRahman Syed <rahman.syed@gmail.com>2016-03-24 19:21:31 -0500
committerRahman Syed <rahman.syed@gmail.com>2016-03-30 11:23:27 -0500
commitd2b88c88c529176db0f3c900ddb411d770fd1277 (patch)
tree9ca094bb705719e090a7ac900d6799ecad6b15f9 /designateclient/functionaltests/v2
parentce50ad944490e6238597a72106f5be705db3aae8 (diff)
downloadpython-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.py33
-rw-r--r--designateclient/functionaltests/v2/test_zone_export.py19
-rw-r--r--designateclient/functionaltests/v2/test_zone_import.py63
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))