---
call: GetTemplate
service: CloudFormation
tests:
  - expected: 2010-09-09
    op: eq
    path: Template.AWSTemplateFormatVersion
  - expected: 'AWS CloudFormation Sample Template EC2WithEBSSample: Create an Amazon EC2 instance running the Amazon Linux AMI with a new EBS volume attached. The instance and the volume are pinned to the same availability zone. We recommend that you do untargeted launches rather than pinning instances this way.The AMI is chosen based on the region in which the stack is run. **WARNING** This template creates an Amazon EC2 instance and an EBS Volume. You will be billed for the AWS resources used if you create a stack from this template.'
    op: eq
    path: Template.Description
  - expected: ami-dcfa4edd
    op: eq
    path: Template.Mappings.RegionMap.ap-northeast-1.AMI
  - expected: ap-northeast-1a
    op: eq
    path: Template.Mappings.RegionMap.ap-northeast-1.TestAz
  - expected: ami-74dda626
    op: eq
    path: Template.Mappings.RegionMap.ap-southeast-1.AMI
  - expected: ap-southeast-1a
    op: eq
    path: Template.Mappings.RegionMap.ap-southeast-1.TestAz
  - expected: ami-b3990e89
    op: eq
    path: Template.Mappings.RegionMap.ap-southeast-2.AMI
  - expected: ap-southeast-2a
    op: eq
    path: Template.Mappings.RegionMap.ap-southeast-2.TestAz
  - expected: ami-24506250
    op: eq
    path: Template.Mappings.RegionMap.eu-west-1.AMI
  - expected: eu-west-1a
    op: eq
    path: Template.Mappings.RegionMap.eu-west-1.TestAz
  - expected: ami-3e3be423
    op: eq
    path: Template.Mappings.RegionMap.sa-east-1.AMI
  - expected: sa-east-1a
    op: eq
    path: Template.Mappings.RegionMap.sa-east-1.TestAz
  - expected: ami-7f418316
    op: eq
    path: Template.Mappings.RegionMap.us-east-1.AMI
  - expected: us-east-1a
    op: eq
    path: Template.Mappings.RegionMap.us-east-1.TestAz
  - expected: ami-951945d0
    op: eq
    path: Template.Mappings.RegionMap.us-west-1.AMI
  - expected: us-west-1a
    op: eq
    path: Template.Mappings.RegionMap.us-west-1.TestAz
  - expected: ami-16fd7026
    op: eq
    path: Template.Mappings.RegionMap.us-west-2.AMI
  - expected: us-west-2a
    op: eq
    path: Template.Mappings.RegionMap.us-west-2.TestAz
  - expected: InstanceId of the newly created EC2 instance
    op: eq
    path: Template.Outputs.InstanceId.Description
  - expected: Ec2Instance
    op: eq
    path: Template.Outputs.InstanceId.Value.Ref
  - expected: Public DNSName of the newly created EC2 instance
    op: eq
    path: Template.Outputs.PublicDNS.Description
  - expected: Ec2Instance
    op: eq
    path: Template.Outputs.PublicDNS.Value.Fn::GetAtt.0
  - expected: PublicDnsName
    op: eq
    path: Template.Outputs.PublicDNS.Value.Fn::GetAtt.1
  - expected: Public IP address of the newly created EC2 instance
    op: eq
    path: Template.Outputs.PublicIP.Description
  - expected: Ec2Instance
    op: eq
    path: Template.Outputs.PublicIP.Value.Fn::GetAtt.0
  - expected: PublicIp
    op: eq
    path: Template.Outputs.PublicIP.Value.Fn::GetAtt.1
  - expected: Name of an existing EC2 KeyPair to enable SSH access to the instance
    op: eq
    path: Template.Parameters.KeyName.Description
  - expected: String
    op: eq
    path: Template.Parameters.KeyName.Type
  - expected: '(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})'
    op: eq
    path: Template.Parameters.SSHLocation.AllowedPattern
  - expected: must be a valid IP CIDR range of the form x.x.x.x/x.
    op: eq
    path: Template.Parameters.SSHLocation.ConstraintDescription
  - expected: 0.0.0.0/0
    op: eq
    path: Template.Parameters.SSHLocation.Default
  - expected: The IP address range that can be used to SSH to the EC2 instances
    op: eq
    path: Template.Parameters.SSHLocation.Description
  - expected: 18
    op: eq
    path: Template.Parameters.SSHLocation.MaxLength
  - expected: 9
    op: eq
    path: Template.Parameters.SSHLocation.MinLength
  - expected: String
    op: eq
    path: Template.Parameters.SSHLocation.Type
  - expected: RegionMap
    op: eq
    path: Template.Resources.Ec2Instance.Properties.AvailabilityZone.Fn::FindInMap.0
  - expected: AWS::Region
    op: eq
    path: Template.Resources.Ec2Instance.Properties.AvailabilityZone.Fn::FindInMap.1.Ref
  - expected: TestAz
    op: eq
    path: Template.Resources.Ec2Instance.Properties.AvailabilityZone.Fn::FindInMap.2
  - expected: RegionMap
    op: eq
    path: Template.Resources.Ec2Instance.Properties.ImageId.Fn::FindInMap.0
  - expected: AWS::Region
    op: eq
    path: Template.Resources.Ec2Instance.Properties.ImageId.Fn::FindInMap.1.Ref
  - expected: AMI
    op: eq
    path: Template.Resources.Ec2Instance.Properties.ImageId.Fn::FindInMap.2
  - expected: KeyName
    op: eq
    path: Template.Resources.Ec2Instance.Properties.KeyName.Ref
  - expected: InstanceSecurityGroup
    op: eq
    path: Template.Resources.Ec2Instance.Properties.SecurityGroups.0.Ref
  - expected: /dev/sdk
    op: eq
    path: Template.Resources.Ec2Instance.Properties.Volumes.0.Device
  - expected: NewVolume
    op: eq
    path: Template.Resources.Ec2Instance.Properties.Volumes.0.VolumeId.Ref
  - expected: AWS::EC2::Instance
    op: eq
    path: Template.Resources.Ec2Instance.Type
  - expected: Enable SSH access via port 22
    op: eq
    path: Template.Resources.InstanceSecurityGroup.Properties.GroupDescription
  - expected: SSHLocation
    op: eq
    path: Template.Resources.InstanceSecurityGroup.Properties.SecurityGroupIngress.0.CidrIp.Ref
  - expected: 22
    op: eq
    path: Template.Resources.InstanceSecurityGroup.Properties.SecurityGroupIngress.0.FromPort
  - expected: tcp
    op: eq
    path: Template.Resources.InstanceSecurityGroup.Properties.SecurityGroupIngress.0.IpProtocol
  - expected: 22
    op: eq
    path: Template.Resources.InstanceSecurityGroup.Properties.SecurityGroupIngress.0.ToPort
  - expected: AWS::EC2::SecurityGroup
    op: eq
    path: Template.Resources.InstanceSecurityGroup.Type
  - expected: RegionMap
    op: eq
    path: Template.Resources.NewVolume.Properties.AvailabilityZone.Fn::FindInMap.0
  - expected: AWS::Region
    op: eq
    path: Template.Resources.NewVolume.Properties.AvailabilityZone.Fn::FindInMap.1.Ref
  - expected: TestAz
    op: eq
    path: Template.Resources.NewVolume.Properties.AvailabilityZone.Fn::FindInMap.2
  - expected: 100
    op: eq
    path: Template.Resources.NewVolume.Properties.Size
  - expected: AWS::EC2::Volume
    op: eq
    path: Template.Resources.NewVolume.Type