#    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.api.orchestration import base
from tempest.common.utils import data_utils
from tempest import test


class TemplateYAMLTestJSON(base.BaseOrchestrationTest):
    template = """
HeatTemplateFormatVersion: '2012-12-12'
Description: |
  Template which creates only a new user
Resources:
  CfnUser:
    Type: AWS::IAM::User
"""

    @classmethod
    @test.safe_setup
    def setUpClass(cls):
        super(TemplateYAMLTestJSON, cls).setUpClass()
        cls.stack_name = data_utils.rand_name('heat')
        cls.stack_identifier = cls.create_stack(cls.stack_name, cls.template)
        cls.client.wait_for_stack_status(cls.stack_identifier,
                                         'CREATE_COMPLETE')
        cls.stack_id = cls.stack_identifier.split('/')[1]
        cls.parameters = {}

    @test.attr(type='gate')
    def test_show_template(self):
        """Getting template used to create the stack."""
        resp, template = self.client.show_template(self.stack_identifier)
        self.assertEqual('200', resp['status'])

    @test.attr(type='gate')
    def test_validate_template(self):
        """Validating template passing it content."""
        resp, parameters = self.client.validate_template(self.template,
                                                         self.parameters)
        self.assertEqual('200', resp['status'])


class TemplateAWSTestJSON(TemplateYAMLTestJSON):
    template = """
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Description" : "Template which creates only a new user",
  "Resources" : {
    "CfnUser" : {
      "Type" : "AWS::IAM::User"
    }
  }
}
"""

@@ -846,20 +846,28 @@
 y a new 
-user
+cloud config
 %0AResourc
@@ -875,20 +875,27 @@
 s:%0A  Cfn
-User
+CloudConfig
 :%0A    Ty
@@ -898,30 +898,76 @@
   Type: 
-AWS::IAM::User
+OS::Heat::CloudConfig%0A    Properties:%0A      cloud_config: %7B%7D
 %0A%22%22%22%0A%0A  
@@ -2153,12 +2153,20 @@
 new 
-user
+cloud config
 %22,%0A 
@@ -2190,20 +2190,27 @@
     %22Cfn
-User
+CloudConfig
 %22 : %7B%0A  
@@ -2227,23 +2227,88 @@
  : %22
-AWS::IAM::User%22
+OS::Heat::CloudConfig%22,%0A      %22Properties%22: %7B%0A        %22cloud_config%22: %7B%7D%0A      %7D
 %0A   

Change heat templete