moto/tests/test_ec2/test_transit_gateway_cloudformation.py
2021-07-28 11:17:15 +01:00

87 lines
3.2 KiB
Python

from __future__ import unicode_literals
import boto3
import json
import sure # noqa
from moto import (
mock_cloudformation,
mock_ec2,
)
@mock_cloudformation
@mock_ec2
def test_transit_gateway_by_cloudformation_simple():
ec2 = boto3.client("ec2", region_name="us-east-1")
cf_client = boto3.client("cloudformation", "us-east-1")
ec2.describe_transit_gateways()["TransitGateways"].should.have.length_of(0)
template = {
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Template for Transit Gateway creation.",
"Resources": {
"ttg": {
"Type": "AWS::EC2::TransitGateway",
"Properties": {"Description": "My CF Gateway"},
}
},
}
template = json.dumps(template)
cf_client.create_stack(StackName="test_stack", TemplateBody=template)
gateways = ec2.describe_transit_gateways()["TransitGateways"]
gateways.should.have.length_of(1)
gateways[0]["TransitGatewayId"].should.match("tgw-[0-9a-z]+")
gateways[0]["State"].should.equal("available")
gateways[0]["Description"].should.equal("My CF Gateway")
gateways[0]["Options"]["AmazonSideAsn"].should.equal(64512)
gateways[0]["Options"]["AutoAcceptSharedAttachments"].should.equal("disable")
gateways[0]["Options"]["DefaultRouteTableAssociation"].should.equal("enable")
# Gateway will only have the OOTB CF tags
gateways[0]["Tags"].should.have.length_of(3)
@mock_cloudformation
@mock_ec2
def test_transit_gateway_by_cloudformation():
ec2 = boto3.client("ec2", region_name="us-east-1")
cf_client = boto3.client("cloudformation", "us-east-1")
ec2.describe_transit_gateways()["TransitGateways"].should.have.length_of(0)
template = {
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Template for Transit Gateway creation.",
"Resources": {
"ttg": {
"Type": "AWS::EC2::TransitGateway",
"Properties": {
"Description": "My CF Gateway",
"AmazonSideAsn": 1,
"AutoAcceptSharedAttachments": "enable",
"DefaultRouteTableAssociation": "disable",
"Tags": [{"Key": "foo", "Value": "bar"}],
},
}
},
}
template = json.dumps(template)
cf_client.create_stack(StackName="test_stack", TemplateBody=template)
gateways = ec2.describe_transit_gateways()["TransitGateways"]
gateways.should.have.length_of(1)
gateways[0]["TransitGatewayId"].should.match("tgw-[0-9a-z]+")
gateways[0]["State"].should.equal("available")
gateways[0]["Description"].should.equal("My CF Gateway")
gateways[0]["Options"]["AmazonSideAsn"].should.equal(1)
gateways[0]["Options"]["AutoAcceptSharedAttachments"].should.equal("enable")
gateways[0]["Options"]["DefaultRouteTableAssociation"].should.equal("disable")
tags = gateways[0].get("Tags", {})
tags.should.have.length_of(4)
tags.should.contain({"Key": "foo", "Value": "bar"})
tags.should.contain({"Key": "aws:cloudformation:stack-name", "Value": "test_stack"})
tags.should.contain({"Key": "aws:cloudformation:logical-id", "Value": "ttg"})