101 lines
3.5 KiB
Python
101 lines
3.5 KiB
Python
from __future__ import unicode_literals
|
|
import boto3
|
|
import sure # noqa
|
|
from moto import mock_ec2
|
|
|
|
|
|
@mock_ec2
|
|
def test_describe_nat_gateways():
|
|
conn = boto3.client('ec2', 'us-east-1')
|
|
|
|
response = conn.describe_nat_gateways()
|
|
|
|
response['NatGateways'].should.have.length_of(0)
|
|
|
|
|
|
@mock_ec2
|
|
def test_create_nat_gateway():
|
|
conn = boto3.client('ec2', 'us-east-1')
|
|
vpc = conn.create_vpc(CidrBlock='10.0.0.0/16')
|
|
vpc_id = vpc['Vpc']['VpcId']
|
|
subnet = conn.create_subnet(
|
|
VpcId=vpc_id,
|
|
CidrBlock='10.0.1.0/27',
|
|
AvailabilityZone='us-east-1a',
|
|
)
|
|
allocation_id = conn.allocate_address(Domain='vpc')['AllocationId']
|
|
subnet_id = subnet['Subnet']['SubnetId']
|
|
|
|
response = conn.create_nat_gateway(
|
|
SubnetId=subnet_id,
|
|
AllocationId=allocation_id,
|
|
)
|
|
|
|
response['NatGateway']['VpcId'].should.equal(vpc_id)
|
|
response['NatGateway']['SubnetId'].should.equal(subnet_id)
|
|
response['NatGateway']['State'].should.equal('available')
|
|
|
|
|
|
@mock_ec2
|
|
def test_delete_nat_gateway():
|
|
conn = boto3.client('ec2', 'us-east-1')
|
|
vpc = conn.create_vpc(CidrBlock='10.0.0.0/16')
|
|
vpc_id = vpc['Vpc']['VpcId']
|
|
subnet = conn.create_subnet(
|
|
VpcId=vpc_id,
|
|
CidrBlock='10.0.1.0/27',
|
|
AvailabilityZone='us-east-1a',
|
|
)
|
|
allocation_id = conn.allocate_address(Domain='vpc')['AllocationId']
|
|
subnet_id = subnet['Subnet']['SubnetId']
|
|
|
|
nat_gateway = conn.create_nat_gateway(
|
|
SubnetId=subnet_id,
|
|
AllocationId=allocation_id,
|
|
)
|
|
nat_gateway_id = nat_gateway['NatGateway']['NatGatewayId']
|
|
response = conn.delete_nat_gateway(NatGatewayId=nat_gateway_id)
|
|
|
|
response.should.equal({
|
|
'NatGatewayId': nat_gateway_id,
|
|
'ResponseMetadata': {
|
|
'HTTPStatusCode': 200,
|
|
'RequestId': '741fc8ab-6ebe-452b-b92b-example'
|
|
}
|
|
})
|
|
|
|
|
|
@mock_ec2
|
|
def test_create_and_describe_nat_gateway():
|
|
conn = boto3.client('ec2', 'us-east-1')
|
|
vpc = conn.create_vpc(CidrBlock='10.0.0.0/16')
|
|
vpc_id = vpc['Vpc']['VpcId']
|
|
subnet = conn.create_subnet(
|
|
VpcId=vpc_id,
|
|
CidrBlock='10.0.1.0/27',
|
|
AvailabilityZone='us-east-1a',
|
|
)
|
|
allocation_id = conn.allocate_address(Domain='vpc')['AllocationId']
|
|
subnet_id = subnet['Subnet']['SubnetId']
|
|
|
|
create_response = conn.create_nat_gateway(
|
|
SubnetId=subnet_id,
|
|
AllocationId=allocation_id,
|
|
)
|
|
nat_gateway_id = create_response['NatGateway']['NatGatewayId']
|
|
describe_response = conn.describe_nat_gateways()
|
|
|
|
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)
|