moto/tests/test_ec2/test_nat_gateway.py

105 lines
3.7 KiB
Python
Raw Normal View History

2016-02-29 23:22:15 +00:00
from __future__ import unicode_literals
import boto3
import sure # noqa
from moto import mock_ec2
@mock_ec2
def test_describe_nat_gateways():
2019-10-31 15:44:26 +00:00
conn = boto3.client("ec2", "us-east-1")
2016-02-29 23:22:15 +00:00
response = conn.describe_nat_gateways()
2019-10-31 15:44:26 +00:00
response["NatGateways"].should.have.length_of(0)
2016-02-29 23:22:15 +00:00
@mock_ec2
def test_create_nat_gateway():
2019-10-31 15:44:26 +00:00
conn = boto3.client("ec2", "us-east-1")
vpc = conn.create_vpc(CidrBlock="10.0.0.0/16")
vpc_id = vpc["Vpc"]["VpcId"]
2016-02-29 23:22:15 +00:00
subnet = conn.create_subnet(
2019-10-31 15:44:26 +00:00
VpcId=vpc_id, CidrBlock="10.0.1.0/27", AvailabilityZone="us-east-1a"
2016-02-29 23:22:15 +00:00
)
2019-10-31 15:44:26 +00:00
allocation_id = conn.allocate_address(Domain="vpc")["AllocationId"]
subnet_id = subnet["Subnet"]["SubnetId"]
2016-02-29 23:22:15 +00:00
2019-10-31 15:44:26 +00:00
response = conn.create_nat_gateway(SubnetId=subnet_id, AllocationId=allocation_id)
2016-02-29 23:22:15 +00:00
2019-10-31 15:44:26 +00:00
response["NatGateway"]["VpcId"].should.equal(vpc_id)
response["NatGateway"]["SubnetId"].should.equal(subnet_id)
response["NatGateway"]["State"].should.equal("available")
2016-02-29 23:22:15 +00:00
@mock_ec2
def test_delete_nat_gateway():
2019-10-31 15:44:26 +00:00
conn = boto3.client("ec2", "us-east-1")
vpc = conn.create_vpc(CidrBlock="10.0.0.0/16")
vpc_id = vpc["Vpc"]["VpcId"]
2016-02-29 23:22:15 +00:00
subnet = conn.create_subnet(
2019-10-31 15:44:26 +00:00
VpcId=vpc_id, CidrBlock="10.0.1.0/27", AvailabilityZone="us-east-1a"
2016-02-29 23:22:15 +00:00
)
2019-10-31 15:44:26 +00:00
allocation_id = conn.allocate_address(Domain="vpc")["AllocationId"]
subnet_id = subnet["Subnet"]["SubnetId"]
2016-02-29 23:22:15 +00:00
nat_gateway = conn.create_nat_gateway(
2019-10-31 15:44:26 +00:00
SubnetId=subnet_id, AllocationId=allocation_id
2016-02-29 23:22:15 +00:00
)
2019-10-31 15:44:26 +00:00
nat_gateway_id = nat_gateway["NatGateway"]["NatGatewayId"]
2016-02-29 23:22:15 +00:00
response = conn.delete_nat_gateway(NatGatewayId=nat_gateway_id)
2017-02-24 02:37:43 +00:00
# this is hard to match against, so remove it
2019-10-31 15:44:26 +00:00
response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None)
response.should.equal(
{
"NatGatewayId": nat_gateway_id,
"ResponseMetadata": {
"HTTPStatusCode": 200,
"RequestId": "741fc8ab-6ebe-452b-b92b-example",
},
2016-02-29 23:22:15 +00:00
}
2019-10-31 15:44:26 +00:00
)
2016-02-29 23:22:15 +00:00
@mock_ec2
def test_create_and_describe_nat_gateway():
2019-10-31 15:44:26 +00:00
conn = boto3.client("ec2", "us-east-1")
vpc = conn.create_vpc(CidrBlock="10.0.0.0/16")
vpc_id = vpc["Vpc"]["VpcId"]
2016-02-29 23:22:15 +00:00
subnet = conn.create_subnet(
2019-10-31 15:44:26 +00:00
VpcId=vpc_id, CidrBlock="10.0.1.0/27", AvailabilityZone="us-east-1a"
2016-02-29 23:22:15 +00:00
)
2019-10-31 15:44:26 +00:00
allocation_id = conn.allocate_address(Domain="vpc")["AllocationId"]
subnet_id = subnet["Subnet"]["SubnetId"]
2016-02-29 23:22:15 +00:00
create_response = conn.create_nat_gateway(
2019-10-31 15:44:26 +00:00
SubnetId=subnet_id, AllocationId=allocation_id
2016-02-29 23:22:15 +00:00
)
2019-10-31 15:44:26 +00:00
nat_gateway_id = create_response["NatGateway"]["NatGatewayId"]
2016-02-29 23:22:15 +00:00
describe_response = conn.describe_nat_gateways()
2019-10-31 15:44:26 +00:00
enis = conn.describe_network_interfaces()["NetworkInterfaces"]
eni_id = enis[0]["NetworkInterfaceId"]
public_ip = conn.describe_addresses(AllocationIds=[allocation_id])["Addresses"][0][
"PublicIp"
]
describe_response["NatGateways"].should.have.length_of(1)
describe_response["NatGateways"][0]["NatGatewayId"].should.equal(nat_gateway_id)
describe_response["NatGateways"][0]["State"].should.equal("available")
describe_response["NatGateways"][0]["SubnetId"].should.equal(subnet_id)
describe_response["NatGateways"][0]["VpcId"].should.equal(vpc_id)
describe_response["NatGateways"][0]["NatGatewayAddresses"][0][
"AllocationId"
].should.equal(allocation_id)
describe_response["NatGateways"][0]["NatGatewayAddresses"][0][
"NetworkInterfaceId"
].should.equal(eni_id)
assert describe_response["NatGateways"][0]["NatGatewayAddresses"][0][
"PrivateIp"
].startswith("10.")
describe_response["NatGateways"][0]["NatGatewayAddresses"][0][
"PublicIp"
].should.equal(public_ip)