| 
									
										
										
										
											2021-08-22 10:35:04 +01:00
										 |  |  | import boto3 | 
					
						
							|  |  |  | import pytest | 
					
						
							| 
									
										
										
										
											2022-03-11 20:28:45 -01:00
										 |  |  | import sure  # noqa # pylint: disable=unused-import | 
					
						
							| 
									
										
										
										
											2021-08-22 10:35:04 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | from botocore.exceptions import ClientError | 
					
						
							|  |  |  | from moto import mock_ec2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_create(): | 
					
						
							|  |  |  |     ec2 = boto3.resource("ec2", region_name="us-west-1") | 
					
						
							|  |  |  |     client = boto3.client("ec2", region_name="us-west-1") | 
					
						
							|  |  |  |     vpc = list(ec2.vpcs.all())[0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     res = client.create_egress_only_internet_gateway(VpcId=vpc.id) | 
					
						
							|  |  |  |     gateway = res["EgressOnlyInternetGateway"] | 
					
						
							|  |  |  |     gateway.should.have.key("EgressOnlyInternetGatewayId").match("eigw-[a-z0-9]+") | 
					
						
							|  |  |  |     gateway.should.have.key("Tags").equal([]) | 
					
						
							|  |  |  |     gateway.should.have.key("Attachments") | 
					
						
							|  |  |  |     gateway["Attachments"].should.have.length_of(1) | 
					
						
							|  |  |  |     gateway["Attachments"][0].should.equal({"State": "attached", "VpcId": vpc.id}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_create_with_unknown_vpc(): | 
					
						
							|  |  |  |     client = boto3.client("ec2", region_name="us-west-1") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							|  |  |  |         client.create_egress_only_internet_gateway(VpcId="vpc-says-what") | 
					
						
							|  |  |  |     err = ex.value.response["Error"] | 
					
						
							|  |  |  |     err["Code"].should.equal("InvalidVpcID.NotFound") | 
					
						
							|  |  |  |     err["Message"].should.equal("VpcID vpc-says-what does not exist.") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_describe_all(): | 
					
						
							|  |  |  |     ec2 = boto3.resource("ec2", region_name="us-west-1") | 
					
						
							|  |  |  |     client = boto3.client("ec2", region_name="us-west-1") | 
					
						
							|  |  |  |     vpc = list(ec2.vpcs.all())[0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     gw1 = client.create_egress_only_internet_gateway(VpcId=vpc.id)[ | 
					
						
							|  |  |  |         "EgressOnlyInternetGateway" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |     gw2 = client.create_egress_only_internet_gateway(VpcId=vpc.id)[ | 
					
						
							|  |  |  |         "EgressOnlyInternetGateway" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     gateways = client.describe_egress_only_internet_gateways()[ | 
					
						
							|  |  |  |         "EgressOnlyInternetGateways" | 
					
						
							|  |  |  |     ] | 
					
						
							| 
									
										
										
										
											2021-10-05 17:11:07 +00:00
										 |  |  |     assert len(gateways) >= 2, "Should have two recently created gateways" | 
					
						
							| 
									
										
										
										
											2021-08-22 10:35:04 +01:00
										 |  |  |     gateways.should.contain(gw1) | 
					
						
							|  |  |  |     gateways.should.contain(gw2) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_describe_one(): | 
					
						
							|  |  |  |     ec2 = boto3.resource("ec2", region_name="us-west-1") | 
					
						
							|  |  |  |     client = boto3.client("ec2", region_name="us-west-1") | 
					
						
							|  |  |  |     vpc = list(ec2.vpcs.all())[0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     gw1 = client.create_egress_only_internet_gateway(VpcId=vpc.id)[ | 
					
						
							|  |  |  |         "EgressOnlyInternetGateway" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |     gw1_id = gw1["EgressOnlyInternetGatewayId"] | 
					
						
							|  |  |  |     client.create_egress_only_internet_gateway(VpcId=vpc.id)[ | 
					
						
							|  |  |  |         "EgressOnlyInternetGateway" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |     gw3 = client.create_egress_only_internet_gateway(VpcId=vpc.id)[ | 
					
						
							|  |  |  |         "EgressOnlyInternetGateway" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |     gw3_id = gw3["EgressOnlyInternetGatewayId"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     gateways = client.describe_egress_only_internet_gateways( | 
					
						
							|  |  |  |         EgressOnlyInternetGatewayIds=[gw1_id, gw3_id] | 
					
						
							|  |  |  |     )["EgressOnlyInternetGateways"] | 
					
						
							|  |  |  |     gateways.should.have.length_of(2) | 
					
						
							|  |  |  |     gateways.should.contain(gw1) | 
					
						
							|  |  |  |     gateways.should.contain(gw3) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_create_and_delete(): | 
					
						
							|  |  |  |     ec2 = boto3.resource("ec2", region_name="us-west-1") | 
					
						
							|  |  |  |     client = boto3.client("ec2", region_name="us-west-1") | 
					
						
							|  |  |  |     vpc = list(ec2.vpcs.all())[0] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     gw1 = client.create_egress_only_internet_gateway(VpcId=vpc.id)[ | 
					
						
							|  |  |  |         "EgressOnlyInternetGateway" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |     gw1_id = gw1["EgressOnlyInternetGatewayId"] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-05 17:11:07 +00:00
										 |  |  |     client.describe_egress_only_internet_gateways( | 
					
						
							|  |  |  |         EgressOnlyInternetGatewayIds=[gw1_id] | 
					
						
							|  |  |  |     )["EgressOnlyInternetGateways"].should.have.length_of(1) | 
					
						
							| 
									
										
										
										
											2021-08-22 10:35:04 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     client.delete_egress_only_internet_gateway(EgressOnlyInternetGatewayId=gw1_id) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-05 17:11:07 +00:00
										 |  |  |     client.describe_egress_only_internet_gateways( | 
					
						
							|  |  |  |         EgressOnlyInternetGatewayIds=[gw1_id] | 
					
						
							|  |  |  |     )["EgressOnlyInternetGateways"].should.have.length_of(0) |