Merge "Code review changes for Bugfix for lp904407, /extensions tests"
diff --git a/tempest/openstack.py b/tempest/openstack.py
index 1d46f00..920ff14 100644
--- a/tempest/openstack.py
+++ b/tempest/openstack.py
@@ -2,6 +2,7 @@
 from tempest.services.nova.json.flavors_client import FlavorsClient
 from tempest.services.nova.json.servers_client import ServersClient
 from tempest.services.nova.json.limits_client import LimitsClient
+from tempest.services.nova.json.extensions_client import ExtensionsClient
 import tempest.config
 
 
@@ -34,6 +35,11 @@
                                               self.config.nova.api_key,
                                               self.config.nova.auth_url,
                                               self.config.nova.tenant_name)
+            self.extensions_client = ExtensionsClient(self.config,
+                                              self.config.nova.username,
+                                              self.config.nova.api_key,
+                                              self.config.nova.auth_url,
+                                              self.config.nova.tenant_name)
 
         else:
             #Assuming basic/native authentication
@@ -53,3 +59,7 @@
                                               self.config.nova.username,
                                               self.config.nova.api_key,
                                               self.config.nova.auth_url)
+            self.extensions_client = ExtensionsClient(self.config,
+                                              self.config.nova.username,
+                                              self.config.nova.api_key,
+                                              self.config.nova.auth_url)
diff --git a/tempest/services/nova/json/extensions_client.py b/tempest/services/nova/json/extensions_client.py
new file mode 100644
index 0000000..3521f14
--- /dev/null
+++ b/tempest/services/nova/json/extensions_client.py
@@ -0,0 +1,16 @@
+from tempest.common import rest_client
+import json
+
+
+class ExtensionsClient(object):
+
+    def __init__(self, config, username, key, auth_url, tenant_name=None):
+        self.config = config
+        self.client = rest_client.RestClient(config, username, key,
+                                             auth_url, tenant_name)
+
+    def list_extensions(self):
+        url = 'extensions'
+        resp, body = self.client.get(url)
+        body = json.loads(body)
+        return resp, body
diff --git a/tempest/tests/test_extensions.py b/tempest/tests/test_extensions.py
new file mode 100644
index 0000000..9bfffe3
--- /dev/null
+++ b/tempest/tests/test_extensions.py
@@ -0,0 +1,20 @@
+from nose.plugins.attrib import attr
+from tempest import openstack
+import tempest.config
+import unittest2 as unittest
+
+
+class ExtentionsTest(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        cls.os = openstack.Manager()
+        cls.client = cls.os.extensions_client
+        cls.config = cls.os.config
+
+    @attr(type='smoke')
+    def test_list_extensions(self):
+        """List of all extensions"""
+        resp, extensions = self.client.list_extensions()
+        self.assertTrue("extensions" in extensions)
+        self.assertEqual(200, resp.status)