Merge "Adds "list-groups" testcase to v3/test_groups"
diff --git a/tempest/api/identity/admin/v3/test_groups.py b/tempest/api/identity/admin/v3/test_groups.py
index 64dba7d..d8c7063 100644
--- a/tempest/api/identity/admin/v3/test_groups.py
+++ b/tempest/api/identity/admin/v3/test_groups.py
@@ -91,3 +91,22 @@
         user_groups = self.client.list_user_groups(user['id'])
         self.assertEqual(sorted(groups), sorted(user_groups))
         self.assertEqual(2, len(user_groups))
+
+    @test.attr(type='smoke')
+    def test_list_groups(self):
+        # Test to list groups
+        group_ids = list()
+        fetched_ids = list()
+        for _ in range(3):
+            name = data_utils.rand_name('Group')
+            description = data_utils.rand_name('Description')
+            group = self.client.create_group(name,
+                                             description=description)
+            self.addCleanup(self.client.delete_group, group['id'])
+            group_ids.append(group['id'])
+        # List and Verify Groups
+        body = self.client.list_groups()
+        for g in body:
+            fetched_ids.append(g['id'])
+        missing_groups = [g for g in group_ids if g not in fetched_ids]
+        self.assertEqual([], missing_groups)
diff --git a/tempest/services/identity/v3/json/identity_client.py b/tempest/services/identity/v3/json/identity_client.py
index 4d333c0..6010249 100644
--- a/tempest/services/identity/v3/json/identity_client.py
+++ b/tempest/services/identity/v3/json/identity_client.py
@@ -316,6 +316,13 @@
         body = json.loads(body)
         return service_client.ResponseBody(resp, body['group'])
 
+    def list_groups(self):
+        """Lists the groups."""
+        resp, body = self.get('groups')
+        self.expected_success(200, resp.status)
+        body = json.loads(body)
+        return service_client.ResponseBodyList(resp, body['groups'])
+
     def update_group(self, group_id, **kwargs):
         """Updates a group."""
         body = self.get_group(group_id)