Update integration test to use Pytest (#3703)
* Refactor int test to use pytest * Add comments to int test script
This commit is contained in:
parent
613b1395b8
commit
d3ad9d6686
6 changed files with 301 additions and 279 deletions
|
|
@ -6,14 +6,10 @@ import boto3
|
|||
|
||||
from botocore.exceptions import ClientError
|
||||
from botocore.parsers import ResponseParserError
|
||||
import json
|
||||
import sure # noqa
|
||||
import random
|
||||
import sys
|
||||
|
||||
from moto import (
|
||||
settings,
|
||||
mock_cloudformation,
|
||||
mock_ec2,
|
||||
mock_s3,
|
||||
mock_logs,
|
||||
|
|
@ -630,48 +626,3 @@ def test_flow_logs_by_ids():
|
|||
flow_logs = client.delete_flow_logs(FlowLogIds=[fl2])
|
||||
flow_logs = client.describe_flow_logs()["FlowLogs"]
|
||||
flow_logs.should.have.length_of(0)
|
||||
|
||||
|
||||
@mock_cloudformation
|
||||
@mock_ec2
|
||||
@mock_s3
|
||||
def test_flow_logs_by_cloudformation():
|
||||
s3 = boto3.resource("s3", region_name="us-west-1")
|
||||
client = boto3.client("ec2", region_name="us-west-1")
|
||||
cf_client = boto3.client("cloudformation", "us-west-1")
|
||||
|
||||
vpc = client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
|
||||
|
||||
bucket = s3.create_bucket(
|
||||
Bucket="test-flow-logs",
|
||||
CreateBucketConfiguration={"LocationConstraint": "us-west-1"},
|
||||
)
|
||||
|
||||
flow_log_template = {
|
||||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Description": "Template for VPC Flow Logs creation.",
|
||||
"Resources": {
|
||||
"TestFlowLogs": {
|
||||
"Type": "AWS::EC2::FlowLog",
|
||||
"Properties": {
|
||||
"ResourceType": "VPC",
|
||||
"ResourceId": vpc["VpcId"],
|
||||
"TrafficType": "ALL",
|
||||
"LogDestinationType": "s3",
|
||||
"LogDestination": "arn:aws:s3:::" + bucket.name,
|
||||
"MaxAggregationInterval": "60",
|
||||
"Tags": [{"Key": "foo", "Value": "bar"}],
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
flow_log_template_json = json.dumps(flow_log_template)
|
||||
stack_id = cf_client.create_stack(
|
||||
StackName="test_stack", TemplateBody=flow_log_template_json
|
||||
)["StackId"]
|
||||
|
||||
flow_logs = client.describe_flow_logs()["FlowLogs"]
|
||||
flow_logs.should.have.length_of(1)
|
||||
flow_logs[0]["ResourceId"].should.equal(vpc["VpcId"])
|
||||
flow_logs[0]["LogDestination"].should.equal("arn:aws:s3:::" + bucket.name)
|
||||
flow_logs[0]["MaxAggregationInterval"].should.equal(60)
|
||||
|
|
|
|||
95
tests/test_ec2/test_flow_logs_cloudformation.py
Normal file
95
tests/test_ec2/test_flow_logs_cloudformation.py
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
import boto3
|
||||
|
||||
import json
|
||||
import sure # noqa
|
||||
|
||||
from moto import (
|
||||
mock_cloudformation,
|
||||
mock_ec2,
|
||||
mock_s3,
|
||||
)
|
||||
from tests import EXAMPLE_AMI_ID
|
||||
|
||||
|
||||
@mock_cloudformation
|
||||
@mock_ec2
|
||||
@mock_s3
|
||||
def test_flow_logs_by_cloudformation():
|
||||
s3 = boto3.resource("s3", region_name="us-west-1")
|
||||
client = boto3.client("ec2", region_name="us-west-1")
|
||||
cf_client = boto3.client("cloudformation", "us-west-1")
|
||||
|
||||
vpc = client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
|
||||
|
||||
bucket = s3.create_bucket(
|
||||
Bucket="test-flow-logs",
|
||||
CreateBucketConfiguration={"LocationConstraint": "us-west-1"},
|
||||
)
|
||||
|
||||
flow_log_template = {
|
||||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Description": "Template for VPC Flow Logs creation.",
|
||||
"Resources": {
|
||||
"TestFlowLogs": {
|
||||
"Type": "AWS::EC2::FlowLog",
|
||||
"Properties": {
|
||||
"ResourceType": "VPC",
|
||||
"ResourceId": vpc["VpcId"],
|
||||
"TrafficType": "ALL",
|
||||
"LogDestinationType": "s3",
|
||||
"LogDestination": "arn:aws:s3:::" + bucket.name,
|
||||
"MaxAggregationInterval": "60",
|
||||
"Tags": [{"Key": "foo", "Value": "bar"}],
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
flow_log_template_json = json.dumps(flow_log_template)
|
||||
stack_id = cf_client.create_stack(
|
||||
StackName="test_stack", TemplateBody=flow_log_template_json
|
||||
)["StackId"]
|
||||
|
||||
flow_logs = client.describe_flow_logs()["FlowLogs"]
|
||||
flow_logs.should.have.length_of(1)
|
||||
flow_logs[0]["ResourceId"].should.equal(vpc["VpcId"])
|
||||
flow_logs[0]["LogDestination"].should.equal("arn:aws:s3:::" + bucket.name)
|
||||
flow_logs[0]["MaxAggregationInterval"].should.equal(60)
|
||||
|
||||
|
||||
@mock_ec2
|
||||
@mock_cloudformation
|
||||
def test_cloudformation():
|
||||
dummy_template_json = {
|
||||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Resources": {
|
||||
"InstanceProfile": {
|
||||
"Type": "AWS::IAM::InstanceProfile",
|
||||
"Properties": {"Path": "/", "Roles": []},
|
||||
},
|
||||
"Ec2Instance": {
|
||||
"Type": "AWS::EC2::Instance",
|
||||
"Properties": {
|
||||
"IamInstanceProfile": {"Ref": "InstanceProfile"},
|
||||
"KeyName": "mykey1",
|
||||
"ImageId": EXAMPLE_AMI_ID,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
client = boto3.client("ec2", region_name="us-east-1")
|
||||
cf_conn = boto3.client("cloudformation", region_name="us-east-1")
|
||||
cf_conn.create_stack(
|
||||
StackName="test_stack", TemplateBody=json.dumps(dummy_template_json)
|
||||
)
|
||||
associations = client.describe_iam_instance_profile_associations()
|
||||
associations["IamInstanceProfileAssociations"].should.have.length_of(1)
|
||||
associations["IamInstanceProfileAssociations"][0]["IamInstanceProfile"][
|
||||
"Arn"
|
||||
].should.contain("test_stack")
|
||||
|
||||
cf_conn.delete_stack(StackName="test_stack")
|
||||
associations = client.describe_iam_instance_profile_associations()
|
||||
associations["IamInstanceProfileAssociations"].should.have.length_of(0)
|
||||
|
|
@ -307,40 +307,3 @@ def test_invalid_disassociate():
|
|||
client.disassociate_iam_instance_profile(AssociationId="fake",)
|
||||
ex.value.response["Error"]["Code"].should.equal("InvalidAssociationID.NotFound")
|
||||
ex.value.response["Error"]["Message"].should.contain("An invalid association-id of")
|
||||
|
||||
|
||||
@mock_ec2
|
||||
@mock_cloudformation
|
||||
def test_cloudformation():
|
||||
dummy_template_json = {
|
||||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Resources": {
|
||||
"InstanceProfile": {
|
||||
"Type": "AWS::IAM::InstanceProfile",
|
||||
"Properties": {"Path": "/", "Roles": []},
|
||||
},
|
||||
"Ec2Instance": {
|
||||
"Type": "AWS::EC2::Instance",
|
||||
"Properties": {
|
||||
"IamInstanceProfile": {"Ref": "InstanceProfile"},
|
||||
"KeyName": "mykey1",
|
||||
"ImageId": EXAMPLE_AMI_ID,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
client = boto3.client("ec2", region_name="us-east-1")
|
||||
cf_conn = boto3.client("cloudformation", region_name="us-east-1")
|
||||
cf_conn.create_stack(
|
||||
StackName="test_stack", TemplateBody=json.dumps(dummy_template_json)
|
||||
)
|
||||
associations = client.describe_iam_instance_profile_associations()
|
||||
associations["IamInstanceProfileAssociations"].should.have.length_of(1)
|
||||
associations["IamInstanceProfileAssociations"][0]["IamInstanceProfile"][
|
||||
"Arn"
|
||||
].should.contain("test_stack")
|
||||
|
||||
cf_conn.delete_stack(StackName="test_stack")
|
||||
associations = client.describe_iam_instance_profile_associations()
|
||||
associations["IamInstanceProfileAssociations"].should.have.length_of(0)
|
||||
Loading…
Add table
Add a link
Reference in a new issue