Techdebt: Replace string-format with f-strings (for tests dirs) (#5678)

This commit is contained in:
Bert Blommers 2022-11-17 21:41:08 -01:00 committed by GitHub
parent 68cf3e8a1d
commit 1a8ddc0f2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
144 changed files with 1084 additions and 1786 deletions

@ -1 +1 @@
Subproject commit f9a6db6e3c3f3299701747972fd6c37ba4af36f4 Subproject commit 01a50d07400ee7513b31ec10e9832a2d8290b4e2

View File

@ -511,7 +511,7 @@ def test_add_too_many_tags():
with pytest.raises(ClientError) as ex: with pytest.raises(ClientError) as ex:
client.add_tags_to_certificate( client.add_tags_to_certificate(
CertificateArn=arn, CertificateArn=arn,
Tags=[{"Key": "a-%d" % i, "Value": "abcd"} for i in range(1, 52)], Tags=[{"Key": f"a-{i}", "Value": "abcd"} for i in range(1, 52)],
) )
ex.value.response["Error"]["Code"].should.equal("TooManyTagsException") ex.value.response["Error"]["Code"].should.equal("TooManyTagsException")
ex.value.response["Error"]["Message"].should.contain("contains too many Tags") ex.value.response["Error"]["Message"].should.contain("contains too many Tags")
@ -520,7 +520,7 @@ def test_add_too_many_tags():
# Add 49 tags first, then try to add 2 more. # Add 49 tags first, then try to add 2 more.
client.add_tags_to_certificate( client.add_tags_to_certificate(
CertificateArn=arn, CertificateArn=arn,
Tags=[{"Key": "p-%d" % i, "Value": "pqrs"} for i in range(1, 50)], Tags=[{"Key": f"p-{i}", "Value": "pqrs"} for i in range(1, 50)],
) )
client.list_tags_for_certificate(CertificateArn=arn)["Tags"].should.have.length_of( client.list_tags_for_certificate(CertificateArn=arn)["Tags"].should.have.length_of(
49 49

View File

@ -931,12 +931,8 @@ def test_create_authorizer():
response["ResponseMetadata"].pop("HTTPHeaders", None) response["ResponseMetadata"].pop("HTTPHeaders", None)
response["ResponseMetadata"].pop("RetryAttempts", None) response["ResponseMetadata"].pop("RetryAttempts", None)
response["items"][0]["id"].should.match( response["items"][0]["id"].should.match(rf"{authorizer_id2}|{authorizer_id}")
r"{0}|{1}".format(authorizer_id2, authorizer_id) response["items"][1]["id"].should.match(rf"{authorizer_id2}|{authorizer_id}")
)
response["items"][1]["id"].should.match(
r"{0}|{1}".format(authorizer_id2, authorizer_id)
)
new_authorizer_name_with_vars = "authorizer_with_vars" new_authorizer_name_with_vars = "authorizer_with_vars"
response = client.create_authorizer( response = client.create_authorizer(
@ -1186,9 +1182,7 @@ def test_put_integration_validation():
client.put_integration( client.put_integration(
restApiId=api_id, restApiId=api_id,
resourceId=root_id, resourceId=root_id,
credentials="arn:aws:iam::{}:role/service-role/testfunction-role-oe783psq".format( credentials=f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/testfunction-role-oe783psq",
ACCOUNT_ID
),
httpMethod="GET", httpMethod="GET",
type=_type, type=_type,
uri="arn:aws:apigateway:us-west-2:s3:path/b/k", uri="arn:aws:apigateway:us-west-2:s3:path/b/k",
@ -1210,9 +1204,7 @@ def test_put_integration_validation():
client.put_integration( client.put_integration(
restApiId=api_id, restApiId=api_id,
resourceId=root_id, resourceId=root_id,
credentials="arn:aws:iam::{}:role/service-role/testfunction-role-oe783psq".format( credentials=f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/testfunction-role-oe783psq",
ACCOUNT_ID
),
httpMethod="GET", httpMethod="GET",
type=_type, type=_type,
uri="arn:aws:apigateway:us-west-2:s3:path/b/k", uri="arn:aws:apigateway:us-west-2:s3:path/b/k",

View File

@ -367,7 +367,7 @@ def test_simple_apigateway_with_lambda_proxy():
statement = policy["Statement"][0] statement = policy["Statement"][0]
statement["FunctionName"].should.contain(fn_name) statement["FunctionName"].should.contain(fn_name)
statement["Condition"]["ArnLike"]["AWS:SourceArn"].should.equal( statement["Condition"]["ArnLike"]["AWS:SourceArn"].should.equal(
"arn:aws:execute-api:us-east-1:123456789012:{}/*/*".format(api_id) f"arn:aws:execute-api:us-east-1:123456789012:{api_id}/*/*"
) )

View File

@ -143,12 +143,8 @@ def test_create_multiple_deployments():
response = client.get_deployments(restApiId=api_id) response = client.get_deployments(restApiId=api_id)
response["items"][0]["id"].should.match( response["items"][0]["id"].should.match(rf"{deployment_id2}|{deployment_id}")
r"{0}|{1}".format(deployment_id2, deployment_id) response["items"][1]["id"].should.match(rf"{deployment_id2}|{deployment_id}")
)
response["items"][1]["id"].should.match(
r"{0}|{1}".format(deployment_id2, deployment_id)
)
@mock_apigateway @mock_apigateway

View File

@ -34,16 +34,16 @@ def test_usage_plans_apis():
json.loads(res.data)["item"].should.have.length_of(1) json.loads(res.data)["item"].should.have.length_of(1)
# Get single usage plan # Get single usage plan
res = test_client.get("/usageplans/{0}".format(created_plan["id"])) res = test_client.get(f"/usageplans/{created_plan['id']}")
fetched_plan = json.loads(res.data) fetched_plan = json.loads(res.data)
fetched_plan.should.equal(created_plan) fetched_plan.should.equal(created_plan)
# Not existing usage plan # Not existing usage plan
res = test_client.get("/usageplans/{0}".format("not_existing")) res = test_client.get("/usageplans/not_existing")
res.status_code.should.equal(404) res.status_code.should.equal(404)
# Delete usage plan # Delete usage plan
res = test_client.delete("/usageplans/{0}".format(created_plan["id"])) res = test_client.delete(f"/usageplans/{created_plan['id']}")
res.data.should.equal(b"{}") res.data.should.equal(b"{}")
# List usage plans (expect empty again) # List usage plans (expect empty again)
@ -61,53 +61,45 @@ def test_usage_plans_keys():
created_api_key = json.loads(res.data) created_api_key = json.loads(res.data)
# List usage plans keys (expect empty) # List usage plans keys (expect empty)
res = test_client.get("/usageplans/{0}/keys".format(usage_plan_id)) res = test_client.get(f"/usageplans/{usage_plan_id}/keys")
json.loads(res.data)["item"].should.have.length_of(0) json.loads(res.data)["item"].should.have.length_of(0)
# Invalid api key (does not exists at all) # Invalid api key (does not exists at all)
res = test_client.get( res = test_client.get(f"/usageplans/{usage_plan_id}/keys/not_existing")
"/usageplans/{0}/keys/{1}".format(usage_plan_id, "not_existing")
)
res.status_code.should.equal(404) res.status_code.should.equal(404)
# not existing usage plan with existing api key # not existing usage plan with existing api key
res = test_client.get( res = test_client.get(f"/usageplans/not_existing/keys/{created_api_key['id']}")
"/usageplans/{0}/keys/{1}".format("not_existing", created_api_key["id"])
)
res.status_code.should.equal(404) res.status_code.should.equal(404)
# not jet added api key # not jet added api key
res = test_client.get( res = test_client.get(f"/usageplans/{usage_plan_id}/keys/{created_api_key['id']}")
"/usageplans/{0}/keys/{1}".format(usage_plan_id, created_api_key["id"])
)
res.status_code.should.equal(404) res.status_code.should.equal(404)
# Create usage plan key # Create usage plan key
res = test_client.post( res = test_client.post(
"/usageplans/{0}/keys".format(usage_plan_id), f"/usageplans/{usage_plan_id}/keys",
data=json.dumps({"keyId": created_api_key["id"], "keyType": "API_KEY"}), data=json.dumps({"keyId": created_api_key["id"], "keyType": "API_KEY"}),
) )
created_usage_plan_key = json.loads(res.data) created_usage_plan_key = json.loads(res.data)
# List usage plans keys (expect 1 key) # List usage plans keys (expect 1 key)
res = test_client.get("/usageplans/{0}/keys".format(usage_plan_id)) res = test_client.get(f"/usageplans/{usage_plan_id}/keys")
json.loads(res.data)["item"].should.have.length_of(1) json.loads(res.data)["item"].should.have.length_of(1)
# Get single usage plan key # Get single usage plan key
res = test_client.get( res = test_client.get(f"/usageplans/{usage_plan_id}/keys/{created_api_key['id']}")
"/usageplans/{0}/keys/{1}".format(usage_plan_id, created_api_key["id"])
)
fetched_plan_key = json.loads(res.data) fetched_plan_key = json.loads(res.data)
fetched_plan_key.should.equal(created_usage_plan_key) fetched_plan_key.should.equal(created_usage_plan_key)
# Delete usage plan key # Delete usage plan key
res = test_client.delete( res = test_client.delete(
"/usageplans/{0}/keys/{1}".format(usage_plan_id, created_api_key["id"]) f"/usageplans/{usage_plan_id}/keys/{created_api_key['id']}"
) )
res.data.should.equal(b"{}") res.data.should.equal(b"{}")
# List usage plans keys (expect to be empty again) # List usage plans keys (expect to be empty again)
res = test_client.get("/usageplans/{0}/keys".format(usage_plan_id)) res = test_client.get(f"/usageplans/{usage_plan_id}/keys")
json.loads(res.data)["item"].should.have.length_of(0) json.loads(res.data)["item"].should.have.length_of(0)
@ -118,7 +110,7 @@ def test_create_usage_plans_key_non_existent_api_key():
# Create usage plan key with non-existent api key # Create usage plan key with non-existent api key
res = test_client.post( res = test_client.post(
"/usageplans/{0}/keys".format(usage_plan_id), f"/usageplans/{usage_plan_id}/keys",
data=json.dumps({"keyId": "non-existent", "keyType": "API_KEY"}), data=json.dumps({"keyId": "non-existent", "keyType": "API_KEY"}),
) )
res.status_code.should.equal(404) res.status_code.should.equal(404)

View File

@ -9,7 +9,7 @@ DEFAULT_ECS_CLUSTER = "default"
DEFAULT_ECS_TASK = "test_ecs_task" DEFAULT_ECS_TASK = "test_ecs_task"
DEFAULT_ECS_SERVICE = "sample-webapp" DEFAULT_ECS_SERVICE = "sample-webapp"
DEFAULT_SERVICE_NAMESPACE = "ecs" DEFAULT_SERVICE_NAMESPACE = "ecs"
DEFAULT_RESOURCE_ID = "service/{}/{}".format(DEFAULT_ECS_CLUSTER, DEFAULT_ECS_SERVICE) DEFAULT_RESOURCE_ID = f"service/{DEFAULT_ECS_CLUSTER}/{DEFAULT_ECS_SERVICE}"
DEFAULT_SCALABLE_DIMENSION = "ecs:service:DesiredCount" DEFAULT_SCALABLE_DIMENSION = "ecs:service:DesiredCount"
DEFAULT_MIN_CAPACITY = 1 DEFAULT_MIN_CAPACITY = 1
DEFAULT_MAX_CAPACITY = 1 DEFAULT_MAX_CAPACITY = 1
@ -122,12 +122,12 @@ def test_describe_scalable_targets_only_return_ecs_targets():
register_scalable_target( register_scalable_target(
client, client,
ServiceNamespace="ecs", ServiceNamespace="ecs",
ResourceId="service/{}/test1".format(DEFAULT_ECS_CLUSTER), ResourceId=f"service/{DEFAULT_ECS_CLUSTER}/test1",
) )
register_scalable_target( register_scalable_target(
client, client,
ServiceNamespace="ecs", ServiceNamespace="ecs",
ResourceId="service/{}/test2".format(DEFAULT_ECS_CLUSTER), ResourceId=f"service/{DEFAULT_ECS_CLUSTER}/test2",
) )
register_scalable_target( register_scalable_target(
client, client,
@ -158,7 +158,7 @@ def test_describe_scalable_targets_next_token_success():
register_scalable_target( register_scalable_target(
client, client,
ServiceNamespace="ecs", ServiceNamespace="ecs",
ResourceId="service/{}/{}".format(DEFAULT_ECS_CLUSTER, i), ResourceId=f"service/{DEFAULT_ECS_CLUSTER}/{i}",
) )
response = client.describe_scalable_targets( response = client.describe_scalable_targets(
ServiceNamespace=DEFAULT_SERVICE_NAMESPACE ServiceNamespace=DEFAULT_SERVICE_NAMESPACE
@ -379,9 +379,7 @@ def test_put_scaling_policy(policy_type, policy_body_kwargs):
) )
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200) response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
response["PolicyARN"].should.match( response["PolicyARN"].should.match(
r"arn:aws:autoscaling:.*1:scalingPolicy:.*:resource/{}/{}:policyName/{}".format( rf"arn:aws:autoscaling:.*1:scalingPolicy:.*:resource/{namespace}/{resource_id}:policyName/{policy_name}"
namespace, resource_id, policy_name
)
) )
@ -434,9 +432,7 @@ def test_describe_scaling_policies():
policy["PolicyType"].should.equal(policy_type) policy["PolicyType"].should.equal(policy_type)
policy["TargetTrackingScalingPolicyConfiguration"].should.equal(policy_body) policy["TargetTrackingScalingPolicyConfiguration"].should.equal(policy_body)
policy["PolicyARN"].should.match( policy["PolicyARN"].should.match(
r"arn:aws:autoscaling:.*1:scalingPolicy:.*:resource/{}/{}:policyName/{}".format( rf"arn:aws:autoscaling:.*1:scalingPolicy:.*:resource/{namespace}/{resource_id}:policyName/{policy_name}"
namespace, resource_id, policy_name
)
) )
policy.should.have.key("CreationTime").which.should.be.a("datetime.datetime") policy.should.have.key("CreationTime").which.should.be.a("datetime.datetime")

View File

@ -12,7 +12,7 @@ DEFAULT_ECS_CLUSTER = "default"
DEFAULT_ECS_TASK = "test_ecs_task" DEFAULT_ECS_TASK = "test_ecs_task"
DEFAULT_ECS_SERVICE = "sample-webapp" DEFAULT_ECS_SERVICE = "sample-webapp"
DEFAULT_SERVICE_NAMESPACE = "ecs" DEFAULT_SERVICE_NAMESPACE = "ecs"
DEFAULT_RESOURCE_ID = "service/{}/{}".format(DEFAULT_ECS_CLUSTER, DEFAULT_ECS_SERVICE) DEFAULT_RESOURCE_ID = f"service/{DEFAULT_ECS_CLUSTER}/{DEFAULT_ECS_SERVICE}"
DEFAULT_SCALABLE_DIMENSION = "ecs:service:DesiredCount" DEFAULT_SCALABLE_DIMENSION = "ecs:service:DesiredCount"
DEFAULT_MIN_CAPACITY = 1 DEFAULT_MIN_CAPACITY = 1
DEFAULT_MAX_CAPACITY = 1 DEFAULT_MAX_CAPACITY = 1
@ -71,7 +71,7 @@ def test_describe_scalable_targets_with_multiple_invalid_parameters_should_retur
@mock_applicationautoscaling @mock_applicationautoscaling
def test_register_scalable_target_ecs_with_non_existent_service_should_return_clusternotfound_exception(): def test_register_scalable_target_ecs_with_non_existent_service_should_return_clusternotfound_exception():
client = boto3.client("application-autoscaling", region_name=DEFAULT_REGION) client = boto3.client("application-autoscaling", region_name=DEFAULT_REGION)
resource_id = "service/{}/foo".format(DEFAULT_ECS_CLUSTER) resource_id = f"service/{DEFAULT_ECS_CLUSTER}/foo"
with pytest.raises(ClientError) as ex: with pytest.raises(ClientError) as ex:
register_scalable_target(client, ServiceNamespace="ecs", ResourceId=resource_id) register_scalable_target(client, ServiceNamespace="ecs", ResourceId=resource_id)

View File

@ -99,7 +99,7 @@ def test_create_autoscaling_group_from_invalid_instance_id():
ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.value.response["Error"]["Code"].should.equal("ValidationError") ex.value.response["Error"]["Code"].should.equal("ValidationError")
ex.value.response["Error"]["Message"].should.equal( ex.value.response["Error"]["Message"].should.equal(
"Instance [{0}] is invalid.".format(invalid_instance_id) f"Instance [{invalid_instance_id}] is invalid."
) )
@ -518,9 +518,7 @@ def test_update_autoscaling_group_launch_config():
AutoScalingGroupName="test_asg", AutoScalingGroupName="test_asg",
LaunchConfigurationName="test_launch_configuration_new", LaunchConfigurationName="test_launch_configuration_new",
MinSize=1, MinSize=1,
VPCZoneIdentifier="{subnet1},{subnet2}".format( VPCZoneIdentifier=f"{mocked_networking['subnet1']},{mocked_networking['subnet2']}",
subnet1=mocked_networking["subnet1"], subnet2=mocked_networking["subnet2"]
),
NewInstancesProtectedFromScaleIn=False, NewInstancesProtectedFromScaleIn=False,
) )
@ -566,9 +564,7 @@ def test_update_autoscaling_group_launch_template():
"Version": "1", "Version": "1",
}, },
MinSize=1, MinSize=1,
VPCZoneIdentifier="{subnet1},{subnet2}".format( VPCZoneIdentifier=f"{mocked_networking['subnet1']},{mocked_networking['subnet2']}",
subnet1=mocked_networking["subnet1"], subnet2=mocked_networking["subnet2"]
),
NewInstancesProtectedFromScaleIn=False, NewInstancesProtectedFromScaleIn=False,
) )

View File

@ -61,7 +61,7 @@ class TestAutoScalingGroup(TestCase):
def test_list_many_autoscaling_groups(self): def test_list_many_autoscaling_groups(self):
for i in range(51): for i in range(51):
self._create_group("TestGroup%d" % i) self._create_group(f"TestGroup{i}")
response = self.as_client.describe_auto_scaling_groups() response = self.as_client.describe_auto_scaling_groups()
groups = response["AutoScalingGroups"] groups = response["AutoScalingGroups"]

View File

@ -203,10 +203,7 @@ class TestAutoScalingELB(TestCase):
} }
], ],
TerminationPolicies=["OldestInstance", "NewestInstance"], TerminationPolicies=["OldestInstance", "NewestInstance"],
VPCZoneIdentifier="{subnet1},{subnet2}".format( VPCZoneIdentifier=f"{self.mocked_networking['subnet1']},{self.mocked_networking['subnet2']}",
subnet1=self.mocked_networking["subnet1"],
subnet2=self.mocked_networking["subnet2"],
),
) )
self.as_client.put_scheduled_update_group_action( self.as_client.put_scheduled_update_group_action(
@ -231,10 +228,7 @@ class TestAutoScalingELB(TestCase):
group["MinSize"].should.equal(INSTANCE_COUNT_GROUP) group["MinSize"].should.equal(INSTANCE_COUNT_GROUP)
group["Instances"].should.have.length_of(INSTANCE_COUNT_GROUP) group["Instances"].should.have.length_of(INSTANCE_COUNT_GROUP)
group["VPCZoneIdentifier"].should.equal( group["VPCZoneIdentifier"].should.equal(
"{subnet1},{subnet2}".format( f"{self.mocked_networking['subnet1']},{self.mocked_networking['subnet2']}"
subnet1=self.mocked_networking["subnet1"],
subnet2=self.mocked_networking["subnet2"],
)
) )
group["LaunchConfigurationName"].should.equal(self.lc_name) group["LaunchConfigurationName"].should.equal(self.lc_name)
group["DefaultCooldown"].should.equal(60) group["DefaultCooldown"].should.equal(60)

View File

@ -21,9 +21,7 @@ def test_create_launch_configuration():
SecurityGroups=["default", "default2"], SecurityGroups=["default", "default2"],
UserData="This is some user_data", UserData="This is some user_data",
InstanceMonitoring={"Enabled": True}, InstanceMonitoring={"Enabled": True},
IamInstanceProfile="arn:aws:iam::{}:instance-profile/testing".format( IamInstanceProfile=f"arn:aws:iam::{ACCOUNT_ID}:instance-profile/testing",
ACCOUNT_ID
),
SpotPrice="0.1", SpotPrice="0.1",
) )
@ -39,7 +37,7 @@ def test_create_launch_configuration():
userdata.should.equal(b"This is some user_data") userdata.should.equal(b"This is some user_data")
launch_config["InstanceMonitoring"].should.equal({"Enabled": True}) launch_config["InstanceMonitoring"].should.equal({"Enabled": True})
launch_config["IamInstanceProfile"].should.equal( launch_config["IamInstanceProfile"].should.equal(
"arn:aws:iam::{}:instance-profile/testing".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:instance-profile/testing"
) )
launch_config["SpotPrice"].should.equal("0.1") launch_config["SpotPrice"].should.equal("0.1")
launch_config["BlockDeviceMappings"].should.equal([]) launch_config["BlockDeviceMappings"].should.equal([])
@ -56,9 +54,7 @@ def test_create_launch_configuration_with_block_device_mappings():
SecurityGroups=["default", "default2"], SecurityGroups=["default", "default2"],
UserData="This is some user_data", UserData="This is some user_data",
InstanceMonitoring={"Enabled": True}, InstanceMonitoring={"Enabled": True},
IamInstanceProfile="arn:aws:iam::{}:instance-profile/testing".format( IamInstanceProfile=f"arn:aws:iam::{ACCOUNT_ID}:instance-profile/testing",
ACCOUNT_ID
),
SpotPrice="0.1", SpotPrice="0.1",
BlockDeviceMappings=[ BlockDeviceMappings=[
{"DeviceName": "/dev/xvdb", "VirtualName": "ephemeral0"}, {"DeviceName": "/dev/xvdb", "VirtualName": "ephemeral0"},
@ -236,7 +232,7 @@ def test_launch_configuration_describe_paginated():
conn = boto3.client("autoscaling", region_name="us-east-1") conn = boto3.client("autoscaling", region_name="us-east-1")
for i in range(51): for i in range(51):
conn.create_launch_configuration( conn.create_launch_configuration(
LaunchConfigurationName="TestLC%d" % i, LaunchConfigurationName=f"TestLC{i}",
ImageId=EXAMPLE_AMI_ID, ImageId=EXAMPLE_AMI_ID,
InstanceType="t2.medium", InstanceType="t2.medium",
) )

View File

@ -60,17 +60,13 @@ def test_list_functions():
v1 = [f for f in our_functions if f["Version"] == "1"][0] v1 = [f for f in our_functions if f["Version"] == "1"][0]
v1["Description"].should.equal("v2") v1["Description"].should.equal("v2")
v1["FunctionArn"].should.equal( v1["FunctionArn"].should.equal(
"arn:aws:lambda:{}:{}:function:{}:1".format( f"arn:aws:lambda:{_lambda_region}:{ACCOUNT_ID}:function:{function_name}:1"
_lambda_region, ACCOUNT_ID, function_name
)
) )
latest = [f for f in our_functions if f["Version"] == "$LATEST"][0] latest = [f for f in our_functions if f["Version"] == "$LATEST"][0]
latest["Description"].should.equal("") latest["Description"].should.equal("")
latest["FunctionArn"].should.equal( latest["FunctionArn"].should.equal(
"arn:aws:lambda:{}:{}:function:{}:$LATEST".format( f"arn:aws:lambda:{_lambda_region}:{ACCOUNT_ID}:function:{function_name}:$LATEST"
_lambda_region, ACCOUNT_ID, function_name
)
) )
@ -125,9 +121,7 @@ def test_create_function_from_aws_bucket():
result.should.have.key("FunctionName").equals(function_name) result.should.have.key("FunctionName").equals(function_name)
result.should.have.key("FunctionArn").equals( result.should.have.key("FunctionArn").equals(
"arn:aws:lambda:{}:{}:function:{}".format( f"arn:aws:lambda:{_lambda_region}:{ACCOUNT_ID}:function:{function_name}"
_lambda_region, ACCOUNT_ID, function_name
)
) )
result.should.have.key("Runtime").equals("python2.7") result.should.have.key("Runtime").equals("python2.7")
result.should.have.key("Handler").equals("lambda_function.lambda_handler") result.should.have.key("Handler").equals("lambda_function.lambda_handler")
@ -163,9 +157,7 @@ def test_create_function_from_zipfile():
result.should.equal( result.should.equal(
{ {
"FunctionName": function_name, "FunctionName": function_name,
"FunctionArn": "arn:aws:lambda:{}:{}:function:{}".format( "FunctionArn": f"arn:aws:lambda:{_lambda_region}:{ACCOUNT_ID}:function:{function_name}",
_lambda_region, ACCOUNT_ID, function_name
),
"Runtime": "python2.7", "Runtime": "python2.7",
"Role": result["Role"], "Role": result["Role"],
"Handler": "lambda_function.lambda_handler", "Handler": "lambda_function.lambda_handler",
@ -281,7 +273,7 @@ def test_get_function():
result["Configuration"].pop("LastModified") result["Configuration"].pop("LastModified")
result["Code"]["Location"].should.equal( result["Code"]["Location"].should.equal(
"s3://awslambda-{0}-tasks.s3-{0}.amazonaws.com/test.zip".format(_lambda_region) f"s3://awslambda-{_lambda_region}-tasks.s3-{_lambda_region}.amazonaws.com/test.zip"
) )
result["Code"]["RepositoryType"].should.equal("S3") result["Code"]["RepositoryType"].should.equal("S3")
@ -309,9 +301,7 @@ def test_get_function():
result = conn.get_function(FunctionName=function_name, Qualifier="$LATEST") result = conn.get_function(FunctionName=function_name, Qualifier="$LATEST")
result["Configuration"]["Version"].should.equal("$LATEST") result["Configuration"]["Version"].should.equal("$LATEST")
result["Configuration"]["FunctionArn"].should.equal( result["Configuration"]["FunctionArn"].should.equal(
"arn:aws:lambda:us-west-2:{}:function:{}:$LATEST".format( f"arn:aws:lambda:us-west-2:{ACCOUNT_ID}:function:{function_name}:$LATEST"
ACCOUNT_ID, function_name
)
) )
# Test get function when can't find function name # Test get function when can't find function name
@ -376,9 +366,7 @@ def test_get_function_configuration(key):
) )
result["Version"].should.equal("$LATEST") result["Version"].should.equal("$LATEST")
result["FunctionArn"].should.equal( result["FunctionArn"].should.equal(
"arn:aws:lambda:{}:{}:function:{}:$LATEST".format( f"arn:aws:lambda:{_lambda_region}:{ACCOUNT_ID}:function:{function_name}:$LATEST"
_lambda_region, ACCOUNT_ID, function_name
)
) )
# Test get function when can't find function name # Test get function when can't find function name
@ -591,7 +579,7 @@ def test_publish():
# #SetComprehension ;-) # #SetComprehension ;-)
published_arn = list({f["FunctionArn"] for f in our_functions} - {latest_arn})[0] published_arn = list({f["FunctionArn"] for f in our_functions} - {latest_arn})[0]
published_arn.should.contain("{}:1".format(function_name)) published_arn.should.contain(f"{function_name}:1")
conn.delete_function(FunctionName=function_name, Qualifier="1") conn.delete_function(FunctionName=function_name, Qualifier="1")
@ -639,9 +627,7 @@ def test_list_create_list_get_delete_list():
) )
expected_function_result = { expected_function_result = {
"Code": { "Code": {
"Location": "s3://awslambda-{0}-tasks.s3-{0}.amazonaws.com/test.zip".format( "Location": f"s3://awslambda-{_lambda_region}-tasks.s3-{_lambda_region}.amazonaws.com/test.zip",
_lambda_region
),
"RepositoryType": "S3", "RepositoryType": "S3",
}, },
"Configuration": { "Configuration": {
@ -673,9 +659,7 @@ def test_list_create_list_get_delete_list():
f["FunctionArn"] for f in functions if f["FunctionName"] == function_name f["FunctionArn"] for f in functions if f["FunctionName"] == function_name
][0] ][0]
func_arn.should.equal( func_arn.should.equal(
"arn:aws:lambda:{}:{}:function:{}".format( f"arn:aws:lambda:{_lambda_region}:{ACCOUNT_ID}:function:{function_name}"
_lambda_region, ACCOUNT_ID, function_name
)
) )
functions = conn.list_functions(FunctionVersion="ALL")["Functions"] functions = conn.list_functions(FunctionVersion="ALL")["Functions"]
our_functions = [f for f in functions if f["FunctionName"] == function_name] our_functions = [f for f in functions if f["FunctionName"] == function_name]
@ -683,9 +667,7 @@ def test_list_create_list_get_delete_list():
latest = [f for f in our_functions if f["Version"] == "$LATEST"][0] latest = [f for f in our_functions if f["Version"] == "$LATEST"][0]
latest["FunctionArn"].should.equal( latest["FunctionArn"].should.equal(
"arn:aws:lambda:{}:{}:function:{}:$LATEST".format( f"arn:aws:lambda:{_lambda_region}:{ACCOUNT_ID}:function:{function_name}:$LATEST"
_lambda_region, ACCOUNT_ID, function_name
)
) )
latest.pop("FunctionArn") latest.pop("FunctionArn")
latest.pop("LastModified") latest.pop("LastModified")
@ -694,17 +676,13 @@ def test_list_create_list_get_delete_list():
published = [f for f in our_functions if f["Version"] != "$LATEST"][0] published = [f for f in our_functions if f["Version"] != "$LATEST"][0]
published["Version"].should.equal("1") published["Version"].should.equal("1")
published["FunctionArn"].should.equal( published["FunctionArn"].should.equal(
"arn:aws:lambda:{}:{}:function:{}:1".format( f"arn:aws:lambda:{_lambda_region}:{ACCOUNT_ID}:function:{function_name}:1"
_lambda_region, ACCOUNT_ID, function_name
)
) )
func = conn.get_function(FunctionName=function_name) func = conn.get_function(FunctionName=function_name)
func["Configuration"]["FunctionArn"].should.equal( func["Configuration"]["FunctionArn"].should.equal(
"arn:aws:lambda:{}:{}:function:{}".format( f"arn:aws:lambda:{_lambda_region}:{ACCOUNT_ID}:function:{function_name}"
_lambda_region, ACCOUNT_ID, function_name
)
) )
# this is hard to match against, so remove it # this is hard to match against, so remove it
@ -746,7 +724,7 @@ def test_get_function_created_with_zipfile():
assert len(response["Code"]) == 2 assert len(response["Code"]) == 2
assert response["Code"]["RepositoryType"] == "S3" assert response["Code"]["RepositoryType"] == "S3"
assert response["Code"]["Location"].startswith( assert response["Code"]["Location"].startswith(
"s3://awslambda-{0}-tasks.s3-{0}.amazonaws.com".format(_lambda_region) f"s3://awslambda-{_lambda_region}-tasks.s3-{_lambda_region}.amazonaws.com"
) )
response.should.have.key("Configuration") response.should.have.key("Configuration")
config = response["Configuration"] config = response["Configuration"]
@ -801,17 +779,18 @@ def test_list_versions_by_function():
assert res["ResponseMetadata"]["HTTPStatusCode"] == 201 assert res["ResponseMetadata"]["HTTPStatusCode"] == 201
versions = conn.list_versions_by_function(FunctionName=function_name) versions = conn.list_versions_by_function(FunctionName=function_name)
assert len(versions["Versions"]) == 3 assert len(versions["Versions"]) == 3
assert versions["Versions"][0][ assert (
"FunctionArn" versions["Versions"][0]["FunctionArn"]
] == "arn:aws:lambda:us-west-2:{}:function:{}:$LATEST".format( == f"arn:aws:lambda:us-west-2:{ACCOUNT_ID}:function:{function_name}:$LATEST"
ACCOUNT_ID, function_name )
assert (
versions["Versions"][1]["FunctionArn"]
== f"arn:aws:lambda:us-west-2:{ACCOUNT_ID}:function:{function_name}:1"
)
assert (
versions["Versions"][2]["FunctionArn"]
== f"arn:aws:lambda:us-west-2:{ACCOUNT_ID}:function:{function_name}:2"
) )
assert versions["Versions"][1][
"FunctionArn"
] == "arn:aws:lambda:us-west-2:{}:function:{}:1".format(ACCOUNT_ID, function_name)
assert versions["Versions"][2][
"FunctionArn"
] == "arn:aws:lambda:us-west-2:{}:function:{}:2".format(ACCOUNT_ID, function_name)
conn.create_function( conn.create_function(
FunctionName="testFunction_2", FunctionName="testFunction_2",
@ -826,10 +805,9 @@ def test_list_versions_by_function():
) )
versions = conn.list_versions_by_function(FunctionName="testFunction_2") versions = conn.list_versions_by_function(FunctionName="testFunction_2")
assert len(versions["Versions"]) == 1 assert len(versions["Versions"]) == 1
assert versions["Versions"][0][ assert (
"FunctionArn" versions["Versions"][0]["FunctionArn"]
] == "arn:aws:lambda:us-west-2:{}:function:testFunction_2:$LATEST".format( == f"arn:aws:lambda:us-west-2:{ACCOUNT_ID}:function:testFunction_2:$LATEST"
ACCOUNT_ID
) )
@ -980,7 +958,7 @@ def test_update_function_zip(key):
assert len(response["Code"]) == 2 assert len(response["Code"]) == 2
assert response["Code"]["RepositoryType"] == "S3" assert response["Code"]["RepositoryType"] == "S3"
assert response["Code"]["Location"].startswith( assert response["Code"]["Location"].startswith(
"s3://awslambda-{0}-tasks.s3-{0}.amazonaws.com".format(_lambda_region) f"s3://awslambda-{_lambda_region}-tasks.s3-{_lambda_region}.amazonaws.com"
) )
config = response["Configuration"] config = response["Configuration"]
@ -1038,7 +1016,7 @@ def test_update_function_s3():
assert len(response["Code"]) == 2 assert len(response["Code"]) == 2
assert response["Code"]["RepositoryType"] == "S3" assert response["Code"]["RepositoryType"] == "S3"
assert response["Code"]["Location"].startswith( assert response["Code"]["Location"].startswith(
"s3://awslambda-{0}-tasks.s3-{0}.amazonaws.com".format(_lambda_region) f"s3://awslambda-{_lambda_region}-tasks.s3-{_lambda_region}.amazonaws.com"
) )
config = response["Configuration"] config = response["Configuration"]

View File

@ -238,7 +238,7 @@ def test_invoke_function_from_sqs_exception():
entries = [] entries = []
for i in range(3): for i in range(3):
body = {"uuid": str(uuid.uuid4()), "test": "test_{}".format(i)} body = {"uuid": str(uuid.uuid4()), "test": f"test_{i}"}
entry = {"Id": str(i), "MessageBody": json.dumps(body)} entry = {"Id": str(i), "MessageBody": json.dumps(body)}
entries.append(entry) entries.append(entry)

View File

@ -65,9 +65,7 @@ def test_get_lambda_layers():
for version in result["LayerVersions"]: for version in result["LayerVersions"]:
version.pop("CreatedDate") version.pop("CreatedDate")
result["LayerVersions"].sort(key=lambda x: x["Version"]) result["LayerVersions"].sort(key=lambda x: x["Version"])
expected_arn = "arn:aws:lambda:{0}:{1}:layer:{2}:".format( expected_arn = f"arn:aws:lambda:{_lambda_region}:{ACCOUNT_ID}:layer:{layer_name}:"
_lambda_region, ACCOUNT_ID, layer_name
)
result["LayerVersions"].should.equal( result["LayerVersions"].should.equal(
[ [
{ {

View File

@ -106,15 +106,15 @@ def test_tags_not_found():
""" """
conn = boto3.client("lambda", _lambda_region) conn = boto3.client("lambda", _lambda_region)
conn.list_tags.when.called_with( conn.list_tags.when.called_with(
Resource="arn:aws:lambda:{}:function:not-found".format(ACCOUNT_ID) Resource=f"arn:aws:lambda:{ACCOUNT_ID}:function:not-found"
).should.throw(botocore.client.ClientError) ).should.throw(botocore.client.ClientError)
conn.tag_resource.when.called_with( conn.tag_resource.when.called_with(
Resource="arn:aws:lambda:{}:function:not-found".format(ACCOUNT_ID), Resource=f"arn:aws:lambda:{ACCOUNT_ID}:function:not-found",
Tags=dict(spam="eggs"), Tags=dict(spam="eggs"),
).should.throw(botocore.client.ClientError) ).should.throw(botocore.client.ClientError)
conn.untag_resource.when.called_with( conn.untag_resource.when.called_with(
Resource="arn:aws:lambda:{}:function:not-found".format(ACCOUNT_ID), Resource=f"arn:aws:lambda:{ACCOUNT_ID}:function:not-found",
TagKeys=["spam"], TagKeys=["spam"],
).should.throw(botocore.client.ClientError) ).should.throw(botocore.client.ClientError)

View File

@ -30,7 +30,12 @@ def lambda_handler(event, context):
def get_test_zip_file2(): def get_test_zip_file2():
func_str = """ base_url = (
"motoserver:5000"
if settings.TEST_SERVER_MODE
else "ec2.us-west-2.amazonaws.com"
)
func_str = f"""
import boto3 import boto3
def lambda_handler(event, context): def lambda_handler(event, context):
@ -40,11 +45,7 @@ def lambda_handler(event, context):
vol = ec2.Volume(volume_id) vol = ec2.Volume(volume_id)
return {{'id': vol.id, 'state': vol.state, 'size': vol.size}} return {{'id': vol.id, 'state': vol.state, 'size': vol.size}}
""".format( """
base_url="motoserver:5000"
if settings.TEST_SERVER_MODE
else "ec2.us-west-2.amazonaws.com"
)
return _process_lambda(func_str) return _process_lambda(func_str)

View File

@ -385,9 +385,7 @@ def _wait_for_job_statuses(client, job_id, statuses, seconds_to_wait=30):
time.sleep(0.1) time.sleep(0.1)
else: else:
raise RuntimeError( raise RuntimeError(
"Time out waiting for job status {status}!\n Last status: {last_status}".format( f"Time out waiting for job status {statuses}!\n Last status: {last_job_status}"
status=statuses, last_status=last_job_status
)
) )

View File

@ -18,7 +18,7 @@ def test_register_task_definition(use_resource_reqs):
resp.should.contain("revision") resp.should.contain("revision")
assert resp["jobDefinitionArn"].endswith( assert resp["jobDefinitionArn"].endswith(
"{0}:{1}".format(resp["jobDefinitionName"], resp["revision"]) f"{resp['jobDefinitionName']}:{resp['revision']}"
) )
@ -113,7 +113,7 @@ def test_reregister_task_definition(use_resource_reqs):
resp1.should.contain("revision") resp1.should.contain("revision")
assert resp1["jobDefinitionArn"].endswith( assert resp1["jobDefinitionArn"].endswith(
"{0}:{1}".format(resp1["jobDefinitionName"], resp1["revision"]) f"{resp1['jobDefinitionName']}:{resp1['revision']}"
) )
resp1["revision"].should.equal(1) resp1["revision"].should.equal(1)

View File

@ -12,7 +12,7 @@ from .fixtures.custom_lambda import get_template
def get_lambda_code(): def get_lambda_code():
pfunc = """ return f"""
def lambda_handler(event, context): def lambda_handler(event, context):
# Need to print this, one of the tests verifies the correct input # Need to print this, one of the tests verifies the correct input
print(event) print(event)
@ -21,17 +21,14 @@ def lambda_handler(event, context):
response["StackId"] = event["StackId"] response["StackId"] = event["StackId"]
response["RequestId"] = event["RequestId"] response["RequestId"] = event["RequestId"]
response["LogicalResourceId"] = event["LogicalResourceId"] response["LogicalResourceId"] = event["LogicalResourceId"]
response["PhysicalResourceId"] = "{resource_id}" response["PhysicalResourceId"] = "CustomResource{str(uuid4())[0:6]}"
response_data = dict() response_data = dict()
response_data["info_value"] = "special value" response_data["info_value"] = "special value"
if event["RequestType"] == "Create": if event["RequestType"] == "Create":
response["Data"] = response_data response["Data"] = response_data
import cfnresponse import cfnresponse
cfnresponse.send(event, context, cfnresponse.SUCCESS, response_data) cfnresponse.send(event, context, cfnresponse.SUCCESS, response_data)
""".format( """
resource_id=f"CustomResource{str(uuid4())[0:6]}"
)
return pfunc
@mock_cloudformation @mock_cloudformation

View File

@ -112,9 +112,7 @@ def test_create_stack_with_depends_on():
ecs = boto3.client("ecs", region_name="us-east-1") ecs = boto3.client("ecs", region_name="us-east-1")
cluster_arn = ecs.list_clusters()["clusterArns"][0] cluster_arn = ecs.list_clusters()["clusterArns"][0]
assert cluster_arn == "arn:aws:ecs:us-east-1:{}:cluster/test-cluster".format( assert cluster_arn == f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test-cluster"
ACCOUNT_ID
)
@mock_cloudformation @mock_cloudformation

View File

@ -1075,10 +1075,10 @@ def test_creating_stacks_across_regions():
list(west2_cf.stacks.all()).should.have.length_of(1) list(west2_cf.stacks.all()).should.have.length_of(1)
list(west1_cf.stacks.all())[0].stack_id.should.contain( list(west1_cf.stacks.all())[0].stack_id.should.contain(
"arn:aws:cloudformation:us-west-1:{}:stack/test_stack/".format(ACCOUNT_ID) f"arn:aws:cloudformation:us-west-1:{ACCOUNT_ID}:stack/test_stack/"
) )
list(west2_cf.stacks.all())[0].stack_id.should.contain( list(west2_cf.stacks.all())[0].stack_id.should.contain(
"arn:aws:cloudformation:us-west-2:{}:stack/test_stack/".format(ACCOUNT_ID) f"arn:aws:cloudformation:us-west-2:{ACCOUNT_ID}:stack/test_stack/"
) )
@ -1110,7 +1110,7 @@ def test_create_stack_with_notification_arn():
messages.should.have.length_of(1) messages.should.have.length_of(1)
msg = json.loads(messages[0].body) msg = json.loads(messages[0].body)
msg["Subject"].should.equal("AWS CloudFormation Notification") msg["Subject"].should.equal("AWS CloudFormation Notification")
msg["Message"].should.contain("StackId='{}'\n".format(stack.stack_id)) msg["Message"].should.contain(f"StackId='{stack.stack_id}'\n")
msg["Message"].should.contain("LogicalResourceId='test_stack_with_notifications'\n") msg["Message"].should.contain("LogicalResourceId='test_stack_with_notifications'\n")
msg["Message"].should.contain("ResourceStatus='CREATE_IN_PROGRESS'\n") msg["Message"].should.contain("ResourceStatus='CREATE_IN_PROGRESS'\n")
msg["Message"].should.contain("ResourceStatusReason='User Initiated'\n") msg["Message"].should.contain("ResourceStatusReason='User Initiated'\n")
@ -1128,7 +1128,7 @@ def test_create_stack_with_notification_arn():
messages = queue.receive_messages() messages = queue.receive_messages()
messages.should.have.length_of(1) messages.should.have.length_of(1)
msg = json.loads(messages[0].body) msg = json.loads(messages[0].body)
msg["Message"].should.contain("StackId='{}'\n".format(stack.stack_id)) msg["Message"].should.contain(f"StackId='{stack.stack_id}'\n")
msg["Message"].should.contain("LogicalResourceId='test_stack_with_notifications'\n") msg["Message"].should.contain("LogicalResourceId='test_stack_with_notifications'\n")
msg["Message"].should.contain("ResourceStatus='CREATE_COMPLETE'\n") msg["Message"].should.contain("ResourceStatus='CREATE_COMPLETE'\n")
msg["Message"].should.contain("ResourceStatusReason='None'\n") msg["Message"].should.contain("ResourceStatusReason='None'\n")
@ -1150,10 +1150,10 @@ def test_create_stack_with_role_arn():
cf.create_stack( cf.create_stack(
StackName="test_stack_with_notifications", StackName="test_stack_with_notifications",
TemplateBody=dummy_template_json, TemplateBody=dummy_template_json,
RoleARN="arn:aws:iam::{}:role/moto".format(ACCOUNT_ID), RoleARN=f"arn:aws:iam::{ACCOUNT_ID}:role/moto",
) )
stack = list(cf.stacks.all())[0] stack = list(cf.stacks.all())[0]
stack.role_arn.should.equal("arn:aws:iam::{}:role/moto".format(ACCOUNT_ID)) stack.role_arn.should.equal(f"arn:aws:iam::{ACCOUNT_ID}:role/moto")
@mock_cloudformation @mock_cloudformation
@ -1380,11 +1380,11 @@ def test_create_change_set_from_s3_url():
Tags=[{"Key": "tag-key", "Value": "tag-value"}], Tags=[{"Key": "tag-key", "Value": "tag-value"}],
) )
assert ( assert (
"arn:aws:cloudformation:us-west-1:{}:changeSet/NewChangeSet/".format(ACCOUNT_ID) f"arn:aws:cloudformation:us-west-1:{ACCOUNT_ID}:changeSet/NewChangeSet/"
in response["Id"] in response["Id"]
) )
assert ( assert (
"arn:aws:cloudformation:us-west-1:{}:stack/NewStack".format(ACCOUNT_ID) f"arn:aws:cloudformation:us-west-1:{ACCOUNT_ID}:stack/NewStack"
in response["StackId"] in response["StackId"]
) )
@ -1503,9 +1503,7 @@ def test_execute_change_set_w_name():
def test_describe_stack_pagination(): def test_describe_stack_pagination():
conn = boto3.client("cloudformation", region_name="us-east-1") conn = boto3.client("cloudformation", region_name="us-east-1")
for i in range(100): for i in range(100):
conn.create_stack( conn.create_stack(StackName=f"test_stack_{i}", TemplateBody=dummy_template_json)
StackName="test_stack_{}".format(i), TemplateBody=dummy_template_json
)
resp = conn.describe_stacks() resp = conn.describe_stacks()
stacks = resp["Stacks"] stacks = resp["Stacks"]
@ -1789,7 +1787,7 @@ def test_describe_updated_stack():
cf_conn.update_stack( cf_conn.update_stack(
StackName="test_stack", StackName="test_stack",
RoleARN="arn:aws:iam::{}:role/moto".format(ACCOUNT_ID), RoleARN=f"arn:aws:iam::{ACCOUNT_ID}:role/moto",
TemplateBody=dummy_update_template_json, TemplateBody=dummy_update_template_json,
Tags=[{"Key": "foo", "Value": "baz"}], Tags=[{"Key": "foo", "Value": "baz"}],
Parameters=[{"ParameterKey": "KeyName", "ParameterValue": "value"}], Parameters=[{"ParameterKey": "KeyName", "ParameterValue": "value"}],
@ -1801,7 +1799,7 @@ def test_describe_updated_stack():
stack_by_id["StackId"].should.equal(stack["StackId"]) stack_by_id["StackId"].should.equal(stack["StackId"])
stack_by_id["StackName"].should.equal("test_stack") stack_by_id["StackName"].should.equal("test_stack")
stack_by_id["StackStatus"].should.equal("UPDATE_COMPLETE") stack_by_id["StackStatus"].should.equal("UPDATE_COMPLETE")
stack_by_id["RoleARN"].should.equal("arn:aws:iam::{}:role/moto".format(ACCOUNT_ID)) stack_by_id["RoleARN"].should.equal(f"arn:aws:iam::{ACCOUNT_ID}:role/moto")
stack_by_id["Tags"].should.equal([{"Key": "foo", "Value": "baz"}]) stack_by_id["Tags"].should.equal([{"Key": "foo", "Value": "baz"}])
# Verify the updated template is persisted # Verify the updated template is persisted
@ -1937,9 +1935,7 @@ def test_update_stack_when_rolled_back():
err = ex.value.response["Error"] err = ex.value.response["Error"]
err.should.have.key("Code").being.equal("ValidationError") err.should.have.key("Code").being.equal("ValidationError")
err.should.have.key("Message").match( err.should.have.key("Message").match(
r"Stack:arn:aws:cloudformation:us-east-1:{}:stack/test_stack/[a-z0-9-]+ is in ROLLBACK_COMPLETE state and can not be updated.".format( rf"Stack:arn:aws:cloudformation:us-east-1:{ACCOUNT_ID}:stack/test_stack/[a-z0-9-]+ is in ROLLBACK_COMPLETE state and can not be updated."
ACCOUNT_ID
)
) )
@ -2121,7 +2117,7 @@ def test_list_exports_with_token():
# Add index to ensure name is unique # Add index to ensure name is unique
dummy_output_template["Outputs"]["StackVPC"]["Export"]["Name"] += str(i) dummy_output_template["Outputs"]["StackVPC"]["Export"]["Name"] += str(i)
cf.create_stack( cf.create_stack(
StackName="test_stack_{}".format(i), StackName=f"test_stack_{i}",
TemplateBody=json.dumps(dummy_output_template), TemplateBody=json.dumps(dummy_output_template),
) )
exports = cf.list_exports() exports = cf.list_exports()

View File

@ -52,7 +52,7 @@ def test_fn_join_boto3():
stack = cf.describe_stacks()["Stacks"][0] stack = cf.describe_stacks()["Stacks"][0]
fn_join_output = stack["Outputs"][0] fn_join_output = stack["Outputs"][0]
fn_join_output["OutputValue"].should.equal("test eip:{0}".format(eip["PublicIp"])) fn_join_output["OutputValue"].should.equal(f"test eip:{eip['PublicIp']}")
@mock_cloudformation @mock_cloudformation
@ -301,9 +301,7 @@ def lambda_handler(event, context):
[ [
{ {
"Version": 1, "Version": 1,
"LayerVersionArn": "arn:aws:lambda:{}:{}:layer:{}:1".format( "LayerVersionArn": f"arn:aws:lambda:{region}:{ACCOUNT_ID}:layer:{layer_name}:1",
region, ACCOUNT_ID, layer_name
),
"CompatibleRuntimes": ["python2.7", "python3.6"], "CompatibleRuntimes": ["python2.7", "python3.6"],
"Description": "Test Layer", "Description": "Test Layer",
"LicenseInfo": "MIT", "LicenseInfo": "MIT",
@ -424,7 +422,7 @@ def test_stack_spot_fleet():
"Type": "AWS::EC2::SpotFleet", "Type": "AWS::EC2::SpotFleet",
"Properties": { "Properties": {
"SpotFleetRequestConfigData": { "SpotFleetRequestConfigData": {
"IamFleetRole": "arn:aws:iam::{}:role/fleet".format(ACCOUNT_ID), "IamFleetRole": f"arn:aws:iam::{ACCOUNT_ID}:role/fleet",
"SpotPrice": "0.12", "SpotPrice": "0.12",
"TargetCapacity": 6, "TargetCapacity": 6,
"AllocationStrategy": "diversified", "AllocationStrategy": "diversified",
@ -445,9 +443,7 @@ def test_stack_spot_fleet():
"SecurityGroups": [{"GroupId": "sg-123"}], "SecurityGroups": [{"GroupId": "sg-123"}],
"SubnetId": subnet_id, "SubnetId": subnet_id,
"IamInstanceProfile": { "IamInstanceProfile": {
"Arn": "arn:aws:iam::{}:role/fleet".format( "Arn": f"arn:aws:iam::{ACCOUNT_ID}:role/fleet"
ACCOUNT_ID
)
}, },
"WeightedCapacity": "4", "WeightedCapacity": "4",
"SpotPrice": "10.00", "SpotPrice": "10.00",
@ -480,7 +476,7 @@ def test_stack_spot_fleet():
spot_fleet_config["SpotPrice"].should.equal("0.12") spot_fleet_config["SpotPrice"].should.equal("0.12")
spot_fleet_config["TargetCapacity"].should.equal(6) spot_fleet_config["TargetCapacity"].should.equal(6)
spot_fleet_config["IamFleetRole"].should.equal( spot_fleet_config["IamFleetRole"].should.equal(
"arn:aws:iam::{}:role/fleet".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:role/fleet"
) )
spot_fleet_config["AllocationStrategy"].should.equal("diversified") spot_fleet_config["AllocationStrategy"].should.equal("diversified")
spot_fleet_config["FulfilledCapacity"].should.equal(6.0) spot_fleet_config["FulfilledCapacity"].should.equal(6.0)
@ -513,7 +509,7 @@ def test_stack_spot_fleet_should_figure_out_default_price():
"Type": "AWS::EC2::SpotFleet", "Type": "AWS::EC2::SpotFleet",
"Properties": { "Properties": {
"SpotFleetRequestConfigData": { "SpotFleetRequestConfigData": {
"IamFleetRole": "arn:aws:iam::{}:role/fleet".format(ACCOUNT_ID), "IamFleetRole": f"arn:aws:iam::{ACCOUNT_ID}:role/fleet",
"TargetCapacity": 6, "TargetCapacity": 6,
"AllocationStrategy": "diversified", "AllocationStrategy": "diversified",
"LaunchSpecifications": [ "LaunchSpecifications": [
@ -532,9 +528,7 @@ def test_stack_spot_fleet_should_figure_out_default_price():
"SecurityGroups": [{"GroupId": "sg-123"}], "SecurityGroups": [{"GroupId": "sg-123"}],
"SubnetId": subnet_id, "SubnetId": subnet_id,
"IamInstanceProfile": { "IamInstanceProfile": {
"Arn": "arn:aws:iam::{}:role/fleet".format( "Arn": f"arn:aws:iam::{ACCOUNT_ID}:role/fleet"
ACCOUNT_ID
)
}, },
"WeightedCapacity": "4", "WeightedCapacity": "4",
}, },

View File

@ -19,8 +19,8 @@ def test_create_alarm():
Dimensions=[{"Name": "InstanceId", "Value": "i-0123457"}], Dimensions=[{"Name": "InstanceId", "Value": "i-0123457"}],
EvaluationPeriods=5, EvaluationPeriods=5,
InsufficientDataActions=["arn:insufficient"], InsufficientDataActions=["arn:insufficient"],
Namespace="{0}_namespace".format(name), Namespace=f"{name}_namespace",
MetricName="{0}_metric".format(name), MetricName=f"{name}_metric",
OKActions=["arn:ok"], OKActions=["arn:ok"],
Period=60, Period=60,
Statistic="Average", Statistic="Average",
@ -48,7 +48,7 @@ def test_create_alarm():
alarm.should.have.key("InsufficientDataActions").equal(["arn:insufficient"]) alarm.should.have.key("InsufficientDataActions").equal(["arn:insufficient"])
alarm.should.have.key("Unit").equal("Seconds") alarm.should.have.key("Unit").equal("Seconds")
alarm.should.have.key("AlarmArn").equal( alarm.should.have.key("AlarmArn").equal(
"arn:aws:cloudwatch:{}:{}:alarm:{}".format(region, ACCOUNT_ID, name) f"arn:aws:cloudwatch:{region}:{ACCOUNT_ID}:alarm:{name}"
) )
# default value should be True # default value should be True
alarm.should.have.key("ActionsEnabled").equal(True) alarm.should.have.key("ActionsEnabled").equal(True)
@ -70,8 +70,8 @@ def test_delete_alarm():
Dimensions=[{"Name": "InstanceId", "Value": "i-0123457"}], Dimensions=[{"Name": "InstanceId", "Value": "i-0123457"}],
EvaluationPeriods=5, EvaluationPeriods=5,
InsufficientDataActions=["arn:insufficient"], InsufficientDataActions=["arn:insufficient"],
Namespace="{0}_namespace".format(name), Namespace=f"{name}_namespace",
MetricName="{0}_metric".format(name), MetricName=f"{name}_metric",
OKActions=["arn:ok"], OKActions=["arn:ok"],
Period=60, Period=60,
Statistic="Average", Statistic="Average",

View File

@ -27,9 +27,7 @@ def test_codebuild_create_project_s3_artifacts():
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
response = client.create_project( response = client.create_project(
@ -78,9 +76,7 @@ def test_codebuild_create_project_no_artifacts():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
response = client.create_project( response = client.create_project(
@ -127,9 +123,7 @@ def test_codebuild_create_project_with_invalid_name():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
with pytest.raises(client.exceptions.from_code("InvalidInputException")) as err: with pytest.raises(client.exceptions.from_code("InvalidInputException")) as err:
@ -160,9 +154,7 @@ def test_codebuild_create_project_with_invalid_name_length():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
with pytest.raises(client.exceptions.from_code("InvalidInputException")) as err: with pytest.raises(client.exceptions.from_code("InvalidInputException")) as err:
@ -192,9 +184,7 @@ def test_codebuild_create_project_when_exists():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
client.create_project( client.create_project(
@ -234,9 +224,7 @@ def test_codebuild_list_projects():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
client.create_project( client.create_project(
@ -275,9 +263,7 @@ def test_codebuild_list_builds_for_project_no_history():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
client.create_project( client.create_project(
@ -309,9 +295,7 @@ def test_codebuild_list_builds_for_project_with_history():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
client.create_project( client.create_project(
@ -392,9 +376,7 @@ def test_codebuild_start_build_no_overrides():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
client.create_project( client.create_project(
@ -426,9 +408,7 @@ def test_codebuild_start_build_multiple_times():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
client.create_project( client.create_project(
@ -463,9 +443,7 @@ def test_codebuild_start_build_with_overrides():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
branch_override = "fix/testing" branch_override = "fix/testing"
@ -504,9 +482,7 @@ def test_codebuild_batch_get_builds_1_project():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
client.create_project( client.create_project(
@ -543,9 +519,7 @@ def test_codebuild_batch_get_builds_2_projects():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
client.create_project( client.create_project(
@ -584,7 +558,7 @@ def test_codebuild_batch_get_builds_invalid_build_id():
client = boto3.client("codebuild", region_name="eu-central-1") client = boto3.client("codebuild", region_name="eu-central-1")
with pytest.raises(client.exceptions.InvalidInputException) as err: with pytest.raises(client.exceptions.InvalidInputException) as err:
client.batch_get_builds(ids=["some_project{}".format(uuid1())]) client.batch_get_builds(ids=[f"some_project{uuid1()}"])
err.value.response["Error"]["Code"].should.equal("InvalidInputException") err.value.response["Error"]["Code"].should.equal("InvalidInputException")
@ -613,9 +587,7 @@ def test_codebuild_delete_project():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
client.create_project( client.create_project(
@ -653,9 +625,7 @@ def test_codebuild_stop_build():
environment["image"] = "contents_not_validated" environment["image"] = "contents_not_validated"
environment["computeType"] = "BUILD_GENERAL1_SMALL" environment["computeType"] = "BUILD_GENERAL1_SMALL"
service_role = ( service_role = (
"arn:aws:iam::{0}:role/service-role/my-codebuild-service-role".format( f"arn:aws:iam::{ACCOUNT_ID}:role/service-role/my-codebuild-service-role"
ACCOUNT_ID
)
) )
client.create_project( client.create_project(
@ -678,7 +648,7 @@ def test_codebuild_stop_build_no_build():
client = boto3.client("codebuild", region_name="eu-central-1") client = boto3.client("codebuild", region_name="eu-central-1")
with pytest.raises(client.exceptions.ResourceNotFoundException) as err: with pytest.raises(client.exceptions.ResourceNotFoundException) as err:
client.stop_build(id="some_project:{0}".format(uuid1())) client.stop_build(id=f"some_project:{uuid1()}")
err.value.response["Error"]["Code"].should.equal("ResourceNotFoundException") err.value.response["Error"]["Code"].should.equal("ResourceNotFoundException")
@ -687,5 +657,5 @@ def test_codebuild_stop_build_bad_uid():
client = boto3.client("codebuild", region_name="eu-central-1") client = boto3.client("codebuild", region_name="eu-central-1")
with pytest.raises(client.exceptions.InvalidInputException) as err: with pytest.raises(client.exceptions.InvalidInputException) as err:
client.stop_build(id="some_project{0}".format(uuid1())) client.stop_build(id=f"some_project{uuid1()}")
err.value.response["Error"]["Code"].should.equal("InvalidInputException") err.value.response["Error"]["Code"].should.equal("InvalidInputException")

View File

@ -24,19 +24,13 @@ def test_create_repository():
"description repo one" "description repo one"
) )
response["repositoryMetadata"]["cloneUrlSsh"].should.equal( response["repositoryMetadata"]["cloneUrlSsh"].should.equal(
"ssh://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( "ssh://git-codecommit.eu-central-1.amazonaws.com/v1/repos/repository_one"
"eu-central-1", "repository_one"
)
) )
response["repositoryMetadata"]["cloneUrlHttp"].should.equal( response["repositoryMetadata"]["cloneUrlHttp"].should.equal(
"https://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( "https://git-codecommit.eu-central-1.amazonaws.com/v1/repos/repository_one"
"eu-central-1", "repository_one"
)
) )
response["repositoryMetadata"]["Arn"].should.equal( response["repositoryMetadata"]["Arn"].should.equal(
"arn:aws:codecommit:{0}:{1}:{2}".format( f"arn:aws:codecommit:eu-central-1:{ACCOUNT_ID}:repository_one"
"eu-central-1", ACCOUNT_ID, "repository_one"
)
) )
response["repositoryMetadata"]["accountId"].should.equal(ACCOUNT_ID) response["repositoryMetadata"]["accountId"].should.equal(ACCOUNT_ID)
@ -58,19 +52,13 @@ def test_create_repository_without_description():
response["repositoryMetadata"]["lastModifiedDate"].should_not.be.none response["repositoryMetadata"]["lastModifiedDate"].should_not.be.none
response["repositoryMetadata"]["repositoryId"].should_not.be.empty response["repositoryMetadata"]["repositoryId"].should_not.be.empty
response["repositoryMetadata"]["cloneUrlSsh"].should.equal( response["repositoryMetadata"]["cloneUrlSsh"].should.equal(
"ssh://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( "ssh://git-codecommit.eu-central-1.amazonaws.com/v1/repos/repository_two"
"eu-central-1", "repository_two"
)
) )
response["repositoryMetadata"]["cloneUrlHttp"].should.equal( response["repositoryMetadata"]["cloneUrlHttp"].should.equal(
"https://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( "https://git-codecommit.eu-central-1.amazonaws.com/v1/repos/repository_two"
"eu-central-1", "repository_two"
)
) )
response["repositoryMetadata"]["Arn"].should.equal( response["repositoryMetadata"]["Arn"].should.equal(
"arn:aws:codecommit:{0}:{1}:{2}".format( f"arn:aws:codecommit:eu-central-1:{ACCOUNT_ID}:repository_two"
"eu-central-1", ACCOUNT_ID, "repository_two"
)
) )
response["repositoryMetadata"]["accountId"].should.equal(ACCOUNT_ID) response["repositoryMetadata"]["accountId"].should.equal(ACCOUNT_ID)
@ -91,7 +79,7 @@ def test_create_repository_repository_name_exists():
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("RepositoryNameExistsException") ex.response["Error"]["Code"].should.contain("RepositoryNameExistsException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(
"Repository named {0} already exists".format("repository_two") "Repository named repository_two already exists"
) )
@ -138,19 +126,13 @@ def test_get_repository():
"description repo one" "description repo one"
) )
response.get("repositoryMetadata").get("cloneUrlSsh").should.equal( response.get("repositoryMetadata").get("cloneUrlSsh").should.equal(
"ssh://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( "ssh://git-codecommit.eu-central-1.amazonaws.com/v1/repos/repository_one"
"eu-central-1", "repository_one"
)
) )
response.get("repositoryMetadata").get("cloneUrlHttp").should.equal( response.get("repositoryMetadata").get("cloneUrlHttp").should.equal(
"https://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( "https://git-codecommit.eu-central-1.amazonaws.com/v1/repos/repository_one"
"eu-central-1", "repository_one"
)
) )
response.get("repositoryMetadata").get("Arn").should.equal( response.get("repositoryMetadata").get("Arn").should.equal(
"arn:aws:codecommit:{0}:{1}:{2}".format( f"arn:aws:codecommit:eu-central-1:{ACCOUNT_ID}:repository_one"
"eu-central-1", ACCOUNT_ID, "repository_one"
)
) )
response.get("repositoryMetadata").get("accountId").should.equal(ACCOUNT_ID) response.get("repositoryMetadata").get("accountId").should.equal(ACCOUNT_ID)
@ -162,9 +144,7 @@ def test_get_repository():
ex.operation_name.should.equal("GetRepository") ex.operation_name.should.equal("GetRepository")
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("RepositoryDoesNotExistException") ex.response["Error"]["Code"].should.contain("RepositoryDoesNotExistException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(f"{repository_name} does not exist")
"{0} does not exist".format(repository_name)
)
@mock_codecommit @mock_codecommit

View File

@ -459,7 +459,7 @@ def test_list_tags_for_resource():
create_basic_codepipeline(client, name) create_basic_codepipeline(client, name)
response = client.list_tags_for_resource( response = client.list_tags_for_resource(
resourceArn="arn:aws:codepipeline:us-east-1:123456789012:{}".format(name) resourceArn=f"arn:aws:codepipeline:us-east-1:123456789012:{name}"
) )
response["tags"].should.equal([{"key": "key", "value": "value"}]) response["tags"].should.equal([{"key": "key", "value": "value"}])
@ -488,12 +488,12 @@ def test_tag_resource():
create_basic_codepipeline(client, name) create_basic_codepipeline(client, name)
client.tag_resource( client.tag_resource(
resourceArn="arn:aws:codepipeline:us-east-1:123456789012:{}".format(name), resourceArn=f"arn:aws:codepipeline:us-east-1:123456789012:{name}",
tags=[{"key": "key-2", "value": "value-2"}], tags=[{"key": "key-2", "value": "value-2"}],
) )
response = client.list_tags_for_resource( response = client.list_tags_for_resource(
resourceArn="arn:aws:codepipeline:us-east-1:123456789012:{}".format(name) resourceArn=f"arn:aws:codepipeline:us-east-1:123456789012:{name}"
) )
response["tags"].should.equal( response["tags"].should.equal(
[{"key": "key", "value": "value"}, {"key": "key-2", "value": "value-2"}] [{"key": "key", "value": "value"}, {"key": "key-2", "value": "value-2"}]
@ -521,7 +521,7 @@ def test_tag_resource_errors():
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.tag_resource( client.tag_resource(
resourceArn="arn:aws:codepipeline:us-east-1:123456789012:{}".format(name), resourceArn=f"arn:aws:codepipeline:us-east-1:123456789012:{name}",
tags=[{"key": "aws:key", "value": "value"}], tags=[{"key": "aws:key", "value": "value"}],
) )
ex = e.value ex = e.value
@ -536,20 +536,15 @@ def test_tag_resource_errors():
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.tag_resource( client.tag_resource(
resourceArn="arn:aws:codepipeline:us-east-1:123456789012:{}".format(name), resourceArn=f"arn:aws:codepipeline:us-east-1:123456789012:{name}",
tags=[ tags=[{"key": f"key-{i}", "value": f"value-{i}"} for i in range(50)],
{"key": "key-{}".format(i), "value": "value-{}".format(i)}
for i in range(50)
],
) )
ex = e.value ex = e.value
ex.operation_name.should.equal("TagResource") ex.operation_name.should.equal("TagResource")
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("TooManyTagsException") ex.response["Error"]["Code"].should.contain("TooManyTagsException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(
"Tag limit exceeded for resource [arn:aws:codepipeline:us-east-1:123456789012:{}].".format( f"Tag limit exceeded for resource [arn:aws:codepipeline:us-east-1:123456789012:{name}]."
name
)
) )
@ -560,23 +555,23 @@ def test_untag_resource():
create_basic_codepipeline(client, name) create_basic_codepipeline(client, name)
response = client.list_tags_for_resource( response = client.list_tags_for_resource(
resourceArn="arn:aws:codepipeline:us-east-1:123456789012:{}".format(name) resourceArn=f"arn:aws:codepipeline:us-east-1:123456789012:{name}"
) )
response["tags"].should.equal([{"key": "key", "value": "value"}]) response["tags"].should.equal([{"key": "key", "value": "value"}])
client.untag_resource( client.untag_resource(
resourceArn="arn:aws:codepipeline:us-east-1:123456789012:{}".format(name), resourceArn=f"arn:aws:codepipeline:us-east-1:123456789012:{name}",
tagKeys=["key"], tagKeys=["key"],
) )
response = client.list_tags_for_resource( response = client.list_tags_for_resource(
resourceArn="arn:aws:codepipeline:us-east-1:123456789012:{}".format(name) resourceArn=f"arn:aws:codepipeline:us-east-1:123456789012:{name}"
) )
response["tags"].should.have.length_of(0) response["tags"].should.have.length_of(0)
# removing a not existing tag should raise no exception # removing a not existing tag should raise no exception
client.untag_resource( client.untag_resource(
resourceArn="arn:aws:codepipeline:us-east-1:123456789012:{}".format(name), resourceArn=f"arn:aws:codepipeline:us-east-1:123456789012:{name}",
tagKeys=["key"], tagKeys=["key"],
) )

View File

@ -44,9 +44,7 @@ def test_create_identity_pool():
AllowUnauthenticatedIdentities=False, AllowUnauthenticatedIdentities=False,
SupportedLoginProviders={"graph.facebook.com": "123456789012345"}, SupportedLoginProviders={"graph.facebook.com": "123456789012345"},
DeveloperProviderName="devname", DeveloperProviderName="devname",
OpenIdConnectProviderARNs=[ OpenIdConnectProviderARNs=[f"arn:aws:rds:eu-west-2:{ACCOUNT_ID}:db:mysql-db"],
"arn:aws:rds:eu-west-2:{}:db:mysql-db".format(ACCOUNT_ID)
],
CognitoIdentityProviders=[ CognitoIdentityProviders=[
{ {
"ProviderName": "testprovider", "ProviderName": "testprovider",
@ -54,7 +52,7 @@ def test_create_identity_pool():
"ServerSideTokenCheck": True, "ServerSideTokenCheck": True,
} }
], ],
SamlProviderARNs=["arn:aws:rds:eu-west-2:{}:db:mysql-db".format(ACCOUNT_ID)], SamlProviderARNs=[f"arn:aws:rds:eu-west-2:{ACCOUNT_ID}:db:mysql-db"],
) )
assert result["IdentityPoolId"] != "" assert result["IdentityPoolId"] != ""
@ -68,9 +66,7 @@ def test_describe_identity_pool():
AllowUnauthenticatedIdentities=False, AllowUnauthenticatedIdentities=False,
SupportedLoginProviders={"graph.facebook.com": "123456789012345"}, SupportedLoginProviders={"graph.facebook.com": "123456789012345"},
DeveloperProviderName="devname", DeveloperProviderName="devname",
OpenIdConnectProviderARNs=[ OpenIdConnectProviderARNs=[f"arn:aws:rds:eu-west-2:{ACCOUNT_ID}:db:mysql-db"],
"arn:aws:rds:eu-west-2:{}:db:mysql-db".format(ACCOUNT_ID)
],
CognitoIdentityProviders=[ CognitoIdentityProviders=[
{ {
"ProviderName": "testprovider", "ProviderName": "testprovider",
@ -78,7 +74,7 @@ def test_describe_identity_pool():
"ServerSideTokenCheck": True, "ServerSideTokenCheck": True,
} }
], ],
SamlProviderARNs=["arn:aws:rds:eu-west-2:{}:db:mysql-db".format(ACCOUNT_ID)], SamlProviderARNs=[f"arn:aws:rds:eu-west-2:{ACCOUNT_ID}:db:mysql-db"],
) )
result = conn.describe_identity_pool(IdentityPoolId=res["IdentityPoolId"]) result = conn.describe_identity_pool(IdentityPoolId=res["IdentityPoolId"])

View File

@ -35,9 +35,7 @@ def test_create_user_pool():
result["UserPool"]["Id"].should.match(r"[\w-]+_[0-9a-zA-Z]+") result["UserPool"]["Id"].should.match(r"[\w-]+_[0-9a-zA-Z]+")
result["UserPool"]["Arn"].should.equal( result["UserPool"]["Arn"].should.equal(
"arn:aws:cognito-idp:us-west-2:{}:userpool/{}".format( f"arn:aws:cognito-idp:us-west-2:{ACCOUNT_ID}:userpool/{result['UserPool']['Id']}"
ACCOUNT_ID, result["UserPool"]["Id"]
)
) )
result["UserPool"]["Name"].should.equal(name) result["UserPool"]["Name"].should.equal(name)
result["UserPool"]["LambdaConfig"]["PreSignUp"].should.equal(value) result["UserPool"]["LambdaConfig"]["PreSignUp"].should.equal(value)
@ -847,9 +845,7 @@ def test_create_user_pool_domain_custom_domain_config():
domain = str(uuid.uuid4()) domain = str(uuid.uuid4())
custom_domain_config = { custom_domain_config = {
"CertificateArn": "arn:aws:acm:us-east-1:{}:certificate/123456789012".format( "CertificateArn": f"arn:aws:acm:us-east-1:{ACCOUNT_ID}:certificate/123456789012"
ACCOUNT_ID
)
} }
user_pool_id = conn.create_user_pool(PoolName=str(uuid.uuid4()))["UserPool"]["Id"] user_pool_id = conn.create_user_pool(PoolName=str(uuid.uuid4()))["UserPool"]["Id"]
result = conn.create_user_pool_domain( result = conn.create_user_pool_domain(
@ -896,9 +892,7 @@ def test_update_user_pool_domain():
domain = str(uuid.uuid4()) domain = str(uuid.uuid4())
custom_domain_config = { custom_domain_config = {
"CertificateArn": "arn:aws:acm:us-east-1:{}:certificate/123456789012".format( "CertificateArn": f"arn:aws:acm:us-east-1:{ACCOUNT_ID}:certificate/123456789012"
ACCOUNT_ID
)
} }
user_pool_id = conn.create_user_pool(PoolName=str(uuid.uuid4()))["UserPool"]["Id"] user_pool_id = conn.create_user_pool(PoolName=str(uuid.uuid4()))["UserPool"]["Id"]
conn.create_user_pool_domain(UserPoolId=user_pool_id, Domain=domain) conn.create_user_pool_domain(UserPoolId=user_pool_id, Domain=domain)
@ -2395,7 +2389,7 @@ def test_list_users_inherent_attributes():
for name, filter_value, response_field, response_field_expected_value in filters: for name, filter_value, response_field, response_field_expected_value in filters:
result = conn.list_users( result = conn.list_users(
UserPoolId=user_pool_id, Filter='{}="{}"'.format(name, filter_value) UserPoolId=user_pool_id, Filter=f'{name}="{filter_value}"'
) )
result["Users"].should.have.length_of(1) result["Users"].should.have.length_of(1)
result["Users"][0][response_field].should.equal(response_field_expected_value) result["Users"][0][response_field].should.equal(response_field_expected_value)
@ -2839,8 +2833,8 @@ def test_token_legitimacy():
access_token = outputs["access_token"] access_token = outputs["access_token"]
client_id = outputs["client_id"] client_id = outputs["client_id"]
username = outputs["username"] username = outputs["username"]
issuer = "https://cognito-idp.us-west-2.amazonaws.com/{}".format( issuer = (
outputs["user_pool_id"] f"https://cognito-idp.us-west-2.amazonaws.com/{outputs['user_pool_id']}"
) )
id_claims = json.loads(jws.verify(id_token, json_web_key, "RS256")) id_claims = json.loads(jws.verify(id_token, json_web_key, "RS256"))
id_claims["iss"].should.equal(issuer) id_claims["iss"].should.equal(issuer)
@ -3451,7 +3445,7 @@ def test_resource_server():
ex.value.operation_name.should.equal("CreateResourceServer") ex.value.operation_name.should.equal("CreateResourceServer")
ex.value.response["Error"]["Code"].should.equal("InvalidParameterException") ex.value.response["Error"]["Code"].should.equal("InvalidParameterException")
ex.value.response["Error"]["Message"].should.equal( ex.value.response["Error"]["Message"].should.equal(
"%s already exists in user pool %s." % (identifier, user_pool_id) f"{identifier} already exists in user pool {user_pool_id}."
) )
ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
@ -4308,8 +4302,6 @@ def verify_kid_header(token):
def fetch_public_keys(): def fetch_public_keys():
keys_url = "https://cognito-idp.{}.amazonaws.com/{}/.well-known/jwks.json".format( keys_url = "https://cognito-idp.us-west-2.amazonaws.com/someuserpoolid/.well-known/jwks.json"
"us-west-2", "someuserpoolid"
)
response = requests.get(keys_url).json() response = requests.get(keys_url).json()
return response["keys"] return response["keys"]

View File

@ -289,9 +289,7 @@ def test_put_configuration_aggregator():
AccountAggregationSources=[ AccountAggregationSources=[
{"AccountIds": ["012345678910"], "AllAwsRegions": True} {"AccountIds": ["012345678910"], "AllAwsRegions": True}
], ],
Tags=[ Tags=[{"Key": f"{x}", "Value": f"{x}"} for x in range(0, 51)],
{"Key": "{}".format(x), "Value": "{}".format(x)} for x in range(0, 51)
],
) )
assert ( assert (
"Member must have length less than or equal to 50" "Member must have length less than or equal to 50"
@ -399,9 +397,7 @@ def test_put_configuration_aggregator():
account_aggregation_source account_aggregation_source
] ]
assert ( assert (
"arn:aws:config:us-west-2:{}:config-aggregator/config-aggregator-".format( f"arn:aws:config:us-west-2:{ACCOUNT_ID}:config-aggregator/config-aggregator-"
ACCOUNT_ID
)
in result["ConfigurationAggregator"]["ConfigurationAggregatorArn"] in result["ConfigurationAggregator"]["ConfigurationAggregatorArn"]
) )
assert ( assert (
@ -455,7 +451,7 @@ def test_describe_configuration_aggregators():
# Make 10 config aggregators: # Make 10 config aggregators:
for x in range(0, 10): for x in range(0, 10):
client.put_configuration_aggregator( client.put_configuration_aggregator(
ConfigurationAggregatorName="testing{}".format(x), ConfigurationAggregatorName=f"testing{x}",
AccountAggregationSources=[ AccountAggregationSources=[
{"AccountIds": ["012345678910"], "AllAwsRegions": True} {"AccountIds": ["012345678910"], "AllAwsRegions": True}
], ],
@ -509,19 +505,19 @@ def test_describe_configuration_aggregators():
assert result["NextToken"] == "testing4" assert result["NextToken"] == "testing4"
assert [ assert [
agg["ConfigurationAggregatorName"] for agg in result["ConfigurationAggregators"] agg["ConfigurationAggregatorName"] for agg in result["ConfigurationAggregators"]
] == ["testing{}".format(x) for x in range(0, 4)] ] == [f"testing{x}" for x in range(0, 4)]
result = client.describe_configuration_aggregators(Limit=4, NextToken="testing4") result = client.describe_configuration_aggregators(Limit=4, NextToken="testing4")
assert len(result["ConfigurationAggregators"]) == 4 assert len(result["ConfigurationAggregators"]) == 4
assert result["NextToken"] == "testing8" assert result["NextToken"] == "testing8"
assert [ assert [
agg["ConfigurationAggregatorName"] for agg in result["ConfigurationAggregators"] agg["ConfigurationAggregatorName"] for agg in result["ConfigurationAggregators"]
] == ["testing{}".format(x) for x in range(4, 8)] ] == [f"testing{x}" for x in range(4, 8)]
result = client.describe_configuration_aggregators(Limit=4, NextToken="testing8") result = client.describe_configuration_aggregators(Limit=4, NextToken="testing8")
assert len(result["ConfigurationAggregators"]) == 2 assert len(result["ConfigurationAggregators"]) == 2
assert not result.get("NextToken") assert not result.get("NextToken")
assert [ assert [
agg["ConfigurationAggregatorName"] for agg in result["ConfigurationAggregators"] agg["ConfigurationAggregatorName"] for agg in result["ConfigurationAggregators"]
] == ["testing{}".format(x) for x in range(8, 10)] ] == [f"testing{x}" for x in range(8, 10)]
# Test Pagination with Filtering: # Test Pagination with Filtering:
result = client.describe_configuration_aggregators( result = client.describe_configuration_aggregators(
@ -560,9 +556,7 @@ def test_put_aggregation_authorization():
client.put_aggregation_authorization( client.put_aggregation_authorization(
AuthorizedAccountId="012345678910", AuthorizedAccountId="012345678910",
AuthorizedAwsRegion="us-west-2", AuthorizedAwsRegion="us-west-2",
Tags=[ Tags=[{"Key": f"{x}", "Value": f"{x}"} for x in range(0, 51)],
{"Key": "{}".format(x), "Value": "{}".format(x)} for x in range(0, 51)
],
) )
assert ( assert (
"Member must have length less than or equal to 50" "Member must have length less than or equal to 50"
@ -626,10 +620,9 @@ def test_put_aggregation_authorization():
Tags=[{"Key": "tag", "Value": "a"}], Tags=[{"Key": "tag", "Value": "a"}],
) )
assert result["AggregationAuthorization"][ assert (
"AggregationAuthorizationArn" result["AggregationAuthorization"]["AggregationAuthorizationArn"]
] == "arn:aws:config:us-west-2:{}:aggregation-authorization/012345678910/us-east-1".format( == f"arn:aws:config:us-west-2:{ACCOUNT_ID}:aggregation-authorization/012345678910/us-east-1"
ACCOUNT_ID
) )
assert result["AggregationAuthorization"]["AuthorizedAccountId"] == "012345678910" assert result["AggregationAuthorization"]["AuthorizedAccountId"] == "012345678910"
assert result["AggregationAuthorization"]["AuthorizedAwsRegion"] == "us-east-1" assert result["AggregationAuthorization"]["AuthorizedAwsRegion"] == "us-east-1"
@ -641,10 +634,9 @@ def test_put_aggregation_authorization():
result = client.put_aggregation_authorization( result = client.put_aggregation_authorization(
AuthorizedAccountId="012345678910", AuthorizedAwsRegion="us-east-1" AuthorizedAccountId="012345678910", AuthorizedAwsRegion="us-east-1"
) )
assert result["AggregationAuthorization"][ assert (
"AggregationAuthorizationArn" result["AggregationAuthorization"]["AggregationAuthorizationArn"]
] == "arn:aws:config:us-west-2:{}:aggregation-authorization/012345678910/us-east-1".format( == f"arn:aws:config:us-west-2:{ACCOUNT_ID}:aggregation-authorization/012345678910/us-east-1"
ACCOUNT_ID
) )
assert result["AggregationAuthorization"]["AuthorizedAccountId"] == "012345678910" assert result["AggregationAuthorization"]["AuthorizedAccountId"] == "012345678910"
assert result["AggregationAuthorization"]["AuthorizedAwsRegion"] == "us-east-1" assert result["AggregationAuthorization"]["AuthorizedAwsRegion"] == "us-east-1"
@ -661,7 +653,7 @@ def test_describe_aggregation_authorizations():
# Make 10 account authorizations: # Make 10 account authorizations:
for i in range(0, 10): for i in range(0, 10):
client.put_aggregation_authorization( client.put_aggregation_authorization(
AuthorizedAccountId="{}".format(str(i) * 12), AuthorizedAccountId=f"{str(i) * 12}",
AuthorizedAwsRegion="us-west-2", AuthorizedAwsRegion="us-west-2",
) )
@ -679,7 +671,7 @@ def test_describe_aggregation_authorizations():
assert result["NextToken"] == ("4" * 12) + "/us-west-2" assert result["NextToken"] == ("4" * 12) + "/us-west-2"
assert [ assert [
auth["AuthorizedAccountId"] for auth in result["AggregationAuthorizations"] auth["AuthorizedAccountId"] for auth in result["AggregationAuthorizations"]
] == ["{}".format(str(x) * 12) for x in range(0, 4)] ] == [f"{str(x) * 12}" for x in range(0, 4)]
result = client.describe_aggregation_authorizations( result = client.describe_aggregation_authorizations(
Limit=4, NextToken=("4" * 12) + "/us-west-2" Limit=4, NextToken=("4" * 12) + "/us-west-2"
@ -688,7 +680,7 @@ def test_describe_aggregation_authorizations():
assert result["NextToken"] == ("8" * 12) + "/us-west-2" assert result["NextToken"] == ("8" * 12) + "/us-west-2"
assert [ assert [
auth["AuthorizedAccountId"] for auth in result["AggregationAuthorizations"] auth["AuthorizedAccountId"] for auth in result["AggregationAuthorizations"]
] == ["{}".format(str(x) * 12) for x in range(4, 8)] ] == [f"{str(x) * 12}" for x in range(4, 8)]
result = client.describe_aggregation_authorizations( result = client.describe_aggregation_authorizations(
Limit=4, NextToken=("8" * 12) + "/us-west-2" Limit=4, NextToken=("8" * 12) + "/us-west-2"
@ -697,7 +689,7 @@ def test_describe_aggregation_authorizations():
assert not result.get("NextToken") assert not result.get("NextToken")
assert [ assert [
auth["AuthorizedAccountId"] for auth in result["AggregationAuthorizations"] auth["AuthorizedAccountId"] for auth in result["AggregationAuthorizations"]
] == ["{}".format(str(x) * 12) for x in range(8, 10)] ] == [f"{str(x) * 12}" for x in range(8, 10)]
# Test with an invalid filter: # Test with an invalid filter:
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
@ -1252,7 +1244,7 @@ def test_list_discovered_resource():
s3_client = boto3.client("s3", region_name="us-west-2") s3_client = boto3.client("s3", region_name="us-west-2")
for x in range(0, 10): for x in range(0, 10):
s3_client.create_bucket( s3_client.create_bucket(
Bucket="bucket{}".format(x), Bucket=f"bucket{x}",
CreateBucketConfiguration={"LocationConstraint": "us-west-2"}, CreateBucketConfiguration={"LocationConstraint": "us-west-2"},
) )
@ -1269,8 +1261,8 @@ def test_list_discovered_resource():
for x in range(0, 10): for x in range(0, 10):
assert result["resourceIdentifiers"][x] == { assert result["resourceIdentifiers"][x] == {
"resourceType": "AWS::S3::Bucket", "resourceType": "AWS::S3::Bucket",
"resourceId": "bucket{}".format(x), "resourceId": f"bucket{x}",
"resourceName": "bucket{}".format(x), "resourceName": f"bucket{x}",
} }
assert not result.get("nextToken") assert not result.get("nextToken")
@ -1330,7 +1322,7 @@ def test_list_discovered_resource():
) )
# More than 20 resourceIds: # More than 20 resourceIds:
resource_ids = ["{}".format(x) for x in range(0, 21)] resource_ids = [f"{x}" for x in range(0, 21)]
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
client.list_discovered_resources( client.list_discovered_resources(
resourceType="AWS::S3::Bucket", resourceIds=resource_ids resourceType="AWS::S3::Bucket", resourceIds=resource_ids
@ -1378,14 +1370,14 @@ def test_list_aggregate_discovered_resource():
s3_client = boto3.client("s3", region_name="us-west-2") s3_client = boto3.client("s3", region_name="us-west-2")
for x in range(0, 10): for x in range(0, 10):
s3_client.create_bucket( s3_client.create_bucket(
Bucket="bucket{}".format(x), Bucket=f"bucket{x}",
CreateBucketConfiguration={"LocationConstraint": "us-west-2"}, CreateBucketConfiguration={"LocationConstraint": "us-west-2"},
) )
s3_client_eu = boto3.client("s3", region_name="eu-west-1") s3_client_eu = boto3.client("s3", region_name="eu-west-1")
for x in range(10, 12): for x in range(10, 12):
s3_client_eu.create_bucket( s3_client_eu.create_bucket(
Bucket="eu-bucket{}".format(x), Bucket=f"eu-bucket{x}",
CreateBucketConfiguration={"LocationConstraint": "eu-west-1"}, CreateBucketConfiguration={"LocationConstraint": "eu-west-1"},
) )
@ -1398,16 +1390,16 @@ def test_list_aggregate_discovered_resource():
assert result["ResourceIdentifiers"][x] == { assert result["ResourceIdentifiers"][x] == {
"SourceAccountId": ACCOUNT_ID, "SourceAccountId": ACCOUNT_ID,
"ResourceType": "AWS::S3::Bucket", "ResourceType": "AWS::S3::Bucket",
"ResourceId": "bucket{}".format(x), "ResourceId": f"bucket{x}",
"ResourceName": "bucket{}".format(x), "ResourceName": f"bucket{x}",
"SourceRegion": "us-west-2", "SourceRegion": "us-west-2",
} }
for x in range(11, 12): for x in range(11, 12):
assert result["ResourceIdentifiers"][x] == { assert result["ResourceIdentifiers"][x] == {
"SourceAccountId": ACCOUNT_ID, "SourceAccountId": ACCOUNT_ID,
"ResourceType": "AWS::S3::Bucket", "ResourceType": "AWS::S3::Bucket",
"ResourceId": "eu-bucket{}".format(x), "ResourceId": f"eu-bucket{x}",
"ResourceName": "eu-bucket{}".format(x), "ResourceName": f"eu-bucket{x}",
"SourceRegion": "eu-west-1", "SourceRegion": "eu-west-1",
} }
@ -1519,7 +1511,7 @@ def test_get_resource_config_history():
s3_client = boto3.client("s3", region_name="us-west-2") s3_client = boto3.client("s3", region_name="us-west-2")
for x in range(0, 10): for x in range(0, 10):
s3_client.create_bucket( s3_client.create_bucket(
Bucket="bucket{}".format(x), Bucket=f"bucket{x}",
CreateBucketConfiguration={"LocationConstraint": "us-west-2"}, CreateBucketConfiguration={"LocationConstraint": "us-west-2"},
) )
@ -1580,18 +1572,18 @@ def test_batch_get_resource_config():
s3_client = boto3.client("s3", region_name="us-west-2") s3_client = boto3.client("s3", region_name="us-west-2")
for x in range(0, 10): for x in range(0, 10):
s3_client.create_bucket( s3_client.create_bucket(
Bucket="bucket{}".format(x), Bucket=f"bucket{x}",
CreateBucketConfiguration={"LocationConstraint": "us-west-2"}, CreateBucketConfiguration={"LocationConstraint": "us-west-2"},
) )
# Get them all: # Get them all:
keys = [ keys = [
{"resourceType": "AWS::S3::Bucket", "resourceId": "bucket{}".format(x)} {"resourceType": "AWS::S3::Bucket", "resourceId": f"bucket{x}"}
for x in range(0, 10) for x in range(0, 10)
] ]
result = client.batch_get_resource_config(resourceKeys=keys) result = client.batch_get_resource_config(resourceKeys=keys)
assert len(result["baseConfigurationItems"]) == 10 assert len(result["baseConfigurationItems"]) == 10
buckets_missing = ["bucket{}".format(x) for x in range(0, 10)] buckets_missing = [f"bucket{x}" for x in range(0, 10)]
for r in result["baseConfigurationItems"]: for r in result["baseConfigurationItems"]:
buckets_missing.remove(r["resourceName"]) buckets_missing.remove(r["resourceName"])
@ -1656,22 +1648,22 @@ def test_batch_get_aggregate_resource_config():
s3_client = boto3.client("s3", region_name="us-west-2") s3_client = boto3.client("s3", region_name="us-west-2")
for x in range(0, 10): for x in range(0, 10):
s3_client.create_bucket( s3_client.create_bucket(
Bucket="bucket{}".format(x), Bucket=f"bucket{x}",
CreateBucketConfiguration={"LocationConstraint": "us-west-2"}, CreateBucketConfiguration={"LocationConstraint": "us-west-2"},
) )
s3_client.put_bucket_tagging( s3_client.put_bucket_tagging(
Bucket="bucket{}".format(x), Bucket=f"bucket{x}",
Tagging={"TagSet": [{"Key": "Some", "Value": "Tag"}]}, Tagging={"TagSet": [{"Key": "Some", "Value": "Tag"}]},
) )
s3_client_eu = boto3.client("s3", region_name="eu-west-1") s3_client_eu = boto3.client("s3", region_name="eu-west-1")
for x in range(10, 12): for x in range(10, 12):
s3_client_eu.create_bucket( s3_client_eu.create_bucket(
Bucket="eu-bucket{}".format(x), Bucket=f"eu-bucket{x}",
CreateBucketConfiguration={"LocationConstraint": "eu-west-1"}, CreateBucketConfiguration={"LocationConstraint": "eu-west-1"},
) )
s3_client.put_bucket_tagging( s3_client.put_bucket_tagging(
Bucket="eu-bucket{}".format(x), Bucket=f"eu-bucket{x}",
Tagging={"TagSet": [{"Key": "Some", "Value": "Tag"}]}, Tagging={"TagSet": [{"Key": "Some", "Value": "Tag"}]},
) )
@ -1681,7 +1673,7 @@ def test_batch_get_aggregate_resource_config():
"SourceAccountId": ACCOUNT_ID, "SourceAccountId": ACCOUNT_ID,
"SourceRegion": "us-west-2", "SourceRegion": "us-west-2",
"ResourceType": "AWS::S3::Bucket", "ResourceType": "AWS::S3::Bucket",
"ResourceId": "bucket{}".format(x), "ResourceId": f"bucket{x}",
} }
for x in range(0, 10) for x in range(0, 10)
] ]
@ -1690,7 +1682,7 @@ def test_batch_get_aggregate_resource_config():
"SourceAccountId": ACCOUNT_ID, "SourceAccountId": ACCOUNT_ID,
"SourceRegion": "eu-west-1", "SourceRegion": "eu-west-1",
"ResourceType": "AWS::S3::Bucket", "ResourceType": "AWS::S3::Bucket",
"ResourceId": "eu-bucket{}".format(x), "ResourceId": f"eu-bucket{x}",
} }
for x in range(10, 12) for x in range(10, 12)
] ]
@ -1704,8 +1696,8 @@ def test_batch_get_aggregate_resource_config():
# Verify all the buckets are there: # Verify all the buckets are there:
assert len(result["BaseConfigurationItems"]) == 12 assert len(result["BaseConfigurationItems"]) == 12
missing_buckets = ["bucket{}".format(x) for x in range(0, 10)] + [ missing_buckets = [f"bucket{x}" for x in range(0, 10)] + [
"eu-bucket{}".format(x) for x in range(10, 12) f"eu-bucket{x}" for x in range(10, 12)
] ]
for r in result["BaseConfigurationItems"]: for r in result["BaseConfigurationItems"]:
@ -2063,7 +2055,7 @@ def test_get_organization_conformance_pack_detailed_status():
status = response["OrganizationConformancePackDetailedStatuses"][0] status = response["OrganizationConformancePackDetailedStatuses"][0]
status["AccountId"].should.equal(ACCOUNT_ID) status["AccountId"].should.equal(ACCOUNT_ID)
status["ConformancePackName"].should.equal( status["ConformancePackName"].should.equal(
"OrgConformsPack-{}".format(arn[arn.rfind("/") + 1 :]) f"OrgConformsPack-{arn[arn.rfind('/') + 1 :]}"
) )
status["Status"].should.equal("CREATE_SUCCESSFUL") status["Status"].should.equal("CREATE_SUCCESSFUL")
update_time = status["LastUpdateTime"] update_time = status["LastUpdateTime"]
@ -2085,7 +2077,7 @@ def test_get_organization_conformance_pack_detailed_status():
status = response["OrganizationConformancePackDetailedStatuses"][0] status = response["OrganizationConformancePackDetailedStatuses"][0]
status["AccountId"].should.equal(ACCOUNT_ID) status["AccountId"].should.equal(ACCOUNT_ID)
status["ConformancePackName"].should.equal( status["ConformancePackName"].should.equal(
"OrgConformsPack-{}".format(arn[arn.rfind("/") + 1 :]) f"OrgConformsPack-{arn[arn.rfind('/') + 1 :]}"
) )
status["Status"].should.equal("UPDATE_SUCCESSFUL") status["Status"].should.equal("UPDATE_SUCCESSFUL")
status["LastUpdateTime"].should.be.greater_than(update_time) status["LastUpdateTime"].should.be.greater_than(update_time)

View File

@ -258,11 +258,7 @@ def test_access_denied_with_no_policy():
ex.value.response["Error"]["Code"].should.equal("AccessDenied") ex.value.response["Error"]["Code"].should.equal("AccessDenied")
ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403) ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403)
ex.value.response["Error"]["Message"].should.equal( ex.value.response["Error"]["Message"].should.equal(
"User: arn:aws:iam::{account_id}:user/{user_name} is not authorized to perform: {operation}".format( f"User: arn:aws:iam::{ACCOUNT_ID}:user/{user_name} is not authorized to perform: ec2:DescribeInstances"
account_id=ACCOUNT_ID,
user_name=user_name,
operation="ec2:DescribeInstances",
)
) )
@ -288,11 +284,7 @@ def test_access_denied_with_not_allowing_policy():
ex.value.response["Error"]["Code"].should.equal("AccessDenied") ex.value.response["Error"]["Code"].should.equal("AccessDenied")
ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403) ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403)
ex.value.response["Error"]["Message"].should.equal( ex.value.response["Error"]["Message"].should.equal(
"User: arn:aws:iam::{account_id}:user/{user_name} is not authorized to perform: {operation}".format( f"User: arn:aws:iam::{ACCOUNT_ID}:user/{user_name} is not authorized to perform: ec2:DescribeInstances"
account_id=ACCOUNT_ID,
user_name=user_name,
operation="ec2:DescribeInstances",
)
) )
@ -324,9 +316,7 @@ def test_access_denied_for_run_instances():
ex.value.response["Error"]["Code"].should.equal("AccessDenied") ex.value.response["Error"]["Code"].should.equal("AccessDenied")
ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403) ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403)
ex.value.response["Error"]["Message"].should.equal( ex.value.response["Error"]["Message"].should.equal(
"User: arn:aws:iam::{account_id}:user/{user_name} is not authorized to perform: {operation}".format( f"User: arn:aws:iam::{ACCOUNT_ID}:user/{user_name} is not authorized to perform: ec2:RunInstances"
account_id=ACCOUNT_ID, user_name=user_name, operation="ec2:RunInstances"
)
) )
@ -355,9 +345,7 @@ def test_access_denied_with_denying_policy():
ex.value.response["Error"]["Code"].should.equal("AccessDenied") ex.value.response["Error"]["Code"].should.equal("AccessDenied")
ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403) ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403)
ex.value.response["Error"]["Message"].should.equal( ex.value.response["Error"]["Message"].should.equal(
"User: arn:aws:iam::{account_id}:user/{user_name} is not authorized to perform: {operation}".format( f"User: arn:aws:iam::{ACCOUNT_ID}:user/{user_name} is not authorized to perform: ec2:CreateVpc"
account_id=ACCOUNT_ID, user_name=user_name, operation="ec2:CreateVpc"
)
) )
@ -535,9 +523,7 @@ def test_access_denied_with_many_irrelevant_policies():
ex.value.response["Error"]["Code"].should.equal("AccessDenied") ex.value.response["Error"]["Code"].should.equal("AccessDenied")
ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403) ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403)
ex.value.response["Error"]["Message"].should.equal( ex.value.response["Error"]["Message"].should.equal(
"User: arn:aws:iam::{account_id}:user/{user_name} is not authorized to perform: {operation}".format( f"User: arn:aws:iam::{ACCOUNT_ID}:user/{user_name} is not authorized to perform: ec2:CreateKeyPair"
account_id=ACCOUNT_ID, user_name=user_name, operation="ec2:CreateKeyPair"
)
) )
@ -552,9 +538,7 @@ def test_allowed_with_temporary_credentials():
"Version": "2012-10-17", "Version": "2012-10-17",
"Statement": { "Statement": {
"Effect": "Allow", "Effect": "Allow",
"Principal": { "Principal": {"AWS": f"arn:aws:iam::{ACCOUNT_ID}:root"},
"AWS": "arn:aws:iam::{account_id}:root".format(account_id=ACCOUNT_ID)
},
"Action": "sts:AssumeRole", "Action": "sts:AssumeRole",
}, },
} }
@ -607,9 +591,7 @@ def test_access_denied_with_temporary_credentials():
"Version": "2012-10-17", "Version": "2012-10-17",
"Statement": { "Statement": {
"Effect": "Allow", "Effect": "Allow",
"Principal": { "Principal": {"AWS": f"arn:aws:iam::{ACCOUNT_ID}:root"},
"AWS": "arn:aws:iam::{account_id}:root".format(account_id=ACCOUNT_ID)
},
"Action": "sts:AssumeRole", "Action": "sts:AssumeRole",
}, },
} }
@ -638,12 +620,7 @@ def test_access_denied_with_temporary_credentials():
ex.value.response["Error"]["Code"].should.equal("AccessDenied") ex.value.response["Error"]["Code"].should.equal("AccessDenied")
ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403) ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(403)
ex.value.response["Error"]["Message"].should.equal( ex.value.response["Error"]["Message"].should.equal(
"User: arn:aws:sts::{account_id}:assumed-role/{role_name}/{session_name} is not authorized to perform: {operation}".format( f"User: arn:aws:sts::{ACCOUNT_ID}:assumed-role/{role_name}/{session_name} is not authorized to perform: rds:CreateDBInstance"
account_id=ACCOUNT_ID,
role_name=role_name,
session_name=session_name,
operation="rds:CreateDBInstance",
)
) )
@ -753,9 +730,7 @@ def test_s3_invalid_token_with_temporary_credentials():
"Version": "2012-10-17", "Version": "2012-10-17",
"Statement": { "Statement": {
"Effect": "Allow", "Effect": "Allow",
"Principal": { "Principal": {"AWS": f"arn:aws:iam::{ACCOUNT_ID}:root"},
"AWS": "arn:aws:iam::{account_id}:root".format(account_id=ACCOUNT_ID)
},
"Action": "sts:AssumeRole", "Action": "sts:AssumeRole",
}, },
} }

View File

@ -11,13 +11,13 @@ else:
@mock_ec2 @mock_ec2
def test_latest_meta_data(): def test_latest_meta_data():
res = requests.get("{0}/latest/meta-data/".format(BASE_URL)) res = requests.get(f"{BASE_URL}/latest/meta-data/")
res.content.should.equal(b"iam") res.content.should.equal(b"iam")
@mock_ec2 @mock_ec2
def test_meta_data_iam(): def test_meta_data_iam():
res = requests.get("{0}/latest/meta-data/iam".format(BASE_URL)) res = requests.get(f"{BASE_URL}/latest/meta-data/iam")
json_response = res.json() json_response = res.json()
default_role = json_response["security-credentials"]["default-role"] default_role = json_response["security-credentials"]["default-role"]
default_role.should.contain("AccessKeyId") default_role.should.contain("AccessKeyId")
@ -28,16 +28,14 @@ def test_meta_data_iam():
@mock_ec2 @mock_ec2
def test_meta_data_security_credentials(): def test_meta_data_security_credentials():
res = requests.get( res = requests.get(f"{BASE_URL}/latest/meta-data/iam/security-credentials/")
"{0}/latest/meta-data/iam/security-credentials/".format(BASE_URL)
)
res.content.should.equal(b"default-role") res.content.should.equal(b"default-role")
@mock_ec2 @mock_ec2
def test_meta_data_default_role(): def test_meta_data_default_role():
res = requests.get( res = requests.get(
"{0}/latest/meta-data/iam/security-credentials/default-role".format(BASE_URL) f"{BASE_URL}/latest/meta-data/iam/security-credentials/default-role"
) )
json_response = res.json() json_response = res.json()
json_response.should.contain("AccessKeyId") json_response.should.contain("AccessKeyId")

View File

@ -21,7 +21,7 @@ def test_reset_api():
conn.create_queue(QueueName="queue1") conn.create_queue(QueueName="queue1")
conn.list_queues()["QueueUrls"].should.have.length_of(1) conn.list_queues()["QueueUrls"].should.have.length_of(1)
res = requests.post("{base_url}/moto-api/reset".format(base_url=base_url)) res = requests.post(f"{base_url}/moto-api/reset")
res.content.should.equal(b'{"status": "ok"}') res.content.should.equal(b'{"status": "ok"}')
conn.list_queues().shouldnt.contain("QueueUrls") # No more queues conn.list_queues().shouldnt.contain("QueueUrls") # No more queues
@ -32,7 +32,7 @@ def test_data_api():
conn = boto3.client("sqs", region_name="us-west-1") conn = boto3.client("sqs", region_name="us-west-1")
conn.create_queue(QueueName="queue1") conn.create_queue(QueueName="queue1")
res = requests.post("{base_url}/moto-api/data.json".format(base_url=base_url)) res = requests.post(f"{base_url}/moto-api/data.json")
queues = res.json()["sqs"]["Queue"] queues = res.json()["sqs"]["Queue"]
len(queues).should.equal(1) len(queues).should.equal(1)
queue = queues[0] queue = queues[0]

View File

@ -8,7 +8,7 @@ from moto import mock_s3, mock_sts, mock_sqs, settings
@mock_sqs @mock_sqs
@pytest.mark.network @pytest.mark.network
def test_passthrough_requests(): def test_passthrough_requests() -> None:
conn = boto3.client("sqs", region_name="us-west-1") conn = boto3.client("sqs", region_name="us-west-1")
conn.create_queue(QueueName="queue1") conn.create_queue(QueueName="queue1")
@ -19,7 +19,7 @@ def test_passthrough_requests():
if not settings.TEST_SERVER_MODE: if not settings.TEST_SERVER_MODE:
@mock_sqs @mock_sqs
def test_requests_to_amazon_subdomains_dont_work(): def test_requests_to_amazon_subdomains_dont_work() -> None:
res = requests.get("https://fakeservice.amazonaws.com/foo/bar") res = requests.get("https://fakeservice.amazonaws.com/foo/bar")
assert res.content == b"The method is not implemented" assert res.content == b"The method is not implemented"
assert res.status_code == 400 assert res.status_code == 400
@ -27,7 +27,7 @@ if not settings.TEST_SERVER_MODE:
@mock_sts @mock_sts
@mock_s3 @mock_s3
def test_decorator_ordering(): def test_decorator_ordering() -> None:
""" """
https://github.com/spulec/moto/issues/3790#issuecomment-803979809 https://github.com/spulec/moto/issues/3790#issuecomment-803979809
""" """
@ -49,4 +49,4 @@ def test_decorator_ordering():
) )
resp = requests.get(presigned_url) resp = requests.get(presigned_url)
resp.status_code.should.equal(200) resp.status_code.should.equal(200) # type: ignore[attr-defined]

View File

@ -19,11 +19,11 @@ class TestMockBucketStartingWithServiceName:
@pytest.mark.parametrize("service_name,decorator", service_names) @pytest.mark.parametrize("service_name,decorator", service_names)
def test_bucketname_starting_with_service_name(self, service_name, decorator): def test_bucketname_starting_with_service_name(self, service_name, decorator):
decorator = getattr(moto, "mock_{}".format(service_name)) decorator = getattr(moto, f"mock_{service_name}")
with decorator(): with decorator():
with mock_s3(): with mock_s3():
s3_client = boto3.client("s3", "eu-west-1") s3_client = boto3.client("s3", "eu-west-1")
bucket_name = "{}-bucket".format(service_name) bucket_name = f"{service_name}-bucket"
s3_client.create_bucket( s3_client.create_bucket(
ACL="private", ACL="private",
Bucket=bucket_name, Bucket=bucket_name,

View File

@ -157,7 +157,7 @@ def test_listing_pipelines_boto3():
def test_listing_paginated_pipelines_boto3(): def test_listing_paginated_pipelines_boto3():
conn = boto3.client("datapipeline", region_name="us-west-2") conn = boto3.client("datapipeline", region_name="us-west-2")
for i in range(100): for i in range(100):
conn.create_pipeline(name="mypipeline%d" % i, uniqueId="some-unique-id%d" % i) conn.create_pipeline(name=f"mypipeline{i}", uniqueId=f"some-unique-id{i}")
response = conn.list_pipelines() response = conn.list_pipelines()

View File

@ -145,7 +145,7 @@ def test_list_table_tags_paginated():
table_description = conn.describe_table(TableName=name) table_description = conn.describe_table(TableName=name)
arn = table_description["Table"]["TableArn"] arn = table_description["Table"]["TableArn"]
for i in range(11): for i in range(11):
tags = [{"Key": "TestTag%d" % i, "Value": "TestValue"}] tags = [{"Key": f"TestTag{i}", "Value": "TestValue"}]
conn.tag_resource(ResourceArn=arn, Tags=tags) conn.tag_resource(ResourceArn=arn, Tags=tags)
resp = conn.list_tags_of_resource(ResourceArn=arn) resp = conn.list_tags_of_resource(ResourceArn=arn)
assert len(resp["Tags"]) == 10 assert len(resp["Tags"]) == 10
@ -3861,7 +3861,7 @@ def test_transact_write_items_put_conditional_expressions():
{ {
"Put": { "Put": {
"Item": { "Item": {
"id": {"S": "foo{}".format(str(i))}, "id": {"S": f"foo{i}"},
"foo": {"S": "bar"}, "foo": {"S": "bar"},
}, },
"TableName": "test-table", "TableName": "test-table",
@ -4285,9 +4285,7 @@ def assert_correct_client_error(
braces = braces or ["{", "}"] braces = braces or ["{", "}"]
assert client_error.response["Error"]["Code"] == code assert client_error.response["Error"]["Code"] == code
if message_values is not None: if message_values is not None:
values_string = "{open_brace}(?P<values>.*){close_brace}".format( values_string = f"{braces[0]}(?P<values>.*){braces[1]}"
open_brace=braces[0], close_brace=braces[1]
)
re_msg = re.compile(message_template.format(values=values_string)) re_msg = re.compile(message_template.format(values=values_string))
match_result = re_msg.match(client_error.response["Error"]["Message"]) match_result = re_msg.match(client_error.response["Error"]["Message"])
assert match_result is not None assert match_result is not None
@ -4886,7 +4884,7 @@ def test_set_attribute_is_dropped_if_empty_after_update_expression(attr_name):
client.update_item( client.update_item(
TableName=table_name, TableName=table_name,
Key={"customer": {"S": item_key}}, Key={"customer": {"S": item_key}},
UpdateExpression="ADD {} :order".format(attr_name), UpdateExpression=f"ADD {attr_name} :order",
ExpressionAttributeNames=expression_attribute_names, ExpressionAttributeNames=expression_attribute_names,
ExpressionAttributeValues={":order": {"SS": [set_item]}}, ExpressionAttributeValues={":order": {"SS": [set_item]}},
) )
@ -4898,7 +4896,7 @@ def test_set_attribute_is_dropped_if_empty_after_update_expression(attr_name):
client.update_item( client.update_item(
TableName=table_name, TableName=table_name,
Key={"customer": {"S": item_key}}, Key={"customer": {"S": item_key}},
UpdateExpression="DELETE {} :order".format(attr_name), UpdateExpression=f"DELETE {attr_name} :order",
ExpressionAttributeNames=expression_attribute_names, ExpressionAttributeNames=expression_attribute_names,
ExpressionAttributeValues={":order": {"SS": [set_item]}}, ExpressionAttributeValues={":order": {"SS": [set_item]}},
) )
@ -5193,7 +5191,7 @@ def test_describe_backup_for_non_existent_backup_raises_error():
client.describe_backup(BackupArn=non_existent_arn) client.describe_backup(BackupArn=non_existent_arn)
error = ex.value.response["Error"] error = ex.value.response["Error"]
error["Code"].should.equal("BackupNotFoundException") error["Code"].should.equal("BackupNotFoundException")
error["Message"].should.equal("Backup not found: {}".format(non_existent_arn)) error["Message"].should.equal(f"Backup not found: {non_existent_arn}")
@mock_dynamodb @mock_dynamodb
@ -5280,7 +5278,7 @@ def test_restore_table_from_non_existent_backup_raises_error():
) )
error = ex.value.response["Error"] error = ex.value.response["Error"]
error["Code"].should.equal("BackupNotFoundException") error["Code"].should.equal("BackupNotFoundException")
error["Message"].should.equal("Backup not found: {}".format(non_existent_arn)) error["Message"].should.equal(f"Backup not found: {non_existent_arn}")
@mock_dynamodb @mock_dynamodb
@ -5301,7 +5299,7 @@ def test_restore_table_from_backup_raises_error_when_table_already_exists():
) )
error = ex.value.response["Error"] error = ex.value.response["Error"]
error["Code"].should.equal("TableAlreadyExistsException") error["Code"].should.equal("TableAlreadyExistsException")
error["Message"].should.equal("Table already exists: {}".format(table_name)) error["Message"].should.equal(f"Table already exists: {table_name}")
@mock_dynamodb @mock_dynamodb
@ -5316,7 +5314,7 @@ def test_restore_table_from_backup():
) )
table = resp.get("TableDescription") table = resp.get("TableDescription")
for i in range(5): for i in range(5):
client.put_item(TableName=table_name, Item={"id": {"S": "item %d" % i}}) client.put_item(TableName=table_name, Item={"id": {"S": f"item {i}"}})
backup_arn = ( backup_arn = (
client.create_backup(TableName=table_name, BackupName="backup") client.create_backup(TableName=table_name, BackupName="backup")
@ -5356,7 +5354,7 @@ def test_restore_table_to_point_in_time():
) )
table = resp.get("TableDescription") table = resp.get("TableDescription")
for i in range(5): for i in range(5):
client.put_item(TableName=table_name, Item={"id": {"S": "item %d" % i}}) client.put_item(TableName=table_name, Item={"id": {"S": f"item {i}"}})
restored_table_name = "restored-from-pit" restored_table_name = "restored-from-pit"
restored = client.restore_table_to_point_in_time( restored = client.restore_table_to_point_in_time(
@ -5385,7 +5383,7 @@ def test_restore_table_to_point_in_time_raises_error_when_source_not_exist():
) )
error = ex.value.response["Error"] error = ex.value.response["Error"]
error["Code"].should.equal("SourceTableNotFoundException") error["Code"].should.equal("SourceTableNotFoundException")
error["Message"].should.equal("Source table not found: %s" % table_name) error["Message"].should.equal(f"Source table not found: {table_name}")
@mock_dynamodb @mock_dynamodb
@ -5411,7 +5409,7 @@ def test_restore_table_to_point_in_time_raises_error_when_dest_exist():
) )
error = ex.value.response["Error"] error = ex.value.response["Error"]
error["Code"].should.equal("TableAlreadyExistsException") error["Code"].should.equal("TableAlreadyExistsException")
error["Message"].should.equal("Table already exists: %s" % restored_table_name) error["Message"].should.equal(f"Table already exists: {restored_table_name}")
@mock_dynamodb @mock_dynamodb
@ -5422,7 +5420,7 @@ def test_delete_non_existent_backup_raises_error():
client.delete_backup(BackupArn=non_existent_arn) client.delete_backup(BackupArn=non_existent_arn)
error = ex.value.response["Error"] error = ex.value.response["Error"]
error["Code"].should.equal("BackupNotFoundException") error["Code"].should.equal("BackupNotFoundException")
error["Message"].should.equal("Backup not found: {}".format(non_existent_arn)) error["Message"].should.equal(f"Backup not found: {non_existent_arn}")
@mock_dynamodb @mock_dynamodb
@ -5511,7 +5509,7 @@ def test_describe_endpoints(region):
res.should.equal( res.should.equal(
[ [
{ {
"Address": "dynamodb.{}.amazonaws.com".format(region), "Address": f"dynamodb.{region}.amazonaws.com",
"CachePeriodInMinutes": 1440, "CachePeriodInMinutes": 1440,
}, },
] ]

View File

@ -253,7 +253,7 @@ def test_execution_of_remove_in_list(table):
@pytest.mark.parametrize("attr_name", ["s", "#placeholder"]) @pytest.mark.parametrize("attr_name", ["s", "#placeholder"])
def test_execution_of_delete_element_from_set(table, attr_name): def test_execution_of_delete_element_from_set(table, attr_name):
expression_attribute_names = {"#placeholder": "s"} expression_attribute_names = {"#placeholder": "s"}
update_expression = "delete {} :value".format(attr_name) update_expression = f"delete {attr_name} :value"
update_expression_ast = UpdateExpressionParser.make(update_expression) update_expression_ast = UpdateExpressionParser.make(update_expression)
item = Item( item = Item(
hash_key=DynamoType({"S": "id"}), hash_key=DynamoType({"S": "id"}),
@ -276,7 +276,7 @@ def test_execution_of_delete_element_from_set(table, attr_name):
assert expected_item == item assert expected_item == item
# delete last elements # delete last elements
update_expression = "delete {} :value".format(attr_name) update_expression = f"delete {attr_name} :value"
update_expression_ast = UpdateExpressionParser.make(update_expression) update_expression_ast = UpdateExpressionParser.make(update_expression)
validated_ast = UpdateExpressionValidator( validated_ast = UpdateExpressionValidator(
update_expression_ast, update_expression_ast,

View File

@ -192,9 +192,7 @@ def test_boto3_conditions_ignorecase():
for expr in between_expressions: for expr in between_expressions:
results = dynamodb.query( results = dynamodb.query(
TableName="users", TableName="users",
KeyConditionExpression="forum_name = :forum_name and subject {}".format( KeyConditionExpression=f"forum_name = :forum_name and subject {expr}",
expr
),
ExpressionAttributeValues={ ExpressionAttributeValues={
":forum_name": {"S": "the-key"}, ":forum_name": {"S": "the-key"},
":start": {"S": "100"}, ":start": {"S": "100"},
@ -1023,7 +1021,7 @@ def test_query_pagination():
table.put_item( table.put_item(
Item={ Item={
"forum_name": "the-key", "forum_name": "the-key",
"subject": "{0}".format(i), "subject": f"{i}",
"username": "johndoe", "username": "johndoe",
"created": Decimal("3"), "created": Decimal("3"),
} }

View File

@ -505,7 +505,7 @@ def test_update_settype_item_with_conditions():
def test_scan_pagination(): def test_scan_pagination():
table = _create_user_table() table = _create_user_table()
expected_usernames = ["user{0}".format(i) for i in range(10)] expected_usernames = [f"user{i}" for i in range(10)]
for u in expected_usernames: for u in expected_usernames:
table.put_item(Item={"username": u}) table.put_item(Item={"username": u})

View File

@ -1319,7 +1319,7 @@ def create_table(test_client, name=None, region=None, use_range_key=True):
"Content-Type": "application/x-amz-json-1.0", "Content-Type": "application/x-amz-json-1.0",
} }
if region: if region:
headers["Host"] = "dynamodb.{}.amazonaws.com".format(region) headers["Host"] = f"dynamodb.{region}.amazonaws.com"
request_body = { request_body = {
"TableName": name, "TableName": name,
"KeySchema": { "KeySchema": {

View File

@ -599,8 +599,8 @@ def test_ami_attribute_user_permissions():
] ]
permissions.should.equal([]) permissions.should.equal([])
USER1 = "".join(["{}".format(random.randint(0, 9)) for _ in range(0, 12)]) USER1 = "".join([f"{random.randint(0, 9)}" for _ in range(0, 12)])
USER2 = "".join(["{}".format(random.randint(0, 9)) for _ in range(0, 12)]) USER2 = "".join([f"{random.randint(0, 9)}" for _ in range(0, 12)])
ADD_USERS_ARGS = { ADD_USERS_ARGS = {
"ImageId": image.id, "ImageId": image.id,
@ -673,7 +673,7 @@ def test_ami_describe_executable_users():
instance_id = response["Reservations"][0]["Instances"][0]["InstanceId"] instance_id = response["Reservations"][0]["Instances"][0]["InstanceId"]
image_id = conn.create_image(InstanceId=instance_id, Name="TestImage")["ImageId"] image_id = conn.create_image(InstanceId=instance_id, Name="TestImage")["ImageId"]
USER1 = "".join(["{}".format(random.randint(0, 9)) for _ in range(0, 12)]) USER1 = "".join([f"{random.randint(0, 9)}" for _ in range(0, 12)])
ADD_USER_ARGS = { ADD_USER_ARGS = {
"ImageId": image_id, "ImageId": image_id,
@ -706,8 +706,8 @@ def test_ami_describe_executable_users_negative():
instance_id = response["Reservations"][0]["Instances"][0]["InstanceId"] instance_id = response["Reservations"][0]["Instances"][0]["InstanceId"]
image_id = conn.create_image(InstanceId=instance_id, Name="TestImage")["ImageId"] image_id = conn.create_image(InstanceId=instance_id, Name="TestImage")["ImageId"]
USER1 = "".join(["{}".format(random.randint(0, 9)) for _ in range(0, 12)]) USER1 = "".join([f"{random.randint(0, 9)}" for _ in range(0, 12)])
USER2 = "".join(["{}".format(random.randint(0, 9)) for _ in range(0, 12)]) USER2 = "".join([f"{random.randint(0, 9)}" for _ in range(0, 12)])
ADD_USER_ARGS = { ADD_USER_ARGS = {
"ImageId": image_id, "ImageId": image_id,
@ -742,7 +742,7 @@ def test_ami_describe_executable_users_and_filter():
"ImageId" "ImageId"
] ]
USER1 = "".join(["{}".format(random.randint(0, 9)) for _ in range(0, 12)]) USER1 = "".join([f"{random.randint(0, 9)}" for _ in range(0, 12)])
ADD_USER_ARGS = { ADD_USER_ARGS = {
"ImageId": image_id, "ImageId": image_id,
@ -1127,7 +1127,7 @@ def test_ami_filter_by_empty_tag():
for i in range(10): for i in range(10):
image = client.create_image( image = client.create_image(
InstanceId=instance.instance_id, InstanceId=instance.instance_id,
Name="MyAMI{}".format(i), Name=f"MyAMI{i}",
Description="Test", Description="Test",
) )

View File

@ -107,9 +107,7 @@ def test_delete_attached_volume():
ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.value.response["Error"]["Code"].should.equal("VolumeInUse") ex.value.response["Error"]["Code"].should.equal("VolumeInUse")
ex.value.response["Error"]["Message"].should.equal( ex.value.response["Error"]["Message"].should.equal(
"Volume {0} is currently attached to {1}".format( f"Volume {volume.id} is currently attached to {instance['InstanceId']}"
volume.id, instance["InstanceId"]
)
) )
volume.detach_from_instance(InstanceId=instance["InstanceId"]) volume.detach_from_instance(InstanceId=instance["InstanceId"])

View File

@ -228,9 +228,7 @@ def test_instance_detach_volume_wrong_path():
ex.value.response["Error"]["Code"].should.equal("InvalidAttachment.NotFound") ex.value.response["Error"]["Code"].should.equal("InvalidAttachment.NotFound")
ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.value.response["Error"]["Message"].should.equal( ex.value.response["Error"]["Message"].should.equal(
"The volume {0} is not attached to instance {1} as device {2}".format( f"The volume {volume.volume_id} is not attached to instance {instance.instance_id} as device /dev/sdf"
volume.volume_id, instance.instance_id, "/dev/sdf"
)
) )
@ -2120,9 +2118,7 @@ def test_describe_instance_attribute():
) )
ex.value.response["Error"]["Code"].should.equal("InvalidParameterValue") ex.value.response["Error"]["Code"].should.equal("InvalidParameterValue")
ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.value.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
message = "Value ({invalid_instance_attribute}) for parameter attribute is invalid. Unknown attribute.".format( message = f"Value ({invalid_instance_attribute}) for parameter attribute is invalid. Unknown attribute."
invalid_instance_attribute=invalid_instance_attribute
)
ex.value.response["Error"]["Message"].should.equal(message) ex.value.response["Error"]["Message"].should.equal(message)
@ -2227,7 +2223,7 @@ def test_instance_termination_protection():
error = ex.value.response["Error"] error = ex.value.response["Error"]
error["Code"].should.equal("OperationNotPermitted") error["Code"].should.equal("OperationNotPermitted")
ex.value.response["Error"]["Message"].should.match( ex.value.response["Error"]["Message"].should.match(
r"The instance '{}' may not be terminated.*$".format(instance_id) rf"The instance '{instance_id}' may not be terminated.*$"
) )
# Use alternate request syntax for setting attribute. # Use alternate request syntax for setting attribute.

View File

@ -304,9 +304,7 @@ def test_duplicate_network_acl_entry():
) )
str(ex.value).should.equal( str(ex.value).should.equal(
"An error occurred (NetworkAclEntryAlreadyExists) when calling the CreateNetworkAclEntry " "An error occurred (NetworkAclEntryAlreadyExists) when calling the CreateNetworkAclEntry "
"operation: The network acl entry identified by {} already exists.".format( f"operation: The network acl entry identified by {rule_number} already exists."
rule_number
)
) )

View File

@ -15,9 +15,7 @@ def test_create():
prefix_list.should.have.key("AddressFamily").equals("?") prefix_list.should.have.key("AddressFamily").equals("?")
prefix_list.should.have.key("State").equals("create-complete") prefix_list.should.have.key("State").equals("create-complete")
prefix_list.should.have.key("PrefixListArn").equals( prefix_list.should.have.key("PrefixListArn").equals(
"arn:aws:ec2:us-west-1:{}:prefix-list/{}".format( f"arn:aws:ec2:us-west-1:{ACCOUNT_ID}:prefix-list/{prefix_list['PrefixListId']}"
ACCOUNT_ID, prefix_list["PrefixListId"]
)
) )
prefix_list.should.have.key("PrefixListName").equals("examplelist") prefix_list.should.have.key("PrefixListName").equals("examplelist")
prefix_list.should.have.key("MaxEntries").equals(2) prefix_list.should.have.key("MaxEntries").equals(2)

View File

@ -63,10 +63,10 @@ def test_add_servers_to_multiple_regions_boto3():
def test_create_autoscaling_group_boto3(): def test_create_autoscaling_group_boto3():
regions = [("us-east-1", "c"), ("ap-northeast-1", "a")] regions = [("us-east-1", "c"), ("ap-northeast-1", "a")]
for region, zone in regions: for region, zone in regions:
a_zone = "{}{}".format(region, zone) a_zone = f"{region}{zone}"
asg_name = "{}_tester_group_{}".format(region, str(uuid4())[0:6]) asg_name = f"{region}_tester_group_{str(uuid4())[0:6]}"
lb_name = "{}_lb_{}".format(region, str(uuid4())[0:6]) lb_name = f"{region}_lb_{str(uuid4())[0:6]}"
config_name = "{}_tester_{}".format(region, str(uuid4())[0:6]) config_name = f"{region}_tester_{str(uuid4())[0:6]}"
elb_client = boto3.client("elb", region_name=region) elb_client = boto3.client("elb", region_name=region)
elb_client.create_load_balancer( elb_client.create_load_balancer(

View File

@ -818,9 +818,7 @@ def test_create_route_with_invalid_destination_cidr_block_parameter():
) )
str(ex.value).should.equal( str(ex.value).should.equal(
"An error occurred (InvalidParameterValue) when calling the CreateRoute " "An error occurred (InvalidParameterValue) when calling the CreateRoute "
"operation: Value ({}) for parameter destinationCidrBlock is invalid. This is not a valid CIDR block.".format( f"operation: Value ({destination_cidr_block}) for parameter destinationCidrBlock is invalid. This is not a valid CIDR block."
destination_cidr_block
)
) )
route_table.create_route( route_table.create_route(

View File

@ -589,7 +589,7 @@ def test_sec_group_rule_limit(use_vpc):
ip_permissions = [ ip_permissions = [
{ {
"IpProtocol": "-1", "IpProtocol": "-1",
"IpRanges": [{"CidrIp": "{}.0.0.0/0".format(i)} for i in range(110)], "IpRanges": [{"CidrIp": f"{i}.0.0.0/0"} for i in range(110)],
} }
] ]
client.authorize_security_group_ingress( client.authorize_security_group_ingress(
@ -621,7 +621,7 @@ def test_sec_group_rule_limit(use_vpc):
permissions = [ permissions = [
{ {
"IpProtocol": "-1", "IpProtocol": "-1",
"IpRanges": [{"CidrIp": "{}.0.0.0/0".format(i)} for i in range(limit - 1)], "IpRanges": [{"CidrIp": f"{i}.0.0.0/0"} for i in range(limit - 1)],
} }
] ]
client.authorize_security_group_ingress(GroupId=sg.id, IpPermissions=permissions) client.authorize_security_group_ingress(GroupId=sg.id, IpPermissions=permissions)
@ -654,9 +654,7 @@ def test_sec_group_rule_limit(use_vpc):
permissions = [ permissions = [
{ {
"IpProtocol": "-1", "IpProtocol": "-1",
"IpRanges": [ "IpRanges": [{"CidrIp": f"{i}.0.0.0/0"} for i in range(1, limit - 1)],
{"CidrIp": "{}.0.0.0/0".format(i)} for i in range(1, limit - 1)
],
} }
] ]
client.authorize_security_group_egress(GroupId=sg.id, IpPermissions=permissions) client.authorize_security_group_egress(GroupId=sg.id, IpPermissions=permissions)
@ -1187,7 +1185,7 @@ def test_update_security_group_rule_descriptions_ingress():
def test_non_existent_security_group_raises_error_on_authorize(): def test_non_existent_security_group_raises_error_on_authorize():
client = boto3.client("ec2", "us-east-1") client = boto3.client("ec2", "us-east-1")
non_existent_sg = "sg-123abc" non_existent_sg = "sg-123abc"
expected_error = "The security group '{}' does not exist".format(non_existent_sg) expected_error = f"The security group '{non_existent_sg}' does not exist"
authorize_funcs = [ authorize_funcs = [
client.authorize_security_group_egress, client.authorize_security_group_egress,
client.authorize_security_group_ingress, client.authorize_security_group_ingress,

View File

@ -22,7 +22,7 @@ def spot_config(subnet_id, allocation_strategy="lowestPrice"):
"ClientToken": "string", "ClientToken": "string",
"SpotPrice": "0.12", "SpotPrice": "0.12",
"TargetCapacity": 6, "TargetCapacity": 6,
"IamFleetRole": "arn:aws:iam::{}:role/fleet".format(ACCOUNT_ID), "IamFleetRole": f"arn:aws:iam::{ACCOUNT_ID}:role/fleet",
"LaunchSpecifications": [ "LaunchSpecifications": [
{ {
"ImageId": EXAMPLE_AMI_ID, "ImageId": EXAMPLE_AMI_ID,
@ -47,9 +47,7 @@ def spot_config(subnet_id, allocation_strategy="lowestPrice"):
], ],
"Monitoring": {"Enabled": True}, "Monitoring": {"Enabled": True},
"SubnetId": subnet_id, "SubnetId": subnet_id,
"IamInstanceProfile": { "IamInstanceProfile": {"Arn": f"arn:aws:iam::{ACCOUNT_ID}:role/fleet"},
"Arn": "arn:aws:iam::{}:role/fleet".format(ACCOUNT_ID)
},
"EbsOptimized": False, "EbsOptimized": False,
"WeightedCapacity": 2.0, "WeightedCapacity": 2.0,
"SpotPrice": "0.13", "SpotPrice": "0.13",
@ -62,9 +60,7 @@ def spot_config(subnet_id, allocation_strategy="lowestPrice"):
"InstanceType": "t2.large", "InstanceType": "t2.large",
"Monitoring": {"Enabled": True}, "Monitoring": {"Enabled": True},
"SubnetId": subnet_id, "SubnetId": subnet_id,
"IamInstanceProfile": { "IamInstanceProfile": {"Arn": f"arn:aws:iam::{ACCOUNT_ID}:role/fleet"},
"Arn": "arn:aws:iam::{}:role/fleet".format(ACCOUNT_ID)
},
"EbsOptimized": False, "EbsOptimized": False,
"WeightedCapacity": 4.0, "WeightedCapacity": 4.0,
"SpotPrice": "10.00", "SpotPrice": "10.00",
@ -96,7 +92,7 @@ def test_create_spot_fleet_with_lowest_price():
spot_fleet_config["SpotPrice"].should.equal("0.12") spot_fleet_config["SpotPrice"].should.equal("0.12")
spot_fleet_config["TargetCapacity"].should.equal(6) spot_fleet_config["TargetCapacity"].should.equal(6)
spot_fleet_config["IamFleetRole"].should.equal( spot_fleet_config["IamFleetRole"].should.equal(
"arn:aws:iam::{}:role/fleet".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:role/fleet"
) )
spot_fleet_config["AllocationStrategy"].should.equal("lowestPrice") spot_fleet_config["AllocationStrategy"].should.equal("lowestPrice")
spot_fleet_config["FulfilledCapacity"].should.equal(6.0) spot_fleet_config["FulfilledCapacity"].should.equal(6.0)
@ -107,7 +103,7 @@ def test_create_spot_fleet_with_lowest_price():
launch_spec["EbsOptimized"].should.equal(False) launch_spec["EbsOptimized"].should.equal(False)
launch_spec["SecurityGroups"].should.equal([{"GroupId": "sg-123"}]) launch_spec["SecurityGroups"].should.equal([{"GroupId": "sg-123"}])
launch_spec["IamInstanceProfile"].should.equal( launch_spec["IamInstanceProfile"].should.equal(
{"Arn": "arn:aws:iam::{}:role/fleet".format(ACCOUNT_ID)} {"Arn": f"arn:aws:iam::{ACCOUNT_ID}:role/fleet"}
) )
launch_spec["ImageId"].should.equal(EXAMPLE_AMI_ID) launch_spec["ImageId"].should.equal(EXAMPLE_AMI_ID)
launch_spec["InstanceType"].should.equal("t2.small") launch_spec["InstanceType"].should.equal("t2.small")

View File

@ -356,11 +356,7 @@ def test_create_subnet_response_fields():
subnet.should.have.key("AssignIpv6AddressOnCreation").which.should.equal(False) subnet.should.have.key("AssignIpv6AddressOnCreation").which.should.equal(False)
subnet.should.have.key("Ipv6Native").which.should.equal(False) subnet.should.have.key("Ipv6Native").which.should.equal(False)
subnet_arn = "arn:aws:ec2:{region}:{owner_id}:subnet/{subnet_id}".format( subnet_arn = f"arn:aws:ec2:{subnet['AvailabilityZone'][0:-1]}:{subnet['OwnerId']}:subnet/{subnet['SubnetId']}"
region=subnet["AvailabilityZone"][0:-1],
owner_id=subnet["OwnerId"],
subnet_id=subnet["SubnetId"],
)
subnet.should.have.key("SubnetArn").which.should.equal(subnet_arn) subnet.should.have.key("SubnetArn").which.should.equal(subnet_arn)
subnet.should.have.key("Ipv6CidrBlockAssociationSet").which.should.equal([]) subnet.should.have.key("Ipv6CidrBlockAssociationSet").which.should.equal([])
@ -393,11 +389,7 @@ def test_describe_subnet_response_fields():
subnet.should.have.key("AssignIpv6AddressOnCreation").which.should.equal(False) subnet.should.have.key("AssignIpv6AddressOnCreation").which.should.equal(False)
subnet.should.have.key("Ipv6Native").which.should.equal(False) subnet.should.have.key("Ipv6Native").which.should.equal(False)
subnet_arn = "arn:aws:ec2:{region}:{owner_id}:subnet/{subnet_id}".format( subnet_arn = f"arn:aws:ec2:{subnet['AvailabilityZone'][0:-1]}:{subnet['OwnerId']}:subnet/{subnet['SubnetId']}"
region=subnet["AvailabilityZone"][0:-1],
owner_id=subnet["OwnerId"],
subnet_id=subnet["SubnetId"],
)
subnet.should.have.key("SubnetArn").which.should.equal(subnet_arn) subnet.should.have.key("SubnetArn").which.should.equal(subnet_arn)
subnet.should.have.key("Ipv6CidrBlockAssociationSet").which.should.equal([]) subnet.should.have.key("Ipv6CidrBlockAssociationSet").which.should.equal([])
@ -418,9 +410,7 @@ def test_create_subnet_with_invalid_availability_zone():
) )
assert str(ex.value).startswith( assert str(ex.value).startswith(
"An error occurred (InvalidParameterValue) when calling the CreateSubnet " "An error occurred (InvalidParameterValue) when calling the CreateSubnet "
"operation: Value ({}) for parameter availabilityZone is invalid. Subnets can currently only be created in the following availability zones: ".format( f"operation: Value ({subnet_availability_zone}) for parameter availabilityZone is invalid. Subnets can currently only be created in the following availability zones: "
subnet_availability_zone
)
) )
@ -437,7 +427,7 @@ def test_create_subnet_with_invalid_cidr_range():
ec2.create_subnet(VpcId=vpc.id, CidrBlock=subnet_cidr_block) ec2.create_subnet(VpcId=vpc.id, CidrBlock=subnet_cidr_block)
str(ex.value).should.equal( str(ex.value).should.equal(
"An error occurred (InvalidSubnet.Range) when calling the CreateSubnet " "An error occurred (InvalidSubnet.Range) when calling the CreateSubnet "
"operation: The CIDR '{}' is invalid.".format(subnet_cidr_block) f"operation: The CIDR '{subnet_cidr_block}' is invalid."
) )
@ -455,7 +445,7 @@ def test_create_subnet_with_invalid_cidr_range_multiple_vpc_cidr_blocks():
ec2.create_subnet(VpcId=vpc.id, CidrBlock=subnet_cidr_block) ec2.create_subnet(VpcId=vpc.id, CidrBlock=subnet_cidr_block)
str(ex.value).should.equal( str(ex.value).should.equal(
"An error occurred (InvalidSubnet.Range) when calling the CreateSubnet " "An error occurred (InvalidSubnet.Range) when calling the CreateSubnet "
"operation: The CIDR '{}' is invalid.".format(subnet_cidr_block) f"operation: The CIDR '{subnet_cidr_block}' is invalid."
) )
@ -472,9 +462,7 @@ def test_create_subnet_with_invalid_cidr_block_parameter():
ec2.create_subnet(VpcId=vpc.id, CidrBlock=subnet_cidr_block) ec2.create_subnet(VpcId=vpc.id, CidrBlock=subnet_cidr_block)
str(ex.value).should.equal( str(ex.value).should.equal(
"An error occurred (InvalidParameterValue) when calling the CreateSubnet " "An error occurred (InvalidParameterValue) when calling the CreateSubnet "
"operation: Value ({}) for parameter cidrBlock is invalid. This is not a valid CIDR block.".format( f"operation: Value ({subnet_cidr_block}) for parameter cidrBlock is invalid. This is not a valid CIDR block."
subnet_cidr_block
)
) )
@ -532,9 +520,7 @@ def test_create_subnets_with_overlapping_cidr_blocks():
ec2.create_subnet(VpcId=vpc.id, CidrBlock=subnet_cidr_block) ec2.create_subnet(VpcId=vpc.id, CidrBlock=subnet_cidr_block)
str(ex.value).should.equal( str(ex.value).should.equal(
"An error occurred (InvalidSubnet.Conflict) when calling the CreateSubnet " "An error occurred (InvalidSubnet.Conflict) when calling the CreateSubnet "
"operation: The CIDR '{}' conflicts with another subnet".format( f"operation: The CIDR '{subnet_cidr_block}' conflicts with another subnet"
subnet_cidr_block
)
) )

View File

@ -131,7 +131,7 @@ def test_tag_limit_exceeded():
instance = ec2.create_instances(ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1)[0] instance = ec2.create_instances(ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1)[0]
tag_list = [] tag_list = []
for i in range(51): for i in range(51):
tag_list.append({"Key": "{0:02d}".format(i + 1), "Value": ""}) tag_list.append({"Key": f"{i+1:02d}", "Value": ""})
with pytest.raises(ClientError) as ex: with pytest.raises(ClientError) as ex:
client.create_tags(Resources=[instance.id], Tags=tag_list) client.create_tags(Resources=[instance.id], Tags=tag_list)

View File

@ -48,9 +48,7 @@ def test_create_transit_gateway():
gateways.should.have.length_of(1) gateways.should.have.length_of(1)
gateways[0].should.have.key("CreationTime") gateways[0].should.have.key("CreationTime")
gateways[0].should.have.key("TransitGatewayArn").equal( gateways[0].should.have.key("TransitGatewayArn").equal(
"arn:aws:ec2:us-east-1:{}:transit-gateway/{}".format( f"arn:aws:ec2:us-east-1:{ACCOUNT_ID}:transit-gateway/{gateway['TransitGatewayId']}"
ACCOUNT_ID, gateway["TransitGatewayId"]
)
) )
gateways[0]["Options"].should.have.key("AssociationDefaultRouteTableId").equal( gateways[0]["Options"].should.have.key("AssociationDefaultRouteTableId").equal(
gateways[0]["Options"]["PropagationDefaultRouteTableId"] gateways[0]["Options"]["PropagationDefaultRouteTableId"]

View File

@ -399,9 +399,9 @@ def test_vpc_peering_connections_cross_region_accept_wrong_region():
ec2_usw1.accept_vpc_peering_connection(VpcPeeringConnectionId=vpc_pcx_usw1.id) ec2_usw1.accept_vpc_peering_connection(VpcPeeringConnectionId=vpc_pcx_usw1.id)
cm.value.response["Error"]["Code"].should.equal("OperationNotPermitted") cm.value.response["Error"]["Code"].should.equal("OperationNotPermitted")
exp_msg = ( exp_msg = (
"Incorrect region ({0}) specified for this request.VPC " "Incorrect region (us-west-1) specified for this request.VPC "
"peering connection {1} must be " f"peering connection {vpc_pcx_usw1.id} must be "
"accepted in region {2}".format("us-west-1", vpc_pcx_usw1.id, "ap-northeast-1") "accepted in region ap-northeast-1"
) )
cm.value.response["Error"]["Message"].should.equal(exp_msg) cm.value.response["Error"]["Message"].should.equal(exp_msg)
@ -424,9 +424,9 @@ def test_vpc_peering_connections_cross_region_reject_wrong_region():
ec2_usw1.reject_vpc_peering_connection(VpcPeeringConnectionId=vpc_pcx_usw1.id) ec2_usw1.reject_vpc_peering_connection(VpcPeeringConnectionId=vpc_pcx_usw1.id)
cm.value.response["Error"]["Code"].should.equal("OperationNotPermitted") cm.value.response["Error"]["Code"].should.equal("OperationNotPermitted")
exp_msg = ( exp_msg = (
"Incorrect region ({0}) specified for this request.VPC " "Incorrect region (us-west-1) specified for this request.VPC "
"peering connection {1} must be accepted or " f"peering connection {vpc_pcx_usw1.id} must be accepted or "
"rejected in region {2}".format("us-west-1", vpc_pcx_usw1.id, "ap-northeast-1") "rejected in region ap-northeast-1"
) )
cm.value.response["Error"]["Message"].should.equal(exp_msg) cm.value.response["Error"]["Message"].should.equal(exp_msg)

View File

@ -561,14 +561,12 @@ def test_associate_vpc_ipv4_cidr_block():
# Associate/Extend vpc CIDR range up to 5 ciders # Associate/Extend vpc CIDR range up to 5 ciders
for i in range(43, 47): for i in range(43, 47):
response = ec2.meta.client.associate_vpc_cidr_block( response = ec2.meta.client.associate_vpc_cidr_block(
VpcId=vpc.id, CidrBlock="10.10.{}.0/24".format(i) VpcId=vpc.id, CidrBlock=f"10.10.{i}.0/24"
) )
response["CidrBlockAssociation"]["CidrBlockState"]["State"].should.equal( response["CidrBlockAssociation"]["CidrBlockState"]["State"].should.equal(
"associating" "associating"
) )
response["CidrBlockAssociation"]["CidrBlock"].should.equal( response["CidrBlockAssociation"]["CidrBlock"].should.equal(f"10.10.{i}.0/24")
"10.10.{}.0/24".format(i)
)
response["CidrBlockAssociation"]["AssociationId"].should.contain( response["CidrBlockAssociation"]["AssociationId"].should.contain(
"vpc-cidr-assoc" "vpc-cidr-assoc"
) )
@ -590,9 +588,7 @@ def test_associate_vpc_ipv4_cidr_block():
) )
str(ex.value).should.equal( str(ex.value).should.equal(
"An error occurred (CidrLimitExceeded) when calling the AssociateVpcCidrBlock " "An error occurred (CidrLimitExceeded) when calling the AssociateVpcCidrBlock "
"operation: This network '{}' has met its maximum number of allowed CIDRs: 5".format( f"operation: This network '{vpc.id}' has met its maximum number of allowed CIDRs: 5"
vpc.id
)
) )
@ -657,8 +653,8 @@ def test_disassociate_vpc_ipv4_cidr_block():
) )
str(ex.value).should.equal( str(ex.value).should.equal(
"An error occurred (OperationNotPermitted) when calling the DisassociateVpcCidrBlock operation: " "An error occurred (OperationNotPermitted) when calling the DisassociateVpcCidrBlock operation: "
"The vpc CIDR block with association ID {} may not be disassociated. It is the primary " f"The vpc CIDR block with association ID {vpc_base_cidr_assoc_id} may not be disassociated. It is the primary "
"IPv4 CIDR block of the VPC".format(vpc_base_cidr_assoc_id) "IPv4 CIDR block of the VPC"
) )
@ -738,9 +734,7 @@ def test_vpc_associate_ipv6_cidr_block():
) )
str(ex.value).should.equal( str(ex.value).should.equal(
"An error occurred (CidrLimitExceeded) when calling the AssociateVpcCidrBlock " "An error occurred (CidrLimitExceeded) when calling the AssociateVpcCidrBlock "
"operation: This network '{}' has met its maximum number of allowed CIDRs: 1".format( f"operation: This network '{vpc.id}' has met its maximum number of allowed CIDRs: 1"
vpc.id
)
) )
# Test associate ipv6 cidr block after vpc created # Test associate ipv6 cidr block after vpc created
@ -848,9 +842,7 @@ def test_create_vpc_with_invalid_cidr_block_parameter():
ec2.create_vpc(CidrBlock=vpc_cidr_block) ec2.create_vpc(CidrBlock=vpc_cidr_block)
str(ex.value).should.equal( str(ex.value).should.equal(
"An error occurred (InvalidParameterValue) when calling the CreateVpc " "An error occurred (InvalidParameterValue) when calling the CreateVpc "
"operation: Value ({}) for parameter cidrBlock is invalid. This is not a valid CIDR block.".format( f"operation: Value ({vpc_cidr_block}) for parameter cidrBlock is invalid. This is not a valid CIDR block."
vpc_cidr_block
)
) )
@ -863,7 +855,7 @@ def test_create_vpc_with_invalid_cidr_range():
ec2.create_vpc(CidrBlock=vpc_cidr_block) ec2.create_vpc(CidrBlock=vpc_cidr_block)
str(ex.value).should.equal( str(ex.value).should.equal(
"An error occurred (InvalidVpc.Range) when calling the CreateVpc " "An error occurred (InvalidVpc.Range) when calling the CreateVpc "
"operation: The CIDR '{}' is invalid.".format(vpc_cidr_block) f"operation: The CIDR '{vpc_cidr_block}' is invalid."
) )

View File

@ -22,8 +22,8 @@ from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
def _create_image_digest(contents=None): def _create_image_digest(contents=None):
if not contents: if not contents:
contents = "docker_image{0}".format(int(random() * 10**6)) contents = f"docker_image{int(random() * 10**6)}"
return "sha256:%s" % hashlib.sha256(contents.encode("utf-8")).hexdigest() return "sha256:" + hashlib.sha256(contents.encode("utf-8")).hexdigest()
def _create_image_manifest(): def _create_image_manifest():

View File

@ -130,7 +130,7 @@ def test_put_account_setting_changes_service_arn():
response = client.list_services(cluster="dummy-cluster", launchType="FARGATE") response = client.list_services(cluster="dummy-cluster", launchType="FARGATE")
service_arn = response["serviceArns"][0] service_arn = response["serviceArns"][0]
service_arn.should.equal( service_arn.should.equal(
"arn:aws:ecs:eu-west-1:{}:service/test-ecs-service".format(ACCOUNT_ID) f"arn:aws:ecs:eu-west-1:{ACCOUNT_ID}:service/test-ecs-service"
) )
# Second invocation returns long ARN's by default, after deleting the preference # Second invocation returns long ARN's by default, after deleting the preference
@ -138,9 +138,7 @@ def test_put_account_setting_changes_service_arn():
response = client.list_services(cluster="dummy-cluster", launchType="FARGATE") response = client.list_services(cluster="dummy-cluster", launchType="FARGATE")
service_arn = response["serviceArns"][0] service_arn = response["serviceArns"][0]
service_arn.should.equal( service_arn.should.equal(
"arn:aws:ecs:eu-west-1:{}:service/dummy-cluster/test-ecs-service".format( f"arn:aws:ecs:eu-west-1:{ACCOUNT_ID}:service/dummy-cluster/test-ecs-service"
ACCOUNT_ID
)
) )

View File

@ -30,7 +30,7 @@ def test_create_cluster():
response = client.create_cluster(clusterName="test_ecs_cluster") response = client.create_cluster(clusterName="test_ecs_cluster")
response["cluster"]["clusterName"].should.equal("test_ecs_cluster") response["cluster"]["clusterName"].should.equal("test_ecs_cluster")
response["cluster"]["clusterArn"].should.equal( response["cluster"]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/test_ecs_cluster".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test_ecs_cluster"
) )
response["cluster"]["status"].should.equal("ACTIVE") response["cluster"]["status"].should.equal("ACTIVE")
response["cluster"]["registeredContainerInstancesCount"].should.equal(0) response["cluster"]["registeredContainerInstancesCount"].should.equal(0)
@ -60,10 +60,10 @@ def test_list_clusters():
_ = client.create_cluster(clusterName="test_cluster1") _ = client.create_cluster(clusterName="test_cluster1")
response = client.list_clusters() response = client.list_clusters()
response["clusterArns"].should.contain( response["clusterArns"].should.contain(
"arn:aws:ecs:us-east-2:{}:cluster/test_cluster0".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-2:{ACCOUNT_ID}:cluster/test_cluster0"
) )
response["clusterArns"].should.contain( response["clusterArns"].should.contain(
"arn:aws:ecs:us-east-2:{}:cluster/test_cluster1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-2:{ACCOUNT_ID}:cluster/test_cluster1"
) )
@ -104,7 +104,7 @@ def test_describe_clusters_missing():
response = client.describe_clusters(clusters=["some-cluster"]) response = client.describe_clusters(clusters=["some-cluster"])
response["failures"].should.contain( response["failures"].should.contain(
{ {
"arn": "arn:aws:ecs:us-east-1:{}:cluster/some-cluster".format(ACCOUNT_ID), "arn": f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/some-cluster",
"reason": "MISSING", "reason": "MISSING",
} }
) )
@ -117,7 +117,7 @@ def test_delete_cluster():
response = client.delete_cluster(cluster="test_ecs_cluster") response = client.delete_cluster(cluster="test_ecs_cluster")
response["cluster"]["clusterName"].should.equal("test_ecs_cluster") response["cluster"]["clusterName"].should.equal("test_ecs_cluster")
response["cluster"]["clusterArn"].should.equal( response["cluster"]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/test_ecs_cluster".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test_ecs_cluster"
) )
response["cluster"]["status"].should.equal("ACTIVE") response["cluster"]["status"].should.equal("ACTIVE")
response["cluster"]["registeredContainerInstancesCount"].should.equal(0) response["cluster"]["registeredContainerInstancesCount"].should.equal(0)
@ -154,7 +154,7 @@ def test_register_task_definition():
response["taskDefinition"]["family"].should.equal("test_ecs_task") response["taskDefinition"]["family"].should.equal("test_ecs_task")
response["taskDefinition"]["revision"].should.equal(1) response["taskDefinition"]["revision"].should.equal(1)
response["taskDefinition"]["taskDefinitionArn"].should.equal( response["taskDefinition"]["taskDefinitionArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
response["taskDefinition"]["networkMode"].should.equal("bridge") response["taskDefinition"]["networkMode"].should.equal("bridge")
response["taskDefinition"]["volumes"].should.equal([]) response["taskDefinition"]["volumes"].should.equal([])
@ -192,7 +192,7 @@ def test_register_task_definition():
response["taskDefinition"]["revision"].should.equal(2) response["taskDefinition"]["revision"].should.equal(2)
response["taskDefinition"]["taskDefinitionArn"].should.equal( response["taskDefinition"]["taskDefinitionArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:2".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:2"
) )
# Registering with optional top-level params # Registering with optional top-level params
@ -293,10 +293,10 @@ def test_list_task_definitions():
response = client.list_task_definitions() response = client.list_task_definitions()
len(response["taskDefinitionArns"]).should.equal(2) len(response["taskDefinitionArns"]).should.equal(2)
response["taskDefinitionArns"][0].should.equal( response["taskDefinitionArns"][0].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
response["taskDefinitionArns"][1].should.equal( response["taskDefinitionArns"][1].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:2".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:2"
) )
@ -356,10 +356,10 @@ def test_list_task_definitions_with_family_prefix():
filtered_response = client.list_task_definitions(familyPrefix="test_ecs_task_a") filtered_response = client.list_task_definitions(familyPrefix="test_ecs_task_a")
len(filtered_response["taskDefinitionArns"]).should.equal(2) len(filtered_response["taskDefinitionArns"]).should.equal(2)
filtered_response["taskDefinitionArns"][0].should.equal( filtered_response["taskDefinitionArns"][0].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task_a:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task_a:1"
) )
filtered_response["taskDefinitionArns"][1].should.equal( filtered_response["taskDefinitionArns"][1].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task_a:2".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task_a:2"
) )
@ -419,12 +419,12 @@ def test_describe_task_definitions():
) )
response = client.describe_task_definition(taskDefinition="test_ecs_task") response = client.describe_task_definition(taskDefinition="test_ecs_task")
response["taskDefinition"]["taskDefinitionArn"].should.equal( response["taskDefinition"]["taskDefinitionArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:3".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:3"
) )
response = client.describe_task_definition(taskDefinition="test_ecs_task:2") response = client.describe_task_definition(taskDefinition="test_ecs_task:2")
response["taskDefinition"]["taskDefinitionArn"].should.equal( response["taskDefinition"]["taskDefinitionArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:2".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:2"
) )
response["taskDefinition"]["taskRoleArn"].should.equal("my-task-role-arn") response["taskDefinition"]["taskRoleArn"].should.equal("my-task-role-arn")
response["taskDefinition"]["executionRoleArn"].should.equal("my-execution-role-arn") response["taskDefinition"]["executionRoleArn"].should.equal("my-execution-role-arn")
@ -458,7 +458,7 @@ def test_deregister_task_definition_1():
type(response["taskDefinition"]).should.be(dict) type(response["taskDefinition"]).should.be(dict)
response["taskDefinition"]["status"].should.equal("INACTIVE") response["taskDefinition"]["status"].should.equal("INACTIVE")
response["taskDefinition"]["taskDefinitionArn"].should.equal( response["taskDefinition"]["taskDefinitionArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
response["taskDefinition"]["containerDefinitions"][0]["name"].should.equal( response["taskDefinition"]["containerDefinitions"][0]["name"].should.equal(
"hello_world" "hello_world"
@ -526,7 +526,7 @@ def test_create_service():
desiredCount=2, desiredCount=2,
) )
response["service"]["clusterArn"].should.equal( response["service"]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/test_ecs_cluster".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test_ecs_cluster"
) )
response["service"]["desiredCount"].should.equal(2) response["service"]["desiredCount"].should.equal(2)
len(response["service"]["events"]).should.equal(0) len(response["service"]["events"]).should.equal(0)
@ -534,14 +534,12 @@ def test_create_service():
response["service"]["pendingCount"].should.equal(0) response["service"]["pendingCount"].should.equal(0)
response["service"]["runningCount"].should.equal(0) response["service"]["runningCount"].should.equal(0)
response["service"]["serviceArn"].should.equal( response["service"]["serviceArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service"
ACCOUNT_ID
)
) )
response["service"]["serviceName"].should.equal("test_ecs_service") response["service"]["serviceName"].should.equal("test_ecs_service")
response["service"]["status"].should.equal("ACTIVE") response["service"]["status"].should.equal("ACTIVE")
response["service"]["taskDefinition"].should.equal( response["service"]["taskDefinition"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
response["service"]["schedulingStrategy"].should.equal("REPLICA") response["service"]["schedulingStrategy"].should.equal("REPLICA")
response["service"]["launchType"].should.equal("EC2") response["service"]["launchType"].should.equal("EC2")
@ -618,7 +616,7 @@ def test_create_service_scheduling_strategy():
schedulingStrategy="DAEMON", schedulingStrategy="DAEMON",
) )
response["service"]["clusterArn"].should.equal( response["service"]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/test_ecs_cluster".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test_ecs_cluster"
) )
response["service"]["desiredCount"].should.equal(2) response["service"]["desiredCount"].should.equal(2)
len(response["service"]["events"]).should.equal(0) len(response["service"]["events"]).should.equal(0)
@ -626,14 +624,12 @@ def test_create_service_scheduling_strategy():
response["service"]["pendingCount"].should.equal(0) response["service"]["pendingCount"].should.equal(0)
response["service"]["runningCount"].should.equal(0) response["service"]["runningCount"].should.equal(0)
response["service"]["serviceArn"].should.equal( response["service"]["serviceArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service"
ACCOUNT_ID
)
) )
response["service"]["serviceName"].should.equal("test_ecs_service") response["service"]["serviceName"].should.equal("test_ecs_service")
response["service"]["status"].should.equal("ACTIVE") response["service"]["status"].should.equal("ACTIVE")
response["service"]["taskDefinition"].should.equal( response["service"]["taskDefinition"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
response["service"]["schedulingStrategy"].should.equal("DAEMON") response["service"]["schedulingStrategy"].should.equal("DAEMON")
@ -684,16 +680,8 @@ def test_list_services():
desiredCount=2, desiredCount=2,
) )
test_ecs_service1_arn = ( test_ecs_service1_arn = f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster1/test_ecs_service1"
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster1/test_ecs_service1".format( test_ecs_service2_arn = f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster1/test_ecs_service2"
ACCOUNT_ID
)
)
test_ecs_service2_arn = (
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster1/test_ecs_service2".format(
ACCOUNT_ID
)
)
cluster1_services = client.list_services(cluster="test_ecs_cluster1") cluster1_services = client.list_services(cluster="test_ecs_cluster1")
len(cluster1_services["serviceArns"]).should.equal(2) len(cluster1_services["serviceArns"]).should.equal(2)
@ -766,22 +754,16 @@ def test_describe_services():
cluster="test_ecs_cluster", cluster="test_ecs_cluster",
services=[ services=[
"test_ecs_service1", "test_ecs_service1",
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service2".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service2",
ACCOUNT_ID
),
], ],
) )
len(response["services"]).should.equal(2) len(response["services"]).should.equal(2)
response["services"][0]["serviceArn"].should.equal( response["services"][0]["serviceArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service1".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service1"
ACCOUNT_ID
)
) )
response["services"][0]["serviceName"].should.equal("test_ecs_service1") response["services"][0]["serviceName"].should.equal("test_ecs_service1")
response["services"][1]["serviceArn"].should.equal( response["services"][1]["serviceArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service2".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service2"
ACCOUNT_ID
)
) )
response["services"][1]["serviceName"].should.equal("test_ecs_service2") response["services"][1]["serviceName"].should.equal("test_ecs_service2")
@ -802,9 +784,7 @@ def test_describe_services():
cluster="test_ecs_cluster", cluster="test_ecs_cluster",
services=[ services=[
"test_ecs_service1", "test_ecs_service1",
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service2".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service2",
ACCOUNT_ID
),
], ],
include=["TAGS"], include=["TAGS"],
) )
@ -840,9 +820,7 @@ def test_describe_services_new_arn():
cluster="test_ecs_cluster", services=["test_ecs_service1"] cluster="test_ecs_cluster", services=["test_ecs_service1"]
) )
response["services"][0]["serviceArn"].should.equal( response["services"][0]["serviceArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service1".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service1"
ACCOUNT_ID
)
) )
@ -889,23 +867,17 @@ def test_describe_services_scheduling_strategy():
cluster="test_ecs_cluster", cluster="test_ecs_cluster",
services=[ services=[
"test_ecs_service1", "test_ecs_service1",
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service2".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service2",
ACCOUNT_ID
),
"test_ecs_service3", "test_ecs_service3",
], ],
) )
len(response["services"]).should.equal(3) len(response["services"]).should.equal(3)
response["services"][0]["serviceArn"].should.equal( response["services"][0]["serviceArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service1".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service1"
ACCOUNT_ID
)
) )
response["services"][0]["serviceName"].should.equal("test_ecs_service1") response["services"][0]["serviceName"].should.equal("test_ecs_service1")
response["services"][1]["serviceArn"].should.equal( response["services"][1]["serviceArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service2".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service2"
ACCOUNT_ID
)
) )
response["services"][1]["serviceName"].should.equal("test_ecs_service2") response["services"][1]["serviceName"].should.equal("test_ecs_service2")
@ -971,7 +943,7 @@ def test_describe_services_with_known_unknown_services():
service_name, service_name,
"unknown", "unknown",
service_arn, service_arn,
"arn:aws:ecs:eu-central-1:{}:service/unknown-2".format(ACCOUNT_ID), f"arn:aws:ecs:eu-central-1:{ACCOUNT_ID}:service/unknown-2",
], ],
) )
@ -987,13 +959,11 @@ def test_describe_services_with_known_unknown_services():
sorted(failures, key=lambda item: item["arn"]).should.equal( sorted(failures, key=lambda item: item["arn"]).should.equal(
[ [
{ {
"arn": "arn:aws:ecs:eu-central-1:{}:service/unknown".format(ACCOUNT_ID), "arn": f"arn:aws:ecs:eu-central-1:{ACCOUNT_ID}:service/unknown",
"reason": "MISSING", "reason": "MISSING",
}, },
{ {
"arn": "arn:aws:ecs:eu-central-1:{}:service/unknown-2".format( "arn": f"arn:aws:ecs:eu-central-1:{ACCOUNT_ID}:service/unknown-2",
ACCOUNT_ID
),
"reason": "MISSING", "reason": "MISSING",
}, },
] ]
@ -1093,7 +1063,7 @@ def test_delete_service():
cluster="test_ecs_cluster", service="test_ecs_service" cluster="test_ecs_cluster", service="test_ecs_service"
) )
response["service"]["clusterArn"].should.equal( response["service"]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/test_ecs_cluster".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test_ecs_cluster"
) )
response["service"]["desiredCount"].should.equal(0) response["service"]["desiredCount"].should.equal(0)
len(response["service"]["events"]).should.equal(0) len(response["service"]["events"]).should.equal(0)
@ -1101,15 +1071,13 @@ def test_delete_service():
response["service"]["pendingCount"].should.equal(0) response["service"]["pendingCount"].should.equal(0)
response["service"]["runningCount"].should.equal(0) response["service"]["runningCount"].should.equal(0)
response["service"]["serviceArn"].should.equal( response["service"]["serviceArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service"
ACCOUNT_ID
)
) )
response["service"]["serviceName"].should.equal("test_ecs_service") response["service"]["serviceName"].should.equal("test_ecs_service")
response["service"]["status"].should.equal("ACTIVE") response["service"]["status"].should.equal("ACTIVE")
response["service"]["schedulingStrategy"].should.equal("REPLICA") response["service"]["schedulingStrategy"].should.equal("REPLICA")
response["service"]["taskDefinition"].should.equal( response["service"]["taskDefinition"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
@ -1146,7 +1114,7 @@ def test_delete_service__using_arns():
) )
response = client.delete_service(cluster=cluster_arn, service=service_arn) response = client.delete_service(cluster=cluster_arn, service=service_arn)
response["service"]["clusterArn"].should.equal( response["service"]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/test_ecs_cluster".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test_ecs_cluster"
) )
@ -1180,22 +1148,20 @@ def test_delete_service_force():
cluster="test_ecs_cluster", service="test_ecs_service", force=True cluster="test_ecs_cluster", service="test_ecs_service", force=True
) )
response["service"]["clusterArn"].should.equal( response["service"]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/test_ecs_cluster".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test_ecs_cluster"
) )
len(response["service"]["events"]).should.equal(0) len(response["service"]["events"]).should.equal(0)
len(response["service"]["loadBalancers"]).should.equal(0) len(response["service"]["loadBalancers"]).should.equal(0)
response["service"]["pendingCount"].should.equal(0) response["service"]["pendingCount"].should.equal(0)
response["service"]["runningCount"].should.equal(0) response["service"]["runningCount"].should.equal(0)
response["service"]["serviceArn"].should.equal( response["service"]["serviceArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service"
ACCOUNT_ID
)
) )
response["service"]["serviceName"].should.equal("test_ecs_service") response["service"]["serviceName"].should.equal("test_ecs_service")
response["service"]["status"].should.equal("ACTIVE") response["service"]["status"].should.equal("ACTIVE")
response["service"]["schedulingStrategy"].should.equal("REPLICA") response["service"]["schedulingStrategy"].should.equal("REPLICA")
response["service"]["taskDefinition"].should.equal( response["service"]["taskDefinition"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
@ -1277,9 +1243,7 @@ def test_register_container_instance():
response["containerInstance"]["ec2InstanceId"].should.equal(test_instance.id) response["containerInstance"]["ec2InstanceId"].should.equal(test_instance.id)
full_arn = response["containerInstance"]["containerInstanceArn"] full_arn = response["containerInstance"]["containerInstanceArn"]
arn_part = full_arn.split("/") arn_part = full_arn.split("/")
arn_part[0].should.equal( arn_part[0].should.equal(f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:container-instance")
"arn:aws:ecs:us-east-1:{}:container-instance".format(ACCOUNT_ID)
)
arn_part[1].should.equal("test_ecs_cluster") arn_part[1].should.equal("test_ecs_cluster")
arn_part[2].should.equal(str(UUID(arn_part[2]))) arn_part[2].should.equal(str(UUID(arn_part[2])))
response["containerInstance"]["status"].should.equal("ACTIVE") response["containerInstance"]["status"].should.equal("ACTIVE")
@ -1686,16 +1650,16 @@ def test_run_task():
) )
len(response["tasks"]).should.equal(2) len(response["tasks"]).should.equal(2)
response["tasks"][0]["taskArn"].should.contain( response["tasks"][0]["taskArn"].should.contain(
"arn:aws:ecs:us-east-1:{}:task/".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task/"
) )
response["tasks"][0]["clusterArn"].should.equal( response["tasks"][0]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/test_ecs_cluster".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test_ecs_cluster"
) )
response["tasks"][0]["taskDefinitionArn"].should.equal( response["tasks"][0]["taskDefinitionArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
response["tasks"][0]["containerInstanceArn"].should.contain( response["tasks"][0]["containerInstanceArn"].should.contain(
"arn:aws:ecs:us-east-1:{}:container-instance/".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:container-instance/"
) )
response["tasks"][0]["overrides"].should.equal({}) response["tasks"][0]["overrides"].should.equal({})
response["tasks"][0]["lastStatus"].should.equal("RUNNING") response["tasks"][0]["lastStatus"].should.equal("RUNNING")
@ -1835,16 +1799,16 @@ def test_run_task_default_cluster():
len(response["tasks"]).should.equal(2) len(response["tasks"]).should.equal(2)
response["tasks"][0].should.have.key("launchType").equals("FARGATE") response["tasks"][0].should.have.key("launchType").equals("FARGATE")
response["tasks"][0]["taskArn"].should.match( response["tasks"][0]["taskArn"].should.match(
"arn:aws:ecs:us-east-1:{}:task/default/[a-z0-9-]+$".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task/default/[a-z0-9-]+$"
) )
response["tasks"][0]["clusterArn"].should.equal( response["tasks"][0]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/default".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/default"
) )
response["tasks"][0]["taskDefinitionArn"].should.equal( response["tasks"][0]["taskDefinitionArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
response["tasks"][0]["containerInstanceArn"].should.contain( response["tasks"][0]["containerInstanceArn"].should.contain(
"arn:aws:ecs:us-east-1:{}:container-instance/".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:container-instance/"
) )
response["tasks"][0]["overrides"].should.equal({}) response["tasks"][0]["overrides"].should.equal({})
response["tasks"][0]["lastStatus"].should.equal("RUNNING") response["tasks"][0]["lastStatus"].should.equal("RUNNING")
@ -1975,18 +1939,16 @@ def test_start_task():
len(response["tasks"]).should.equal(1) len(response["tasks"]).should.equal(1)
response["tasks"][0]["taskArn"].should.contain( response["tasks"][0]["taskArn"].should.contain(
"arn:aws:ecs:us-east-1:{}:task/".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task/"
) )
response["tasks"][0]["clusterArn"].should.equal( response["tasks"][0]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/test_ecs_cluster".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test_ecs_cluster"
) )
response["tasks"][0]["taskDefinitionArn"].should.equal( response["tasks"][0]["taskDefinitionArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
response["tasks"][0]["containerInstanceArn"].should.equal( response["tasks"][0]["containerInstanceArn"].should.equal(
"arn:aws:ecs:us-east-1:{0}:container-instance/test_ecs_cluster/{1}".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:container-instance/test_ecs_cluster/{container_instance_id}"
ACCOUNT_ID, container_instance_id
)
) )
response["tasks"][0]["overrides"].should.equal({}) response["tasks"][0]["overrides"].should.equal({})
response["tasks"][0]["lastStatus"].should.equal("RUNNING") response["tasks"][0]["lastStatus"].should.equal("RUNNING")
@ -2190,7 +2152,7 @@ def test_describe_task_definition_by_family():
) )
) )
task["taskDefinitionArn"].should.equal( task["taskDefinitionArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
task["volumes"].should.equal([]) task["volumes"].should.equal([])
task["status"].should.equal("ACTIVE") task["status"].should.equal("ACTIVE")
@ -2508,16 +2470,16 @@ def test_task_definitions_with_port_clash():
) )
len(response["tasks"]).should.equal(1) len(response["tasks"]).should.equal(1)
response["tasks"][0]["taskArn"].should.contain( response["tasks"][0]["taskArn"].should.contain(
"arn:aws:ecs:us-east-1:{}:task/".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task/"
) )
response["tasks"][0]["clusterArn"].should.equal( response["tasks"][0]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/test_ecs_cluster".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test_ecs_cluster"
) )
response["tasks"][0]["taskDefinitionArn"].should.equal( response["tasks"][0]["taskDefinitionArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
response["tasks"][0]["containerInstanceArn"].should.contain( response["tasks"][0]["containerInstanceArn"].should.contain(
"arn:aws:ecs:us-east-1:{}:container-instance/".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:container-instance/"
) )
response["tasks"][0]["overrides"].should.equal({}) response["tasks"][0]["overrides"].should.equal({})
response["tasks"][0]["lastStatus"].should.equal("RUNNING") response["tasks"][0]["lastStatus"].should.equal("RUNNING")
@ -2857,7 +2819,7 @@ def test_create_service_load_balancing():
], ],
) )
response["service"]["clusterArn"].should.equal( response["service"]["clusterArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:cluster/test_ecs_cluster".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:cluster/test_ecs_cluster"
) )
response["service"]["desiredCount"].should.equal(2) response["service"]["desiredCount"].should.equal(2)
len(response["service"]["events"]).should.equal(0) len(response["service"]["events"]).should.equal(0)
@ -2875,14 +2837,12 @@ def test_create_service_load_balancing():
response["service"]["pendingCount"].should.equal(0) response["service"]["pendingCount"].should.equal(0)
response["service"]["runningCount"].should.equal(0) response["service"]["runningCount"].should.equal(0)
response["service"]["serviceArn"].should.equal( response["service"]["serviceArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:service/test_ecs_cluster/test_ecs_service".format( f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:service/test_ecs_cluster/test_ecs_service"
ACCOUNT_ID
)
) )
response["service"]["serviceName"].should.equal("test_ecs_service") response["service"]["serviceName"].should.equal("test_ecs_service")
response["service"]["status"].should.equal("ACTIVE") response["service"]["status"].should.equal("ACTIVE")
response["service"]["taskDefinition"].should.equal( response["service"]["taskDefinition"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
@ -2912,7 +2872,7 @@ def test_list_tags_for_resource():
type(response["taskDefinition"]).should.be(dict) type(response["taskDefinition"]).should.be(dict)
response["taskDefinition"]["revision"].should.equal(1) response["taskDefinition"]["revision"].should.equal(1)
response["taskDefinition"]["taskDefinitionArn"].should.equal( response["taskDefinition"]["taskDefinitionArn"].should.equal(
"arn:aws:ecs:us-east-1:{}:task-definition/test_ecs_task:1".format(ACCOUNT_ID) f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
) )
task_definition_arn = response["taskDefinition"]["taskDefinitionArn"] task_definition_arn = response["taskDefinition"]["taskDefinitionArn"]
@ -3255,7 +3215,7 @@ def test_create_task_set():
)["services"][0]["serviceArn"] )["services"][0]["serviceArn"]
task_set["clusterArn"].should.equal(cluster_arn) task_set["clusterArn"].should.equal(cluster_arn)
task_set["serviceArn"].should.equal(service_arn) task_set["serviceArn"].should.equal(service_arn)
task_set["taskDefinition"].should.match("{0}:1$".format(task_def_name)) task_set["taskDefinition"].should.match(f"{task_def_name}:1$")
task_set["scale"].should.equal({"value": 100.0, "unit": "PERCENT"}) task_set["scale"].should.equal({"value": 100.0, "unit": "PERCENT"})
task_set["loadBalancers"][0]["targetGroupArn"].should.equal( task_set["loadBalancers"][0]["targetGroupArn"].should.equal(
"arn:aws:elasticloadbalancing:us-east-1:01234567890:targetgroup/" "arn:aws:elasticloadbalancing:us-east-1:01234567890:targetgroup/"
@ -3384,12 +3344,12 @@ def test_describe_task_sets():
task_sets[0].should.have.key("tags") task_sets[0].should.have.key("tags")
task_sets.should.have.length_of(1) task_sets.should.have.length_of(1)
task_sets[0]["taskDefinition"].should.match("{0}:1$".format(task_def_name)) task_sets[0]["taskDefinition"].should.match(f"{task_def_name}:1$")
task_sets[0]["clusterArn"].should.equal(cluster_arn) task_sets[0]["clusterArn"].should.equal(cluster_arn)
task_sets[0]["serviceArn"].should.equal(service_arn) task_sets[0]["serviceArn"].should.equal(service_arn)
task_sets[0]["serviceArn"].should.match("{0}$".format(service_name)) task_sets[0]["serviceArn"].should.match(f"{service_name}$")
task_sets[0]["scale"].should.equal({"value": 100.0, "unit": "PERCENT"}) task_sets[0]["scale"].should.equal({"value": 100.0, "unit": "PERCENT"})
task_sets[0]["taskSetArn"].should.match("{0}$".format(task_sets[0]["id"])) task_sets[0]["taskSetArn"].should.match(f"{task_sets[0]['id']}$")
task_sets[0]["loadBalancers"][0]["targetGroupArn"].should.equal( task_sets[0]["loadBalancers"][0]["targetGroupArn"].should.equal(
"arn:aws:elasticloadbalancing:us-east-1:01234567890:targetgroup/" "arn:aws:elasticloadbalancing:us-east-1:01234567890:targetgroup/"
"c26b93c1bc35466ba792d5b08fe6a5bc/ec39113f8831453a" "c26b93c1bc35466ba792d5b08fe6a5bc/ec39113f8831453a"

View File

@ -262,7 +262,7 @@ def test_describe_file_systems_aws_create_sample_2(efs):
def test_describe_file_systems_paging(efs): def test_describe_file_systems_paging(efs):
# Create several file systems. # Create several file systems.
for i in range(10): for i in range(10):
efs.create_file_system(CreationToken="foobar_{}".format(i)) efs.create_file_system(CreationToken=f"foobar_{i}")
# First call (Start) # First call (Start)
# ------------------ # ------------------

View File

@ -91,9 +91,9 @@ def test_create_mount_target_aws_sample_2(efs, ec2, file_system, subnet):
ip_addr = ip_addr_obj.exploded ip_addr = ip_addr_obj.exploded
break break
else: else:
assert False, "Could not generate an IP address from CIDR block: {}".format( assert (
subnet["CidrBlock"] False
) ), f"Could not generate an IP address from CIDR block: {subnet['CidrBlock']}"
desc_sg_resp = ec2.describe_security_groups() desc_sg_resp = ec2.describe_security_groups()
security_group = desc_sg_resp["SecurityGroups"][0] security_group = desc_sg_resp["SecurityGroups"][0]
security_group_id = security_group["GroupId"] security_group_id = security_group["GroupId"]
@ -216,8 +216,8 @@ def test_create_mount_target_too_many_security_groups(efs, ec2, file_system, sub
for i in range(6): for i in range(6):
sg_info = ec2.create_security_group( sg_info = ec2.create_security_group(
VpcId=subnet["VpcId"], VpcId=subnet["VpcId"],
GroupName="sg-{}".format(i), GroupName=f"sg-{i}",
Description="SG-{} protects us from the Goa'uld.".format(i), Description=f"SG-{i} protects us from the Goa'uld.",
) )
sg_id_list.append(sg_info["GroupId"]) sg_id_list.append(sg_info["GroupId"])
with pytest.raises(ClientError) as exc_info: with pytest.raises(ClientError) as exc_info:

View File

@ -61,7 +61,7 @@ def test_efs_file_system_describe(efs_client):
def test_efs_file_system_delete(file_system_id, efs_client): def test_efs_file_system_delete(file_system_id, efs_client):
res = efs_client.delete("/2015-02-01/file-systems/{}".format(file_system_id)) res = efs_client.delete(f"/2015-02-01/file-systems/{file_system_id}")
assert res.status_code == 204 assert res.status_code == 204
@ -84,12 +84,10 @@ def test_efs_mount_target_delete(file_system_id, subnet_id, efs_client):
json={"FileSystemId": file_system_id, "SubnetId": subnet_id}, json={"FileSystemId": file_system_id, "SubnetId": subnet_id},
) )
mt_id = create_res.json["MountTargetId"] mt_id = create_res.json["MountTargetId"]
res = efs_client.delete("/2015-02-01/mount-targets/{}".format(mt_id)) res = efs_client.delete(f"/2015-02-01/mount-targets/{mt_id}")
assert res.status_code == 204 assert res.status_code == 204
def test_efs_describe_backup_policy(file_system_id, efs_client): def test_efs_describe_backup_policy(file_system_id, efs_client):
res = efs_client.get( res = efs_client.get(f"/2015-02-01/file-systems/{file_system_id}/backup-policy")
"/2015-02-01/file-systems/{}/backup-policy".format(file_system_id)
)
assert res.status_code == 200 assert res.status_code == 200

View File

@ -60,7 +60,7 @@ def generate_fargate_profiles(client, cluster_name, num_profiles, minimal):
client.create_fargate_profile( client.create_fargate_profile(
fargateProfileName=generate_random_name(), fargateProfileName=generate_random_name(),
clusterName=cluster_name, clusterName=cluster_name,
**_input_builder(FargateProfileInputs, minimal) **_input_builder(FargateProfileInputs, minimal),
)[ResponseAttributes.FARGATE_PROFILE][ )[ResponseAttributes.FARGATE_PROFILE][
FargateProfileAttributes.FARGATE_PROFILE_NAME FargateProfileAttributes.FARGATE_PROFILE_NAME
] ]
@ -78,17 +78,14 @@ def generate_nodegroups(client, cluster_name, num_nodegroups, minimal):
client.create_nodegroup( client.create_nodegroup(
nodegroupName=generate_random_name(), nodegroupName=generate_random_name(),
clusterName=cluster_name, clusterName=cluster_name,
**_input_builder(NodegroupInputs, minimal) **_input_builder(NodegroupInputs, minimal),
)[ResponseAttributes.NODEGROUP][NodegroupAttributes.NODEGROUP_NAME] )[ResponseAttributes.NODEGROUP][NodegroupAttributes.NODEGROUP_NAME]
for _ in range(num_nodegroups) for _ in range(num_nodegroups)
] ]
def generate_dict(prefix, count): def generate_dict(prefix, count):
return { return {f"{prefix}_{_count}": str(_count) for _count in range(count)}
"{prefix}_{count}".format(prefix=prefix, count=_count): str(_count)
for _count in range(count)
}
def is_valid_uri(value): def is_valid_uri(value):

View File

@ -24,9 +24,7 @@ def test_create_simple_pipeline():
pipeline.should.have.key("Id") pipeline.should.have.key("Id")
pipeline.should.have.key("Name").being.equal("testpipeline") pipeline.should.have.key("Name").being.equal("testpipeline")
pipeline.should.have.key("Arn").being.equal( pipeline.should.have.key("Arn").being.equal(
"arn:aws:elastictranscoder:{}:{}:pipeline/{}".format( f"arn:aws:elastictranscoder:{region}:{ACCOUNT_ID}:pipeline/{pipeline['Id']}"
region, ACCOUNT_ID, pipeline["Id"]
)
) )
pipeline.should.have.key("Status").being.equal("Active") pipeline.should.have.key("Status").being.equal("Active")
pipeline.should.have.key("InputBucket").being.equal("inputtest") pipeline.should.have.key("InputBucket").being.equal("inputtest")
@ -64,9 +62,7 @@ def test_create_pipeline_with_content_config():
pipeline.should.have.key("Id") pipeline.should.have.key("Id")
pipeline.should.have.key("Name").being.equal("testpipeline") pipeline.should.have.key("Name").being.equal("testpipeline")
pipeline.should.have.key("Arn").being.equal( pipeline.should.have.key("Arn").being.equal(
"arn:aws:elastictranscoder:{}:{}:pipeline/{}".format( f"arn:aws:elastictranscoder:{region}:{ACCOUNT_ID}:pipeline/{pipeline['Id']}"
region, ACCOUNT_ID, pipeline["Id"]
)
) )
pipeline.should.have.key("Status").being.equal("Active") pipeline.should.have.key("Status").being.equal("Active")
pipeline.should.have.key("InputBucket").being.equal("inputtest") pipeline.should.have.key("InputBucket").being.equal("inputtest")
@ -186,9 +182,7 @@ def test_list_pipelines():
pipeline.should.have.key("Id") pipeline.should.have.key("Id")
pipeline.should.have.key("Name").being.equal("testpipeline") pipeline.should.have.key("Name").being.equal("testpipeline")
pipeline.should.have.key("Arn").being.equal( pipeline.should.have.key("Arn").being.equal(
"arn:aws:elastictranscoder:{}:{}:pipeline/{}".format( f"arn:aws:elastictranscoder:{region}:{ACCOUNT_ID}:pipeline/{pipeline['Id']}"
region, ACCOUNT_ID, pipeline["Id"]
)
) )
pipeline.should.have.key("Status").being.equal("Active") pipeline.should.have.key("Status").being.equal("Active")
pipeline.should.have.key("InputBucket").being.equal("inputtest") pipeline.should.have.key("InputBucket").being.equal("inputtest")
@ -227,9 +221,7 @@ def test_read_pipeline():
pipeline.should.have.key("Id") pipeline.should.have.key("Id")
pipeline.should.have.key("Name").being.equal("testpipeline") pipeline.should.have.key("Name").being.equal("testpipeline")
pipeline.should.have.key("Arn").being.equal( pipeline.should.have.key("Arn").being.equal(
"arn:aws:elastictranscoder:{}:{}:pipeline/{}".format( f"arn:aws:elastictranscoder:{region}:{ACCOUNT_ID}:pipeline/{pipeline['Id']}"
region, ACCOUNT_ID, pipeline["Id"]
)
) )
pipeline.should.have.key("Status").being.equal("Active") pipeline.should.have.key("Status").being.equal("Active")
pipeline.should.have.key("InputBucket").being.equal("inputtest") pipeline.should.have.key("InputBucket").being.equal("inputtest")
@ -271,9 +263,7 @@ def test_read_nonexisting_pipeline_format():
err = ex.value.response["Error"] err = ex.value.response["Error"]
err["Code"].should.equal("ResourceNotFoundException") err["Code"].should.equal("ResourceNotFoundException")
err["Message"].should.equal( err["Message"].should.equal(
"The specified pipeline was not found: account={}, pipelineId={}.".format( f"The specified pipeline was not found: account={ACCOUNT_ID}, pipelineId={pipeline_id}."
ACCOUNT_ID, pipeline_id
)
) )
@ -298,9 +288,7 @@ def test_update_pipeline_name():
pipeline.should.have.key("Id") pipeline.should.have.key("Id")
pipeline.should.have.key("Name").being.equal("newtestpipeline") pipeline.should.have.key("Name").being.equal("newtestpipeline")
pipeline.should.have.key("Arn").being.equal( pipeline.should.have.key("Arn").being.equal(
"arn:aws:elastictranscoder:{}:{}:pipeline/{}".format( f"arn:aws:elastictranscoder:{region}:{ACCOUNT_ID}:pipeline/{pipeline['Id']}"
region, ACCOUNT_ID, pipeline["Id"]
)
) )
pipeline.should.have.key("Status").being.equal("Active") pipeline.should.have.key("Status").being.equal("Active")
pipeline.should.have.key("InputBucket").being.equal("inputtest") pipeline.should.have.key("InputBucket").being.equal("inputtest")
@ -369,9 +357,7 @@ def test_update_nonexisting_pipeline():
err = ex.value.response["Error"] err = ex.value.response["Error"]
err["Code"].should.equal("ResourceNotFoundException") err["Code"].should.equal("ResourceNotFoundException")
err["Message"].should.equal( err["Message"].should.equal(
"The specified pipeline was not found: account={}, pipelineId={}.".format( f"The specified pipeline was not found: account={ACCOUNT_ID}, pipelineId={pipeline_id}."
ACCOUNT_ID, pipeline_id
)
) )
@ -395,4 +381,4 @@ def test_delete_pipeline():
def create_role_name(name): def create_role_name(name):
return "arn:aws:iam::{}:role/{}".format(ACCOUNT_ID, name) return f"arn:aws:iam::{ACCOUNT_ID}:role/{name}"

View File

@ -248,7 +248,7 @@ def test_describe_paginated_balancers():
for i in range(51): for i in range(51):
client.create_load_balancer( client.create_load_balancer(
LoadBalancerName="my-lb%d" % i, LoadBalancerName=f"my-lb{i}",
Listeners=[ Listeners=[
{"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080} {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080}
], ],

View File

@ -399,7 +399,7 @@ def test_describe_paginated_balancers():
for i in range(51): for i in range(51):
conn.create_load_balancer( conn.create_load_balancer(
Name="my-lb%d" % i, Name=f"my-lb{i}",
Subnets=[subnet1.id, subnet2.id], Subnets=[subnet1.id, subnet2.id],
SecurityGroups=[security_group.id], SecurityGroups=[security_group.id],
Scheme="internal", Scheme="internal",
@ -1685,9 +1685,7 @@ def test_cognito_action_listener_rule():
action = { action = {
"Type": "authenticate-cognito", "Type": "authenticate-cognito",
"AuthenticateCognitoConfig": { "AuthenticateCognitoConfig": {
"UserPoolArn": "arn:aws:cognito-idp:us-east-1:{}:userpool/us-east-1_ABCD1234".format( "UserPoolArn": f"arn:aws:cognito-idp:us-east-1:{ACCOUNT_ID}:userpool/us-east-1_ABCD1234",
ACCOUNT_ID
),
"UserPoolClientId": "abcd1234abcd", "UserPoolClientId": "abcd1234abcd",
"UserPoolDomain": "testpool", "UserPoolDomain": "testpool",
"AuthenticationRequestExtraParams": {"param": "test"}, "AuthenticationRequestExtraParams": {"param": "test"},

View File

@ -144,9 +144,7 @@ def test_cognito_action_listener_rule_cloudformation():
{ {
"Type": "authenticate-cognito", "Type": "authenticate-cognito",
"AuthenticateCognitoConfig": { "AuthenticateCognitoConfig": {
"UserPoolArn": "arn:aws:cognito-idp:us-east-1:{}:userpool/us-east-1_ABCD1234".format( "UserPoolArn": f"arn:aws:cognito-idp:us-east-1:{ACCOUNT_ID}:userpool/us-east-1_ABCD1234",
ACCOUNT_ID
),
"UserPoolClientId": "abcd1234abcd", "UserPoolClientId": "abcd1234abcd",
"UserPoolDomain": "testpool", "UserPoolDomain": "testpool",
}, },
@ -175,9 +173,7 @@ def test_cognito_action_listener_rule_cloudformation():
{ {
"Type": "authenticate-cognito", "Type": "authenticate-cognito",
"AuthenticateCognitoConfig": { "AuthenticateCognitoConfig": {
"UserPoolArn": "arn:aws:cognito-idp:us-east-1:{}:userpool/us-east-1_ABCD1234".format( "UserPoolArn": f"arn:aws:cognito-idp:us-east-1:{ACCOUNT_ID}:userpool/us-east-1_ABCD1234",
ACCOUNT_ID
),
"UserPoolClientId": "abcd1234abcd", "UserPoolClientId": "abcd1234abcd",
"UserPoolDomain": "testpool", "UserPoolDomain": "testpool",
}, },

View File

@ -131,11 +131,7 @@ def test_create_target_group_and_listeners():
Protocol="HTTPS", Protocol="HTTPS",
Port=443, Port=443,
Certificates=[ Certificates=[
{ {"CertificateArn": f"arn:aws:iam:{ACCOUNT_ID}:server-certificate/test-cert"}
"CertificateArn": "arn:aws:iam:{}:server-certificate/test-cert".format(
ACCOUNT_ID
)
}
], ],
DefaultActions=[actions], DefaultActions=[actions],
) )
@ -143,13 +139,7 @@ def test_create_target_group_and_listeners():
listener.get("Port").should.equal(443) listener.get("Port").should.equal(443)
listener.get("Protocol").should.equal("HTTPS") listener.get("Protocol").should.equal("HTTPS")
listener.get("Certificates").should.equal( listener.get("Certificates").should.equal(
[ [{"CertificateArn": f"arn:aws:iam:{ACCOUNT_ID}:server-certificate/test-cert"}]
{
"CertificateArn": "arn:aws:iam:{}:server-certificate/test-cert".format(
ACCOUNT_ID
)
}
]
) )
listener.get("DefaultActions").should.equal( listener.get("DefaultActions").should.equal(
[{"TargetGroupArn": target_group_arn, "Type": "forward"}] [{"TargetGroupArn": target_group_arn, "Type": "forward"}]

View File

@ -183,9 +183,7 @@ def test_describe_cluster():
cl["TerminationProtected"].should.equal(False) cl["TerminationProtected"].should.equal(False)
cl["VisibleToAllUsers"].should.equal(True) cl["VisibleToAllUsers"].should.equal(True)
cl["ClusterArn"].should.equal( cl["ClusterArn"].should.equal(
"arn:aws:elasticmapreduce:{0}:{1}:cluster/{2}".format( f"arn:aws:elasticmapreduce:{region_name}:{ACCOUNT_ID}:cluster/{cluster_id}"
region_name, ACCOUNT_ID, cluster_id
)
) )
@ -396,7 +394,7 @@ def test_run_job_flow():
args = deepcopy(run_job_flow_args) args = deepcopy(run_job_flow_args)
resp = client.run_job_flow(**args) resp = client.run_job_flow(**args)
resp["ClusterArn"].startswith( resp["ClusterArn"].startswith(
"arn:aws:elasticmapreduce:{0}:{1}:cluster/".format(region_name, ACCOUNT_ID) f"arn:aws:elasticmapreduce:{region_name}:{ACCOUNT_ID}:cluster/"
) )
job_flow_id = resp["JobFlowId"] job_flow_id = resp["JobFlowId"]
resp = client.describe_job_flows(JobFlowIds=[job_flow_id])["JobFlows"][0] resp = client.describe_job_flows(JobFlowIds=[job_flow_id])["JobFlows"][0]
@ -584,9 +582,7 @@ def test_put_remove_auto_scaling_policy():
del resp["AutoScalingPolicy"]["Status"] del resp["AutoScalingPolicy"]["Status"]
resp["AutoScalingPolicy"].should.equal(auto_scaling_policy_with_cluster_id) resp["AutoScalingPolicy"].should.equal(auto_scaling_policy_with_cluster_id)
resp["ClusterArn"].should.equal( resp["ClusterArn"].should.equal(
"arn:aws:elasticmapreduce:{0}:{1}:cluster/{2}".format( f"arn:aws:elasticmapreduce:{region_name}:{ACCOUNT_ID}:cluster/{cluster_id}"
region_name, ACCOUNT_ID, cluster_id
)
) )
core_instance_group = [ core_instance_group = [

View File

@ -185,7 +185,7 @@ def test_describe_rule():
response["Name"].should.equal(rule_name) response["Name"].should.equal(rule_name)
response["Arn"].should.equal( response["Arn"].should.equal(
"arn:aws:events:us-west-2:{0}:rule/{1}".format(ACCOUNT_ID, rule_name) f"arn:aws:events:us-west-2:{ACCOUNT_ID}:rule/{rule_name}"
) )
@ -201,7 +201,7 @@ def test_describe_rule_with_event_bus_name():
EventPattern=json.dumps({"account": [ACCOUNT_ID]}), EventPattern=json.dumps({"account": [ACCOUNT_ID]}),
State="DISABLED", State="DISABLED",
Description="test rule", Description="test rule",
RoleArn="arn:aws:iam::{}:role/test-role".format(ACCOUNT_ID), RoleArn=f"arn:aws:iam::{ACCOUNT_ID}:role/test-role",
EventBusName=event_bus_name, EventBusName=event_bus_name,
) )
@ -210,18 +210,14 @@ def test_describe_rule_with_event_bus_name():
# then # then
response["Arn"].should.equal( response["Arn"].should.equal(
"arn:aws:events:eu-central-1:{0}:rule/{1}/{2}".format( f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:rule/{event_bus_name}/{rule_name}"
ACCOUNT_ID, event_bus_name, rule_name
)
) )
response["CreatedBy"].should.equal(ACCOUNT_ID) response["CreatedBy"].should.equal(ACCOUNT_ID)
response["Description"].should.equal("test rule") response["Description"].should.equal("test rule")
response["EventBusName"].should.equal(event_bus_name) response["EventBusName"].should.equal(event_bus_name)
json.loads(response["EventPattern"]).should.equal({"account": [ACCOUNT_ID]}) json.loads(response["EventPattern"]).should.equal({"account": [ACCOUNT_ID]})
response["Name"].should.equal(rule_name) response["Name"].should.equal(rule_name)
response["RoleArn"].should.equal( response["RoleArn"].should.equal(f"arn:aws:iam::{ACCOUNT_ID}:role/test-role")
"arn:aws:iam::{}:role/test-role".format(ACCOUNT_ID)
)
response["State"].should.equal("DISABLED") response["State"].should.equal("DISABLED")
response.should_not.have.key("ManagedBy") response.should_not.have.key("ManagedBy")
@ -505,9 +501,7 @@ def test_put_targets_error_missing_parameter_sqs_fifo():
Targets=[ Targets=[
{ {
"Id": "sqs-fifo", "Id": "sqs-fifo",
"Arn": "arn:aws:sqs:eu-central-1:{}:test-queue.fifo".format( "Arn": f"arn:aws:sqs:eu-central-1:{ACCOUNT_ID}:test-queue.fifo",
ACCOUNT_ID
),
} }
], ],
) )
@ -770,7 +764,7 @@ def test_create_event_bus():
response = client.create_event_bus(Name="test-bus") response = client.create_event_bus(Name="test-bus")
response["EventBusArn"].should.equal( response["EventBusArn"].should.equal(
"arn:aws:events:us-east-1:{}:event-bus/test-bus".format(ACCOUNT_ID) f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/test-bus"
) )
@ -808,7 +802,7 @@ def test_describe_event_bus():
response["Name"].should.equal("default") response["Name"].should.equal("default")
response["Arn"].should.equal( response["Arn"].should.equal(
"arn:aws:events:us-east-1:{}:event-bus/default".format(ACCOUNT_ID) f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/default"
) )
response.should_not.have.key("Policy") response.should_not.have.key("Policy")
@ -824,7 +818,7 @@ def test_describe_event_bus():
response["Name"].should.equal("test-bus") response["Name"].should.equal("test-bus")
response["Arn"].should.equal( response["Arn"].should.equal(
"arn:aws:events:us-east-1:{}:event-bus/test-bus".format(ACCOUNT_ID) f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/test-bus"
) )
json.loads(response["Policy"]).should.equal( json.loads(response["Policy"]).should.equal(
{ {
@ -835,9 +829,7 @@ def test_describe_event_bus():
"Effect": "Allow", "Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::111111111111:root"}, "Principal": {"AWS": "arn:aws:iam::111111111111:root"},
"Action": "events:PutEvents", "Action": "events:PutEvents",
"Resource": "arn:aws:events:us-east-1:{}:event-bus/test-bus".format( "Resource": f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/test-bus",
ACCOUNT_ID
),
} }
], ],
} }
@ -868,33 +860,23 @@ def test_list_event_buses():
[ [
{ {
"Name": "default", "Name": "default",
"Arn": "arn:aws:events:us-east-1:{}:event-bus/default".format( "Arn": f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/default",
ACCOUNT_ID
),
}, },
{ {
"Name": "other-bus-1", "Name": "other-bus-1",
"Arn": "arn:aws:events:us-east-1:{}:event-bus/other-bus-1".format( "Arn": f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/other-bus-1",
ACCOUNT_ID
),
}, },
{ {
"Name": "other-bus-2", "Name": "other-bus-2",
"Arn": "arn:aws:events:us-east-1:{}:event-bus/other-bus-2".format( "Arn": f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/other-bus-2",
ACCOUNT_ID
),
}, },
{ {
"Name": "test-bus-1", "Name": "test-bus-1",
"Arn": "arn:aws:events:us-east-1:{}:event-bus/test-bus-1".format( "Arn": f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/test-bus-1",
ACCOUNT_ID
),
}, },
{ {
"Name": "test-bus-2", "Name": "test-bus-2",
"Arn": "arn:aws:events:us-east-1:{}:event-bus/test-bus-2".format( "Arn": f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/test-bus-2",
ACCOUNT_ID
),
}, },
] ]
) )
@ -906,15 +888,11 @@ def test_list_event_buses():
[ [
{ {
"Name": "other-bus-1", "Name": "other-bus-1",
"Arn": "arn:aws:events:us-east-1:{}:event-bus/other-bus-1".format( "Arn": f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/other-bus-1",
ACCOUNT_ID
),
}, },
{ {
"Name": "other-bus-2", "Name": "other-bus-2",
"Arn": "arn:aws:events:us-east-1:{}:event-bus/other-bus-2".format( "Arn": f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/other-bus-2",
ACCOUNT_ID
),
}, },
] ]
) )
@ -936,9 +914,7 @@ def test_delete_event_bus():
[ [
{ {
"Name": "default", "Name": "default",
"Arn": "arn:aws:events:us-east-1:{}:event-bus/default".format( "Arn": f"arn:aws:events:us-east-1:{ACCOUNT_ID}:event-bus/default",
ACCOUNT_ID
),
} }
] ]
) )
@ -1016,9 +992,7 @@ def test_tag_resource_error_unknown_arn():
# when # when
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.tag_resource( client.tag_resource(
ResourceARN="arn:aws:events:eu-central-1:{0}:rule/unknown".format( ResourceARN=f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:rule/unknown",
ACCOUNT_ID
),
Tags=[], Tags=[],
) )
@ -1040,9 +1014,7 @@ def test_untag_resource_error_unknown_arn():
# when # when
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.untag_resource( client.untag_resource(
ResourceARN="arn:aws:events:eu-central-1:{0}:rule/unknown".format( ResourceARN=f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:rule/unknown",
ACCOUNT_ID
),
TagKeys=[], TagKeys=[],
) )
@ -1064,9 +1036,7 @@ def test_list_tags_for_resource_error_unknown_arn():
# when # when
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.list_tags_for_resource( client.list_tags_for_resource(
ResourceARN="arn:aws:events:eu-central-1:{0}:rule/unknown".format( ResourceARN=f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:rule/unknown"
ACCOUNT_ID
)
) )
# then # then
@ -1088,24 +1058,22 @@ def test_create_archive():
# when # when
response = client.create_archive( response = client.create_archive(
ArchiveName=archive_name, ArchiveName=archive_name,
EventSourceArn="arn:aws:events:eu-central-1:{}:event-bus/default".format( EventSourceArn=f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default",
ACCOUNT_ID
),
) )
# then # then
response["ArchiveArn"].should.equal( response["ArchiveArn"].should.equal(
"arn:aws:events:eu-central-1:{0}:archive/{1}".format(ACCOUNT_ID, archive_name) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:archive/{archive_name}"
) )
response["CreationTime"].should.be.a(datetime) response["CreationTime"].should.be.a(datetime)
response["State"].should.equal("ENABLED") response["State"].should.equal("ENABLED")
# check for archive rule existence # check for archive rule existence
rule_name = "Events-Archive-{}".format(archive_name) rule_name = f"Events-Archive-{archive_name}"
response = client.describe_rule(Name=rule_name) response = client.describe_rule(Name=rule_name)
response["Arn"].should.equal( response["Arn"].should.equal(
"arn:aws:events:eu-central-1:{0}:rule/{1}".format(ACCOUNT_ID, rule_name) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:rule/{rule_name}"
) )
response["CreatedBy"].should.equal(ACCOUNT_ID) response["CreatedBy"].should.equal(ACCOUNT_ID)
response["EventBusName"].should.equal("default") response["EventBusName"].should.equal("default")
@ -1142,7 +1110,7 @@ def test_create_archive_custom_event_bus():
# then # then
response["ArchiveArn"].should.equal( response["ArchiveArn"].should.equal(
"arn:aws:events:eu-central-1:{}:archive/test-archive".format(ACCOUNT_ID) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:archive/test-archive"
) )
response["CreationTime"].should.be.a(datetime) response["CreationTime"].should.be.a(datetime)
response["State"].should.equal("ENABLED") response["State"].should.equal("ENABLED")
@ -1159,7 +1127,7 @@ def test_create_archive_error_long_name():
client.create_archive( client.create_archive(
ArchiveName=name, ArchiveName=name,
EventSourceArn=( EventSourceArn=(
"arn:aws:events:eu-central-1:{}:event-bus/default".format(ACCOUNT_ID) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
), ),
) )
@ -1170,8 +1138,8 @@ def test_create_archive_error_long_name():
ex.response["Error"]["Code"].should.contain("ValidationException") ex.response["Error"]["Code"].should.contain("ValidationException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(
" 1 validation error detected: " " 1 validation error detected: "
"Value '{}' at 'archiveName' failed to satisfy constraint: " f"Value '{name}' at 'archiveName' failed to satisfy constraint: "
"Member must have length less than or equal to 48".format(name) "Member must have length less than or equal to 48"
) )
@ -1185,7 +1153,7 @@ def test_create_archive_error_invalid_event_pattern():
client.create_archive( client.create_archive(
ArchiveName="test-archive", ArchiveName="test-archive",
EventSourceArn=( EventSourceArn=(
"arn:aws:events:eu-central-1:{}:event-bus/default".format(ACCOUNT_ID) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
), ),
EventPattern="invalid", EventPattern="invalid",
) )
@ -1210,7 +1178,7 @@ def test_create_archive_error_invalid_event_pattern_not_an_array():
client.create_archive( client.create_archive(
ArchiveName="test-archive", ArchiveName="test-archive",
EventSourceArn=( EventSourceArn=(
"arn:aws:events:eu-central-1:{}:event-bus/default".format(ACCOUNT_ID) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
), ),
EventPattern=json.dumps( EventPattern=json.dumps(
{ {
@ -1243,9 +1211,7 @@ def test_create_archive_error_unknown_event_bus():
client.create_archive( client.create_archive(
ArchiveName="test-archive", ArchiveName="test-archive",
EventSourceArn=( EventSourceArn=(
"arn:aws:events:eu-central-1:{}:event-bus/{}".format( f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/{event_bus_name}"
ACCOUNT_ID, event_bus_name
)
), ),
) )
@ -1255,7 +1221,7 @@ def test_create_archive_error_unknown_event_bus():
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("ResourceNotFoundException") ex.response["Error"]["Code"].should.contain("ResourceNotFoundException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(
"Event bus {} does not exist.".format(event_bus_name) f"Event bus {event_bus_name} does not exist."
) )
@ -1264,7 +1230,7 @@ def test_create_archive_error_duplicate():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
name = "test-archive" name = "test-archive"
source_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format(ACCOUNT_ID) source_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
client.create_archive(ArchiveName=name, EventSourceArn=source_arn) client.create_archive(ArchiveName=name, EventSourceArn=source_arn)
# when # when
@ -1284,7 +1250,7 @@ def test_describe_archive():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
name = "test-archive" name = "test-archive"
source_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format(ACCOUNT_ID) source_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
event_pattern = json.dumps({"key": ["value"]}) event_pattern = json.dumps({"key": ["value"]})
client.create_archive( client.create_archive(
ArchiveName=name, ArchiveName=name,
@ -1298,7 +1264,7 @@ def test_describe_archive():
# then # then
response["ArchiveArn"].should.equal( response["ArchiveArn"].should.equal(
"arn:aws:events:eu-central-1:{0}:archive/{1}".format(ACCOUNT_ID, name) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:archive/{name}"
) )
response["ArchiveName"].should.equal(name) response["ArchiveName"].should.equal(name)
response["CreationTime"].should.be.a(datetime) response["CreationTime"].should.be.a(datetime)
@ -1326,9 +1292,7 @@ def test_describe_archive_error_unknown_archive():
ex.operation_name.should.equal("DescribeArchive") ex.operation_name.should.equal("DescribeArchive")
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("ResourceNotFoundException") ex.response["Error"]["Code"].should.contain("ResourceNotFoundException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(f"Archive {name} does not exist.")
"Archive {} does not exist.".format(name)
)
@mock_events @mock_events
@ -1336,7 +1300,7 @@ def test_list_archives():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
name = "test-archive" name = "test-archive"
source_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format(ACCOUNT_ID) source_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
event_pattern = json.dumps({"key": ["value"]}) event_pattern = json.dumps({"key": ["value"]})
client.create_archive( client.create_archive(
ArchiveName=name, ArchiveName=name,
@ -1368,7 +1332,7 @@ def test_list_archives():
def test_list_archives_with_name_prefix(): def test_list_archives_with_name_prefix():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
source_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format(ACCOUNT_ID) source_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
client.create_archive(ArchiveName="test", EventSourceArn=source_arn) client.create_archive(ArchiveName="test", EventSourceArn=source_arn)
client.create_archive(ArchiveName="test-archive", EventSourceArn=source_arn) client.create_archive(ArchiveName="test-archive", EventSourceArn=source_arn)
@ -1384,7 +1348,7 @@ def test_list_archives_with_name_prefix():
def test_list_archives_with_source_arn(): def test_list_archives_with_source_arn():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
source_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format(ACCOUNT_ID) source_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
source_arn_2 = client.create_event_bus(Name="test-bus")["EventBusArn"] source_arn_2 = client.create_event_bus(Name="test-bus")["EventBusArn"]
client.create_archive(ArchiveName="test", EventSourceArn=source_arn) client.create_archive(ArchiveName="test", EventSourceArn=source_arn)
client.create_archive(ArchiveName="test-archive", EventSourceArn=source_arn_2) client.create_archive(ArchiveName="test-archive", EventSourceArn=source_arn_2)
@ -1401,7 +1365,7 @@ def test_list_archives_with_source_arn():
def test_list_archives_with_state(): def test_list_archives_with_state():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
source_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format(ACCOUNT_ID) source_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
client.create_archive(ArchiveName="test", EventSourceArn=source_arn) client.create_archive(ArchiveName="test", EventSourceArn=source_arn)
client.create_archive(ArchiveName="test-archive", EventSourceArn=source_arn) client.create_archive(ArchiveName="test-archive", EventSourceArn=source_arn)
@ -1459,7 +1423,7 @@ def test_update_archive():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
name = "test-archive" name = "test-archive"
source_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format(ACCOUNT_ID) source_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
event_pattern = json.dumps({"key": ["value"]}) event_pattern = json.dumps({"key": ["value"]})
archive_arn = client.create_archive(ArchiveName=name, EventSourceArn=source_arn)[ archive_arn = client.create_archive(ArchiveName=name, EventSourceArn=source_arn)[
"ArchiveArn" "ArchiveArn"
@ -1499,9 +1463,7 @@ def test_update_archive_error_invalid_event_pattern():
name = "test-archive" name = "test-archive"
client.create_archive( client.create_archive(
ArchiveName=name, ArchiveName=name,
EventSourceArn="arn:aws:events:eu-central-1:{}:event-bus/default".format( EventSourceArn=f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default",
ACCOUNT_ID
),
) )
# when # when
@ -1533,9 +1495,7 @@ def test_update_archive_error_unknown_archive():
ex.operation_name.should.equal("UpdateArchive") ex.operation_name.should.equal("UpdateArchive")
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("ResourceNotFoundException") ex.response["Error"]["Code"].should.contain("ResourceNotFoundException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(f"Archive {name} does not exist.")
"Archive {} does not exist.".format(name)
)
@mock_events @mock_events
@ -1545,9 +1505,7 @@ def test_delete_archive():
name = "test-archive" name = "test-archive"
client.create_archive( client.create_archive(
ArchiveName=name, ArchiveName=name,
EventSourceArn="arn:aws:events:eu-central-1:{}:event-bus/default".format( EventSourceArn=f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default",
ACCOUNT_ID
),
) )
# when # when
@ -1573,9 +1531,7 @@ def test_delete_archive_error_unknown_archive():
ex.operation_name.should.equal("DeleteArchive") ex.operation_name.should.equal("DeleteArchive")
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("ResourceNotFoundException") ex.response["Error"]["Code"].should.contain("ResourceNotFoundException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(f"Archive {name} does not exist.")
"Archive {} does not exist.".format(name)
)
@mock_events @mock_events
@ -1585,9 +1541,7 @@ def test_archive_actual_events():
name = "test-archive" name = "test-archive"
name_2 = "test-archive-no-match" name_2 = "test-archive-no-match"
name_3 = "test-archive-matches" name_3 = "test-archive-matches"
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
event = { event = {
"Source": "source", "Source": "source",
"DetailType": "type", "DetailType": "type",
@ -1629,9 +1583,7 @@ def test_archive_actual_events():
def test_archive_event_with_bus_arn(): def test_archive_event_with_bus_arn():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
archive_name = "mock_archive" archive_name = "mock_archive"
event_with_bus_arn = { event_with_bus_arn = {
"Source": "source", "Source": "source",
@ -1658,9 +1610,7 @@ def test_start_replay():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
name = "test-replay" name = "test-replay"
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
archive_arn = client.create_archive( archive_arn = client.create_archive(
ArchiveName="test-archive", EventSourceArn=event_bus_arn ArchiveName="test-archive", EventSourceArn=event_bus_arn
)["ArchiveArn"] )["ArchiveArn"]
@ -1676,7 +1626,7 @@ def test_start_replay():
# then # then
response["ReplayArn"].should.equal( response["ReplayArn"].should.equal(
"arn:aws:events:eu-central-1:{0}:replay/{1}".format(ACCOUNT_ID, name) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:replay/{name}"
) )
response["ReplayStartTime"].should.be.a(datetime) response["ReplayStartTime"].should.be.a(datetime)
response["State"].should.equal("STARTING") response["State"].should.equal("STARTING")
@ -1692,15 +1642,11 @@ def test_start_replay_error_unknown_event_bus():
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.start_replay( client.start_replay(
ReplayName="test", ReplayName="test",
EventSourceArn="arn:aws:events:eu-central-1:{}:archive/test".format( EventSourceArn=f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:archive/test",
ACCOUNT_ID
),
EventStartTime=datetime(2021, 2, 1), EventStartTime=datetime(2021, 2, 1),
EventEndTime=datetime(2021, 2, 2), EventEndTime=datetime(2021, 2, 2),
Destination={ Destination={
"Arn": "arn:aws:events:eu-central-1:{0}:event-bus/{1}".format( "Arn": f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/{event_bus_name}",
ACCOUNT_ID, event_bus_name
),
}, },
) )
@ -1710,7 +1656,7 @@ def test_start_replay_error_unknown_event_bus():
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("ResourceNotFoundException") ex.response["Error"]["Code"].should.contain("ResourceNotFoundException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(
"Event bus {} does not exist.".format(event_bus_name) f"Event bus {event_bus_name} does not exist."
) )
@ -1723,9 +1669,7 @@ def test_start_replay_error_invalid_event_bus_arn():
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.start_replay( client.start_replay(
ReplayName="test", ReplayName="test",
EventSourceArn="arn:aws:events:eu-central-1:{}:archive/test".format( EventSourceArn=f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:archive/test",
ACCOUNT_ID
),
EventStartTime=datetime(2021, 2, 1), EventStartTime=datetime(2021, 2, 1),
EventEndTime=datetime(2021, 2, 2), EventEndTime=datetime(2021, 2, 2),
Destination={ Destination={
@ -1753,15 +1697,11 @@ def test_start_replay_error_unknown_archive():
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.start_replay( client.start_replay(
ReplayName="test", ReplayName="test",
EventSourceArn="arn:aws:events:eu-central-1:{0}:archive/{1}".format( EventSourceArn=f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:archive/{archive_name}",
ACCOUNT_ID, archive_name
),
EventStartTime=datetime(2021, 2, 1), EventStartTime=datetime(2021, 2, 1),
EventEndTime=datetime(2021, 2, 2), EventEndTime=datetime(2021, 2, 2),
Destination={ Destination={
"Arn": "arn:aws:events:eu-central-1:{}:event-bus/default".format( "Arn": f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default",
ACCOUNT_ID
),
}, },
) )
@ -1772,7 +1712,7 @@ def test_start_replay_error_unknown_archive():
ex.response["Error"]["Code"].should.contain("ValidationException") ex.response["Error"]["Code"].should.contain("ValidationException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(
"Parameter EventSourceArn is not valid. " "Parameter EventSourceArn is not valid. "
"Reason: Archive {} does not exist.".format(archive_name) f"Reason: Archive {archive_name} does not exist."
) )
@ -1782,9 +1722,7 @@ def test_start_replay_error_cross_event_bus():
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
archive_arn = client.create_archive( archive_arn = client.create_archive(
ArchiveName="test-archive", ArchiveName="test-archive",
EventSourceArn="arn:aws:events:eu-central-1:{}:event-bus/default".format( EventSourceArn=f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default",
ACCOUNT_ID
),
)["ArchiveArn"] )["ArchiveArn"]
event_bus_arn = client.create_event_bus(Name="test-bus")["EventBusArn"] event_bus_arn = client.create_event_bus(Name="test-bus")["EventBusArn"]
@ -1813,9 +1751,7 @@ def test_start_replay_error_cross_event_bus():
def test_start_replay_error_invalid_end_time(): def test_start_replay_error_invalid_end_time():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
archive_arn = client.create_archive( archive_arn = client.create_archive(
ArchiveName="test-archive", EventSourceArn=event_bus_arn ArchiveName="test-archive", EventSourceArn=event_bus_arn
)["ArchiveArn"] )["ArchiveArn"]
@ -1846,9 +1782,7 @@ def test_start_replay_error_duplicate():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
name = "test-replay" name = "test-replay"
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
archive_arn = client.create_archive( archive_arn = client.create_archive(
ArchiveName="test-archive", EventSourceArn=event_bus_arn ArchiveName="test-archive", EventSourceArn=event_bus_arn
)["ArchiveArn"] )["ArchiveArn"]
@ -1875,9 +1809,7 @@ def test_start_replay_error_duplicate():
ex.operation_name.should.equal("StartReplay") ex.operation_name.should.equal("StartReplay")
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("ResourceAlreadyExistsException") ex.response["Error"]["Code"].should.contain("ResourceAlreadyExistsException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(f"Replay {name} already exists.")
"Replay {} already exists.".format(name)
)
@mock_events @mock_events
@ -1885,9 +1817,7 @@ def test_describe_replay():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
name = "test-replay" name = "test-replay"
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
archive_arn = client.create_archive( archive_arn = client.create_archive(
ArchiveName="test-archive", EventSourceArn=event_bus_arn ArchiveName="test-archive", EventSourceArn=event_bus_arn
)["ArchiveArn"] )["ArchiveArn"]
@ -1910,7 +1840,7 @@ def test_describe_replay():
response["EventStartTime"].should.equal(datetime(2021, 2, 1, tzinfo=pytz.utc)) response["EventStartTime"].should.equal(datetime(2021, 2, 1, tzinfo=pytz.utc))
response["EventEndTime"].should.equal(datetime(2021, 2, 2, tzinfo=pytz.utc)) response["EventEndTime"].should.equal(datetime(2021, 2, 2, tzinfo=pytz.utc))
response["ReplayArn"].should.equal( response["ReplayArn"].should.equal(
"arn:aws:events:eu-central-1:{0}:replay/{1}".format(ACCOUNT_ID, name) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:replay/{name}"
) )
response["ReplayName"].should.equal(name) response["ReplayName"].should.equal(name)
response["ReplayStartTime"].should.be.a(datetime) response["ReplayStartTime"].should.be.a(datetime)
@ -1933,9 +1863,7 @@ def test_describe_replay_error_unknown_replay():
ex.operation_name.should.equal("DescribeReplay") ex.operation_name.should.equal("DescribeReplay")
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("ResourceNotFoundException") ex.response["Error"]["Code"].should.contain("ResourceNotFoundException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(f"Replay {name} does not exist.")
"Replay {} does not exist.".format(name)
)
@mock_events @mock_events
@ -1943,9 +1871,7 @@ def test_list_replays():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
name = "test-replay" name = "test-replay"
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
archive_arn = client.create_archive( archive_arn = client.create_archive(
ArchiveName="test-replay", EventSourceArn=event_bus_arn ArchiveName="test-replay", EventSourceArn=event_bus_arn
)["ArchiveArn"] )["ArchiveArn"]
@ -1977,9 +1903,7 @@ def test_list_replays():
def test_list_replays_with_name_prefix(): def test_list_replays_with_name_prefix():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
archive_arn = client.create_archive( archive_arn = client.create_archive(
ArchiveName="test-replay", EventSourceArn=event_bus_arn ArchiveName="test-replay", EventSourceArn=event_bus_arn
)["ArchiveArn"] )["ArchiveArn"]
@ -2010,9 +1934,7 @@ def test_list_replays_with_name_prefix():
def test_list_replays_with_source_arn(): def test_list_replays_with_source_arn():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
archive_arn = client.create_archive( archive_arn = client.create_archive(
ArchiveName="test-replay", EventSourceArn=event_bus_arn ArchiveName="test-replay", EventSourceArn=event_bus_arn
)["ArchiveArn"] )["ArchiveArn"]
@ -2042,9 +1964,7 @@ def test_list_replays_with_source_arn():
def test_list_replays_with_state(): def test_list_replays_with_state():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
archive_arn = client.create_archive( archive_arn = client.create_archive(
ArchiveName="test-replay", EventSourceArn=event_bus_arn ArchiveName="test-replay", EventSourceArn=event_bus_arn
)["ArchiveArn"] )["ArchiveArn"]
@ -2117,9 +2037,7 @@ def test_cancel_replay():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
name = "test-replay" name = "test-replay"
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
archive_arn = client.create_archive( archive_arn = client.create_archive(
ArchiveName="test-archive", EventSourceArn=event_bus_arn ArchiveName="test-archive", EventSourceArn=event_bus_arn
)["ArchiveArn"] )["ArchiveArn"]
@ -2137,7 +2055,7 @@ def test_cancel_replay():
# then # then
response["ReplayArn"].should.equal( response["ReplayArn"].should.equal(
"arn:aws:events:eu-central-1:{0}:replay/{1}".format(ACCOUNT_ID, name) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:replay/{name}"
) )
response["State"].should.equal("CANCELLING") response["State"].should.equal("CANCELLING")
@ -2160,9 +2078,7 @@ def test_cancel_replay_error_unknown_replay():
ex.operation_name.should.equal("CancelReplay") ex.operation_name.should.equal("CancelReplay")
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("ResourceNotFoundException") ex.response["Error"]["Code"].should.contain("ResourceNotFoundException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(f"Replay {name} does not exist.")
"Replay {} does not exist.".format(name)
)
@mock_events @mock_events
@ -2170,9 +2086,7 @@ def test_cancel_replay_error_illegal_state():
# given # given
client = boto3.client("events", "eu-central-1") client = boto3.client("events", "eu-central-1")
name = "test-replay" name = "test-replay"
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
archive_arn = client.create_archive( archive_arn = client.create_archive(
ArchiveName="test-archive", EventSourceArn=event_bus_arn ArchiveName="test-archive", EventSourceArn=event_bus_arn
)["ArchiveArn"] )["ArchiveArn"]
@ -2196,7 +2110,7 @@ def test_cancel_replay_error_illegal_state():
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("IllegalStatusException") ex.response["Error"]["Code"].should.contain("IllegalStatusException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(
"Replay {} is not in a valid state for this operation.".format(name) f"Replay {name} is not in a valid state for this operation."
) )
@ -2209,18 +2123,14 @@ def test_start_replay_send_to_log_group():
log_group_name = "/test-group" log_group_name = "/test-group"
rule_name = "test-rule" rule_name = "test-rule"
logs_client.create_log_group(logGroupName=log_group_name) logs_client.create_log_group(logGroupName=log_group_name)
event_bus_arn = "arn:aws:events:eu-central-1:{}:event-bus/default".format( event_bus_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:event-bus/default"
ACCOUNT_ID
)
client.put_rule(Name=rule_name, EventPattern=json.dumps({"account": [ACCOUNT_ID]})) client.put_rule(Name=rule_name, EventPattern=json.dumps({"account": [ACCOUNT_ID]}))
client.put_targets( client.put_targets(
Rule=rule_name, Rule=rule_name,
Targets=[ Targets=[
{ {
"Id": "test", "Id": "test",
"Arn": "arn:aws:logs:eu-central-1:{0}:log-group:{1}".format( "Arn": f"arn:aws:logs:eu-central-1:{ACCOUNT_ID}:log-group:{log_group_name}",
ACCOUNT_ID, log_group_name
),
} }
], ],
) )
@ -2296,13 +2206,13 @@ def test_create_and_list_connections():
) )
response.get("ConnectionArn").should.contain( response.get("ConnectionArn").should.contain(
"arn:aws:events:eu-central-1:{0}:connection/test/".format(ACCOUNT_ID) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:connection/test/"
) )
response = client.list_connections() response = client.list_connections()
response.get("Connections")[0].get("ConnectionArn").should.contain( response.get("Connections")[0].get("ConnectionArn").should.contain(
"arn:aws:events:eu-central-1:{0}:connection/test/".format(ACCOUNT_ID) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:connection/test/"
) )

View File

@ -84,7 +84,7 @@ def test_create_archive():
cfn_client.create_stack(StackName=stack_name, TemplateBody=template) cfn_client.create_stack(StackName=stack_name, TemplateBody=template)
# then # then
archive_arn = "arn:aws:events:eu-central-1:{0}:archive/{1}".format(ACCOUNT_ID, name) archive_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:archive/{name}"
stack = cfn_client.describe_stacks(StackName=stack_name)["Stacks"][0] stack = cfn_client.describe_stacks(StackName=stack_name)["Stacks"][0]
stack["Outputs"][0]["OutputValue"].should.equal(archive_arn) stack["Outputs"][0]["OutputValue"].should.equal(archive_arn)
@ -119,7 +119,7 @@ def test_update_archive():
response = events_client.describe_archive(ArchiveName=name) response = events_client.describe_archive(ArchiveName=name)
response["ArchiveArn"].should.equal( response["ArchiveArn"].should.equal(
"arn:aws:events:eu-central-1:{0}:archive/{1}".format(ACCOUNT_ID, name) f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:archive/{name}"
) )
response["Description"].should.equal("test archive") response["Description"].should.equal("test archive")
@ -156,7 +156,7 @@ def test_create_rule():
cfn_client.create_stack(StackName=stack_name, TemplateBody=template) cfn_client.create_stack(StackName=stack_name, TemplateBody=template)
# then # then
rule_arn = "arn:aws:events:eu-central-1:{0}:rule/{1}".format(ACCOUNT_ID, name) rule_arn = f"arn:aws:events:eu-central-1:{ACCOUNT_ID}:rule/{name}"
stack = cfn_client.describe_stacks(StackName=stack_name)["Stacks"][0] stack = cfn_client.describe_stacks(StackName=stack_name)["Stacks"][0]
stack["Outputs"][0]["OutputValue"].should.equal(rule_arn) stack["Outputs"][0]["OutputValue"].should.equal(rule_arn)

View File

@ -28,9 +28,7 @@ def test_send_to_cw_log_group():
Targets=[ Targets=[
{ {
"Id": "logs", "Id": "logs",
"Arn": "arn:aws:logs:eu-central-1:{0}:log-group:{1}".format( "Arn": f"arn:aws:logs:eu-central-1:{ACCOUNT_ID}:log-group:{log_group_name}",
ACCOUNT_ID, log_group_name
),
} }
], ],
) )

View File

@ -16,7 +16,7 @@ def create_extended_s3_delivery_stream(client, stream_name):
DeliveryStreamName=stream_name, DeliveryStreamName=stream_name,
DeliveryStreamType="DirectPut", DeliveryStreamType="DirectPut",
ExtendedS3DestinationConfiguration={ ExtendedS3DestinationConfiguration={
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format(ACCOUNT_ID), "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
"BucketARN": "arn:aws:s3:::firehose-test", "BucketARN": "arn:aws:s3:::firehose-test",
"Prefix": "myFolder/", "Prefix": "myFolder/",
"CompressionFormat": "UNCOMPRESSED", "CompressionFormat": "UNCOMPRESSED",
@ -28,9 +28,7 @@ def create_extended_s3_delivery_stream(client, stream_name):
}, },
"SchemaConfiguration": { "SchemaConfiguration": {
"DatabaseName": stream_name, "DatabaseName": stream_name,
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"TableName": "outputTable", "TableName": "outputTable",
}, },
}, },
@ -43,7 +41,7 @@ def create_redshift_delivery_stream(client, stream_name):
return client.create_delivery_stream( return client.create_delivery_stream(
DeliveryStreamName=stream_name, DeliveryStreamName=stream_name,
RedshiftDestinationConfiguration={ RedshiftDestinationConfiguration={
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format(ACCOUNT_ID), "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
"ClusterJDBCURL": "jdbc:redshift://host.amazonaws.com:5439/database", "ClusterJDBCURL": "jdbc:redshift://host.amazonaws.com:5439/database",
"CopyCommand": { "CopyCommand": {
"DataTableName": "outputTable", "DataTableName": "outputTable",
@ -52,9 +50,7 @@ def create_redshift_delivery_stream(client, stream_name):
"Username": "username", "Username": "username",
"Password": "password", "Password": "password",
"S3Configuration": { "S3Configuration": {
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"BucketARN": "arn:aws:s3:::firehose-test", "BucketARN": "arn:aws:s3:::firehose-test",
"Prefix": "myFolder/", "Prefix": "myFolder/",
"BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124}, "BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124},
@ -70,7 +66,7 @@ def create_elasticsearch_delivery_stream(client, stream_name):
DeliveryStreamName=stream_name, DeliveryStreamName=stream_name,
DeliveryStreamType="DirectPut", DeliveryStreamType="DirectPut",
ElasticsearchDestinationConfiguration={ ElasticsearchDestinationConfiguration={
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format(ACCOUNT_ID), "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
"DomainARN": "arn:aws:es:::domain/firehose-test", "DomainARN": "arn:aws:es:::domain/firehose-test",
"IndexName": "myIndex", "IndexName": "myIndex",
"TypeName": "UNCOMPRESSED", "TypeName": "UNCOMPRESSED",
@ -78,9 +74,7 @@ def create_elasticsearch_delivery_stream(client, stream_name):
"BufferingHints": {"IntervalInSeconds": 123, "SizeInMBs": 123}, "BufferingHints": {"IntervalInSeconds": 123, "SizeInMBs": 123},
"RetryOptions": {"DurationInSeconds": 123}, "RetryOptions": {"DurationInSeconds": 123},
"S3Configuration": { "S3Configuration": {
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"BucketARN": "arn:aws:s3:::firehose-test", "BucketARN": "arn:aws:s3:::firehose-test",
"Prefix": "myFolder/", "Prefix": "myFolder/",
"BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124}, "BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124},
@ -101,9 +95,7 @@ def create_http_delivery_stream(client, stream_name):
"BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124}, "BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124},
"CloudWatchLoggingOptions": {"Enabled": False}, "CloudWatchLoggingOptions": {"Enabled": False},
"S3Configuration": { "S3Configuration": {
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"BucketARN": "arn:aws:s3:::firehose-test", "BucketARN": "arn:aws:s3:::firehose-test",
"Prefix": "myFolder/", "Prefix": "myFolder/",
"BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124}, "BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124},
@ -140,9 +132,7 @@ def test_create_redshift_delivery_stream():
{ {
"DestinationId": "destinationId-000000000001", "DestinationId": "destinationId-000000000001",
"RedshiftDestinationDescription": { "RedshiftDestinationDescription": {
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"ClusterJDBCURL": "jdbc:redshift://host.amazonaws.com:5439/database", "ClusterJDBCURL": "jdbc:redshift://host.amazonaws.com:5439/database",
"CopyCommand": { "CopyCommand": {
"DataTableName": "outputTable", "DataTableName": "outputTable",
@ -150,9 +140,7 @@ def test_create_redshift_delivery_stream():
}, },
"Username": "username", "Username": "username",
"S3DestinationDescription": { "S3DestinationDescription": {
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"BucketARN": "arn:aws:s3:::firehose-test", "BucketARN": "arn:aws:s3:::firehose-test",
"Prefix": "myFolder/", "Prefix": "myFolder/",
"BufferingHints": { "BufferingHints": {
@ -196,9 +184,7 @@ def test_create_extended_s3_delivery_stream():
{ {
"DestinationId": "destinationId-000000000001", "DestinationId": "destinationId-000000000001",
"ExtendedS3DestinationDescription": { "ExtendedS3DestinationDescription": {
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"BucketARN": "arn:aws:s3:::firehose-test", "BucketARN": "arn:aws:s3:::firehose-test",
"Prefix": "myFolder/", "Prefix": "myFolder/",
"CompressionFormat": "UNCOMPRESSED", "CompressionFormat": "UNCOMPRESSED",
@ -214,17 +200,13 @@ def test_create_extended_s3_delivery_stream():
}, },
"SchemaConfiguration": { "SchemaConfiguration": {
"DatabaseName": stream_name, "DatabaseName": stream_name,
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"TableName": "outputTable", "TableName": "outputTable",
}, },
}, },
}, },
"S3DestinationDescription": { "S3DestinationDescription": {
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"BucketARN": "arn:aws:s3:::firehose-test", "BucketARN": "arn:aws:s3:::firehose-test",
"Prefix": "myFolder/", "Prefix": "myFolder/",
"CompressionFormat": "UNCOMPRESSED", "CompressionFormat": "UNCOMPRESSED",
@ -263,9 +245,7 @@ def test_create_elasticsearch_delivery_stream():
{ {
"DestinationId": "destinationId-000000000001", "DestinationId": "destinationId-000000000001",
"ElasticsearchDestinationDescription": { "ElasticsearchDestinationDescription": {
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"DomainARN": "arn:aws:es:::domain/firehose-test", "DomainARN": "arn:aws:es:::domain/firehose-test",
"IndexName": "myIndex", "IndexName": "myIndex",
"TypeName": "UNCOMPRESSED", "TypeName": "UNCOMPRESSED",
@ -273,9 +253,7 @@ def test_create_elasticsearch_delivery_stream():
"BufferingHints": {"IntervalInSeconds": 123, "SizeInMBs": 123}, "BufferingHints": {"IntervalInSeconds": 123, "SizeInMBs": 123},
"RetryOptions": {"DurationInSeconds": 123}, "RetryOptions": {"DurationInSeconds": 123},
"S3DestinationDescription": { "S3DestinationDescription": {
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"BucketARN": "arn:aws:s3:::firehose-test", "BucketARN": "arn:aws:s3:::firehose-test",
"Prefix": "myFolder/", "Prefix": "myFolder/",
"BufferingHints": { "BufferingHints": {
@ -301,7 +279,7 @@ def test_create_s3_delivery_stream():
response = client.create_delivery_stream( response = client.create_delivery_stream(
DeliveryStreamName=stream_name, DeliveryStreamName=stream_name,
S3DestinationConfiguration={ S3DestinationConfiguration={
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format(ACCOUNT_ID), "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
"BucketARN": "arn:aws:s3:::firehose-test", "BucketARN": "arn:aws:s3:::firehose-test",
"Prefix": "myFolder/", "Prefix": "myFolder/",
"BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124}, "BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124},
@ -328,9 +306,7 @@ def test_create_s3_delivery_stream():
{ {
"DestinationId": "destinationId-000000000001", "DestinationId": "destinationId-000000000001",
"S3DestinationDescription": { "S3DestinationDescription": {
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"BucketARN": "arn:aws:s3:::firehose-test", "BucketARN": "arn:aws:s3:::firehose-test",
"Prefix": "myFolder/", "Prefix": "myFolder/",
"BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124}, "BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124},
@ -375,9 +351,7 @@ def test_create_http_stream():
"BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124}, "BufferingHints": {"SizeInMBs": 123, "IntervalInSeconds": 124},
"CloudWatchLoggingOptions": {"Enabled": False}, "CloudWatchLoggingOptions": {"Enabled": False},
"S3DestinationDescription": { "S3DestinationDescription": {
"RoleARN": "arn:aws:iam::{}:role/firehose_delivery_role".format( "RoleARN": f"arn:aws:iam::{ACCOUNT_ID}:role/firehose_delivery_role",
ACCOUNT_ID
),
"BucketARN": "arn:aws:s3:::firehose-test", "BucketARN": "arn:aws:s3:::firehose-test",
"Prefix": "myFolder/", "Prefix": "myFolder/",
"BufferingHints": { "BufferingHints": {

View File

@ -15,9 +15,7 @@ from .fixtures.schema_registry import (
def create_database_input(database_name): def create_database_input(database_name):
database_input = copy.deepcopy(DATABASE_INPUT) database_input = copy.deepcopy(DATABASE_INPUT)
database_input["Name"] = database_name database_input["Name"] = database_name
database_input["LocationUri"] = "s3://my-bucket/{database_name}".format( database_input["LocationUri"] = f"s3://my-bucket/{database_name}"
database_name=database_name
)
return database_input return database_input
@ -42,9 +40,7 @@ def create_table_input(database_name, table_name, columns=None, partition_keys=N
table_input["StorageDescriptor"]["Columns"] = columns or [] table_input["StorageDescriptor"]["Columns"] = columns or []
table_input["StorageDescriptor"][ table_input["StorageDescriptor"][
"Location" "Location"
] = "s3://my-bucket/{database_name}/{table_name}".format( ] = f"s3://my-bucket/{database_name}/{table_name}"
database_name=database_name, table_name=table_name
)
return table_input return table_input
@ -93,9 +89,7 @@ def create_column(name, type_, comment=None, parameters=None):
def create_partition_input(database_name, table_name, values=None, columns=None): def create_partition_input(database_name, table_name, values=None, columns=None):
root_path = "s3://my-bucket/{database_name}/{table_name}".format( root_path = f"s3://my-bucket/{database_name}/{table_name}"
database_name=database_name, table_name=table_name
)
part_input = copy.deepcopy(PARTITION_INPUT) part_input = copy.deepcopy(PARTITION_INPUT)
part_input["Values"] = values or [] part_input["Values"] = values or []

View File

@ -552,7 +552,7 @@ def test_batch_create_partition():
partition_inputs = [] partition_inputs = []
for i in range(0, 20): for i in range(0, 20):
values = ["2018-10-{:2}".format(i)] values = [f"2018-10-{i:2}"]
part_input = helpers.create_partition_input( part_input = helpers.create_partition_input(
database_name, table_name, values=values database_name, table_name, values=values
) )
@ -994,7 +994,7 @@ def test_batch_delete_partition():
partition_inputs = [] partition_inputs = []
for i in range(0, 20): for i in range(0, 20):
values = ["2018-10-{:2}".format(i)] values = [f"2018-10-{i:2}"]
part_input = helpers.create_partition_input( part_input = helpers.create_partition_input(
database_name, table_name, values=values database_name, table_name, values=values
) )
@ -1027,7 +1027,7 @@ def test_batch_delete_partition_with_bad_partitions():
partition_inputs = [] partition_inputs = []
for i in range(0, 20): for i in range(0, 20):
values = ["2018-10-{:2}".format(i)] values = [f"2018-10-{i:2}"]
part_input = helpers.create_partition_input( part_input = helpers.create_partition_input(
database_name, table_name, values=values database_name, table_name, values=values
) )

View File

@ -514,7 +514,7 @@ def test_create_policy():
PolicyName="TestCreatePolicy", PolicyDocument=MOCK_POLICY PolicyName="TestCreatePolicy", PolicyDocument=MOCK_POLICY
) )
response["Policy"]["Arn"].should.equal( response["Policy"]["Arn"].should.equal(
"arn:aws:iam::{}:policy/TestCreatePolicy".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:policy/TestCreatePolicy"
) )
@ -547,14 +547,12 @@ def test_create_policy_versions():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
with pytest.raises(ClientError): with pytest.raises(ClientError):
conn.create_policy_version( conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestCreatePolicyVersion".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestCreatePolicyVersion",
ACCOUNT_ID
),
PolicyDocument='{"some":"policy"}', PolicyDocument='{"some":"policy"}',
) )
conn.create_policy(PolicyName="TestCreatePolicyVersion", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestCreatePolicyVersion", PolicyDocument=MOCK_POLICY)
version = conn.create_policy_version( version = conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestCreatePolicyVersion".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestCreatePolicyVersion",
PolicyDocument=MOCK_POLICY, PolicyDocument=MOCK_POLICY,
SetAsDefault=True, SetAsDefault=True,
) )
@ -562,11 +560,11 @@ def test_create_policy_versions():
version.get("PolicyVersion").get("VersionId").should.equal("v2") version.get("PolicyVersion").get("VersionId").should.equal("v2")
version.get("PolicyVersion").get("IsDefaultVersion").should.be.ok version.get("PolicyVersion").get("IsDefaultVersion").should.be.ok
conn.delete_policy_version( conn.delete_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestCreatePolicyVersion".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestCreatePolicyVersion",
VersionId="v1", VersionId="v1",
) )
version = conn.create_policy_version( version = conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestCreatePolicyVersion".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestCreatePolicyVersion",
PolicyDocument=MOCK_POLICY, PolicyDocument=MOCK_POLICY,
) )
version.get("PolicyVersion").get("VersionId").should.equal("v3") version.get("PolicyVersion").get("VersionId").should.equal("v3")
@ -581,16 +579,12 @@ def test_create_many_policy_versions():
) )
for _ in range(0, 4): for _ in range(0, 4):
conn.create_policy_version( conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestCreateManyPolicyVersions".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestCreateManyPolicyVersions",
ACCOUNT_ID
),
PolicyDocument=MOCK_POLICY, PolicyDocument=MOCK_POLICY,
) )
with pytest.raises(ClientError): with pytest.raises(ClientError):
conn.create_policy_version( conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestCreateManyPolicyVersions".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestCreateManyPolicyVersions",
ACCOUNT_ID
),
PolicyDocument=MOCK_POLICY, PolicyDocument=MOCK_POLICY,
) )
@ -602,23 +596,17 @@ def test_set_default_policy_version():
PolicyName="TestSetDefaultPolicyVersion", PolicyDocument=MOCK_POLICY PolicyName="TestSetDefaultPolicyVersion", PolicyDocument=MOCK_POLICY
) )
conn.create_policy_version( conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestSetDefaultPolicyVersion".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestSetDefaultPolicyVersion",
ACCOUNT_ID
),
PolicyDocument=MOCK_POLICY_2, PolicyDocument=MOCK_POLICY_2,
SetAsDefault=True, SetAsDefault=True,
) )
conn.create_policy_version( conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestSetDefaultPolicyVersion".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestSetDefaultPolicyVersion",
ACCOUNT_ID
),
PolicyDocument=MOCK_POLICY_3, PolicyDocument=MOCK_POLICY_3,
SetAsDefault=True, SetAsDefault=True,
) )
versions = conn.list_policy_versions( versions = conn.list_policy_versions(
PolicyArn="arn:aws:iam::{}:policy/TestSetDefaultPolicyVersion".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestSetDefaultPolicyVersion"
ACCOUNT_ID
)
) )
versions.get("Versions")[0].get("Document").should.equal(json.loads(MOCK_POLICY)) versions.get("Versions")[0].get("Document").should.equal(json.loads(MOCK_POLICY))
versions.get("Versions")[0].get("IsDefaultVersion").shouldnt.be.ok versions.get("Versions")[0].get("IsDefaultVersion").shouldnt.be.ok
@ -628,15 +616,11 @@ def test_set_default_policy_version():
versions.get("Versions")[2].get("IsDefaultVersion").should.be.ok versions.get("Versions")[2].get("IsDefaultVersion").should.be.ok
conn.set_default_policy_version( conn.set_default_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestSetDefaultPolicyVersion".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestSetDefaultPolicyVersion",
ACCOUNT_ID
),
VersionId="v1", VersionId="v1",
) )
versions = conn.list_policy_versions( versions = conn.list_policy_versions(
PolicyArn="arn:aws:iam::{}:policy/TestSetDefaultPolicyVersion".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestSetDefaultPolicyVersion"
ACCOUNT_ID
)
) )
versions.get("Versions")[0].get("Document").should.equal(json.loads(MOCK_POLICY)) versions.get("Versions")[0].get("Document").should.equal(json.loads(MOCK_POLICY))
versions.get("Versions")[0].get("IsDefaultVersion").should.be.ok versions.get("Versions")[0].get("IsDefaultVersion").should.be.ok
@ -647,20 +631,16 @@ def test_set_default_policy_version():
# Set default version for non-existing policy # Set default version for non-existing policy
conn.set_default_policy_version.when.called_with( conn.set_default_policy_version.when.called_with(
PolicyArn="arn:aws:iam::{}:policy/TestNonExistingPolicy".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestNonExistingPolicy",
VersionId="v1", VersionId="v1",
).should.throw( ).should.throw(
ClientError, ClientError,
"Policy arn:aws:iam::{}:policy/TestNonExistingPolicy not found".format( f"Policy arn:aws:iam::{ACCOUNT_ID}:policy/TestNonExistingPolicy not found",
ACCOUNT_ID
),
) )
# Set default version for incorrect version # Set default version for incorrect version
conn.set_default_policy_version.when.called_with( conn.set_default_policy_version.when.called_with(
PolicyArn="arn:aws:iam::{}:policy/TestSetDefaultPolicyVersion".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestSetDefaultPolicyVersion",
ACCOUNT_ID
),
VersionId="wrong_version_id", VersionId="wrong_version_id",
).should.throw( ).should.throw(
ClientError, ClientError,
@ -669,15 +649,11 @@ def test_set_default_policy_version():
# Set default version for non-existing version # Set default version for non-existing version
conn.set_default_policy_version.when.called_with( conn.set_default_policy_version.when.called_with(
PolicyArn="arn:aws:iam::{}:policy/TestSetDefaultPolicyVersion".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestSetDefaultPolicyVersion",
ACCOUNT_ID
),
VersionId="v4", VersionId="v4",
).should.throw( ).should.throw(
ClientError, ClientError,
"Policy arn:aws:iam::{}:policy/TestSetDefaultPolicyVersion version v4 does not exist or is not attachable.".format( f"Policy arn:aws:iam::{ACCOUNT_ID}:policy/TestSetDefaultPolicyVersion version v4 does not exist or is not attachable.",
ACCOUNT_ID
),
) )
@ -686,10 +662,10 @@ def test_get_policy():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestGetPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestGetPolicy", PolicyDocument=MOCK_POLICY)
policy = conn.get_policy( policy = conn.get_policy(
PolicyArn="arn:aws:iam::{}:policy/TestGetPolicy".format(ACCOUNT_ID) PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestGetPolicy"
) )
policy["Policy"]["Arn"].should.equal( policy["Policy"]["Arn"].should.equal(
"arn:aws:iam::{}:policy/TestGetPolicy".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:policy/TestGetPolicy"
) )
@ -712,16 +688,16 @@ def test_get_policy_version():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestGetPolicyVersion", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestGetPolicyVersion", PolicyDocument=MOCK_POLICY)
version = conn.create_policy_version( version = conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestGetPolicyVersion".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestGetPolicyVersion",
PolicyDocument=MOCK_POLICY, PolicyDocument=MOCK_POLICY,
) )
with pytest.raises(ClientError): with pytest.raises(ClientError):
conn.get_policy_version( conn.get_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestGetPolicyVersion".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestGetPolicyVersion",
VersionId="v2-does-not-exist", VersionId="v2-does-not-exist",
) )
retrieved = conn.get_policy_version( retrieved = conn.get_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestGetPolicyVersion".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestGetPolicyVersion",
VersionId=version.get("PolicyVersion").get("VersionId"), VersionId=version.get("PolicyVersion").get("VersionId"),
) )
retrieved.get("PolicyVersion").get("Document").should.equal(json.loads(MOCK_POLICY)) retrieved.get("PolicyVersion").get("Document").should.equal(json.loads(MOCK_POLICY))
@ -766,25 +742,25 @@ def test_list_policy_versions():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
with pytest.raises(ClientError): with pytest.raises(ClientError):
versions = conn.list_policy_versions( versions = conn.list_policy_versions(
PolicyArn="arn:aws:iam::{}:policy/TestListPolicyVersions".format(ACCOUNT_ID) PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestListPolicyVersions"
) )
conn.create_policy(PolicyName="TestListPolicyVersions", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestListPolicyVersions", PolicyDocument=MOCK_POLICY)
versions = conn.list_policy_versions( versions = conn.list_policy_versions(
PolicyArn="arn:aws:iam::{}:policy/TestListPolicyVersions".format(ACCOUNT_ID) PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestListPolicyVersions"
) )
versions.get("Versions")[0].get("VersionId").should.equal("v1") versions.get("Versions")[0].get("VersionId").should.equal("v1")
versions.get("Versions")[0].get("IsDefaultVersion").should.be.ok versions.get("Versions")[0].get("IsDefaultVersion").should.be.ok
conn.create_policy_version( conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestListPolicyVersions".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestListPolicyVersions",
PolicyDocument=MOCK_POLICY_2, PolicyDocument=MOCK_POLICY_2,
) )
conn.create_policy_version( conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestListPolicyVersions".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestListPolicyVersions",
PolicyDocument=MOCK_POLICY_3, PolicyDocument=MOCK_POLICY_3,
) )
versions = conn.list_policy_versions( versions = conn.list_policy_versions(
PolicyArn="arn:aws:iam::{}:policy/TestListPolicyVersions".format(ACCOUNT_ID) PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestListPolicyVersions"
) )
versions.get("Versions")[1].get("Document").should.equal(json.loads(MOCK_POLICY_2)) versions.get("Versions")[1].get("Document").should.equal(json.loads(MOCK_POLICY_2))
versions.get("Versions")[1].get("IsDefaultVersion").shouldnt.be.ok versions.get("Versions")[1].get("IsDefaultVersion").shouldnt.be.ok
@ -797,22 +773,20 @@ def test_delete_policy_version():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestDeletePolicyVersion", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestDeletePolicyVersion", PolicyDocument=MOCK_POLICY)
conn.create_policy_version( conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestDeletePolicyVersion".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestDeletePolicyVersion",
PolicyDocument=MOCK_POLICY, PolicyDocument=MOCK_POLICY,
) )
with pytest.raises(ClientError): with pytest.raises(ClientError):
conn.delete_policy_version( conn.delete_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestDeletePolicyVersion".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestDeletePolicyVersion",
ACCOUNT_ID
),
VersionId="v2-nope-this-does-not-exist", VersionId="v2-nope-this-does-not-exist",
) )
conn.delete_policy_version( conn.delete_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestDeletePolicyVersion".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestDeletePolicyVersion",
VersionId="v2", VersionId="v2",
) )
versions = conn.list_policy_versions( versions = conn.list_policy_versions(
PolicyArn="arn:aws:iam::{}:policy/TestDeletePolicyVersion".format(ACCOUNT_ID) PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestDeletePolicyVersion"
) )
len(versions.get("Versions")).should.equal(1) len(versions.get("Versions")).should.equal(1)
@ -822,14 +796,12 @@ def test_delete_default_policy_version():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestDeletePolicyVersion", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestDeletePolicyVersion", PolicyDocument=MOCK_POLICY)
conn.create_policy_version( conn.create_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestDeletePolicyVersion".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestDeletePolicyVersion",
PolicyDocument=MOCK_POLICY_2, PolicyDocument=MOCK_POLICY_2,
) )
with pytest.raises(ClientError): with pytest.raises(ClientError):
conn.delete_policy_version( conn.delete_policy_version(
PolicyArn="arn:aws:iam::{}:policy/TestDeletePolicyVersion".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestDeletePolicyVersion",
ACCOUNT_ID
),
VersionId="v1", VersionId="v1",
) )
@ -849,9 +821,7 @@ def test_create_policy_with_tags():
# Get policy: # Get policy:
policy = conn.get_policy( policy = conn.get_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestCreatePolicyWithTags1"
ACCOUNT_ID, "TestCreatePolicyWithTags1"
)
)["Policy"] )["Policy"]
assert len(policy["Tags"]) == 2 assert len(policy["Tags"]) == 2
assert policy["Tags"][0]["Key"] == "somekey" assert policy["Tags"][0]["Key"] == "somekey"
@ -872,9 +842,7 @@ def test_create_policy_with_empty_tag_value():
Tags=[{"Key": "somekey", "Value": ""}], Tags=[{"Key": "somekey", "Value": ""}],
) )
tags = conn.list_policy_tags( tags = conn.list_policy_tags(
PolicyArn="arn:aws:iam::{}:policy/{}".format( PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestCreatePolicyWithTags2"
ACCOUNT_ID, "TestCreatePolicyWithTags2"
)
) )
assert len(tags["Tags"]) == 1 assert len(tags["Tags"]) == 1
assert tags["Tags"][0]["Key"] == "somekey" assert tags["Tags"][0]["Key"] == "somekey"
@ -994,7 +962,7 @@ def test_create_policy_with_no_tags():
# Get without tags: # Get without tags:
policy = conn.get_policy( policy = conn.get_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy") PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy"
)["Policy"] )["Policy"]
assert not policy.get("Tags") assert not policy.get("Tags")
@ -1004,7 +972,7 @@ def test_get_policy_with_tags():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY)
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1013,7 +981,7 @@ def test_get_policy_with_tags():
# Get policy: # Get policy:
policy = conn.get_policy( policy = conn.get_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy") PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy"
)["Policy"] )["Policy"]
assert len(policy["Tags"]) == 2 assert len(policy["Tags"]) == 2
assert policy["Tags"][0]["Key"] == "somekey" assert policy["Tags"][0]["Key"] == "somekey"
@ -1027,7 +995,7 @@ def test_list_policy_tags():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY)
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1036,7 +1004,7 @@ def test_list_policy_tags():
# List_policy_tags: # List_policy_tags:
tags = conn.list_policy_tags( tags = conn.list_policy_tags(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy") PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy"
) )
assert len(tags["Tags"]) == 2 assert len(tags["Tags"]) == 2
assert tags["Tags"][0]["Key"] == "somekey" assert tags["Tags"][0]["Key"] == "somekey"
@ -1052,7 +1020,7 @@ def test_list_policy_tags_pagination():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY)
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1061,7 +1029,7 @@ def test_list_policy_tags_pagination():
# Test pagination: # Test pagination:
tags = conn.list_policy_tags( tags = conn.list_policy_tags(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
MaxItems=1, MaxItems=1,
) )
assert len(tags["Tags"]) == 1 assert len(tags["Tags"]) == 1
@ -1071,7 +1039,7 @@ def test_list_policy_tags_pagination():
assert tags["Marker"] == "1" assert tags["Marker"] == "1"
tags = conn.list_policy_tags( tags = conn.list_policy_tags(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Marker=tags["Marker"], Marker=tags["Marker"],
) )
assert len(tags["Tags"]) == 1 assert len(tags["Tags"]) == 1
@ -1086,7 +1054,7 @@ def test_updating_existing_tag():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY)
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1095,11 +1063,11 @@ def test_updating_existing_tag():
# Test updating an existing tag: # Test updating an existing tag:
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[{"Key": "somekey", "Value": "somenewvalue"}], Tags=[{"Key": "somekey", "Value": "somenewvalue"}],
) )
tags = conn.list_policy_tags( tags = conn.list_policy_tags(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy") PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy"
) )
assert len(tags["Tags"]) == 2 assert len(tags["Tags"]) == 2
assert tags["Tags"][0]["Key"] == "somekey" assert tags["Tags"][0]["Key"] == "somekey"
@ -1111,7 +1079,7 @@ def test_updating_existing_tag_with_empty_value():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY)
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1120,11 +1088,11 @@ def test_updating_existing_tag_with_empty_value():
# Empty is good: # Empty is good:
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[{"Key": "somekey", "Value": ""}], Tags=[{"Key": "somekey", "Value": ""}],
) )
tags = conn.list_policy_tags( tags = conn.list_policy_tags(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy") PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy"
) )
assert len(tags["Tags"]) == 2 assert len(tags["Tags"]) == 2
assert tags["Tags"][0]["Key"] == "somekey" assert tags["Tags"][0]["Key"] == "somekey"
@ -1136,7 +1104,7 @@ def test_updating_existing_tagged_policy_with_too_many_tags():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY)
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1149,7 +1117,7 @@ def test_updating_existing_tagged_policy_with_too_many_tags():
map(lambda x: {"Key": str(x), "Value": str(x)}, range(0, 51)) map(lambda x: {"Key": str(x), "Value": str(x)}, range(0, 51))
) )
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=too_many_tags, Tags=too_many_tags,
) )
assert ( assert (
@ -1163,7 +1131,7 @@ def test_updating_existing_tagged_policy_with_duplicate_tag():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY)
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1173,7 +1141,7 @@ def test_updating_existing_tagged_policy_with_duplicate_tag():
# With a duplicate tag: # With a duplicate tag:
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[{"Key": "0", "Value": ""}, {"Key": "0", "Value": ""}], Tags=[{"Key": "0", "Value": ""}, {"Key": "0", "Value": ""}],
) )
assert ( assert (
@ -1187,7 +1155,7 @@ def test_updating_existing_tagged_policy_with_duplicate_tag_different_casing():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY)
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1197,7 +1165,7 @@ def test_updating_existing_tagged_policy_with_duplicate_tag_different_casing():
# Duplicate tag with different casing: # Duplicate tag with different casing:
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[{"Key": "a", "Value": ""}, {"Key": "A", "Value": ""}], Tags=[{"Key": "a", "Value": ""}, {"Key": "A", "Value": ""}],
) )
assert ( assert (
@ -1211,7 +1179,7 @@ def test_updating_existing_tagged_policy_with_large_key():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY)
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1221,7 +1189,7 @@ def test_updating_existing_tagged_policy_with_large_key():
# With a really big key: # With a really big key:
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[{"Key": "0" * 129, "Value": ""}], Tags=[{"Key": "0" * 129, "Value": ""}],
) )
assert ( assert (
@ -1235,7 +1203,7 @@ def test_updating_existing_tagged_policy_with_large_value():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY)
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1245,7 +1213,7 @@ def test_updating_existing_tagged_policy_with_large_value():
# With a really big value: # With a really big value:
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[{"Key": "0", "Value": "0" * 257}], Tags=[{"Key": "0", "Value": "0" * 257}],
) )
assert ( assert (
@ -1259,7 +1227,7 @@ def test_updating_existing_tagged_policy_with_invalid_character():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY) conn.create_policy(PolicyName="TestTagPolicy", PolicyDocument=MOCK_POLICY)
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1269,7 +1237,7 @@ def test_updating_existing_tagged_policy_with_invalid_character():
# With an invalid character: # With an invalid character:
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestTagPolicy",
Tags=[{"Key": "NOWAY!", "Value": ""}], Tags=[{"Key": "NOWAY!", "Value": ""}],
) )
assert ( assert (
@ -1285,7 +1253,7 @@ def test_tag_non_existant_policy():
# With a policy that doesn't exist: # With a policy that doesn't exist:
with pytest.raises(ClientError): with pytest.raises(ClientError):
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "NotAPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/NotAPolicy",
Tags=[{"Key": "some", "Value": "value"}], Tags=[{"Key": "some", "Value": "value"}],
) )
@ -1297,7 +1265,7 @@ def test_untag_policy():
# With proper tag values: # With proper tag values:
conn.tag_policy( conn.tag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestUnTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestUnTagPolicy",
Tags=[ Tags=[
{"Key": "somekey", "Value": "somevalue"}, {"Key": "somekey", "Value": "somevalue"},
{"Key": "someotherkey", "Value": "someothervalue"}, {"Key": "someotherkey", "Value": "someothervalue"},
@ -1306,11 +1274,11 @@ def test_untag_policy():
# Remove them: # Remove them:
conn.untag_policy( conn.untag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestUnTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestUnTagPolicy",
TagKeys=["somekey"], TagKeys=["somekey"],
) )
tags = conn.list_policy_tags( tags = conn.list_policy_tags(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestUnTagPolicy") PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestUnTagPolicy"
) )
assert len(tags["Tags"]) == 1 assert len(tags["Tags"]) == 1
assert tags["Tags"][0]["Key"] == "someotherkey" assert tags["Tags"][0]["Key"] == "someotherkey"
@ -1318,11 +1286,11 @@ def test_untag_policy():
# And again: # And again:
conn.untag_policy( conn.untag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestUnTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestUnTagPolicy",
TagKeys=["someotherkey"], TagKeys=["someotherkey"],
) )
tags = conn.list_policy_tags( tags = conn.list_policy_tags(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestUnTagPolicy") PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestUnTagPolicy"
) )
assert not tags["Tags"] assert not tags["Tags"]
@ -1330,7 +1298,7 @@ def test_untag_policy():
# With more than 50 tags: # With more than 50 tags:
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
conn.untag_policy( conn.untag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestUnTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestUnTagPolicy",
TagKeys=[str(x) for x in range(0, 51)], TagKeys=[str(x) for x in range(0, 51)],
) )
assert ( assert (
@ -1342,7 +1310,7 @@ def test_untag_policy():
# With a really big key: # With a really big key:
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
conn.untag_policy( conn.untag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestUnTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestUnTagPolicy",
TagKeys=["0" * 129], TagKeys=["0" * 129],
) )
assert ( assert (
@ -1354,7 +1322,7 @@ def test_untag_policy():
# With an invalid character: # With an invalid character:
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
conn.untag_policy( conn.untag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "TestUnTagPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/TestUnTagPolicy",
TagKeys=["NOWAY!"], TagKeys=["NOWAY!"],
) )
assert ( assert (
@ -1366,7 +1334,7 @@ def test_untag_policy():
# With a policy that doesn't exist: # With a policy that doesn't exist:
with pytest.raises(ClientError): with pytest.raises(ClientError):
conn.untag_policy( conn.untag_policy(
PolicyArn="arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, "NotAPolicy"), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/NotAPolicy",
TagKeys=["somevalue"], TagKeys=["somevalue"],
) )
@ -1378,7 +1346,7 @@ def test_create_user_boto():
u["Path"].should.equal("/") u["Path"].should.equal("/")
u["UserName"].should.equal("my-user") u["UserName"].should.equal("my-user")
u.should.have.key("UserId") u.should.have.key("UserId")
u["Arn"].should.equal("arn:aws:iam::{}:user/my-user".format(ACCOUNT_ID)) u["Arn"].should.equal(f"arn:aws:iam::{ACCOUNT_ID}:user/my-user")
u["CreateDate"].should.be.a(datetime) u["CreateDate"].should.be.a(datetime)
with pytest.raises(ClientError) as ex: with pytest.raises(ClientError) as ex:
@ -1403,7 +1371,7 @@ def test_get_user():
u["Path"].should.equal("/") u["Path"].should.equal("/")
u["UserName"].should.equal("my-user") u["UserName"].should.equal("my-user")
u.should.have.key("UserId") u.should.have.key("UserId")
u["Arn"].should.equal("arn:aws:iam::{}:user/my-user".format(ACCOUNT_ID)) u["Arn"].should.equal(f"arn:aws:iam::{ACCOUNT_ID}:user/my-user")
u["CreateDate"].should.be.a(datetime) u["CreateDate"].should.be.a(datetime)
@ -1438,7 +1406,7 @@ def test_list_users():
user = response["Users"][0] user = response["Users"][0]
user["UserName"].should.equal("my-user") user["UserName"].should.equal("my-user")
user["Path"].should.equal("/") user["Path"].should.equal("/")
user["Arn"].should.equal("arn:aws:iam::{}:user/my-user".format(ACCOUNT_ID)) user["Arn"].should.equal(f"arn:aws:iam::{ACCOUNT_ID}:user/my-user")
response["IsTruncated"].should.equal(False) response["IsTruncated"].should.equal(False)
conn.create_user(UserName="my-user-1", Path="myUser") conn.create_user(UserName="my-user-1", Path="myUser")
@ -1620,9 +1588,7 @@ def test_create_virtual_mfa_device():
response = client.create_virtual_mfa_device(VirtualMFADeviceName="test-device") response = client.create_virtual_mfa_device(VirtualMFADeviceName="test-device")
device = response["VirtualMFADevice"] device = response["VirtualMFADevice"]
device["SerialNumber"].should.equal( device["SerialNumber"].should.equal(f"arn:aws:iam::{ACCOUNT_ID}:mfa/test-device")
"arn:aws:iam::{}:mfa/test-device".format(ACCOUNT_ID)
)
device["Base32StringSeed"].decode("ascii").should.match("[A-Z234567]") device["Base32StringSeed"].decode("ascii").should.match("[A-Z234567]")
device["QRCodePNG"].should_not.equal("") device["QRCodePNG"].should_not.equal("")
@ -1631,9 +1597,7 @@ def test_create_virtual_mfa_device():
) )
device = response["VirtualMFADevice"] device = response["VirtualMFADevice"]
device["SerialNumber"].should.equal( device["SerialNumber"].should.equal(f"arn:aws:iam::{ACCOUNT_ID}:mfa/test-device-2")
"arn:aws:iam::{}:mfa/test-device-2".format(ACCOUNT_ID)
)
device["Base32StringSeed"].decode("ascii").should.match("[A-Z234567]") device["Base32StringSeed"].decode("ascii").should.match("[A-Z234567]")
device["QRCodePNG"].should_not.equal("") device["QRCodePNG"].should_not.equal("")
@ -1643,7 +1607,7 @@ def test_create_virtual_mfa_device():
device = response["VirtualMFADevice"] device = response["VirtualMFADevice"]
device["SerialNumber"].should.equal( device["SerialNumber"].should.equal(
"arn:aws:iam::{}:mfa/test/test-device".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:mfa/test/test-device"
) )
device["Base32StringSeed"].decode("ascii").should.match("[A-Z234567]") device["Base32StringSeed"].decode("ascii").should.match("[A-Z234567]")
device["QRCodePNG"].should_not.equal("") device["QRCodePNG"].should_not.equal("")
@ -1677,7 +1641,7 @@ def test_create_virtual_mfa_device_errors():
"It must begin and end with / and contain only alphanumeric characters and/or / characters.", "It must begin and end with / and contain only alphanumeric characters and/or / characters.",
) )
too_long_path = "/{}/".format("b" * 511) too_long_path = f"/{('b' * 511)}/"
client.create_virtual_mfa_device.when.called_with( client.create_virtual_mfa_device.when.called_with(
Path=too_long_path, VirtualMFADeviceName="test-device" Path=too_long_path, VirtualMFADeviceName="test-device"
).should.throw( ).should.throw(
@ -1706,12 +1670,12 @@ def test_delete_virtual_mfa_device():
def test_delete_virtual_mfa_device_errors(): def test_delete_virtual_mfa_device_errors():
client = boto3.client("iam", region_name="us-east-1") client = boto3.client("iam", region_name="us-east-1")
serial_number = "arn:aws:iam::{}:mfa/not-existing".format(ACCOUNT_ID) serial_number = f"arn:aws:iam::{ACCOUNT_ID}:mfa/not-existing"
client.delete_virtual_mfa_device.when.called_with( client.delete_virtual_mfa_device.when.called_with(
SerialNumber=serial_number SerialNumber=serial_number
).should.throw( ).should.throw(
ClientError, ClientError,
"VirtualMFADevice with serial number {0} doesn't exist.".format(serial_number), f"VirtualMFADevice with serial number {serial_number} doesn't exist.",
) )
@ -1796,9 +1760,7 @@ def test_enable_virtual_mfa_device():
device["User"]["Path"].should.equal("/") device["User"]["Path"].should.equal("/")
device["User"]["UserName"].should.equal("test-user") device["User"]["UserName"].should.equal("test-user")
device["User"]["UserId"].should.match("[a-z0-9]+") device["User"]["UserId"].should.match("[a-z0-9]+")
device["User"]["Arn"].should.equal( device["User"]["Arn"].should.equal(f"arn:aws:iam::{ACCOUNT_ID}:user/test-user")
"arn:aws:iam::{}:user/test-user".format(ACCOUNT_ID)
)
device["User"]["CreateDate"].should.be.a(datetime) device["User"]["CreateDate"].should.be.a(datetime)
device["User"]["Tags"].should.equal(tags) device["User"]["Tags"].should.equal(tags)
device["EnableDate"].should.be.a(datetime) device["EnableDate"].should.be.a(datetime)
@ -2324,7 +2286,7 @@ def test_get_account_authorization_details():
) )
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
boundary = "arn:aws:iam::{}:policy/boundary".format(ACCOUNT_ID) boundary = f"arn:aws:iam::{ACCOUNT_ID}:policy/boundary"
conn.create_role( conn.create_role(
RoleName="my-role", RoleName="my-role",
AssumeRolePolicyDocument="some policy", AssumeRolePolicyDocument="some policy",
@ -2351,11 +2313,11 @@ def test_get_account_authorization_details():
conn.attach_user_policy( conn.attach_user_policy(
UserName="testUser", UserName="testUser",
PolicyArn="arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy",
) )
conn.attach_group_policy( conn.attach_group_policy(
GroupName="testGroup", GroupName="testGroup",
PolicyArn="arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy",
) )
conn.add_user_to_group(UserName="testUser", GroupName="testGroup") conn.add_user_to_group(UserName="testUser", GroupName="testGroup")
@ -2375,7 +2337,7 @@ def test_get_account_authorization_details():
) )
conn.attach_role_policy( conn.attach_role_policy(
RoleName="my-role", RoleName="my-role",
PolicyArn="arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy",
) )
result = conn.get_account_authorization_details(Filter=["Role"]) result = conn.get_account_authorization_details(Filter=["Role"])
@ -2392,7 +2354,7 @@ def test_get_account_authorization_details():
"PermissionsBoundary" "PermissionsBoundary"
] == { ] == {
"PermissionsBoundaryType": "PermissionsBoundaryPolicy", "PermissionsBoundaryType": "PermissionsBoundaryPolicy",
"PermissionsBoundaryArn": "arn:aws:iam::{}:policy/boundary".format(ACCOUNT_ID), "PermissionsBoundaryArn": f"arn:aws:iam::{ACCOUNT_ID}:policy/boundary",
} }
assert len(result["RoleDetailList"][0]["Tags"]) == 2 assert len(result["RoleDetailList"][0]["Tags"]) == 2
assert len(result["RoleDetailList"][0]["RolePolicyList"]) == 1 assert len(result["RoleDetailList"][0]["RolePolicyList"]) == 1
@ -2401,9 +2363,10 @@ def test_get_account_authorization_details():
result["RoleDetailList"][0]["AttachedManagedPolicies"][0]["PolicyName"] result["RoleDetailList"][0]["AttachedManagedPolicies"][0]["PolicyName"]
== "testPolicy" == "testPolicy"
) )
assert result["RoleDetailList"][0]["AttachedManagedPolicies"][0][ assert (
"PolicyArn" result["RoleDetailList"][0]["AttachedManagedPolicies"][0]["PolicyArn"]
] == "arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID) == f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy"
)
assert result["RoleDetailList"][0]["RolePolicyList"][0][ assert result["RoleDetailList"][0]["RolePolicyList"][0][
"PolicyDocument" "PolicyDocument"
] == json.loads(test_policy) ] == json.loads(test_policy)
@ -2420,9 +2383,10 @@ def test_get_account_authorization_details():
result["UserDetailList"][0]["AttachedManagedPolicies"][0]["PolicyName"] result["UserDetailList"][0]["AttachedManagedPolicies"][0]["PolicyName"]
== "testPolicy" == "testPolicy"
) )
assert result["UserDetailList"][0]["AttachedManagedPolicies"][0][ assert (
"PolicyArn" result["UserDetailList"][0]["AttachedManagedPolicies"][0]["PolicyArn"]
] == "arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID) == f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy"
)
assert result["UserDetailList"][0]["UserPolicyList"][0][ assert result["UserDetailList"][0]["UserPolicyList"][0][
"PolicyDocument" "PolicyDocument"
] == json.loads(test_policy) ] == json.loads(test_policy)
@ -2438,9 +2402,10 @@ def test_get_account_authorization_details():
result["GroupDetailList"][0]["AttachedManagedPolicies"][0]["PolicyName"] result["GroupDetailList"][0]["AttachedManagedPolicies"][0]["PolicyName"]
== "testPolicy" == "testPolicy"
) )
assert result["GroupDetailList"][0]["AttachedManagedPolicies"][0][ assert (
"PolicyArn" result["GroupDetailList"][0]["AttachedManagedPolicies"][0]["PolicyArn"]
] == "arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID) == f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy"
)
assert result["GroupDetailList"][0]["GroupPolicyList"][0][ assert result["GroupDetailList"][0]["GroupPolicyList"][0][
"PolicyDocument" "PolicyDocument"
] == json.loads(test_policy) ] == json.loads(test_policy)
@ -2508,14 +2473,16 @@ def test_signing_certs():
UserName="notauser", CertificateId=cert_id, Status="Inactive" UserName="notauser", CertificateId=cert_id, Status="Inactive"
) )
fake_id_name = "x" * 32
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
client.update_signing_certificate( client.update_signing_certificate(
UserName="testing", CertificateId="x" * 32, Status="Inactive" UserName="testing", CertificateId=fake_id_name, Status="Inactive"
) )
assert ce.value.response["Error"][ assert (
"Message" ce.value.response["Error"]["Message"]
] == "The Certificate with id {id} cannot be found.".format(id="x" * 32) == f"The Certificate with id {fake_id_name} cannot be found."
)
# List the certs: # List the certs:
resp = client.list_signing_certificates(UserName="testing")["Certificates"] resp = client.list_signing_certificates(UserName="testing")["Certificates"]
@ -2540,7 +2507,7 @@ def test_create_saml_provider():
Name="TestSAMLProvider", SAMLMetadataDocument="a" * 1024 Name="TestSAMLProvider", SAMLMetadataDocument="a" * 1024
) )
response["SAMLProviderArn"].should.equal( response["SAMLProviderArn"].should.equal(
"arn:aws:iam::{}:saml-provider/TestSAMLProvider".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:saml-provider/TestSAMLProvider"
) )
@ -2562,7 +2529,7 @@ def test_list_saml_providers():
conn.create_saml_provider(Name="TestSAMLProvider", SAMLMetadataDocument="a" * 1024) conn.create_saml_provider(Name="TestSAMLProvider", SAMLMetadataDocument="a" * 1024)
response = conn.list_saml_providers() response = conn.list_saml_providers()
response["SAMLProviderList"][0]["Arn"].should.equal( response["SAMLProviderList"][0]["Arn"].should.equal(
"arn:aws:iam::{}:saml-provider/TestSAMLProvider".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:saml-provider/TestSAMLProvider"
) )
@ -2583,9 +2550,10 @@ def test_delete_saml_provider():
with pytest.raises(ClientError) as ce: with pytest.raises(ClientError) as ce:
conn.delete_signing_certificate(UserName="testing", CertificateId=cert_id) conn.delete_signing_certificate(UserName="testing", CertificateId=cert_id)
assert ce.value.response["Error"][ assert (
"Message" ce.value.response["Error"]["Message"]
] == "The Certificate with id {id} cannot be found.".format(id=cert_id) == f"The Certificate with id {cert_id} cannot be found."
)
# Verify that it's not in the list: # Verify that it's not in the list:
resp = conn.list_signing_certificates(UserName="testing") resp = conn.list_signing_certificates(UserName="testing")
@ -2989,11 +2957,11 @@ def test_list_entities_for_policy():
conn.attach_user_policy( conn.attach_user_policy(
UserName="testUser", UserName="testUser",
PolicyArn="arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy",
) )
conn.attach_group_policy( conn.attach_group_policy(
GroupName="testGroup", GroupName="testGroup",
PolicyArn="arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy",
) )
conn.add_user_to_group(UserName="testUser", GroupName="testGroup") conn.add_user_to_group(UserName="testUser", GroupName="testGroup")
@ -3013,11 +2981,11 @@ def test_list_entities_for_policy():
) )
conn.attach_role_policy( conn.attach_role_policy(
RoleName="my-role", RoleName="my-role",
PolicyArn="arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy",
) )
response = conn.list_entities_for_policy( response = conn.list_entities_for_policy(
PolicyArn="arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy",
EntityFilter="Role", EntityFilter="Role",
) )
assert response["PolicyRoles"][0]["RoleName"] == "my-role" assert response["PolicyRoles"][0]["RoleName"] == "my-role"
@ -3026,7 +2994,7 @@ def test_list_entities_for_policy():
response["PolicyUsers"].should.equal([]) response["PolicyUsers"].should.equal([])
response = conn.list_entities_for_policy( response = conn.list_entities_for_policy(
PolicyArn="arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy",
EntityFilter="User", EntityFilter="User",
) )
assert response["PolicyUsers"][0]["UserName"] == "testUser" assert response["PolicyUsers"][0]["UserName"] == "testUser"
@ -3035,7 +3003,7 @@ def test_list_entities_for_policy():
response["PolicyRoles"].should.equal([]) response["PolicyRoles"].should.equal([])
response = conn.list_entities_for_policy( response = conn.list_entities_for_policy(
PolicyArn="arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy",
EntityFilter="Group", EntityFilter="Group",
) )
assert response["PolicyGroups"][0]["GroupName"] == "testGroup" assert response["PolicyGroups"][0]["GroupName"] == "testGroup"
@ -3044,7 +3012,7 @@ def test_list_entities_for_policy():
response["PolicyUsers"].should.equal([]) response["PolicyUsers"].should.equal([])
response = conn.list_entities_for_policy( response = conn.list_entities_for_policy(
PolicyArn="arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID), PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy",
EntityFilter="LocalManagedPolicy", EntityFilter="LocalManagedPolicy",
) )
assert response["PolicyGroups"][0]["GroupName"] == "testGroup" assert response["PolicyGroups"][0]["GroupName"] == "testGroup"
@ -3057,7 +3025,7 @@ def test_list_entities_for_policy():
# Return everything when no entity is specified # Return everything when no entity is specified
response = conn.list_entities_for_policy( response = conn.list_entities_for_policy(
PolicyArn="arn:aws:iam::{}:policy/testPolicy".format(ACCOUNT_ID) PolicyArn=f"arn:aws:iam::{ACCOUNT_ID}:policy/testPolicy"
) )
response["PolicyGroups"][0]["GroupName"].should.equal("testGroup") response["PolicyGroups"][0]["GroupName"].should.equal("testGroup")
response["PolicyUsers"][0]["UserName"].should.equal("testUser") response["PolicyUsers"][0]["UserName"].should.equal("testUser")
@ -3074,9 +3042,7 @@ def test_create_role_no_path():
resp = conn.create_role( resp = conn.create_role(
RoleName="my-role", AssumeRolePolicyDocument="some policy", Description="test" RoleName="my-role", AssumeRolePolicyDocument="some policy", Description="test"
) )
resp.get("Role").get("Arn").should.equal( resp.get("Role").get("Arn").should.equal(f"arn:aws:iam::{ACCOUNT_ID}:role/my-role")
"arn:aws:iam::{}:role/my-role".format(ACCOUNT_ID)
)
resp.get("Role").should_not.have.key("PermissionsBoundary") resp.get("Role").should_not.have.key("PermissionsBoundary")
resp.get("Role").get("Description").should.equal("test") resp.get("Role").get("Description").should.equal("test")
@ -3084,7 +3050,7 @@ def test_create_role_no_path():
@mock_iam() @mock_iam()
def test_create_role_with_permissions_boundary(): def test_create_role_with_permissions_boundary():
conn = boto3.client("iam", region_name="us-east-1") conn = boto3.client("iam", region_name="us-east-1")
boundary = "arn:aws:iam::{}:policy/boundary".format(ACCOUNT_ID) boundary = f"arn:aws:iam::{ACCOUNT_ID}:policy/boundary"
resp = conn.create_role( resp = conn.create_role(
RoleName="my-role", RoleName="my-role",
AssumeRolePolicyDocument="some policy", AssumeRolePolicyDocument="some policy",
@ -3139,7 +3105,7 @@ def test_create_role_with_same_name_should_fail():
) )
err.value.response["Error"]["Code"].should.equal("EntityAlreadyExists") err.value.response["Error"]["Code"].should.equal("EntityAlreadyExists")
err.value.response["Error"]["Message"].should.equal( err.value.response["Error"]["Message"].should.equal(
"Role with name {0} already exists.".format(test_role_name) f"Role with name {test_role_name} already exists."
) )
@ -3153,9 +3119,7 @@ def test_create_policy_with_same_name_should_fail():
iam.create_policy(PolicyName=test_policy_name, PolicyDocument=MOCK_POLICY) iam.create_policy(PolicyName=test_policy_name, PolicyDocument=MOCK_POLICY)
err.value.response["Error"]["Code"].should.equal("EntityAlreadyExists") err.value.response["Error"]["Code"].should.equal("EntityAlreadyExists")
err.value.response["Error"]["Message"].should.equal( err.value.response["Error"]["Message"].should.equal(
"A policy called {0} already exists. Duplicate names are not allowed.".format( f"A policy called {test_policy_name} already exists. Duplicate names are not allowed."
test_policy_name
)
) )
@ -3237,7 +3201,7 @@ def test_get_account_password_policy_errors():
client.get_account_password_policy.when.called_with().should.throw( client.get_account_password_policy.when.called_with().should.throw(
ClientError, ClientError,
"The Password Policy with domain name {} cannot be found.".format(ACCOUNT_ID), f"The Password Policy with domain name {ACCOUNT_ID} cannot be found.",
) )
@ -3254,7 +3218,7 @@ def test_delete_account_password_policy():
client.get_account_password_policy.when.called_with().should.throw( client.get_account_password_policy.when.called_with().should.throw(
ClientError, ClientError,
"The Password Policy with domain name {} cannot be found.".format(ACCOUNT_ID), f"The Password Policy with domain name {ACCOUNT_ID} cannot be found.",
) )
@ -3467,11 +3431,11 @@ def test_role_list_config_discovered_resources():
this_role = role_config_query.backends[DEFAULT_ACCOUNT_ID][ this_role = role_config_query.backends[DEFAULT_ACCOUNT_ID][
"global" "global"
].create_role( ].create_role(
role_name="role{}".format(ix), role_name=f"role{ix}",
assume_role_policy_document=None, assume_role_policy_document=None,
path="/", path="/",
permissions_boundary=None, permissions_boundary=None,
description="role{}".format(ix), description=f"role{ix}",
tags=[{"Key": "foo", "Value": "bar"}], tags=[{"Key": "foo", "Value": "bar"}],
max_session_duration=3600, max_session_duration=3600,
) )
@ -3848,9 +3812,9 @@ def test_role_config_client():
num_roles = 10 num_roles = 10
for ix in range(1, num_roles + 1): for ix in range(1, num_roles + 1):
this_policy = iam_client.create_role( this_policy = iam_client.create_role(
RoleName="role{}".format(ix), RoleName=f"role{ix}",
Path="/", Path="/",
Description="role{}".format(ix), Description=f"role{ix}",
AssumeRolePolicyDocument=json.dumps("{ }"), AssumeRolePolicyDocument=json.dumps("{ }"),
) )
roles.append( roles.append(
@ -4075,10 +4039,10 @@ def test_policy_list_config_discovered_resources():
this_policy = policy_config_query.backends[DEFAULT_ACCOUNT_ID][ this_policy = policy_config_query.backends[DEFAULT_ACCOUNT_ID][
"global" "global"
].create_policy( ].create_policy(
description="policy{}".format(ix), description=f"policy{ix}",
path="", path="",
policy_document=json.dumps(basic_policy), policy_document=json.dumps(basic_policy),
policy_name="policy{}".format(ix), policy_name=f"policy{ix}",
tags=[], tags=[],
) )
policies.append({"id": this_policy.id, "name": this_policy.name}) policies.append({"id": this_policy.id, "name": this_policy.name})
@ -4301,10 +4265,10 @@ def test_policy_config_client():
num_policies = 10 num_policies = 10
for ix in range(1, num_policies + 1): for ix in range(1, num_policies + 1):
this_policy = iam_client.create_policy( this_policy = iam_client.create_policy(
PolicyName="policy{}".format(ix), PolicyName=f"policy{ix}",
Path="/", Path="/",
PolicyDocument=json.dumps(basic_policy), PolicyDocument=json.dumps(basic_policy),
Description="policy{}".format(ix), Description=f"policy{ix}",
) )
policies.append( policies.append(
{ {
@ -4479,7 +4443,7 @@ def test_list_roles_with_more_than_100_roles_no_max_items_defaults_to_100():
iam = boto3.client("iam", region_name="us-east-1") iam = boto3.client("iam", region_name="us-east-1")
for i in range(150): for i in range(150):
iam.create_role( iam.create_role(
RoleName="test_role_{}".format(i), AssumeRolePolicyDocument="some policy" RoleName=f"test_role_{i}", AssumeRolePolicyDocument="some policy"
) )
response = iam.list_roles() response = iam.list_roles()
roles = response["Roles"] roles = response["Roles"]
@ -4493,7 +4457,7 @@ def test_list_roles_max_item_and_marker_values_adhered():
iam = boto3.client("iam", region_name="us-east-1") iam = boto3.client("iam", region_name="us-east-1")
for i in range(10): for i in range(10):
iam.create_role( iam.create_role(
RoleName="test_role_{}".format(i), AssumeRolePolicyDocument="some policy" RoleName=f"test_role_{i}", AssumeRolePolicyDocument="some policy"
) )
response = iam.list_roles(MaxItems=2) response = iam.list_roles(MaxItems=2)
roles = response["Roles"] roles = response["Roles"]
@ -4633,7 +4597,7 @@ def test_tag_user_error_unknown_user_name():
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(404) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(404)
ex.response["Error"]["Code"].should.contain("NoSuchEntity") ex.response["Error"]["Code"].should.contain("NoSuchEntity")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(
"The user with name {} cannot be found.".format(name) f"The user with name {name} cannot be found."
) )
@ -4671,7 +4635,7 @@ def test_untag_user_error_unknown_user_name():
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(404) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(404)
ex.response["Error"]["Code"].should.contain("NoSuchEntity") ex.response["Error"]["Code"].should.contain("NoSuchEntity")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(
"The user with name {} cannot be found.".format(name) f"The user with name {name} cannot be found."
) )

View File

@ -368,7 +368,7 @@ Resources:
policy_arn = provisioned_resource["PhysicalResourceId"] policy_arn = provisioned_resource["PhysicalResourceId"]
policy_arn.should.match( policy_arn.should.match(
"arn:aws:iam::{}:policy/MyStack-ThePolicy-[A-Z0-9]+".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:policy/MyStack-ThePolicy-[A-Z0-9]+"
) )
expected_name = policy_arn.split("/")[1] expected_name = policy_arn.split("/")[1]
@ -420,7 +420,7 @@ Resources:
logical_resource_id.should.equal("ThePolicy") logical_resource_id.should.equal("ThePolicy")
policy_arn = provisioned_resource["PhysicalResourceId"] policy_arn = provisioned_resource["PhysicalResourceId"]
policy_arn.should.equal("arn:aws:iam::{}:policy/{}".format(ACCOUNT_ID, name)) policy_arn.should.equal(f"arn:aws:iam::{ACCOUNT_ID}:policy/{name}")
policy = iam_client.get_policy(PolicyArn=policy_arn)["Policy"] policy = iam_client.get_policy(PolicyArn=policy_arn)["Policy"]
policy.should.have.key("Arn").equal(policy_arn) policy.should.have.key("Arn").equal(policy_arn)
@ -469,7 +469,7 @@ Resources:
policy_arn = provisioned_resource["PhysicalResourceId"] policy_arn = provisioned_resource["PhysicalResourceId"]
policy_arn.should.match( policy_arn.should.match(
"rn:aws:iam::{}:policy/MyStack-ThePolicy-[A-Z0-9]+".format(ACCOUNT_ID) f"rn:aws:iam::{ACCOUNT_ID}:policy/MyStack-ThePolicy-[A-Z0-9]+"
) )
response = iam_client.list_entities_for_policy(PolicyArn=policy_arn) response = iam_client.list_entities_for_policy(PolicyArn=policy_arn)
@ -520,7 +520,7 @@ Resources:
policy_arn = provisioned_resource["PhysicalResourceId"] policy_arn = provisioned_resource["PhysicalResourceId"]
policy_arn.should.match( policy_arn.should.match(
"rn:aws:iam::{}:policy/MyStack-ThePolicy-[A-Z0-9]+".format(ACCOUNT_ID) f"rn:aws:iam::{ACCOUNT_ID}:policy/MyStack-ThePolicy-[A-Z0-9]+"
) )
response = iam_client.list_entities_for_policy(PolicyArn=policy_arn) response = iam_client.list_entities_for_policy(PolicyArn=policy_arn)
@ -571,7 +571,7 @@ Resources:
policy_arn = provisioned_resource["PhysicalResourceId"] policy_arn = provisioned_resource["PhysicalResourceId"]
policy_arn.should.match( policy_arn.should.match(
"rn:aws:iam::{}:policy/MyStack-ThePolicy-[A-Z0-9]+".format(ACCOUNT_ID) f"rn:aws:iam::{ACCOUNT_ID}:policy/MyStack-ThePolicy-[A-Z0-9]+"
) )
response = iam_client.list_entities_for_policy(PolicyArn=policy_arn) response = iam_client.list_entities_for_policy(PolicyArn=policy_arn)
@ -594,7 +594,7 @@ def test_iam_cloudformation_create_user_policy():
s3_client = boto3.client("s3", region_name="us-east-1") s3_client = boto3.client("s3", region_name="us-east-1")
bucket_name = "my-bucket" bucket_name = "my-bucket"
s3_client.create_bucket(Bucket=bucket_name) s3_client.create_bucket(Bucket=bucket_name)
bucket_arn = "arn:aws:s3:::{0}".format(bucket_name) bucket_arn = f"arn:aws:s3:::{bucket_name}"
cf_client = boto3.client("cloudformation", region_name="us-east-1") cf_client = boto3.client("cloudformation", region_name="us-east-1")
stack_name = "MyStack" stack_name = "MyStack"
@ -646,7 +646,7 @@ def test_iam_cloudformation_update_user_policy():
s3_client = boto3.client("s3", region_name="us-east-1") s3_client = boto3.client("s3", region_name="us-east-1")
bucket_name = "my-bucket" bucket_name = "my-bucket"
s3_client.create_bucket(Bucket=bucket_name) s3_client.create_bucket(Bucket=bucket_name)
bucket_arn = "arn:aws:s3:::{0}".format(bucket_name) bucket_arn = f"arn:aws:s3:::{bucket_name}"
cf_client = boto3.client("cloudformation", region_name="us-east-1") cf_client = boto3.client("cloudformation", region_name="us-east-1")
stack_name = "MyStack" stack_name = "MyStack"
@ -733,7 +733,7 @@ def test_iam_cloudformation_delete_user_policy_having_generated_name():
s3_client = boto3.client("s3", region_name="us-east-1") s3_client = boto3.client("s3", region_name="us-east-1")
bucket_name = "my-bucket" bucket_name = "my-bucket"
s3_client.create_bucket(Bucket=bucket_name) s3_client.create_bucket(Bucket=bucket_name)
bucket_arn = "arn:aws:s3:::{0}".format(bucket_name) bucket_arn = f"arn:aws:s3:::{bucket_name}"
cf_client = boto3.client("cloudformation", region_name="us-east-1") cf_client = boto3.client("cloudformation", region_name="us-east-1")
stack_name = "MyStack" stack_name = "MyStack"
@ -788,7 +788,7 @@ def test_iam_cloudformation_create_role_policy():
s3_client = boto3.client("s3", region_name="us-east-1") s3_client = boto3.client("s3", region_name="us-east-1")
bucket_name = "my-bucket" bucket_name = "my-bucket"
s3_client.create_bucket(Bucket=bucket_name) s3_client.create_bucket(Bucket=bucket_name)
bucket_arn = "arn:aws:s3:::{0}".format(bucket_name) bucket_arn = f"arn:aws:s3:::{bucket_name}"
cf_client = boto3.client("cloudformation", region_name="us-east-1") cf_client = boto3.client("cloudformation", region_name="us-east-1")
stack_name = "MyStack" stack_name = "MyStack"
@ -840,7 +840,7 @@ def test_iam_cloudformation_update_role_policy():
s3_client = boto3.client("s3", region_name="us-east-1") s3_client = boto3.client("s3", region_name="us-east-1")
bucket_name = "my-bucket" bucket_name = "my-bucket"
s3_client.create_bucket(Bucket=bucket_name) s3_client.create_bucket(Bucket=bucket_name)
bucket_arn = "arn:aws:s3:::{0}".format(bucket_name) bucket_arn = f"arn:aws:s3:::{bucket_name}"
cf_client = boto3.client("cloudformation", region_name="us-east-1") cf_client = boto3.client("cloudformation", region_name="us-east-1")
stack_name = "MyStack" stack_name = "MyStack"
@ -927,7 +927,7 @@ def test_iam_cloudformation_delete_role_policy_having_generated_name():
s3_client = boto3.client("s3", region_name="us-east-1") s3_client = boto3.client("s3", region_name="us-east-1")
bucket_name = "my-bucket" bucket_name = "my-bucket"
s3_client.create_bucket(Bucket=bucket_name) s3_client.create_bucket(Bucket=bucket_name)
bucket_arn = "arn:aws:s3:::{0}".format(bucket_name) bucket_arn = f"arn:aws:s3:::{bucket_name}"
cf_client = boto3.client("cloudformation", region_name="us-east-1") cf_client = boto3.client("cloudformation", region_name="us-east-1")
stack_name = "MyStack" stack_name = "MyStack"
@ -982,7 +982,7 @@ def test_iam_cloudformation_create_group_policy():
s3_client = boto3.client("s3", region_name="us-east-1") s3_client = boto3.client("s3", region_name="us-east-1")
bucket_name = "my-bucket" bucket_name = "my-bucket"
s3_client.create_bucket(Bucket=bucket_name) s3_client.create_bucket(Bucket=bucket_name)
bucket_arn = "arn:aws:s3:::{0}".format(bucket_name) bucket_arn = f"arn:aws:s3:::{bucket_name}"
cf_client = boto3.client("cloudformation", region_name="us-east-1") cf_client = boto3.client("cloudformation", region_name="us-east-1")
stack_name = "MyStack" stack_name = "MyStack"
@ -1034,7 +1034,7 @@ def test_iam_cloudformation_update_group_policy():
s3_client = boto3.client("s3", region_name="us-east-1") s3_client = boto3.client("s3", region_name="us-east-1")
bucket_name = "my-bucket" bucket_name = "my-bucket"
s3_client.create_bucket(Bucket=bucket_name) s3_client.create_bucket(Bucket=bucket_name)
bucket_arn = "arn:aws:s3:::{0}".format(bucket_name) bucket_arn = f"arn:aws:s3:::{bucket_name}"
cf_client = boto3.client("cloudformation", region_name="us-east-1") cf_client = boto3.client("cloudformation", region_name="us-east-1")
stack_name = "MyStack" stack_name = "MyStack"
@ -1121,7 +1121,7 @@ def test_iam_cloudformation_delete_group_policy_having_generated_name():
s3_client = boto3.client("s3", region_name="us-east-1") s3_client = boto3.client("s3", region_name="us-east-1")
bucket_name = "my-bucket" bucket_name = "my-bucket"
s3_client.create_bucket(Bucket=bucket_name) s3_client.create_bucket(Bucket=bucket_name)
bucket_arn = "arn:aws:s3:::{0}".format(bucket_name) bucket_arn = f"arn:aws:s3:::{bucket_name}"
cf_client = boto3.client("cloudformation", region_name="us-east-1") cf_client = boto3.client("cloudformation", region_name="us-east-1")
stack_name = "MyStack" stack_name = "MyStack"

View File

@ -40,7 +40,7 @@ def test_get_group_boto3():
created["Path"].should.equal("/") created["Path"].should.equal("/")
created["GroupName"].should.equal("my-group") created["GroupName"].should.equal("my-group")
created.should.have.key("GroupId") created.should.have.key("GroupId")
created["Arn"].should.equal("arn:aws:iam::{}:group/my-group".format(ACCOUNT_ID)) created["Arn"].should.equal(f"arn:aws:iam::{ACCOUNT_ID}:group/my-group")
created["CreateDate"].should.be.a(datetime) created["CreateDate"].should.be.a(datetime)
retrieved = conn.get_group(GroupName="my-group")["Group"] retrieved = conn.get_group(GroupName="my-group")["Group"]
@ -63,15 +63,16 @@ def test_get_group_current():
assert result["Group"]["GroupName"] == "my-group" assert result["Group"]["GroupName"] == "my-group"
assert isinstance(result["Group"]["CreateDate"], datetime) assert isinstance(result["Group"]["CreateDate"], datetime)
assert result["Group"]["GroupId"] assert result["Group"]["GroupId"]
assert result["Group"]["Arn"] == "arn:aws:iam::{}:group/my-group".format(ACCOUNT_ID) assert result["Group"]["Arn"] == f"arn:aws:iam::{ACCOUNT_ID}:group/my-group"
assert not result["Users"] assert not result["Users"]
# Make a group with a different path: # Make a group with a different path:
other_group = conn.create_group(GroupName="my-other-group", Path="some/location") other_group = conn.create_group(GroupName="my-other-group", Path="some/location")
assert other_group["Group"]["Path"] == "some/location" assert other_group["Group"]["Path"] == "some/location"
assert other_group["Group"][ assert (
"Arn" other_group["Group"]["Arn"]
] == "arn:aws:iam::{}:group/some/location/my-other-group".format(ACCOUNT_ID) == f"arn:aws:iam::{ACCOUNT_ID}:group/some/location/my-other-group"
)
@mock_iam @mock_iam

View File

@ -18,7 +18,7 @@ def test_create_open_id_connect_provider():
) )
response["OpenIDConnectProviderArn"].should.equal( response["OpenIDConnectProviderArn"].should.equal(
"arn:aws:iam::{}:oidc-provider/example.com".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:oidc-provider/example.com"
) )
response = client.create_open_id_connect_provider( response = client.create_open_id_connect_provider(
@ -26,7 +26,7 @@ def test_create_open_id_connect_provider():
) )
response["OpenIDConnectProviderArn"].should.equal( response["OpenIDConnectProviderArn"].should.equal(
"arn:aws:iam::{}:oidc-provider/example.org".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:oidc-provider/example.org"
) )
response = client.create_open_id_connect_provider( response = client.create_open_id_connect_provider(
@ -34,7 +34,7 @@ def test_create_open_id_connect_provider():
) )
response["OpenIDConnectProviderArn"].should.equal( response["OpenIDConnectProviderArn"].should.equal(
"arn:aws:iam::{}:oidc-provider/example.org/oidc".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:oidc-provider/example.org/oidc"
) )
response = client.create_open_id_connect_provider( response = client.create_open_id_connect_provider(
@ -42,7 +42,7 @@ def test_create_open_id_connect_provider():
) )
response["OpenIDConnectProviderArn"].should.equal( response["OpenIDConnectProviderArn"].should.equal(
"arn:aws:iam::{}:oidc-provider/example.org/oidc-query".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:oidc-provider/example.org/oidc-query"
) )
@ -106,7 +106,7 @@ def test_create_open_id_connect_provider_too_many_entries():
def test_create_open_id_connect_provider_quota_error(): def test_create_open_id_connect_provider_quota_error():
client = boto3.client("iam", region_name="us-east-1") client = boto3.client("iam", region_name="us-east-1")
too_many_client_ids = ["{}".format(i) for i in range(101)] too_many_client_ids = [f"{i}" for i in range(101)]
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.create_open_id_connect_provider( client.create_open_id_connect_provider(
Url="http://example.org", Url="http://example.org",
@ -155,7 +155,7 @@ def test_delete_open_id_connect_provider():
client.get_open_id_connect_provider.when.called_with( client.get_open_id_connect_provider.when.called_with(
OpenIDConnectProviderArn=open_id_arn OpenIDConnectProviderArn=open_id_arn
).should.throw( ).should.throw(
ClientError, "OpenIDConnect Provider not found for arn {}".format(open_id_arn) ClientError, f"OpenIDConnect Provider not found for arn {open_id_arn}"
) )
# deleting a non existing provider should be successful # deleting a non existing provider should be successful
@ -206,13 +206,11 @@ def test_get_open_id_connect_provider_errors():
) )
open_id_arn = response["OpenIDConnectProviderArn"] open_id_arn = response["OpenIDConnectProviderArn"]
unknown_arn = open_id_arn + "-not-existing"
client.get_open_id_connect_provider.when.called_with( client.get_open_id_connect_provider.when.called_with(
OpenIDConnectProviderArn=open_id_arn + "-not-existing" OpenIDConnectProviderArn=unknown_arn
).should.throw( ).should.throw(
ClientError, ClientError, f"OpenIDConnect Provider not found for arn {unknown_arn}"
"OpenIDConnect Provider not found for arn {}".format(
open_id_arn + "-not-existing"
),
) )

View File

@ -22,9 +22,7 @@ def test_get_all_server_certs():
certs.should.have.length_of(1) certs.should.have.length_of(1)
cert1 = certs[0] cert1 = certs[0]
cert1["ServerCertificateName"].should.equal("certname") cert1["ServerCertificateName"].should.equal("certname")
cert1["Arn"].should.equal( cert1["Arn"].should.equal(f"arn:aws:iam::{ACCOUNT_ID}:server-certificate/certname")
"arn:aws:iam::{}:server-certificate/certname".format(ACCOUNT_ID)
)
@mock_iam @mock_iam
@ -59,7 +57,7 @@ def test_get_server_cert():
metadata["Path"].should.equal("/") metadata["Path"].should.equal("/")
metadata["ServerCertificateName"].should.equal("certname") metadata["ServerCertificateName"].should.equal("certname")
metadata["Arn"].should.equal( metadata["Arn"].should.equal(
"arn:aws:iam::{}:server-certificate/certname".format(ACCOUNT_ID) f"arn:aws:iam::{ACCOUNT_ID}:server-certificate/certname"
) )
metadata.should.have.key("ServerCertificateId") metadata.should.have.key("ServerCertificateId")
metadata["UploadDate"].should.be.a(datetime) metadata["UploadDate"].should.be.a(datetime)

View File

@ -16,25 +16,25 @@ def test_endpoints():
endpoint = client.describe_endpoint(endpointType="iot:Data") endpoint = client.describe_endpoint(endpointType="iot:Data")
endpoint.should.have.key("endpointAddress").which.should_not.contain("ats") endpoint.should.have.key("endpointAddress").which.should_not.contain("ats")
endpoint.should.have.key("endpointAddress").which.should.contain( endpoint.should.have.key("endpointAddress").which.should.contain(
"iot.{}.amazonaws.com".format(region_name) f"iot.{region_name}.amazonaws.com"
) )
# iot:Data-ATS # iot:Data-ATS
endpoint = client.describe_endpoint(endpointType="iot:Data-ATS") endpoint = client.describe_endpoint(endpointType="iot:Data-ATS")
endpoint.should.have.key("endpointAddress").which.should.contain( endpoint.should.have.key("endpointAddress").which.should.contain(
"ats.iot.{}.amazonaws.com".format(region_name) f"ats.iot.{region_name}.amazonaws.com"
) )
# iot:Data-ATS # iot:Data-ATS
endpoint = client.describe_endpoint(endpointType="iot:CredentialProvider") endpoint = client.describe_endpoint(endpointType="iot:CredentialProvider")
endpoint.should.have.key("endpointAddress").which.should.contain( endpoint.should.have.key("endpointAddress").which.should.contain(
"credentials.iot.{}.amazonaws.com".format(region_name) f"credentials.iot.{region_name}.amazonaws.com"
) )
# iot:Data-ATS # iot:Data-ATS
endpoint = client.describe_endpoint(endpointType="iot:Jobs") endpoint = client.describe_endpoint(endpointType="iot:Jobs")
endpoint.should.have.key("endpointAddress").which.should.contain( endpoint.should.have.key("endpointAddress").which.should.contain(
"jobs.iot.{}.amazonaws.com".format(region_name) f"jobs.iot.{region_name}.amazonaws.com"
) )
# raise InvalidRequestException # raise InvalidRequestException

View File

@ -206,7 +206,7 @@ def test_delete_certificate_validation():
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.delete_certificate(certificateId=cert_id) client.delete_certificate(certificateId=cert_id)
e.value.response["Error"]["Message"].should.contain( e.value.response["Error"]["Message"].should.contain(
"Things must be detached before deletion (arn: %s)" % cert_arn f"Things must be detached before deletion (arn: {cert_arn})"
) )
res = client.list_certificates() res = client.list_certificates()
res.should.have.key("certificates").which.should.have.length_of(1) res.should.have.key("certificates").which.should.have.length_of(1)
@ -215,7 +215,7 @@ def test_delete_certificate_validation():
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.delete_certificate(certificateId=cert_id) client.delete_certificate(certificateId=cert_id)
e.value.response["Error"]["Message"].should.contain( e.value.response["Error"]["Message"].should.contain(
"Certificate policies must be detached before deletion (arn: %s)" % cert_arn f"Certificate policies must be detached before deletion (arn: {cert_arn})"
) )
res = client.list_certificates() res = client.list_certificates()
res.should.have.key("certificates").which.should.have.length_of(1) res.should.have.key("certificates").which.should.have.length_of(1)

View File

@ -208,7 +208,7 @@ def test_policy_versions(iot_client):
) )
err = exc.value.response["Error"] err = exc.value.response["Error"]
err["Message"].should.equal( err["Message"].should.equal(
"The policy %s already has the maximum number of versions (5)" % policy_name f"The policy {policy_name} already has the maximum number of versions (5)"
) )
iot_client.delete_policy_version(policyName=policy_name, policyVersionId="1") iot_client.delete_policy_version(policyName=policy_name, policyVersionId="1")

View File

@ -44,7 +44,7 @@ def test_list_attached_policies(url_encode_arn):
if url_encode_arn: if url_encode_arn:
certificate_arn = quote(certificate_arn, safe="") certificate_arn = quote(certificate_arn, safe="")
result = test_client.post("/attached-policies/{}".format(certificate_arn)) result = test_client.post(f"/attached-policies/{certificate_arn}")
result.status_code.should.equal(200) result.status_code.should.equal(200)
result_dict = json.loads(result.data.decode("utf-8")) result_dict = json.loads(result.data.decode("utf-8"))
result_dict["policies"][0]["policyName"].should.equal("my-policy") result_dict["policies"][0]["policyName"].should.equal("my-policy")

View File

@ -18,7 +18,7 @@ def test_iotdata_list():
# just making sure that server is up # just making sure that server is up
thing_name = "nothing" thing_name = "nothing"
res = test_client.get("/things/{}/shadow".format(thing_name)) res = test_client.get(f"/things/{thing_name}/shadow")
res.status_code.should.equal(404) res.status_code.should.equal(404)
@ -37,5 +37,5 @@ def test_publish(url_encode_topic):
topic = "test/topic" topic = "test/topic"
topic_for_path = quote(topic, safe="") if url_encode_topic else topic topic_for_path = quote(topic, safe="") if url_encode_topic else topic
result = test_client.post("/topics/{}".format(topic_for_path)) result = test_client.post(f"/topics/{topic_for_path}")
result.status_code.should.equal(200) result.status_code.should.equal(200)

View File

@ -97,7 +97,7 @@ def test_list_many_streams():
conn = boto3.client("kinesis", region_name="us-west-2") conn = boto3.client("kinesis", region_name="us-west-2")
for i in range(11): for i in range(11):
conn.create_stream(StreamName="stream%d" % i, ShardCount=1) conn.create_stream(StreamName=f"stream{i}", ShardCount=1)
resp = conn.list_streams() resp = conn.list_streams()
stream_names = resp["StreamNames"] stream_names = resp["StreamNames"]
@ -124,7 +124,7 @@ def test_describe_stream_summary():
stream["StreamName"].should.equal(stream_name) stream["StreamName"].should.equal(stream_name)
stream["OpenShardCount"].should.equal(shard_count) stream["OpenShardCount"].should.equal(shard_count)
stream["StreamARN"].should.equal( stream["StreamARN"].should.equal(
"arn:aws:kinesis:us-west-2:{}:stream/{}".format(ACCOUNT_ID, stream_name) f"arn:aws:kinesis:us-west-2:{ACCOUNT_ID}:stream/{stream_name}"
) )
stream["StreamStatus"].should.equal("ACTIVE") stream["StreamStatus"].should.equal("ACTIVE")

View File

@ -23,9 +23,7 @@ def test_get_hls_streaming_session_url():
endpoint_url=data_endpoint, endpoint_url=data_endpoint,
) )
res = client.get_hls_streaming_session_url(StreamName=stream_name) res = client.get_hls_streaming_session_url(StreamName=stream_name)
reg_exp = r"^{}/hls/v1/getHLSMasterPlaylist.m3u8\?SessionToken\=.+$".format( reg_exp = rf"^{data_endpoint}/hls/v1/getHLSMasterPlaylist.m3u8\?SessionToken\=.+$"
data_endpoint
)
res.should.have.key("HLSStreamingSessionURL").which.should.match(reg_exp) res.should.have.key("HLSStreamingSessionURL").which.should.match(reg_exp)
@ -47,9 +45,7 @@ def test_get_dash_streaming_session_url():
endpoint_url=data_endpoint, endpoint_url=data_endpoint,
) )
res = client.get_dash_streaming_session_url(StreamName=stream_name) res = client.get_dash_streaming_session_url(StreamName=stream_name)
reg_exp = r"^{}/dash/v1/getDASHManifest.mpd\?SessionToken\=.+$".format( reg_exp = rf"^{data_endpoint}/dash/v1/getDASHManifest.mpd\?SessionToken\=.+$"
data_endpoint
)
res.should.have.key("DASHStreamingSessionURL").which.should.match(reg_exp) res.should.have.key("DASHStreamingSessionURL").which.should.match(reg_exp)

View File

@ -65,9 +65,7 @@ def test_create_key():
) )
key["KeyMetadata"]["Arn"].should.equal( key["KeyMetadata"]["Arn"].should.equal(
"arn:aws:kms:us-east-1:{}:key/{}".format( f"arn:aws:kms:us-east-1:{ACCOUNT_ID}:key/{key['KeyMetadata']['KeyId']}"
ACCOUNT_ID, key["KeyMetadata"]["KeyId"]
)
) )
key["KeyMetadata"]["AWSAccountId"].should.equal(ACCOUNT_ID) key["KeyMetadata"]["AWSAccountId"].should.equal(ACCOUNT_ID)
key["KeyMetadata"]["CreationDate"].should.be.a(datetime) key["KeyMetadata"]["CreationDate"].should.be.a(datetime)
@ -262,7 +260,7 @@ def test__create_alias__can_create_multiple_aliases_for_same_key_id():
aliases = client.list_aliases(KeyId=key_id)["Aliases"] aliases = client.list_aliases(KeyId=key_id)["Aliases"]
for name in alias_names: for name in alias_names:
alias_arn = "arn:aws:kms:us-east-1:{}:{}".format(ACCOUNT_ID, name) alias_arn = f"arn:aws:kms:us-east-1:{ACCOUNT_ID}:{name}"
aliases.should.contain( aliases.should.contain(
{"AliasName": name, "AliasArn": alias_arn, "TargetKeyId": key_id} {"AliasName": name, "AliasArn": alias_arn, "TargetKeyId": key_id}
) )
@ -278,8 +276,8 @@ def test_list_aliases():
aliases.should.have.length_of(14) aliases.should.have.length_of(14)
default_alias_names = ["aws/ebs", "aws/s3", "aws/redshift", "aws/rds"] default_alias_names = ["aws/ebs", "aws/s3", "aws/redshift", "aws/rds"]
for name in default_alias_names: for name in default_alias_names:
full_name = "alias/{}".format(name) full_name = f"alias/{name}"
arn = "arn:aws:kms:{}:{}:{}".format(region, ACCOUNT_ID, full_name) arn = f"arn:aws:kms:{region}:{ACCOUNT_ID}:{full_name}"
aliases.should.contain({"AliasName": full_name, "AliasArn": arn}) aliases.should.contain({"AliasName": full_name, "AliasArn": arn})
@ -991,9 +989,7 @@ def test__create_alias__raises_if_alias_has_restricted_characters(name):
err = ex.value.response["Error"] err = ex.value.response["Error"]
err["Code"].should.equal("ValidationException") err["Code"].should.equal("ValidationException")
err["Message"].should.equal( err["Message"].should.equal(
"1 validation error detected: Value '{}' at 'aliasName' failed to satisfy constraint: Member must satisfy regular expression pattern: ^[a-zA-Z0-9:/_-]+$".format( f"1 validation error detected: Value '{name}' at 'aliasName' failed to satisfy constraint: Member must satisfy regular expression pattern: ^[a-zA-Z0-9:/_-]+$"
name
)
) )

View File

@ -158,9 +158,9 @@ def test_put_subscription_filter_with_lambda():
msg_showed_up, received_message = _wait_for_log_msg( msg_showed_up, received_message = _wait_for_log_msg(
client_logs, "/aws/lambda/test", "awslogs" client_logs, "/aws/lambda/test", "awslogs"
) )
assert msg_showed_up, "CloudWatch log event was not found. All logs: {}".format( assert (
received_message msg_showed_up
) ), f"CloudWatch log event was not found. All logs: {received_message}"
data = json.loads(received_message)["awslogs"]["data"] data = json.loads(received_message)["awslogs"]["data"]
response = json.loads( response = json.loads(
@ -229,9 +229,9 @@ def test_subscription_filter_applies_to_new_streams():
msg_showed_up, received_message = _wait_for_log_msg( msg_showed_up, received_message = _wait_for_log_msg(
client_logs, "/aws/lambda/test", "awslogs" client_logs, "/aws/lambda/test", "awslogs"
) )
assert msg_showed_up, "CloudWatch log event was not found. All logs: {}".format( assert (
received_message msg_showed_up
) ), f"CloudWatch log event was not found. All logs: {received_message}"
data = json.loads(received_message)["awslogs"]["data"] data = json.loads(received_message)["awslogs"]["data"]
response = json.loads( response = json.loads(

View File

@ -1087,7 +1087,7 @@ def test_describe_log_streams_paging():
resp["logStreams"].should.have.length_of(2) resp["logStreams"].should.have.length_of(2)
resp["logStreams"][0]["arn"].should.contain(log_group_name) resp["logStreams"][0]["arn"].should.contain(log_group_name)
resp["nextToken"].should.equal( resp["nextToken"].should.equal(
"{}@{}".format(log_group_name, resp["logStreams"][1]["logStreamName"]) f"{log_group_name}@{resp['logStreams'][1]['logStreamName']}"
) )
resp = client.describe_log_streams( resp = client.describe_log_streams(
@ -1096,7 +1096,7 @@ def test_describe_log_streams_paging():
resp["logStreams"].should.have.length_of(1) resp["logStreams"].should.have.length_of(1)
resp["logStreams"][0]["arn"].should.contain(log_group_name) resp["logStreams"][0]["arn"].should.contain(log_group_name)
resp["nextToken"].should.equal( resp["nextToken"].should.equal(
"{}@{}".format(log_group_name, resp["logStreams"][0]["logStreamName"]) f"{log_group_name}@{resp['logStreams'][0]['logStreamName']}"
) )
resp = client.describe_log_streams( resp = client.describe_log_streams(
@ -1170,7 +1170,7 @@ def test_get_too_many_log_events(nr_of_events):
err["Code"].should.equal("InvalidParameterException") err["Code"].should.equal("InvalidParameterException")
err["Message"].should.contain("1 validation error detected") err["Message"].should.contain("1 validation error detected")
err["Message"].should.contain( err["Message"].should.contain(
"Value '{}' at 'limit' failed to satisfy constraint".format(nr_of_events) f"Value '{nr_of_events}' at 'limit' failed to satisfy constraint"
) )
err["Message"].should.contain("Member must have value less than or equal to 10000") err["Message"].should.contain("Member must have value less than or equal to 10000")
@ -1194,7 +1194,7 @@ def test_filter_too_many_log_events(nr_of_events):
err["Code"].should.equal("InvalidParameterException") err["Code"].should.equal("InvalidParameterException")
err["Message"].should.contain("1 validation error detected") err["Message"].should.contain("1 validation error detected")
err["Message"].should.contain( err["Message"].should.contain(
"Value '{}' at 'limit' failed to satisfy constraint".format(nr_of_events) f"Value '{nr_of_events}' at 'limit' failed to satisfy constraint"
) )
err["Message"].should.contain("Member must have value less than or equal to 10000") err["Message"].should.contain("Member must have value less than or equal to 10000")
@ -1209,7 +1209,7 @@ def test_describe_too_many_log_groups(nr_of_groups):
err["Code"].should.equal("InvalidParameterException") err["Code"].should.equal("InvalidParameterException")
err["Message"].should.contain("1 validation error detected") err["Message"].should.contain("1 validation error detected")
err["Message"].should.contain( err["Message"].should.contain(
"Value '{}' at 'limit' failed to satisfy constraint".format(nr_of_groups) f"Value '{nr_of_groups}' at 'limit' failed to satisfy constraint"
) )
err["Message"].should.contain("Member must have value less than or equal to 50") err["Message"].should.contain("Member must have value less than or equal to 50")
@ -1226,7 +1226,7 @@ def test_describe_too_many_log_streams(nr_of_streams):
err["Code"].should.equal("InvalidParameterException") err["Code"].should.equal("InvalidParameterException")
err["Message"].should.contain("1 validation error detected") err["Message"].should.contain("1 validation error detected")
err["Message"].should.contain( err["Message"].should.contain(
"Value '{}' at 'limit' failed to satisfy constraint".format(nr_of_streams) f"Value '{nr_of_streams}' at 'limit' failed to satisfy constraint"
) )
err["Message"].should.contain("Member must have value less than or equal to 50") err["Message"].should.contain("Member must have value less than or equal to 50")
@ -1242,9 +1242,7 @@ def test_create_log_group_invalid_name_length(length):
err["Code"].should.equal("InvalidParameterException") err["Code"].should.equal("InvalidParameterException")
err["Message"].should.contain("1 validation error detected") err["Message"].should.contain("1 validation error detected")
err["Message"].should.contain( err["Message"].should.contain(
"Value '{}' at 'logGroupName' failed to satisfy constraint".format( f"Value '{log_group_name}' at 'logGroupName' failed to satisfy constraint"
log_group_name
)
) )
err["Message"].should.contain("Member must have length less than or equal to 512") err["Message"].should.contain("Member must have length less than or equal to 512")
@ -1263,7 +1261,7 @@ def test_describe_log_streams_invalid_order_by(invalid_orderby):
err["Code"].should.equal("InvalidParameterException") err["Code"].should.equal("InvalidParameterException")
err["Message"].should.contain("1 validation error detected") err["Message"].should.contain("1 validation error detected")
err["Message"].should.contain( err["Message"].should.contain(
"Value '{}' at 'orderBy' failed to satisfy constraint".format(invalid_orderby) f"Value '{invalid_orderby}' at 'orderBy' failed to satisfy constraint"
) )
err["Message"].should.contain( err["Message"].should.contain(
"Member must satisfy enum value set: [LogStreamName, LastEventTime]" "Member must satisfy enum value set: [LogStreamName, LastEventTime]"

View File

@ -82,9 +82,7 @@ class TestLogFilterParameters(TestLogFilter):
timestamp = int(unix_time_millis(datetime.utcnow())) timestamp = int(unix_time_millis(datetime.utcnow()))
messages = [] messages = []
for i in range(25): for i in range(25):
messages.append( messages.append({"message": f"Message number {i}", "timestamp": timestamp})
{"message": "Message number {}".format(i), "timestamp": timestamp}
)
timestamp += 100 timestamp += 100
self.conn.put_log_events( self.conn.put_log_events(

View File

@ -171,7 +171,7 @@ def test_create_another_member_withopts():
) )
err = ex.value.response["Error"] err = ex.value.response["Error"]
err["Code"].should.equal("InvalidRequestException") err["Code"].should.equal("InvalidRequestException")
err["Message"].should.contain("Invitation {0} not valid".format(invitation_id)) err["Message"].should.contain(f"Invitation {invitation_id} not valid")
# Delete member 2 # Delete member 2
conn.delete_member(NetworkId=network_id, MemberId=member_id2) conn.delete_member(NetworkId=network_id, MemberId=member_id2)
@ -186,7 +186,7 @@ def test_create_another_member_withopts():
conn.get_member(NetworkId=network_id, MemberId=member_id2) conn.get_member(NetworkId=network_id, MemberId=member_id2)
err = ex.value.response["Error"] err = ex.value.response["Error"]
err["Code"].should.equal("ResourceNotFoundException") err["Code"].should.equal("ResourceNotFoundException")
err["Message"].should.contain("Member {0} not found".format(member_id2)) err["Message"].should.contain(f"Member {member_id2} not found")
# Delete member 1 # Delete member 1
conn.delete_member(NetworkId=network_id, MemberId=member_id) conn.delete_member(NetworkId=network_id, MemberId=member_id)
@ -422,9 +422,7 @@ def test_create_another_member_alreadyhave():
err = ex.value.response["Error"] err = ex.value.response["Error"]
err["Code"].should.equal("InvalidRequestException") err["Code"].should.equal("InvalidRequestException")
err["Message"].should.contain( err["Message"].should.contain(
"Member name {0} already exists in network {1}".format( f"Member name testmember1 already exists in network {network_id}"
"testmember1", network_id
)
) )

View File

@ -78,7 +78,7 @@ def test_create_node():
conn.get_node(NetworkId=network_id, MemberId=member_id, NodeId=node_id) conn.get_node(NetworkId=network_id, MemberId=member_id, NodeId=node_id)
err = ex.value.response["Error"] err = ex.value.response["Error"]
err["Code"].should.equal("ResourceNotFoundException") err["Code"].should.equal("ResourceNotFoundException")
err["Message"].should.contain("Node {0} not found".format(node_id)) err["Message"].should.contain(f"Node {node_id} not found")
@mock_managedblockchain @mock_managedblockchain
@ -147,7 +147,7 @@ def test_create_node_standard_edition():
conn.list_nodes(NetworkId=network_id, MemberId=member_id) conn.list_nodes(NetworkId=network_id, MemberId=member_id)
err = ex.value.response["Error"] err = ex.value.response["Error"]
err["Code"].should.equal("ResourceNotFoundException") err["Code"].should.equal("ResourceNotFoundException")
err["Message"].should.contain("Member {0} not found".format(member_id)) err["Message"].should.contain(f"Member {member_id} not found")
@mock_managedblockchain @mock_managedblockchain
@ -196,7 +196,7 @@ def test_create_too_many_nodes():
err = ex.value.response["Error"] err = ex.value.response["Error"]
err["Code"].should.equal("ResourceLimitExceededException") err["Code"].should.equal("ResourceLimitExceededException")
err["Message"].should.contain( err["Message"].should.contain(
"Maximum number of nodes exceeded in member {0}".format(member_id) f"Maximum number of nodes exceeded in member {member_id}"
) )

View File

@ -313,7 +313,7 @@ def test_vote_on_proposal_expiredproposal():
err = ex.value.response["Error"] err = ex.value.response["Error"]
err["Code"].should.equal("InvalidRequestException") err["Code"].should.equal("InvalidRequestException")
err["Message"].should.contain( err["Message"].should.contain(
"Proposal {0} is expired and you cannot vote on it.".format(proposal_id) f"Proposal {proposal_id} is expired and you cannot vote on it."
) )
# Get proposal details - should be EXPIRED # Get proposal details - should be EXPIRED
@ -633,7 +633,7 @@ def test_vote_on_proposal_alreadyvoted():
err = ex.value.response["Error"] err = ex.value.response["Error"]
err["Code"].should.equal("ResourceAlreadyExistsException") err["Code"].should.equal("ResourceAlreadyExistsException")
err["Message"].should.contain( err["Message"].should.contain(
"Member {0} has already voted on proposal {1}.".format(member_id, proposal_id) f"Member {member_id} has already voted on proposal {proposal_id}."
) )

View File

@ -11,7 +11,7 @@ region = "eu-west-1"
def _create_input_config(name, **kwargs): def _create_input_config(name, **kwargs):
role_arn = kwargs.get( role_arn = kwargs.get(
"role_arn", "role_arn",
"arn:aws:iam::{}:role/TestMediaLiveInputCreateRole".format(ACCOUNT_ID), f"arn:aws:iam::{ACCOUNT_ID}:role/TestMediaLiveInputCreateRole",
) )
input_type = kwargs.get("type", "RTP_PUSH") input_type = kwargs.get("type", "RTP_PUSH")
request_id = kwargs.get("request_id", uuid4().hex) request_id = kwargs.get("request_id", uuid4().hex)
@ -52,7 +52,7 @@ def _create_input_config(name, **kwargs):
def _create_channel_config(name, **kwargs): def _create_channel_config(name, **kwargs):
role_arn = kwargs.get( role_arn = kwargs.get(
"role_arn", "role_arn",
"arn:aws:iam::{}:role/TestMediaLiveChannelCreateRole".format(ACCOUNT_ID), f"arn:aws:iam::{ACCOUNT_ID}:role/TestMediaLiveChannelCreateRole",
) )
input_id = kwargs.get("input_id", "an-attachment-id") input_id = kwargs.get("input_id", "an-attachment-id")
input_settings = kwargs.get( input_settings = kwargs.get(
@ -114,7 +114,7 @@ def test_create_channel_succeeds():
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200) response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
response["Channel"]["Arn"].should.equal( response["Channel"]["Arn"].should.equal(
"arn:aws:medialive:channel:{}".format(response["Channel"]["Id"]) f"arn:aws:medialive:channel:{response['Channel']['Id']}"
) )
response["Channel"]["Destinations"].should.equal(channel_config["Destinations"]) response["Channel"]["Destinations"].should.equal(channel_config["Destinations"])
response["Channel"]["EncoderSettings"].should.equal( response["Channel"]["EncoderSettings"].should.equal(
@ -175,7 +175,7 @@ def test_describe_channel_succeeds():
) )
describe_response["Arn"].should.equal( describe_response["Arn"].should.equal(
"arn:aws:medialive:channel:{}".format(describe_response["Id"]) f"arn:aws:medialive:channel:{describe_response['Id']}"
) )
describe_response["Destinations"].should.equal(channel_config["Destinations"]) describe_response["Destinations"].should.equal(channel_config["Destinations"])
describe_response["EncoderSettings"].should.equal(channel_config["EncoderSettings"]) describe_response["EncoderSettings"].should.equal(channel_config["EncoderSettings"])
@ -256,7 +256,7 @@ def test_create_input_succeeds():
r_input = create_response["Input"] r_input = create_response["Input"]
input_id = r_input["Id"] input_id = r_input["Id"]
assert len(input_id) > 1 assert len(input_id) > 1
r_input["Arn"].should.equal("arn:aws:medialive:input:{}".format(r_input["Id"])) r_input["Arn"].should.equal(f"arn:aws:medialive:input:{r_input['Id']}")
r_input["Name"].should.equal(input_name) r_input["Name"].should.equal(input_name)
r_input["AttachedChannels"].should.equal([]) r_input["AttachedChannels"].should.equal([])
r_input["Destinations"].should.equal(input_config["Destinations"]) r_input["Destinations"].should.equal(input_config["Destinations"])

View File

@ -60,9 +60,7 @@ def test_create_channel_succeeds():
response = client.create_channel(**channel_config) response = client.create_channel(**channel_config)
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200) response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
response["Arn"].should.equal( response["Arn"].should.equal(f"arn:aws:mediapackage:channel:{response['Id']}")
"arn:aws:mediapackage:channel:{}".format(response["Id"])
)
response["Description"].should.equal("Awesome channel!") response["Description"].should.equal("Awesome channel!")
response["Id"].should.equal("channel-id") response["Id"].should.equal("channel-id")
response["Tags"]["Customer"].should.equal("moto") response["Tags"]["Customer"].should.equal("moto")
@ -76,7 +74,7 @@ def test_describe_channel_succeeds():
create_response = client.create_channel(**channel_config) create_response = client.create_channel(**channel_config)
describe_response = client.describe_channel(Id=create_response["Id"]) describe_response = client.describe_channel(Id=create_response["Id"])
describe_response["Arn"].should.equal( describe_response["Arn"].should.equal(
"arn:aws:mediapackage:channel:{}".format(describe_response["Id"]) f"arn:aws:mediapackage:channel:{describe_response['Id']}"
) )
describe_response["Description"].should.equal(channel_config["Description"]) describe_response["Description"].should.equal(channel_config["Description"])
describe_response["Tags"]["Customer"].should.equal("moto") describe_response["Tags"]["Customer"].should.equal("moto")
@ -90,7 +88,7 @@ def test_describe_unknown_channel_throws_error():
client.describe_channel(Id=channel_id) client.describe_channel(Id=channel_id)
err = err.value.response["Error"] err = err.value.response["Error"]
err["Code"].should.equal("NotFoundException") err["Code"].should.equal("NotFoundException")
err["Message"].should.equal("channel with id={} not found".format(str(channel_id))) err["Message"].should.equal(f"channel with id={channel_id} not found")
@mock_mediapackage @mock_mediapackage
@ -101,7 +99,7 @@ def test_delete_unknown_channel_throws_error():
client.delete_channel(Id=channel_id) client.delete_channel(Id=channel_id)
err = err.value.response["Error"] err = err.value.response["Error"]
err["Code"].should.equal("NotFoundException") err["Code"].should.equal("NotFoundException")
err["Message"].should.equal("channel with id={} not found".format(str(channel_id))) err["Message"].should.equal(f"channel with id={channel_id} not found")
@mock_mediapackage @mock_mediapackage
@ -131,7 +129,7 @@ def test_list_channels_succeds():
len(channels_list).should.equal(1) len(channels_list).should.equal(1)
first_channel = channels_list[0] first_channel = channels_list[0]
first_channel["Arn"].should.equal( first_channel["Arn"].should.equal(
"arn:aws:mediapackage:channel:{}".format(first_channel["Id"]) f"arn:aws:mediapackage:channel:{first_channel['Id']}"
) )
first_channel["Description"].should.equal(channel_config["Description"]) first_channel["Description"].should.equal(channel_config["Description"])
first_channel["Tags"]["Customer"].should.equal("moto") first_channel["Tags"]["Customer"].should.equal("moto")
@ -145,7 +143,7 @@ def test_create_origin_endpoint_succeeds():
response = client.create_origin_endpoint(**origin_endpoint_config) response = client.create_origin_endpoint(**origin_endpoint_config)
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200) response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
response["Arn"].should.equal( response["Arn"].should.equal(
"arn:aws:mediapackage:origin_endpoint:{}".format(response["Id"]) f"arn:aws:mediapackage:origin_endpoint:{response['Id']}"
) )
response["ChannelId"].should.equal(origin_endpoint_config["ChannelId"]) response["ChannelId"].should.equal(origin_endpoint_config["ChannelId"])
response["Description"].should.equal(origin_endpoint_config["Description"]) response["Description"].should.equal(origin_endpoint_config["Description"])
@ -162,16 +160,14 @@ def test_describe_origin_endpoint_succeeds():
describe_response = client.describe_origin_endpoint(Id=create_response["Id"]) describe_response = client.describe_origin_endpoint(Id=create_response["Id"])
describe_response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200) describe_response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
describe_response["Arn"].should.equal( describe_response["Arn"].should.equal(
"arn:aws:mediapackage:origin_endpoint:{}".format(describe_response["Id"]) f"arn:aws:mediapackage:origin_endpoint:{describe_response['Id']}"
) )
describe_response["ChannelId"].should.equal(origin_endpoint_config["ChannelId"]) describe_response["ChannelId"].should.equal(origin_endpoint_config["ChannelId"])
describe_response["Description"].should.equal(origin_endpoint_config["Description"]) describe_response["Description"].should.equal(origin_endpoint_config["Description"])
describe_response["HlsPackage"].should.equal(origin_endpoint_config["HlsPackage"]) describe_response["HlsPackage"].should.equal(origin_endpoint_config["HlsPackage"])
describe_response["Origination"].should.equal("ALLOW") describe_response["Origination"].should.equal("ALLOW")
describe_response["Url"].should.equal( describe_response["Url"].should.equal(
"https://origin-endpoint.mediapackage.{}.amazonaws.com/{}".format( f"https://origin-endpoint.mediapackage.{region}.amazonaws.com/{describe_response['Id']}"
region, describe_response["Id"]
)
) )
@ -183,9 +179,7 @@ def test_describe_unknown_origin_endpoint_throws_error():
client.describe_origin_endpoint(Id=channel_id) client.describe_origin_endpoint(Id=channel_id)
err = err.value.response["Error"] err = err.value.response["Error"]
err["Code"].should.equal("NotFoundException") err["Code"].should.equal("NotFoundException")
err["Message"].should.equal( err["Message"].should.equal(f"origin endpoint with id={channel_id} not found")
"origin endpoint with id={} not found".format(str(channel_id))
)
@mock_mediapackage @mock_mediapackage
@ -213,9 +207,7 @@ def test_delete_unknown_origin_endpoint_throws_error():
client.delete_origin_endpoint(Id=channel_id) client.delete_origin_endpoint(Id=channel_id)
err = err.value.response["Error"] err = err.value.response["Error"]
err["Code"].should.equal("NotFoundException") err["Code"].should.equal("NotFoundException")
err["Message"].should.equal( err["Message"].should.equal(f"origin endpoint with id={channel_id} not found")
"origin endpoint with id={} not found".format(str(channel_id))
)
@mock_mediapackage @mock_mediapackage
@ -244,9 +236,7 @@ def test_update_unknown_origin_endpoint_throws_error():
) )
err = err.value.response["Error"] err = err.value.response["Error"]
err["Code"].should.equal("NotFoundException") err["Code"].should.equal("NotFoundException")
err["Message"].should.equal( err["Message"].should.equal(f"origin endpoint with id={channel_id} not found")
"origin endpoint with id={} not found".format(str(channel_id))
)
@mock_mediapackage @mock_mediapackage
@ -261,7 +251,7 @@ def test_list_origin_endpoint_succeeds():
len(origin_endpoints_list).should.equal(1) len(origin_endpoints_list).should.equal(1)
first_origin_endpoint = origin_endpoints_list[0] first_origin_endpoint = origin_endpoints_list[0]
first_origin_endpoint["Arn"].should.equal( first_origin_endpoint["Arn"].should.equal(
"arn:aws:mediapackage:origin_endpoint:{}".format(first_origin_endpoint["Id"]) f"arn:aws:mediapackage:origin_endpoint:{first_origin_endpoint['Id']}"
) )
first_origin_endpoint["ChannelId"].should.equal(origin_endpoint_config["ChannelId"]) first_origin_endpoint["ChannelId"].should.equal(origin_endpoint_config["ChannelId"])
first_origin_endpoint["Description"].should.equal( first_origin_endpoint["Description"].should.equal(

View File

@ -16,9 +16,7 @@ def test_create_container_succeeds():
) )
container = response["Container"] container = response["Container"]
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200) response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
container["ARN"].should.equal( container["ARN"].should.equal(f"arn:aws:mediastore:container:{container['Name']}")
"arn:aws:mediastore:container:{}".format(container["Name"])
)
container["Name"].should.equal("Awesome container!") container["Name"].should.equal("Awesome container!")
container["Status"].should.equal("CREATING") container["Status"].should.equal("CREATING")
@ -33,9 +31,7 @@ def test_describe_container_succeeds():
response = client.describe_container(ContainerName=container_name) response = client.describe_container(ContainerName=container_name)
response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200) response["ResponseMetadata"]["HTTPStatusCode"].should.equal(200)
container = response["Container"] container = response["Container"]
container["ARN"].should.equal( container["ARN"].should.equal(f"arn:aws:mediastore:container:{container_name}")
"arn:aws:mediastore:container:{}".format(container["Name"])
)
container["Name"].should.equal("Awesome container!") container["Name"].should.equal("Awesome container!")
container["Status"].should.equal("ACTIVE") container["Status"].should.equal("ACTIVE")

View File

@ -22,7 +22,7 @@ def test_describe_stacks():
client = boto3.client("opsworks", region_name="us-east-1") client = boto3.client("opsworks", region_name="us-east-1")
for i in range(1, 4): for i in range(1, 4):
client.create_stack( client.create_stack(
Name="test_stack_{0}".format(i), Name=f"test_stack_{i}",
Region="us-east-1", Region="us-east-1",
ServiceRoleArn="service_arn", ServiceRoleArn="service_arn",
DefaultInstanceProfileArn="profile_arn", DefaultInstanceProfileArn="profile_arn",

View File

@ -1614,9 +1614,7 @@ def test_register_delegated_administrator():
admin = response["DelegatedAdministrators"][0] admin = response["DelegatedAdministrators"][0]
admin["Id"].should.equal(account_id) admin["Id"].should.equal(account_id)
admin["Arn"].should.equal( admin["Arn"].should.equal(
"arn:aws:organizations::{0}:account/{1}/{2}".format( f"arn:aws:organizations::{ACCOUNT_ID}:account/{org_id}/{account_id}"
ACCOUNT_ID, org_id, account_id
)
) )
admin["Email"].should.equal(mockemail) admin["Email"].should.equal(mockemail)
admin["Name"].should.equal(mockname) admin["Name"].should.equal(mockname)
@ -1740,9 +1738,7 @@ def test_list_delegated_administrators():
admin = response["DelegatedAdministrators"][0] admin = response["DelegatedAdministrators"][0]
admin["Id"].should.equal(account_id_1) admin["Id"].should.equal(account_id_1)
admin["Arn"].should.equal( admin["Arn"].should.equal(
"arn:aws:organizations::{0}:account/{1}/{2}".format( f"arn:aws:organizations::{ACCOUNT_ID}:account/{org_id}/{account_id_1}"
ACCOUNT_ID, org_id, account_id_1
)
) )
admin["Email"].should.equal(mockemail) admin["Email"].should.equal(mockemail)
admin["Name"].should.equal(mockname) admin["Name"].should.equal(mockname)

View File

@ -38,7 +38,7 @@ def test_create_resource_share():
name="test", name="test",
allowExternalPrincipals=False, allowExternalPrincipals=False,
resourceArns=[ resourceArns=[
"arn:aws:ec2:us-east-1:{}:transit-gateway/tgw-123456789".format(ACCOUNT_ID) f"arn:aws:ec2:us-east-1:{ACCOUNT_ID}:transit-gateway/tgw-123456789"
], ],
) )
@ -80,7 +80,7 @@ def test_create_resource_share_errors():
# when # when
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.create_resource_share( client.create_resource_share(
name="test", resourceArns=["arn:aws:iam::{}:role/test".format(ACCOUNT_ID)] name="test", resourceArns=[f"arn:aws:iam::{ACCOUNT_ID}:role/test"]
) )
ex = e.value ex = e.value
ex.operation_name.should.equal("CreateResourceShare") ex.operation_name.should.equal("CreateResourceShare")
@ -97,9 +97,7 @@ def test_create_resource_share_errors():
name="test", name="test",
principals=["invalid"], principals=["invalid"],
resourceArns=[ resourceArns=[
"arn:aws:ec2:us-east-1:{}:transit-gateway/tgw-123456789".format( f"arn:aws:ec2:us-east-1:{ACCOUNT_ID}:transit-gateway/tgw-123456789"
ACCOUNT_ID
)
], ],
) )
ex = e.value ex = e.value
@ -129,7 +127,7 @@ def test_create_resource_share_with_organization():
name="test", name="test",
principals=[org_arn], principals=[org_arn],
resourceArns=[ resourceArns=[
"arn:aws:ec2:us-east-1:{}:transit-gateway/tgw-123456789".format(ACCOUNT_ID) f"arn:aws:ec2:us-east-1:{ACCOUNT_ID}:transit-gateway/tgw-123456789"
], ],
) )
@ -142,7 +140,7 @@ def test_create_resource_share_with_organization():
name="test", name="test",
principals=[ou_arn], principals=[ou_arn],
resourceArns=[ resourceArns=[
"arn:aws:ec2:us-east-1:{}:transit-gateway/tgw-123456789".format(ACCOUNT_ID) f"arn:aws:ec2:us-east-1:{ACCOUNT_ID}:transit-gateway/tgw-123456789"
], ],
) )
@ -165,13 +163,9 @@ def test_create_resource_share_with_organization_errors():
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.create_resource_share( client.create_resource_share(
name="test", name="test",
principals=[ principals=[f"arn:aws:organizations::{ACCOUNT_ID}:organization/o-unknown"],
"arn:aws:organizations::{}:organization/o-unknown".format(ACCOUNT_ID)
],
resourceArns=[ resourceArns=[
"arn:aws:ec2:us-east-1:{}:transit-gateway/tgw-123456789".format( f"arn:aws:ec2:us-east-1:{ACCOUNT_ID}:transit-gateway/tgw-123456789"
ACCOUNT_ID
)
], ],
) )
ex = e.value ex = e.value
@ -187,13 +181,9 @@ def test_create_resource_share_with_organization_errors():
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.create_resource_share( client.create_resource_share(
name="test", name="test",
principals=[ principals=[f"arn:aws:organizations::{ACCOUNT_ID}:ou/o-unknown/ou-unknown"],
"arn:aws:organizations::{}:ou/o-unknown/ou-unknown".format(ACCOUNT_ID)
],
resourceArns=[ resourceArns=[
"arn:aws:ec2:us-east-1:{}:transit-gateway/tgw-123456789".format( f"arn:aws:ec2:us-east-1:{ACCOUNT_ID}:transit-gateway/tgw-123456789"
ACCOUNT_ID
)
], ],
) )
ex = e.value ex = e.value
@ -284,9 +274,7 @@ def test_update_resource_share_errors():
# when # when
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.update_resource_share( client.update_resource_share(
resourceShareArn="arn:aws:ram:us-east-1:{}:resource-share/not-existing".format( resourceShareArn=f"arn:aws:ram:us-east-1:{ACCOUNT_ID}:resource-share/not-existing",
ACCOUNT_ID
),
name="test-update", name="test-update",
) )
ex = e.value ex = e.value
@ -294,9 +282,7 @@ def test_update_resource_share_errors():
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("UnknownResourceException") ex.response["Error"]["Code"].should.contain("UnknownResourceException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(
"ResourceShare arn:aws:ram:us-east-1:{}:resource-share/not-existing could not be found.".format( f"ResourceShare arn:aws:ram:us-east-1:{ACCOUNT_ID}:resource-share/not-existing could not be found."
ACCOUNT_ID
)
) )
@ -330,18 +316,14 @@ def test_delete_resource_share_errors():
# when # when
with pytest.raises(ClientError) as e: with pytest.raises(ClientError) as e:
client.delete_resource_share( client.delete_resource_share(
resourceShareArn="arn:aws:ram:us-east-1:{}:resource-share/not-existing".format( resourceShareArn=f"arn:aws:ram:us-east-1:{ACCOUNT_ID}:resource-share/not-existing"
ACCOUNT_ID
)
) )
ex = e.value ex = e.value
ex.operation_name.should.equal("DeleteResourceShare") ex.operation_name.should.equal("DeleteResourceShare")
ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Code"].should.contain("UnknownResourceException") ex.response["Error"]["Code"].should.contain("UnknownResourceException")
ex.response["Error"]["Message"].should.equal( ex.response["Error"]["Message"].should.equal(
"ResourceShare arn:aws:ram:us-east-1:{}:resource-share/not-existing could not be found.".format( f"ResourceShare arn:aws:ram:us-east-1:{ACCOUNT_ID}:resource-share/not-existing could not be found."
ACCOUNT_ID
)
) )

View File

@ -15,8 +15,8 @@ class TestDBInstanceFilters(object):
cls.mock.start() cls.mock.start()
client = boto3.client("rds", region_name="us-west-2") client = boto3.client("rds", region_name="us-west-2")
for i in range(10): for i in range(10):
instance_identifier = "db-instance-{}".format(i) instance_identifier = f"db-instance-{i}"
cluster_identifier = "db-cluster-{}".format(i) cluster_identifier = f"db-cluster-{i}"
engine = "postgres" if (i % 3) else "mysql" engine = "postgres" if (i % 3) else "mysql"
client.create_db_instance( client.create_db_instance(
DBInstanceIdentifier=instance_identifier, DBInstanceIdentifier=instance_identifier,
@ -200,7 +200,7 @@ class TestDBSnapshotFilters(object):
# We'll set up two instances (one postgres, one mysql) # We'll set up two instances (one postgres, one mysql)
# with two snapshots each. # with two snapshots each.
for i in range(2): for i in range(2):
identifier = "db-instance-{}".format(i) identifier = f"db-instance-{i}"
engine = "postgres" if i else "mysql" engine = "postgres" if i else "mysql"
client.create_db_instance( client.create_db_instance(
DBInstanceIdentifier=identifier, DBInstanceIdentifier=identifier,
@ -210,7 +210,7 @@ class TestDBSnapshotFilters(object):
for j in range(2): for j in range(2):
client.create_db_snapshot( client.create_db_snapshot(
DBInstanceIdentifier=identifier, DBInstanceIdentifier=identifier,
DBSnapshotIdentifier="{}-snapshot-{}".format(identifier, j), DBSnapshotIdentifier=f"{identifier}-snapshot-{j}",
) )
cls.client = client cls.client = client

Some files were not shown because too many files have changed in this diff Show More