summaryrefslogtreecommitdiff
path: root/functional
diff options
context:
space:
mode:
authorTerryHowe <terrylhowe@gmail.com>2015-04-29 05:11:58 -0600
committerTerry Howe <terrylhowe@gmail.com>2015-05-17 12:33:39 +0000
commit29f29e44d3ed894ebac5fe26d4410bd31149145a (patch)
treed78047d67387c7178690f77f36101c9f5e5c30be /functional
parentd39b9c91c4801753895fac8047aa2371a63bb96a (diff)
downloadpython-openstackclient-29f29e44d3ed894ebac5fe26d4410bd31149145a.tar.gz
Use format options for functional tests
Use the format options for functional tests so we can have more assertEquals and less assertIn. Change-Id: I34e6c76b42964f7b596ea35e6b0354a242611cb4
Diffstat (limited to 'functional')
-rw-r--r--functional/common/test.py31
-rw-r--r--functional/tests/object/v1/test_container.py42
2 files changed, 71 insertions, 2 deletions
diff --git a/functional/common/test.py b/functional/common/test.py
index 4a92def0..7beaf39a 100644
--- a/functional/common/test.py
+++ b/functional/common/test.py
@@ -28,12 +28,12 @@ EXAMPLE_DIR = os.path.join(ROOT_DIR, 'examples')
def execute(cmd, fail_ok=False, merge_stderr=False):
"""Executes specified command for the given action."""
- cmd = shlex.split(cmd.encode('utf-8'))
+ cmdlist = shlex.split(cmd.encode('utf-8'))
result = ''
result_err = ''
stdout = subprocess.PIPE
stderr = subprocess.STDOUT if merge_stderr else subprocess.PIPE
- proc = subprocess.Popen(cmd, stdout=stdout, stderr=stderr)
+ proc = subprocess.Popen(cmdlist, stdout=stdout, stderr=stderr)
result, result_err = proc.communicate()
if not fail_ok and proc.returncode != 0:
raise exceptions.CommandFailed(proc.returncode, cmd, result,
@@ -50,6 +50,33 @@ class TestCase(testtools.TestCase):
"""Executes openstackclient command for the given action."""
return execute('openstack ' + cmd, fail_ok=fail_ok)
+ @classmethod
+ def get_show_opts(cls, fields=[]):
+ return ' -f value ' + ' '.join(['-c ' + it for it in fields])
+
+ @classmethod
+ def get_list_opts(cls, headers=[]):
+ opts = ' -f csv --quote none '
+ opts = opts + ' '.join(['-c ' + it for it in headers])
+ return opts
+
+ @classmethod
+ def assertOutput(cls, expected, actual):
+ if expected != actual:
+ raise Exception(expected + ' != ' + actual)
+
+ @classmethod
+ def assertInOutput(cls, expected, actual):
+ if expected not in actual:
+ raise Exception(expected + ' not in ' + actual)
+
+ @classmethod
+ def cleanup_tmpfile(cls, filename):
+ try:
+ os.remove(filename)
+ except OSError:
+ pass
+
def assert_table_structure(self, items, field_names):
"""Verify that all items have keys listed in field_names."""
for item in items:
diff --git a/functional/tests/object/v1/test_container.py b/functional/tests/object/v1/test_container.py
new file mode 100644
index 00000000..9ea14cde
--- /dev/null
+++ b/functional/tests/object/v1/test_container.py
@@ -0,0 +1,42 @@
+# 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.
+
+import uuid
+
+from functional.common import test
+
+
+class ContainerTests(test.TestCase):
+ """Functional tests for object containers. """
+ NAME = uuid.uuid4().hex
+
+ @classmethod
+ def setUpClass(cls):
+ opts = cls.get_list_opts(['container'])
+ raw_output = cls.openstack('container create ' + cls.NAME + opts)
+ expected = 'container\n' + cls.NAME + '\n'
+ cls.assertOutput(expected, raw_output)
+
+ @classmethod
+ def tearDownClass(cls):
+ raw_output = cls.openstack('container delete ' + cls.NAME)
+ cls.assertOutput('', raw_output)
+
+ def test_container_list(self):
+ opts = self.get_list_opts(['Name'])
+ raw_output = self.openstack('container list' + opts)
+ self.assertIn(self.NAME, raw_output)
+
+ def test_container_show(self):
+ opts = self.get_show_opts(['container'])
+ raw_output = self.openstack('container show ' + self.NAME + opts)
+ self.assertEqual(self.NAME + "\n", raw_output)