Merge branch 'master' into batch
This commit is contained in:
commit
a027f86cc8
16 changed files with 709 additions and 172 deletions
|
|
@ -645,3 +645,74 @@ def test_get_function_created_with_zipfile():
|
|||
}
|
||||
},
|
||||
)
|
||||
|
||||
@mock_lambda
|
||||
def add_function_permission():
|
||||
conn = boto3.client('lambda', 'us-west-2')
|
||||
zip_content = get_test_zip_file1()
|
||||
result = conn.create_function(
|
||||
FunctionName='testFunction',
|
||||
Runtime='python2.7',
|
||||
Role='test-iam-role',
|
||||
Handler='lambda_function.handler',
|
||||
Code={
|
||||
'ZipFile': zip_content,
|
||||
},
|
||||
Description='test lambda function',
|
||||
Timeout=3,
|
||||
MemorySize=128,
|
||||
Publish=True,
|
||||
)
|
||||
|
||||
response = conn.add_permission(
|
||||
FunctionName='testFunction',
|
||||
StatementId='1',
|
||||
Action="lambda:InvokeFunction",
|
||||
Principal='432143214321',
|
||||
SourceArn="arn:aws:lambda:us-west-2:account-id:function:helloworld",
|
||||
SourceAccount='123412341234',
|
||||
EventSourceToken='blah',
|
||||
Qualifier='2'
|
||||
)
|
||||
assert 'Statement' in response
|
||||
res = json.loads(response['Statement'])
|
||||
assert res['Action'] == "lambda:InvokeFunction"
|
||||
|
||||
|
||||
@mock_lambda
|
||||
def get_function_policy():
|
||||
conn = boto3.client('lambda', 'us-west-2')
|
||||
zip_content = get_test_zip_file1()
|
||||
result = conn.create_function(
|
||||
FunctionName='testFunction',
|
||||
Runtime='python2.7',
|
||||
Role='test-iam-role',
|
||||
Handler='lambda_function.handler',
|
||||
Code={
|
||||
'ZipFile': zip_content,
|
||||
},
|
||||
Description='test lambda function',
|
||||
Timeout=3,
|
||||
MemorySize=128,
|
||||
Publish=True,
|
||||
)
|
||||
|
||||
response = conn.add_permission(
|
||||
FunctionName='testFunction',
|
||||
StatementId='1',
|
||||
Action="lambda:InvokeFunction",
|
||||
Principal='432143214321',
|
||||
SourceArn="arn:aws:lambda:us-west-2:account-id:function:helloworld",
|
||||
SourceAccount='123412341234',
|
||||
EventSourceToken='blah',
|
||||
Qualifier='2'
|
||||
)
|
||||
|
||||
response = conn.get_policy(
|
||||
FunctionName='testFunction'
|
||||
)
|
||||
|
||||
assert 'Policy' in response
|
||||
assert isinstance(response['Policy'], str)
|
||||
res = json.loads(response['Policy'])
|
||||
assert res['Statement'][0]['Action'] == 'lambda:InvokeFunction'
|
||||
|
|
|
|||
|
|
@ -14,10 +14,17 @@ def test_create_load_balancer():
|
|||
conn = boto3.client('elbv2', region_name='us-east-1')
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
security_group = ec2.create_security_group(GroupName='a-security-group', Description='First One')
|
||||
security_group = ec2.create_security_group(
|
||||
GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1b')
|
||||
subnet1 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1b')
|
||||
|
||||
response = conn.create_load_balancer(
|
||||
Name='my-lb',
|
||||
|
|
@ -29,7 +36,8 @@ def test_create_load_balancer():
|
|||
lb = response.get('LoadBalancers')[0]
|
||||
|
||||
lb.get('DNSName').should.equal("my-lb-1.us-east-1.elb.amazonaws.com")
|
||||
lb.get('LoadBalancerArn').should.equal('arn:aws:elasticloadbalancing:us-east-1:1:loadbalancer/my-lb/50dc6c495c0c9188')
|
||||
lb.get('LoadBalancerArn').should.equal(
|
||||
'arn:aws:elasticloadbalancing:us-east-1:1:loadbalancer/my-lb/50dc6c495c0c9188')
|
||||
lb.get('SecurityGroups').should.equal([security_group.id])
|
||||
lb.get('AvailabilityZones').should.equal([
|
||||
{'SubnetId': subnet1.id, 'ZoneName': 'us-east-1a'},
|
||||
|
|
@ -37,7 +45,8 @@ def test_create_load_balancer():
|
|||
|
||||
# Ensure the tags persisted
|
||||
response = conn.describe_tags(ResourceArns=[lb.get('LoadBalancerArn')])
|
||||
tags = {d['Key']: d['Value'] for d in response['TagDescriptions'][0]['Tags']}
|
||||
tags = {d['Key']: d['Value']
|
||||
for d in response['TagDescriptions'][0]['Tags']}
|
||||
tags.should.equal({'key_name': 'a_value'})
|
||||
|
||||
|
||||
|
|
@ -47,10 +56,17 @@ def test_describe_load_balancers():
|
|||
conn = boto3.client('elbv2', region_name='us-east-1')
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
security_group = ec2.create_security_group(GroupName='a-security-group', Description='First One')
|
||||
security_group = ec2.create_security_group(
|
||||
GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1b')
|
||||
subnet1 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1b')
|
||||
|
||||
conn.create_load_balancer(
|
||||
Name='my-lb',
|
||||
|
|
@ -65,11 +81,14 @@ def test_describe_load_balancers():
|
|||
lb = response.get('LoadBalancers')[0]
|
||||
lb.get('LoadBalancerName').should.equal('my-lb')
|
||||
|
||||
response = conn.describe_load_balancers(LoadBalancerArns=[lb.get('LoadBalancerArn')])
|
||||
response.get('LoadBalancers')[0].get('LoadBalancerName').should.equal('my-lb')
|
||||
response = conn.describe_load_balancers(
|
||||
LoadBalancerArns=[lb.get('LoadBalancerArn')])
|
||||
response.get('LoadBalancers')[0].get(
|
||||
'LoadBalancerName').should.equal('my-lb')
|
||||
|
||||
response = conn.describe_load_balancers(Names=['my-lb'])
|
||||
response.get('LoadBalancers')[0].get('LoadBalancerName').should.equal('my-lb')
|
||||
response.get('LoadBalancers')[0].get(
|
||||
'LoadBalancerName').should.equal('my-lb')
|
||||
|
||||
with assert_raises(ClientError):
|
||||
conn.describe_load_balancers(LoadBalancerArns=['not-a/real/arn'])
|
||||
|
|
@ -84,10 +103,17 @@ def test_add_remove_tags():
|
|||
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
security_group = ec2.create_security_group(GroupName='a-security-group', Description='First One')
|
||||
security_group = ec2.create_security_group(
|
||||
GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1b')
|
||||
subnet1 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1b')
|
||||
|
||||
conn.create_load_balancer(
|
||||
Name='my-lb',
|
||||
|
|
@ -197,10 +223,19 @@ def test_create_elb_in_multiple_region():
|
|||
conn = boto3.client('elbv2', region_name=region)
|
||||
ec2 = boto3.resource('ec2', region_name=region)
|
||||
|
||||
security_group = ec2.create_security_group(GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone=region + 'a')
|
||||
subnet2 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone=region + 'b')
|
||||
security_group = ec2.create_security_group(
|
||||
GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(
|
||||
CidrBlock='172.28.7.0/24',
|
||||
InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone=region + 'a')
|
||||
subnet2 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone=region + 'b')
|
||||
|
||||
conn.create_load_balancer(
|
||||
Name='my-lb',
|
||||
|
|
@ -210,10 +245,14 @@ def test_create_elb_in_multiple_region():
|
|||
Tags=[{'Key': 'key_name', 'Value': 'a_value'}])
|
||||
|
||||
list(
|
||||
boto3.client('elbv2', region_name='us-west-1').describe_load_balancers().get('LoadBalancers')
|
||||
boto3.client(
|
||||
'elbv2',
|
||||
region_name='us-west-1').describe_load_balancers().get('LoadBalancers')
|
||||
).should.have.length_of(1)
|
||||
list(
|
||||
boto3.client('elbv2', region_name='us-west-2').describe_load_balancers().get('LoadBalancers')
|
||||
boto3.client(
|
||||
'elbv2',
|
||||
region_name='us-west-2').describe_load_balancers().get('LoadBalancers')
|
||||
).should.have.length_of(1)
|
||||
|
||||
|
||||
|
|
@ -223,10 +262,17 @@ def test_create_target_group_and_listeners():
|
|||
conn = boto3.client('elbv2', region_name='us-east-1')
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
security_group = ec2.create_security_group(GroupName='a-security-group', Description='First One')
|
||||
security_group = ec2.create_security_group(
|
||||
GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1b')
|
||||
subnet1 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1b')
|
||||
|
||||
response = conn.create_load_balancer(
|
||||
Name='my-lb',
|
||||
|
|
@ -254,7 +300,8 @@ def test_create_target_group_and_listeners():
|
|||
target_group_arn = target_group['TargetGroupArn']
|
||||
|
||||
# Add tags to the target group
|
||||
conn.add_tags(ResourceArns=[target_group_arn], Tags=[{'Key': 'target', 'Value': 'group'}])
|
||||
conn.add_tags(ResourceArns=[target_group_arn], Tags=[
|
||||
{'Key': 'target', 'Value': 'group'}])
|
||||
conn.describe_tags(ResourceArns=[target_group_arn])['TagDescriptions'][0]['Tags'].should.equal(
|
||||
[{'Key': 'target', 'Value': 'group'}])
|
||||
|
||||
|
|
@ -281,7 +328,8 @@ def test_create_target_group_and_listeners():
|
|||
LoadBalancerArn=load_balancer_arn,
|
||||
Protocol='HTTPS',
|
||||
Port=443,
|
||||
Certificates=[{'CertificateArn': 'arn:aws:iam:123456789012:server-certificate/test-cert'}],
|
||||
Certificates=[
|
||||
{'CertificateArn': 'arn:aws:iam:123456789012:server-certificate/test-cert'}],
|
||||
DefaultActions=[{'Type': 'forward', 'TargetGroupArn': target_group.get('TargetGroupArn')}])
|
||||
listener = response.get('Listeners')[0]
|
||||
listener.get('Port').should.equal(443)
|
||||
|
|
@ -303,9 +351,20 @@ def test_create_target_group_and_listeners():
|
|||
listener.get('Port').should.equal(443)
|
||||
listener.get('Protocol').should.equal('HTTPS')
|
||||
|
||||
response = conn.describe_listeners(ListenerArns=[http_listener_arn, https_listener_arn])
|
||||
response = conn.describe_listeners(
|
||||
ListenerArns=[
|
||||
http_listener_arn,
|
||||
https_listener_arn])
|
||||
response.get('Listeners').should.have.length_of(2)
|
||||
|
||||
# Try to delete the target group and it fails because there's a
|
||||
# listener referencing it
|
||||
with assert_raises(ClientError) as e:
|
||||
conn.delete_target_group(
|
||||
TargetGroupArn=target_group.get('TargetGroupArn'))
|
||||
e.exception.operation_name.should.equal('DeleteTargetGroup')
|
||||
e.exception.args.should.equal(("An error occurred (ResourceInUse) when calling the DeleteTargetGroup operation: The target group 'arn:aws:elasticloadbalancing:us-east-1:1:targetgroup/a-target/50dc6c495c0c9188' is currently in use by a listener or a rule", )) # NOQA
|
||||
|
||||
# Delete one listener
|
||||
response = conn.describe_listeners(LoadBalancerArn=load_balancer_arn)
|
||||
response.get('Listeners').should.have.length_of(2)
|
||||
|
|
@ -321,7 +380,10 @@ def test_create_target_group_and_listeners():
|
|||
response.get('LoadBalancers').should.have.length_of(0)
|
||||
|
||||
# And it deleted the remaining listener
|
||||
response = conn.describe_listeners(ListenerArns=[http_listener_arn, https_listener_arn])
|
||||
response = conn.describe_listeners(
|
||||
ListenerArns=[
|
||||
http_listener_arn,
|
||||
https_listener_arn])
|
||||
response.get('Listeners').should.have.length_of(0)
|
||||
|
||||
# But not the target groups
|
||||
|
|
@ -359,7 +421,13 @@ def test_create_invalid_target_group():
|
|||
UnhealthyThresholdCount=2,
|
||||
Matcher={'HttpCode': '200'})
|
||||
|
||||
invalid_names = ['-name', 'name-', '-name-', 'example.com', 'test@test', 'Na--me']
|
||||
invalid_names = [
|
||||
'-name',
|
||||
'name-',
|
||||
'-name-',
|
||||
'example.com',
|
||||
'test@test',
|
||||
'Na--me']
|
||||
for name in invalid_names:
|
||||
with assert_raises(ClientError):
|
||||
conn.create_target_group(
|
||||
|
|
@ -399,10 +467,17 @@ def test_describe_paginated_balancers():
|
|||
conn = boto3.client('elbv2', region_name='us-east-1')
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
security_group = ec2.create_security_group(GroupName='a-security-group', Description='First One')
|
||||
security_group = ec2.create_security_group(
|
||||
GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1b')
|
||||
subnet1 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1b')
|
||||
|
||||
for i in range(51):
|
||||
conn.create_load_balancer(
|
||||
|
|
@ -414,7 +489,8 @@ def test_describe_paginated_balancers():
|
|||
|
||||
resp = conn.describe_load_balancers()
|
||||
resp['LoadBalancers'].should.have.length_of(50)
|
||||
resp['NextMarker'].should.equal(resp['LoadBalancers'][-1]['LoadBalancerName'])
|
||||
resp['NextMarker'].should.equal(
|
||||
resp['LoadBalancers'][-1]['LoadBalancerName'])
|
||||
resp2 = conn.describe_load_balancers(Marker=resp['NextMarker'])
|
||||
resp2['LoadBalancers'].should.have.length_of(1)
|
||||
assert 'NextToken' not in resp2.keys()
|
||||
|
|
@ -426,10 +502,17 @@ def test_delete_load_balancer():
|
|||
conn = boto3.client('elbv2', region_name='us-east-1')
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
security_group = ec2.create_security_group(GroupName='a-security-group', Description='First One')
|
||||
security_group = ec2.create_security_group(
|
||||
GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1b')
|
||||
subnet1 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1b')
|
||||
|
||||
response = conn.create_load_balancer(
|
||||
Name='my-lb',
|
||||
|
|
@ -452,10 +535,17 @@ def test_register_targets():
|
|||
conn = boto3.client('elbv2', region_name='us-east-1')
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
security_group = ec2.create_security_group(GroupName='a-security-group', Description='First One')
|
||||
security_group = ec2.create_security_group(
|
||||
GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1b')
|
||||
subnet1 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1b')
|
||||
|
||||
conn.create_load_balancer(
|
||||
Name='my-lb',
|
||||
|
|
@ -480,7 +570,8 @@ def test_register_targets():
|
|||
target_group = response.get('TargetGroups')[0]
|
||||
|
||||
# No targets registered yet
|
||||
response = conn.describe_target_health(TargetGroupArn=target_group.get('TargetGroupArn'))
|
||||
response = conn.describe_target_health(
|
||||
TargetGroupArn=target_group.get('TargetGroupArn'))
|
||||
response.get('TargetHealthDescriptions').should.have.length_of(0)
|
||||
|
||||
response = ec2.create_instances(
|
||||
|
|
@ -501,14 +592,16 @@ def test_register_targets():
|
|||
},
|
||||
])
|
||||
|
||||
response = conn.describe_target_health(TargetGroupArn=target_group.get('TargetGroupArn'))
|
||||
response = conn.describe_target_health(
|
||||
TargetGroupArn=target_group.get('TargetGroupArn'))
|
||||
response.get('TargetHealthDescriptions').should.have.length_of(2)
|
||||
|
||||
response = conn.deregister_targets(
|
||||
TargetGroupArn=target_group.get('TargetGroupArn'),
|
||||
Targets=[{'Id': instance_id2}])
|
||||
|
||||
response = conn.describe_target_health(TargetGroupArn=target_group.get('TargetGroupArn'))
|
||||
response = conn.describe_target_health(
|
||||
TargetGroupArn=target_group.get('TargetGroupArn'))
|
||||
response.get('TargetHealthDescriptions').should.have.length_of(1)
|
||||
|
||||
|
||||
|
|
@ -518,10 +611,17 @@ def test_target_group_attributes():
|
|||
conn = boto3.client('elbv2', region_name='us-east-1')
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
security_group = ec2.create_security_group(GroupName='a-security-group', Description='First One')
|
||||
security_group = ec2.create_security_group(
|
||||
GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1b')
|
||||
subnet1 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1b')
|
||||
|
||||
response = conn.create_load_balancer(
|
||||
Name='my-lb',
|
||||
|
|
@ -557,9 +657,11 @@ def test_target_group_attributes():
|
|||
target_group_arn = target_group['TargetGroupArn']
|
||||
|
||||
# The attributes should start with the two defaults
|
||||
response = conn.describe_target_group_attributes(TargetGroupArn=target_group_arn)
|
||||
response = conn.describe_target_group_attributes(
|
||||
TargetGroupArn=target_group_arn)
|
||||
response['Attributes'].should.have.length_of(2)
|
||||
attributes = {attr['Key']: attr['Value'] for attr in response['Attributes']}
|
||||
attributes = {attr['Key']: attr['Value']
|
||||
for attr in response['Attributes']}
|
||||
attributes['deregistration_delay.timeout_seconds'].should.equal('300')
|
||||
attributes['stickiness.enabled'].should.equal('false')
|
||||
|
||||
|
|
@ -579,14 +681,17 @@ def test_target_group_attributes():
|
|||
|
||||
# The response should have only the keys updated
|
||||
response['Attributes'].should.have.length_of(2)
|
||||
attributes = {attr['Key']: attr['Value'] for attr in response['Attributes']}
|
||||
attributes = {attr['Key']: attr['Value']
|
||||
for attr in response['Attributes']}
|
||||
attributes['stickiness.type'].should.equal('lb_cookie')
|
||||
attributes['stickiness.enabled'].should.equal('true')
|
||||
|
||||
# These new values should be in the full attribute list
|
||||
response = conn.describe_target_group_attributes(TargetGroupArn=target_group_arn)
|
||||
response = conn.describe_target_group_attributes(
|
||||
TargetGroupArn=target_group_arn)
|
||||
response['Attributes'].should.have.length_of(3)
|
||||
attributes = {attr['Key']: attr['Value'] for attr in response['Attributes']}
|
||||
attributes = {attr['Key']: attr['Value']
|
||||
for attr in response['Attributes']}
|
||||
attributes['stickiness.type'].should.equal('lb_cookie')
|
||||
attributes['stickiness.enabled'].should.equal('true')
|
||||
|
||||
|
|
@ -597,10 +702,17 @@ def test_handle_listener_rules():
|
|||
conn = boto3.client('elbv2', region_name='us-east-1')
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
security_group = ec2.create_security_group(GroupName='a-security-group', Description='First One')
|
||||
security_group = ec2.create_security_group(
|
||||
GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1b')
|
||||
subnet1 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1b')
|
||||
|
||||
response = conn.create_load_balancer(
|
||||
Name='my-lb',
|
||||
|
|
@ -649,11 +761,11 @@ def test_handle_listener_rules():
|
|||
Priority=priority,
|
||||
Conditions=[{
|
||||
'Field': 'host-header',
|
||||
'Values': [ host ]
|
||||
'Values': [host]
|
||||
},
|
||||
{
|
||||
{
|
||||
'Field': 'path-pattern',
|
||||
'Values': [ path_pattern ]
|
||||
'Values': [path_pattern]
|
||||
}],
|
||||
Actions=[{
|
||||
'TargetGroupArn': target_group.get('TargetGroupArn'),
|
||||
|
|
@ -671,11 +783,11 @@ def test_handle_listener_rules():
|
|||
Priority=priority,
|
||||
Conditions=[{
|
||||
'Field': 'host-header',
|
||||
'Values': [ host ]
|
||||
'Values': [host]
|
||||
},
|
||||
{
|
||||
{
|
||||
'Field': 'path-pattern',
|
||||
'Values': [ path_pattern ]
|
||||
'Values': [path_pattern]
|
||||
}],
|
||||
Actions=[{
|
||||
'TargetGroupArn': target_group.get('TargetGroupArn'),
|
||||
|
|
@ -684,18 +796,17 @@ def test_handle_listener_rules():
|
|||
)
|
||||
|
||||
# test for PriorityInUse
|
||||
host2 = 'yyy.example.com'
|
||||
with assert_raises(ClientError):
|
||||
r = conn.create_rule(
|
||||
conn.create_rule(
|
||||
ListenerArn=http_listener_arn,
|
||||
Priority=priority,
|
||||
Conditions=[{
|
||||
'Field': 'host-header',
|
||||
'Values': [ host ]
|
||||
'Values': [host]
|
||||
},
|
||||
{
|
||||
{
|
||||
'Field': 'path-pattern',
|
||||
'Values': [ path_pattern ]
|
||||
'Values': [path_pattern]
|
||||
}],
|
||||
Actions=[{
|
||||
'TargetGroupArn': target_group.get('TargetGroupArn'),
|
||||
|
|
@ -703,7 +814,6 @@ def test_handle_listener_rules():
|
|||
}]
|
||||
)
|
||||
|
||||
|
||||
# test for describe listeners
|
||||
obtained_rules = conn.describe_rules(ListenerArn=http_listener_arn)
|
||||
len(obtained_rules['Rules']).should.equal(3)
|
||||
|
|
@ -716,15 +826,20 @@ def test_handle_listener_rules():
|
|||
obtained_rules['Rules'].should.equal([first_rule])
|
||||
|
||||
# test for pagination
|
||||
obtained_rules = conn.describe_rules(ListenerArn=http_listener_arn, PageSize=1)
|
||||
obtained_rules = conn.describe_rules(
|
||||
ListenerArn=http_listener_arn, PageSize=1)
|
||||
len(obtained_rules['Rules']).should.equal(1)
|
||||
obtained_rules.should.have.key('NextMarker')
|
||||
next_marker = obtained_rules['NextMarker']
|
||||
|
||||
following_rules = conn.describe_rules(ListenerArn=http_listener_arn, PageSize=1, Marker=next_marker)
|
||||
following_rules = conn.describe_rules(
|
||||
ListenerArn=http_listener_arn,
|
||||
PageSize=1,
|
||||
Marker=next_marker)
|
||||
len(following_rules['Rules']).should.equal(1)
|
||||
following_rules.should.have.key('NextMarker')
|
||||
following_rules['Rules'][0]['RuleArn'].should_not.equal(obtained_rules['Rules'][0]['RuleArn'])
|
||||
following_rules['Rules'][0]['RuleArn'].should_not.equal(
|
||||
obtained_rules['Rules'][0]['RuleArn'])
|
||||
|
||||
# test for invalid describe rule request
|
||||
with assert_raises(ClientError):
|
||||
|
|
@ -743,13 +858,13 @@ def test_handle_listener_rules():
|
|||
modified_rule = conn.modify_rule(
|
||||
RuleArn=first_rule['RuleArn'],
|
||||
Conditions=[{
|
||||
'Field': 'host-header',
|
||||
'Values': [ new_host ]
|
||||
},
|
||||
'Field': 'host-header',
|
||||
'Values': [new_host]
|
||||
},
|
||||
{
|
||||
'Field': 'path-pattern',
|
||||
'Values': [ new_path_pattern ]
|
||||
}]
|
||||
'Values': [new_path_pattern]
|
||||
}]
|
||||
)['Rules'][0]
|
||||
|
||||
rules = conn.describe_rules(ListenerArn=http_listener_arn)
|
||||
|
|
@ -757,12 +872,14 @@ def test_handle_listener_rules():
|
|||
modified_rule.should.equal(obtained_rule)
|
||||
obtained_rule['Conditions'][0]['Values'][0].should.equal(new_host)
|
||||
obtained_rule['Conditions'][1]['Values'][0].should.equal(new_path_pattern)
|
||||
obtained_rule['Actions'][0]['TargetGroupArn'].should.equal(target_group.get('TargetGroupArn'))
|
||||
obtained_rule['Actions'][0]['TargetGroupArn'].should.equal(
|
||||
target_group.get('TargetGroupArn'))
|
||||
|
||||
# modify priority
|
||||
conn.set_rule_priorities(
|
||||
RulePriorities=[
|
||||
{'RuleArn': first_rule['RuleArn'], 'Priority': int(first_rule['Priority']) - 1}
|
||||
{'RuleArn': first_rule['RuleArn'],
|
||||
'Priority': int(first_rule['Priority']) - 1}
|
||||
]
|
||||
)
|
||||
with assert_raises(ClientError):
|
||||
|
|
@ -782,16 +899,16 @@ def test_handle_listener_rules():
|
|||
# test for invalid action type
|
||||
safe_priority = 2
|
||||
with assert_raises(ClientError):
|
||||
r = conn.create_rule(
|
||||
conn.create_rule(
|
||||
ListenerArn=http_listener_arn,
|
||||
Priority=safe_priority,
|
||||
Conditions=[{
|
||||
'Field': 'host-header',
|
||||
'Values': [ host ]
|
||||
'Values': [host]
|
||||
},
|
||||
{
|
||||
{
|
||||
'Field': 'path-pattern',
|
||||
'Values': [ path_pattern ]
|
||||
'Values': [path_pattern]
|
||||
}],
|
||||
Actions=[{
|
||||
'TargetGroupArn': target_group.get('TargetGroupArn'),
|
||||
|
|
@ -803,16 +920,16 @@ def test_handle_listener_rules():
|
|||
safe_priority = 2
|
||||
invalid_target_group_arn = target_group.get('TargetGroupArn') + 'x'
|
||||
with assert_raises(ClientError):
|
||||
r = conn.create_rule(
|
||||
conn.create_rule(
|
||||
ListenerArn=http_listener_arn,
|
||||
Priority=safe_priority,
|
||||
Conditions=[{
|
||||
'Field': 'host-header',
|
||||
'Values': [ host ]
|
||||
'Values': [host]
|
||||
},
|
||||
{
|
||||
{
|
||||
'Field': 'path-pattern',
|
||||
'Values': [ path_pattern ]
|
||||
'Values': [path_pattern]
|
||||
}],
|
||||
Actions=[{
|
||||
'TargetGroupArn': invalid_target_group_arn,
|
||||
|
|
@ -823,12 +940,12 @@ def test_handle_listener_rules():
|
|||
# test for invalid condition field_name
|
||||
safe_priority = 2
|
||||
with assert_raises(ClientError):
|
||||
r = conn.create_rule(
|
||||
conn.create_rule(
|
||||
ListenerArn=http_listener_arn,
|
||||
Priority=safe_priority,
|
||||
Conditions=[{
|
||||
'Field': 'xxxxxxx',
|
||||
'Values': [ host ]
|
||||
'Values': [host]
|
||||
}],
|
||||
Actions=[{
|
||||
'TargetGroupArn': target_group.get('TargetGroupArn'),
|
||||
|
|
@ -839,7 +956,7 @@ def test_handle_listener_rules():
|
|||
# test for emptry condition value
|
||||
safe_priority = 2
|
||||
with assert_raises(ClientError):
|
||||
r = conn.create_rule(
|
||||
conn.create_rule(
|
||||
ListenerArn=http_listener_arn,
|
||||
Priority=safe_priority,
|
||||
Conditions=[{
|
||||
|
|
@ -855,7 +972,7 @@ def test_handle_listener_rules():
|
|||
# test for multiple condition value
|
||||
safe_priority = 2
|
||||
with assert_raises(ClientError):
|
||||
r = conn.create_rule(
|
||||
conn.create_rule(
|
||||
ListenerArn=http_listener_arn,
|
||||
Priority=safe_priority,
|
||||
Conditions=[{
|
||||
|
|
@ -875,10 +992,17 @@ def test_describe_invalid_target_group():
|
|||
conn = boto3.client('elbv2', region_name='us-east-1')
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
|
||||
security_group = ec2.create_security_group(GroupName='a-security-group', Description='First One')
|
||||
security_group = ec2.create_security_group(
|
||||
GroupName='a-security-group', Description='First One')
|
||||
vpc = ec2.create_vpc(CidrBlock='172.28.7.0/24', InstanceTenancy='default')
|
||||
subnet1 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(VpcId=vpc.id, CidrBlock='172.28.7.192/26', AvailabilityZone='us-east-1b')
|
||||
subnet1 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1a')
|
||||
subnet2 = ec2.create_subnet(
|
||||
VpcId=vpc.id,
|
||||
CidrBlock='172.28.7.192/26',
|
||||
AvailabilityZone='us-east-1b')
|
||||
|
||||
response = conn.create_load_balancer(
|
||||
Name='my-lb',
|
||||
|
|
@ -887,7 +1011,7 @@ def test_describe_invalid_target_group():
|
|||
Scheme='internal',
|
||||
Tags=[{'Key': 'key_name', 'Value': 'a_value'}])
|
||||
|
||||
load_balancer_arn = response.get('LoadBalancers')[0].get('LoadBalancerArn')
|
||||
response.get('LoadBalancers')[0].get('LoadBalancerArn')
|
||||
|
||||
response = conn.create_target_group(
|
||||
Name='a-target',
|
||||
|
|
@ -902,7 +1026,6 @@ def test_describe_invalid_target_group():
|
|||
HealthyThresholdCount=5,
|
||||
UnhealthyThresholdCount=2,
|
||||
Matcher={'HttpCode': '200'})
|
||||
target_group = response.get('TargetGroups')[0]
|
||||
|
||||
# Check error raises correctly
|
||||
with assert_raises(ClientError):
|
||||
|
|
|
|||
|
|
@ -82,6 +82,26 @@ def test_put_group_policy():
|
|||
conn.put_group_policy('my-group', 'my-policy', '{"some": "json"}')
|
||||
|
||||
|
||||
@mock_iam
|
||||
def test_attach_group_policies():
|
||||
conn = boto3.client('iam', region_name='us-east-1')
|
||||
conn.create_group(GroupName='my-group')
|
||||
conn.list_attached_group_policies(GroupName='my-group')['AttachedPolicies'].should.be.empty
|
||||
policy_arn = 'arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role'
|
||||
conn.list_attached_group_policies(GroupName='my-group')['AttachedPolicies'].should.be.empty
|
||||
conn.attach_group_policy(GroupName='my-group', PolicyArn=policy_arn)
|
||||
conn.list_attached_group_policies(GroupName='my-group')['AttachedPolicies'].should.equal(
|
||||
[
|
||||
{
|
||||
'PolicyName': 'AmazonElasticMapReduceforEC2Role',
|
||||
'PolicyArn': policy_arn,
|
||||
}
|
||||
])
|
||||
|
||||
conn.detach_group_policy(GroupName='my-group', PolicyArn=policy_arn)
|
||||
conn.list_attached_group_policies(GroupName='my-group')['AttachedPolicies'].should.be.empty
|
||||
|
||||
|
||||
@mock_iam_deprecated()
|
||||
def test_get_group_policy():
|
||||
conn = boto.connect_iam()
|
||||
|
|
@ -90,7 +110,8 @@ def test_get_group_policy():
|
|||
conn.get_group_policy('my-group', 'my-policy')
|
||||
|
||||
conn.put_group_policy('my-group', 'my-policy', '{"some": "json"}')
|
||||
policy = conn.get_group_policy('my-group', 'my-policy')
|
||||
conn.get_group_policy('my-group', 'my-policy')
|
||||
|
||||
|
||||
@mock_iam_deprecated()
|
||||
def test_get_all_group_policies():
|
||||
|
|
@ -107,6 +128,6 @@ def test_get_all_group_policies():
|
|||
def test_list_group_policies():
|
||||
conn = boto3.client('iam', region_name='us-east-1')
|
||||
conn.create_group(GroupName='my-group')
|
||||
policies = conn.list_group_policies(GroupName='my-group')['PolicyNames'].should.be.empty
|
||||
conn.list_group_policies(GroupName='my-group')['PolicyNames'].should.be.empty
|
||||
conn.put_group_policy(GroupName='my-group', PolicyName='my-policy', PolicyDocument='{"some": "json"}')
|
||||
policies = conn.list_group_policies(GroupName='my-group')['PolicyNames'].should.equal(['my-policy'])
|
||||
conn.list_group_policies(GroupName='my-group')['PolicyNames'].should.equal(['my-policy'])
|
||||
|
|
|
|||
|
|
@ -216,6 +216,33 @@ def test_create_cluster_with_security_group():
|
|||
set(group_names).should.equal(set(["security_group1", "security_group2"]))
|
||||
|
||||
|
||||
@mock_redshift
|
||||
def test_create_cluster_with_security_group_boto3():
|
||||
client = boto3.client('redshift', region_name='us-east-1')
|
||||
client.create_cluster_security_group(
|
||||
ClusterSecurityGroupName="security_group1",
|
||||
Description="This is my security group",
|
||||
)
|
||||
client.create_cluster_security_group(
|
||||
ClusterSecurityGroupName="security_group2",
|
||||
Description="This is my security group",
|
||||
)
|
||||
|
||||
cluster_identifier = 'my_cluster'
|
||||
client.create_cluster(
|
||||
ClusterIdentifier=cluster_identifier,
|
||||
NodeType="dw.hs1.xlarge",
|
||||
MasterUsername="username",
|
||||
MasterUserPassword="password",
|
||||
ClusterSecurityGroups=["security_group1", "security_group2"]
|
||||
)
|
||||
response = client.describe_clusters(ClusterIdentifier=cluster_identifier)
|
||||
cluster = response['Clusters'][0]
|
||||
group_names = [group['ClusterSecurityGroupName']
|
||||
for group in cluster['ClusterSecurityGroups']]
|
||||
set(group_names).should.equal({"security_group1", "security_group2"})
|
||||
|
||||
|
||||
@mock_redshift_deprecated
|
||||
@mock_ec2_deprecated
|
||||
def test_create_cluster_with_vpc_security_groups():
|
||||
|
|
@ -242,6 +269,31 @@ def test_create_cluster_with_vpc_security_groups():
|
|||
list(group_ids).should.equal([security_group.id])
|
||||
|
||||
|
||||
@mock_redshift
|
||||
@mock_ec2
|
||||
def test_create_cluster_with_vpc_security_groups_boto3():
|
||||
ec2 = boto3.resource('ec2', region_name='us-east-1')
|
||||
vpc = ec2.create_vpc(CidrBlock='10.0.0.0/16')
|
||||
client = boto3.client('redshift', region_name='us-east-1')
|
||||
cluster_id = 'my_cluster'
|
||||
security_group = ec2.create_security_group(
|
||||
Description="vpc_security_group",
|
||||
GroupName="a group",
|
||||
VpcId=vpc.id)
|
||||
client.create_cluster(
|
||||
ClusterIdentifier=cluster_id,
|
||||
NodeType="dw.hs1.xlarge",
|
||||
MasterUsername="username",
|
||||
MasterUserPassword="password",
|
||||
VpcSecurityGroupIds=[security_group.id],
|
||||
)
|
||||
response = client.describe_clusters(ClusterIdentifier=cluster_id)
|
||||
cluster = response['Clusters'][0]
|
||||
group_ids = [group['VpcSecurityGroupId']
|
||||
for group in cluster['VpcSecurityGroups']]
|
||||
list(group_ids).should.equal([security_group.id])
|
||||
|
||||
|
||||
@mock_redshift_deprecated
|
||||
def test_create_cluster_with_parameter_group():
|
||||
conn = boto.connect_redshift()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue