summaryrefslogtreecommitdiff
path: root/designateclient/functionaltests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-11-09 15:54:23 +0000
committerGerrit Code Review <review@openstack.org>2015-11-09 15:54:23 +0000
commitdca1ccba74b309c3ae245e443b78071373497413 (patch)
treeb298aaee358f92e344b5e7236bae505c4cdaaeb0 /designateclient/functionaltests
parent665bc6bd05aec513bee6cd221e3f3fbf22470979 (diff)
parenteea5b4d87fe0151c2d88f7e6219d8cc0a98dcd99 (diff)
downloadpython-designateclient-dca1ccba74b309c3ae245e443b78071373497413.tar.gz
Merge "Add functional tests for blacklists"
Diffstat (limited to 'designateclient/functionaltests')
-rw-r--r--designateclient/functionaltests/client.py37
-rw-r--r--designateclient/functionaltests/datagen.py4
-rw-r--r--designateclient/functionaltests/v2/fixtures.py20
-rw-r--r--designateclient/functionaltests/v2/test_blacklist.py98
4 files changed, 158 insertions, 1 deletions
diff --git a/designateclient/functionaltests/client.py b/designateclient/functionaltests/client.py
index 86682d4..39dc970 100644
--- a/designateclient/functionaltests/client.py
+++ b/designateclient/functionaltests/client.py
@@ -222,8 +222,43 @@ class TLDCommands(object):
return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
+class BlacklistCommands(object):
+
+ def zone_blacklist_list(self, *args, **kwargs):
+ cmd = 'zone blacklist list'
+ return self.parsed_cmd(cmd, ListModel, *args, **kwargs)
+
+ def zone_blacklist_create(self, pattern, description=None, *args,
+ **kwargs):
+ options_str = build_option_string({
+ '--pattern': pattern,
+ '--description': description,
+ })
+ cmd = 'zone blacklist create {0}'.format(options_str)
+ return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
+
+ def zone_blacklist_set(self, id, pattern=None, description=None,
+ no_description=False, *args, **kwargs):
+ options_str = build_option_string({
+ '--pattern': pattern,
+ '--description': description,
+ })
+ flags_str = build_flags_string({'--no_description': no_description})
+ cmd = 'zone blacklist set {0} {1} {2}'.format(id, options_str,
+ flags_str)
+ return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
+
+ def zone_blacklist_show(self, id, *args, **kwargs):
+ cmd = 'zone blacklist show {0}'.format(id)
+ return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
+
+ def zone_blacklist_delete(self, id, *args, **kwargs):
+ cmd = 'zone blacklist delete {0}'.format(id)
+ return self.parsed_cmd(cmd, FieldValueModel, *args, **kwargs)
+
+
class DesignateCLI(base.CLIClient, ZoneCommands, ZoneTransferCommands,
- RecordsetCommands, TLDCommands):
+ RecordsetCommands, TLDCommands, BlacklistCommands):
# instantiate this once to minimize requests to keystone
_CLIENTS = None
diff --git a/designateclient/functionaltests/datagen.py b/designateclient/functionaltests/datagen.py
index 3940c84..2f89321 100644
--- a/designateclient/functionaltests/datagen.py
+++ b/designateclient/functionaltests/datagen.py
@@ -31,3 +31,7 @@ def random_zone_name(name='testdomain', tld='com'):
def random_a_recordset_name(zone_name, recordset_name='testrecord'):
return "{0}{1}.{2}".format(recordset_name, random_digits(), zone_name)
+
+
+def random_blacklist(name='testblacklist'):
+ return '{0}{1}'.format(name, random_digits())
diff --git a/designateclient/functionaltests/v2/fixtures.py b/designateclient/functionaltests/v2/fixtures.py
index e841b14..5e08bee 100644
--- a/designateclient/functionaltests/v2/fixtures.py
+++ b/designateclient/functionaltests/v2/fixtures.py
@@ -115,3 +115,23 @@ class TLDFixture(BaseFixture):
client.tld_delete(tld_id)
except CommandFailed:
pass
+
+
+class BlacklistFixture(BaseFixture):
+ """See DesignateCLI.zone_blacklist_create for __init__ args"""
+
+ def __init__(self, user='admin', *args, **kwargs):
+ super(BlacklistFixture, self).__init__(user=user, *args, **kwargs)
+
+ def _setUp(self):
+ super(BlacklistFixture, self)._setUp()
+ self.blacklist = self.client.zone_blacklist_create(*self.args,
+ **self.kwargs)
+ self.addCleanup(self.cleanup_blacklist, self.client, self.blacklist.id)
+
+ @classmethod
+ def cleanup_blacklist(cls, client, blacklist_id):
+ try:
+ client.zone_blacklist_delete(blacklist_id)
+ except CommandFailed:
+ pass
diff --git a/designateclient/functionaltests/v2/test_blacklist.py b/designateclient/functionaltests/v2/test_blacklist.py
new file mode 100644
index 0000000..b945cb0
--- /dev/null
+++ b/designateclient/functionaltests/v2/test_blacklist.py
@@ -0,0 +1,98 @@
+"""
+Copyright 2015 Rackspace
+
+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 tempest_lib.exceptions import CommandFailed
+
+from designateclient.functionaltests.base import BaseDesignateTest
+from designateclient.functionaltests.datagen import random_blacklist
+from designateclient.functionaltests.v2.fixtures import BlacklistFixture
+
+
+class TestBlacklist(BaseDesignateTest):
+
+ def setUp(self):
+ super(TestBlacklist, self).setUp()
+ pattern = random_blacklist()
+ self.blacklist = self.useFixture(BlacklistFixture(
+ pattern=pattern,
+ description='A random blacklist',
+ )).blacklist
+
+ self.assertEqual(self.blacklist.pattern, pattern)
+ self.assertEqual(self.blacklist.description, 'A random blacklist')
+
+ def test_zone_blacklist_list(self):
+ blacklists = self.clients.as_user('admin').zone_blacklist_list()
+ self.assertGreater(len(blacklists), 0)
+
+ def test_zone_blacklist_create_and_show(self):
+ client = self.clients.as_user('admin')
+ blacklist = client.zone_blacklist_show(self.blacklist.id)
+
+ self.assertEqual(self.blacklist.created_at, blacklist.created_at)
+ self.assertEqual(self.blacklist.description, blacklist.description)
+ self.assertEqual(self.blacklist.id, blacklist.id)
+ self.assertEqual(self.blacklist.pattern, blacklist.pattern)
+ self.assertEqual(self.blacklist.updated_at, blacklist.updated_at)
+
+ def test_zone_blacklist_delete(self):
+ client = self.clients.as_user('admin')
+ client.zone_blacklist_delete(self.blacklist.id)
+ self.assertRaises(CommandFailed, client.zone_blacklist_show,
+ self.blacklist.id)
+
+ def test_zone_blacklist_set(self):
+ client = self.clients.as_user('admin')
+ updated_pattern = random_blacklist('updatedblacklist')
+ blacklist = client.zone_blacklist_set(
+ id=self.blacklist.id,
+ pattern=updated_pattern,
+ description='An updated blacklist',
+ )
+
+ self.assertEqual(blacklist.created_at, self.blacklist.created_at)
+ self.assertEqual(blacklist.description, 'An updated blacklist')
+ self.assertEqual(blacklist.id, self.blacklist.id)
+ self.assertEqual(blacklist.pattern, updated_pattern)
+ self.assertNotEqual(blacklist.updated_at, self.blacklist.updated_at)
+
+ def test_zone_blacklist_set_no_description(self):
+ client = self.clients.as_user('admin')
+ blacklist = client.zone_blacklist_set(
+ id=self.blacklist.id,
+ no_description=True,
+ )
+ self.assertEqual(blacklist.description, 'None')
+
+ def test_cannot_set_description_with_no_description_flag(self):
+ client = self.clients.as_user('admin')
+ self.assertRaises(CommandFailed, client.zone_blacklist_set,
+ self.blacklist.id,
+ pattern=random_blacklist(),
+ description='new description',
+ no_description=True)
+
+
+class TestBlacklistNegative(BaseDesignateTest):
+
+ def test_invalid_blacklist_command(self):
+ client = self.clients.as_user('admin')
+ cmd = 'zone blacklist notacommand'
+ self.assertRaises(CommandFailed, client.openstack, cmd)
+
+ def test_blacklist_create_invalid_flag(self):
+ client = self.clients.as_user('admin')
+ cmd = 'zone blacklist create --pattern helloworld --notaflag invalid'
+ self.assertRaises(CommandFailed, client.openstack, cmd)