115 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			115 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import boto3 | ||
|  | import json | ||
|  | import sure  # noqa | ||
|  | from moto import mock_cloudformation, mock_ec2, mock_rds2 | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_ec2 | ||
|  | @mock_rds2 | ||
|  | @mock_cloudformation | ||
|  | def test_create_subnetgroup_via_cf(): | ||
|  |     vpc_conn = boto3.client("ec2", "us-west-2") | ||
|  |     vpc = vpc_conn.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"] | ||
|  |     subnet = vpc_conn.create_subnet(VpcId=vpc["VpcId"], CidrBlock="10.0.1.0/24")[ | ||
|  |         "Subnet" | ||
|  |     ] | ||
|  | 
 | ||
|  |     rds = boto3.client("rds", region_name="us-west-2") | ||
|  |     cf = boto3.client("cloudformation", region_name="us-west-2") | ||
|  | 
 | ||
|  |     template = { | ||
|  |         "AWSTemplateFormatVersion": "2010-09-09", | ||
|  |         "Resources": { | ||
|  |             "subnet": { | ||
|  |                 "Type": "AWS::RDS::DBSubnetGroup", | ||
|  |                 "Properties": { | ||
|  |                     "DBSubnetGroupName": "subnetgroupname", | ||
|  |                     "DBSubnetGroupDescription": "subnetgroupdesc", | ||
|  |                     "SubnetIds": [subnet["SubnetId"]], | ||
|  |                 }, | ||
|  |             } | ||
|  |         }, | ||
|  |     } | ||
|  |     template_json = json.dumps(template) | ||
|  |     cf.create_stack(StackName="test_stack", TemplateBody=template_json) | ||
|  | 
 | ||
|  |     response = rds.describe_db_subnet_groups()["DBSubnetGroups"] | ||
|  |     response.should.have.length_of(1) | ||
|  | 
 | ||
|  |     created_subnet = response[0] | ||
|  |     created_subnet.should.have.key("DBSubnetGroupName").equal("subnetgroupname") | ||
|  |     created_subnet.should.have.key("DBSubnetGroupDescription").equal("subnetgroupdesc") | ||
|  |     created_subnet.should.have.key("VpcId").equal(vpc["VpcId"]) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_ec2 | ||
|  | @mock_rds2 | ||
|  | @mock_cloudformation | ||
|  | def test_create_dbinstance_via_cf(): | ||
|  |     vpc_conn = boto3.client("ec2", "us-west-2") | ||
|  |     vpc = vpc_conn.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"] | ||
|  |     vpc_conn.create_subnet(VpcId=vpc["VpcId"], CidrBlock="10.0.1.0/24") | ||
|  | 
 | ||
|  |     rds = boto3.client("rds", region_name="us-west-2") | ||
|  |     cf = boto3.client("cloudformation", region_name="us-west-2") | ||
|  | 
 | ||
|  |     template = { | ||
|  |         "AWSTemplateFormatVersion": "2010-09-09", | ||
|  |         "Resources": { | ||
|  |             "db": { | ||
|  |                 "Type": "AWS::RDS::DBInstance", | ||
|  |                 "Properties": { | ||
|  |                     "Port": 3307, | ||
|  |                     "Engine": "mysql", | ||
|  |                     # Required - throws exception when describing an instance without tags | ||
|  |                     "Tags": [], | ||
|  |                 }, | ||
|  |             } | ||
|  |         }, | ||
|  |     } | ||
|  |     template_json = json.dumps(template) | ||
|  |     cf.create_stack(StackName="test_stack", TemplateBody=template_json) | ||
|  | 
 | ||
|  |     summaries = cf.list_stack_resources(StackName="test_stack")[ | ||
|  |         "StackResourceSummaries" | ||
|  |     ] | ||
|  | 
 | ||
|  |     db_instance_identifier = summaries[0]["PhysicalResourceId"] | ||
|  |     resp = rds.describe_db_instances()["DBInstances"] | ||
|  |     resp.should.have.length_of(1) | ||
|  | 
 | ||
|  |     created = resp[0] | ||
|  |     created["DBInstanceIdentifier"].should.equal(db_instance_identifier) | ||
|  |     created["Engine"].should.equal("mysql") | ||
|  |     created["DBInstanceStatus"].should.equal("available") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_ec2 | ||
|  | @mock_rds2 | ||
|  | @mock_cloudformation | ||
|  | def test_create_dbsecuritygroup_via_cf(): | ||
|  |     vpc_conn = boto3.client("ec2", "us-west-2") | ||
|  |     vpc = vpc_conn.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"] | ||
|  |     vpc_conn.create_subnet(VpcId=vpc["VpcId"], CidrBlock="10.0.1.0/24") | ||
|  | 
 | ||
|  |     rds = boto3.client("rds", region_name="us-west-2") | ||
|  |     cf = boto3.client("cloudformation", region_name="us-west-2") | ||
|  | 
 | ||
|  |     template = { | ||
|  |         "AWSTemplateFormatVersion": "2010-09-09", | ||
|  |         "Resources": { | ||
|  |             "db": { | ||
|  |                 "Type": "AWS::RDS::DBSecurityGroup", | ||
|  |                 "Properties": {"GroupDescription": "my sec group"}, | ||
|  |             } | ||
|  |         }, | ||
|  |     } | ||
|  |     template_json = json.dumps(template) | ||
|  |     cf.create_stack(StackName="test_stack", TemplateBody=template_json) | ||
|  | 
 | ||
|  |     result = rds.describe_db_security_groups()["DBSecurityGroups"] | ||
|  |     result.should.have.length_of(1) | ||
|  | 
 | ||
|  |     created = result[0] | ||
|  |     created["DBSecurityGroupDescription"].should.equal("my sec group") |