Heat: check response fields

Make sure that we get the expected fields in each response.

Change-Id: Ie3d56304ffc7c80c186e100fc8d83fb78dff3044
diff --git a/tempest/api/orchestration/stacks/test_non_empty_stack.py b/tempest/api/orchestration/stacks/test_non_empty_stack.py
index b19344d..eead234 100644
--- a/tempest/api/orchestration/stacks/test_non_empty_stack.py
+++ b/tempest/api/orchestration/stacks/test_non_empty_stack.py
@@ -78,6 +78,10 @@
         cls.resource_type = 'AWS::AutoScaling::LaunchConfiguration'
         cls.client.wait_for_stack_status(cls.stack_id, 'CREATE_COMPLETE')
 
+    def assert_fields_in_dict(self, obj, *fields):
+        for field in fields:
+            self.assertIn(field, obj)
+
     @attr(type='gate')
     def test_stack_list(self):
         """Created stack should be on the list of existing stacks."""
@@ -93,8 +97,19 @@
         resp, stack = self.client.get_stack(self.stack_name)
         self.assertEqual('200', resp['status'])
         self.assertIsInstance(stack, dict)
+        self.assert_fields_in_dict(stack, 'stack_name', 'id', 'links',
+                                   'parameters', 'outputs', 'disable_rollback',
+                                   'stack_status_reason', 'stack_status',
+                                   'creation_time', 'updated_time',
+                                   'capabilities', 'notification_topics',
+                                   'timeout_mins', 'template_description')
+        self.assert_fields_in_dict(stack['parameters'], 'AWS::StackId',
+                                   'trigger', 'AWS::Region', 'AWS::StackName')
+        self.assertEqual(True, stack['disable_rollback'],
+                         'disable_rollback should default to True')
         self.assertEqual(self.stack_name, stack['stack_name'])
         self.assertEqual(self.stack_id, stack['id'])
+        self.assertEqual('fluffy', stack['outputs'][0]['output_key'])
 
     @attr(type='gate')
     def test_list_resources(self):
@@ -103,6 +118,11 @@
         resp, resources = self.client.list_resources(self.stack_identifier)
         self.assertEqual('200', resp['status'])
         self.assertIsInstance(resources, list)
+        for res in resources:
+            self.assert_fields_in_dict(res, 'logical_resource_id',
+                                       'resource_type', 'resource_status',
+                                       'updated_time')
+
         resources_names = map(lambda resource: resource['logical_resource_id'],
                               resources)
         self.assertIn(self.resource_name, resources_names)
@@ -116,6 +136,11 @@
         resp, resource = self.client.get_resource(self.stack_identifier,
                                                   self.resource_name)
         self.assertIsInstance(resource, dict)
+        self.assert_fields_in_dict(resource, 'resource_name', 'description',
+                                   'links', 'logical_resource_id',
+                                   'resource_status', 'updated_time',
+                                   'required_by', 'resource_status_reason',
+                                   'physical_resource_id', 'resource_type')
         self.assertEqual(self.resource_name, resource['logical_resource_id'])
         self.assertEqual(self.resource_type, resource['resource_type'])
 
@@ -135,6 +160,12 @@
         resp, events = self.client.list_events(self.stack_identifier)
         self.assertEqual('200', resp['status'])
         self.assertIsInstance(events, list)
+
+        for event in events:
+            self.assert_fields_in_dict(event, 'logical_resource_id', 'id',
+                                       'resource_status_reason',
+                                       'resource_status', 'event_time')
+
         resource_statuses = map(lambda event: event['resource_status'], events)
         self.assertIn('CREATE_IN_PROGRESS', resource_statuses)
         self.assertIn('CREATE_COMPLETE', resource_statuses)
@@ -151,6 +182,11 @@
                                              self.resource_name, event_id)
         self.assertEqual('200', resp['status'])
         self.assertIsInstance(event, dict)
+        self.assert_fields_in_dict(event, 'resource_name', 'event_time',
+                                   'links', 'logical_resource_id',
+                                   'resource_status', 'resource_status_reason',
+                                   'physical_resource_id', 'id',
+                                   'resource_properties', 'resource_type')
         self.assertEqual(self.resource_name, event['resource_name'])
         self.assertEqual('state changed', event['resource_status_reason'])
         self.assertEqual(self.resource_name, event['logical_resource_id'])