| 
									
										
										
										
											2021-09-15 21:07:04 +00:00
										 |  |  | import boto3 | 
					
						
							| 
									
										
										
										
											2021-10-18 19:44:29 +00:00
										 |  |  | import sure  # noqa # pylint: disable=unused-import | 
					
						
							| 
									
										
										
										
											2021-09-15 21:07:04 +00:00
										 |  |  | import pytest | 
					
						
							|  |  |  | from botocore.exceptions import ClientError | 
					
						
							| 
									
										
										
										
											2021-10-05 17:11:07 +00:00
										 |  |  | from moto import mock_ec2, settings | 
					
						
							| 
									
										
										
										
											2022-08-13 09:49:43 +00:00
										 |  |  | from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID | 
					
						
							| 
									
										
										
										
											2021-10-05 17:11:07 +00:00
										 |  |  | from unittest import SkipTest | 
					
						
							| 
									
										
										
										
											2021-09-15 21:07:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_describe_carrier_gateways_none(): | 
					
						
							| 
									
										
										
										
											2021-10-05 17:11:07 +00:00
										 |  |  |     if settings.TEST_SERVER_MODE: | 
					
						
							|  |  |  |         raise SkipTest("ServerMode is not guaranteed to be empty") | 
					
						
							| 
									
										
										
										
											2021-09-15 21:07:04 +00:00
										 |  |  |     ec2 = boto3.client("ec2", region_name="us-east-1") | 
					
						
							|  |  |  |     ec2.describe_carrier_gateways()["CarrierGateways"].should.equal([]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_describe_carrier_gateways_multiple(): | 
					
						
							|  |  |  |     client = boto3.client("ec2", region_name="us-east-1") | 
					
						
							|  |  |  |     ec2 = boto3.resource("ec2", region_name="us-east-1") | 
					
						
							|  |  |  |     vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16") | 
					
						
							|  |  |  |     cg1 = client.create_carrier_gateway(VpcId=vpc.id)["CarrierGateway"] | 
					
						
							|  |  |  |     cg2 = client.create_carrier_gateway(VpcId=vpc.id)["CarrierGateway"] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-05 17:11:07 +00:00
										 |  |  |     gateways = client.describe_carrier_gateways()["CarrierGateways"] | 
					
						
							|  |  |  |     gateway_ids = [g["CarrierGatewayId"] for g in gateways] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     gateway_ids.should.contain(cg1["CarrierGatewayId"]) | 
					
						
							|  |  |  |     gateway_ids.should.contain(cg2["CarrierGatewayId"]) | 
					
						
							| 
									
										
										
										
											2021-09-15 21:07:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     find_one = client.describe_carrier_gateways( | 
					
						
							|  |  |  |         CarrierGatewayIds=[cg1["CarrierGatewayId"]] | 
					
						
							|  |  |  |     )["CarrierGateways"] | 
					
						
							|  |  |  |     find_one.should.have.length_of(1) | 
					
						
							|  |  |  |     find_one[0]["CarrierGatewayId"].should.equal(cg1["CarrierGatewayId"]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     find_one = client.describe_carrier_gateways( | 
					
						
							|  |  |  |         CarrierGatewayIds=[cg2["CarrierGatewayId"], "non-existant"] | 
					
						
							|  |  |  |     )["CarrierGateways"] | 
					
						
							|  |  |  |     find_one.should.have.length_of(1) | 
					
						
							|  |  |  |     find_one[0]["CarrierGatewayId"].should.equal(cg2["CarrierGatewayId"]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_create_carrier_gateways_without_tags(): | 
					
						
							|  |  |  |     client = boto3.client("ec2", region_name="us-east-1") | 
					
						
							|  |  |  |     ec2 = boto3.resource("ec2", region_name="us-east-1") | 
					
						
							|  |  |  |     vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16") | 
					
						
							|  |  |  |     cg = client.create_carrier_gateway(VpcId=vpc.id)["CarrierGateway"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     cg.should.have.key("CarrierGatewayId").match("cagw-[a-z0-9]+") | 
					
						
							|  |  |  |     cg.should.have.key("VpcId").equal(vpc.id) | 
					
						
							|  |  |  |     cg.should.have.key("State").equal("available") | 
					
						
							|  |  |  |     cg.should.have.key("OwnerId").equal(ACCOUNT_ID) | 
					
						
							|  |  |  |     cg.should.have.key("Tags").equal([]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_create_carrier_gateways_with_tags(): | 
					
						
							|  |  |  |     client = boto3.client("ec2", region_name="us-east-1") | 
					
						
							|  |  |  |     ec2 = boto3.resource("ec2", region_name="us-east-1") | 
					
						
							|  |  |  |     vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16") | 
					
						
							|  |  |  |     cg = client.create_carrier_gateway( | 
					
						
							|  |  |  |         VpcId=vpc.id, | 
					
						
							|  |  |  |         TagSpecifications=[ | 
					
						
							|  |  |  |             {"ResourceType": "CarrierGateway", "Tags": [{"Key": "tk", "Value": "tv"}]} | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |     )["CarrierGateway"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     cg.should.have.key("CarrierGatewayId").match("cagw-[a-z0-9]+") | 
					
						
							|  |  |  |     cg.should.have.key("VpcId").equal(vpc.id) | 
					
						
							|  |  |  |     cg.should.have.key("State").equal("available") | 
					
						
							|  |  |  |     cg.should.have.key("OwnerId").equal(ACCOUNT_ID) | 
					
						
							|  |  |  |     cg.should.have.key("Tags").should.equal([{"Key": "tk", "Value": "tv"}]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_create_carrier_gateways_invalid_vpc(): | 
					
						
							|  |  |  |     ec2 = boto3.client("ec2", region_name="us-east-1") | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as exc: | 
					
						
							|  |  |  |         ec2.create_carrier_gateway(VpcId="vpc-asdf") | 
					
						
							|  |  |  |     err = exc.value.response["Error"] | 
					
						
							|  |  |  |     err["Code"].should.equal("InvalidVpcID.NotFound") | 
					
						
							|  |  |  |     err["Message"].should.equal("VpcID vpc-asdf does not exist.") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_ec2 | 
					
						
							|  |  |  | def test_delete_carrier_gateways(): | 
					
						
							|  |  |  |     client = boto3.client("ec2", region_name="us-east-1") | 
					
						
							|  |  |  |     ec2 = boto3.resource("ec2", region_name="us-east-1") | 
					
						
							|  |  |  |     vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16") | 
					
						
							|  |  |  |     cg = client.create_carrier_gateway(VpcId=vpc.id)["CarrierGateway"] | 
					
						
							|  |  |  |     client.delete_carrier_gateway(CarrierGatewayId=cg["CarrierGatewayId"]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-05 17:11:07 +00:00
										 |  |  |     gateways = client.describe_carrier_gateways()["CarrierGateways"] | 
					
						
							|  |  |  |     gateway_ids = [g["CarrierGatewayId"] for g in gateways] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     gateway_ids.shouldnt.contain(cg["CarrierGatewayId"]) |