From cd044ef00b6d27c909af3f37d120eb76e9f65a61 Mon Sep 17 00:00:00 2001 From: Brian Pandola Date: Sun, 31 Jan 2021 04:21:24 -0800 Subject: [PATCH] Remove redundant test code (#3640) These tests, when run, do not execute any `moto` code. They fail the parameter validation check in `botocore`, which raises an exception before ever sending a request. These tests do not cover or verify any `moto` behavior and have been removed. --- .../test_validation.py | 22 ----- tests/test_dynamodb2/test_dynamodb.py | 31 +------ tests/test_ec2/test_flow_logs.py | 2 +- tests/test_ec2/test_subnets.py | 7 +- tests/test_ecr/test_ecr_boto3.py | 22 +---- tests/test_elbv2/test_elbv2.py | 85 +++---------------- tests/test_kms/test_kms_boto3.py | 13 +-- tests/test_rds2/test_rds2.py | 14 +-- tests/test_s3/test_s3.py | 23 ----- 9 files changed, 19 insertions(+), 200 deletions(-) diff --git a/tests/test_applicationautoscaling/test_validation.py b/tests/test_applicationautoscaling/test_validation.py index b074d3396..ac82aab9f 100644 --- a/tests/test_applicationautoscaling/test_validation.py +++ b/tests/test_applicationautoscaling/test_validation.py @@ -3,7 +3,6 @@ import boto3 from moto import mock_applicationautoscaling, mock_ecs from moto.applicationautoscaling import models from moto.applicationautoscaling.exceptions import AWSValidationException -from botocore.exceptions import ParamValidationError import pytest import sure # noqa from botocore.exceptions import ClientError @@ -21,27 +20,6 @@ DEFAULT_MAX_CAPACITY = 1 DEFAULT_ROLE_ARN = "test:arn" -@mock_applicationautoscaling -def test_describe_scalable_targets_no_params_should_raise_param_validation_errors(): - client = boto3.client("application-autoscaling", region_name=DEFAULT_REGION) - with pytest.raises(ParamValidationError): - client.describe_scalable_targets() - - -@mock_applicationautoscaling -def test_register_scalable_target_no_params_should_raise_param_validation_errors(): - client = boto3.client("application-autoscaling", region_name=DEFAULT_REGION) - with pytest.raises(ParamValidationError): - client.register_scalable_target() - - -@mock_applicationautoscaling -def test_register_scalable_target_with_none_service_namespace_should_raise_param_validation_errors(): - client = boto3.client("application-autoscaling", region_name=DEFAULT_REGION) - with pytest.raises(ParamValidationError): - register_scalable_target(client, ServiceNamespace=None) - - @mock_applicationautoscaling def test_describe_scalable_targets_with_invalid_scalable_dimension_should_return_validation_exception(): client = boto3.client("application-autoscaling", region_name=DEFAULT_REGION) diff --git a/tests/test_dynamodb2/test_dynamodb.py b/tests/test_dynamodb2/test_dynamodb.py index 6fc8be006..2ad45ddc7 100644 --- a/tests/test_dynamodb2/test_dynamodb.py +++ b/tests/test_dynamodb2/test_dynamodb.py @@ -11,7 +11,7 @@ import sure # noqa from moto import mock_dynamodb2, mock_dynamodb2_deprecated from moto.dynamodb2 import dynamodb_backend2, dynamodb_backends2 from boto.exception import JSONResponseError -from botocore.exceptions import ClientError, ParamValidationError +from botocore.exceptions import ClientError from tests.helpers import requires_boto_gte import moto.dynamodb2.comparisons @@ -4158,35 +4158,6 @@ def test_update_supports_list_append_with_nested_if_not_exists_operation_and_pro ) -@mock_dynamodb2 -def test_update_catches_invalid_list_append_operation(): - client = boto3.client("dynamodb", region_name="us-east-1") - - client.create_table( - AttributeDefinitions=[{"AttributeName": "SHA256", "AttributeType": "S"}], - TableName="TestTable", - KeySchema=[{"AttributeName": "SHA256", "KeyType": "HASH"}], - ProvisionedThroughput={"ReadCapacityUnits": 5, "WriteCapacityUnits": 5}, - ) - client.put_item( - TableName="TestTable", - Item={"SHA256": {"S": "sha-of-file"}, "crontab": {"L": [{"S": "bar1"}]}}, - ) - - # Update item using invalid list_append expression - with pytest.raises(ParamValidationError) as ex: - client.update_item( - TableName="TestTable", - Key={"SHA256": {"S": "sha-of-file"}}, - UpdateExpression="SET crontab = list_append(crontab, :i)", - ExpressionAttributeValues={":i": [{"S": "bar2"}]}, - ) - - # Verify correct error is returned - str(ex.value).should.match("Parameter validation failed:") - str(ex.value).should.match("Invalid type for parameter ExpressionAttributeValues.") - - def _create_user_table(): client = boto3.client("dynamodb", region_name="us-east-1") client.create_table( diff --git a/tests/test_ec2/test_flow_logs.py b/tests/test_ec2/test_flow_logs.py index 743466eaa..9eff3674b 100644 --- a/tests/test_ec2/test_flow_logs.py +++ b/tests/test_ec2/test_flow_logs.py @@ -4,7 +4,7 @@ import pytest import boto3 -from botocore.exceptions import ParamValidationError, ClientError +from botocore.exceptions import ClientError from botocore.parsers import ResponseParserError import json import sure # noqa diff --git a/tests/test_ec2/test_subnets.py b/tests/test_ec2/test_subnets.py index a3d8620f6..e5baf2e2d 100644 --- a/tests/test_ec2/test_subnets.py +++ b/tests/test_ec2/test_subnets.py @@ -10,7 +10,7 @@ import boto.vpc import pytest import sure # noqa from boto.exception import EC2ResponseError -from botocore.exceptions import ClientError, ParamValidationError +from botocore.exceptions import ClientError from moto import mock_ec2, mock_ec2_deprecated from tests import EXAMPLE_AMI_ID @@ -202,11 +202,6 @@ def test_modify_subnet_attribute_validation(): VpcId=vpc.id, CidrBlock="10.0.0.0/24", AvailabilityZone="us-west-1a" ) - with pytest.raises(ParamValidationError): - client.modify_subnet_attribute( - SubnetId=subnet.id, MapPublicIpOnLaunch={"Value": "invalid"} - ) - @mock_ec2_deprecated def test_subnet_get_by_id(): diff --git a/tests/test_ecr/test_ecr_boto3.py b/tests/test_ecr/test_ecr_boto3.py index e44307bee..51a6b64b6 100644 --- a/tests/test_ecr/test_ecr_boto3.py +++ b/tests/test_ecr/test_ecr_boto3.py @@ -11,7 +11,7 @@ import re import sure # noqa import boto3 -from botocore.exceptions import ClientError, ParamValidationError +from botocore.exceptions import ClientError from dateutil.tz import tzlocal from moto import mock_ecr @@ -721,26 +721,6 @@ def test_batch_get_image_that_doesnt_exist(): response["failures"][0]["imageId"]["imageTag"].should.equal("v5") -@mock_ecr -def test_batch_get_image_no_tags(): - client = boto3.client("ecr", region_name="us-east-1") - _ = client.create_repository(repositoryName="test_repository") - - _ = client.put_image( - repositoryName="test_repository", - imageManifest=json.dumps(_create_image_manifest()), - imageTag="latest", - ) - - error_msg = re.compile( - r".*Missing required parameter in input: \"imageIds\".*", re.MULTILINE - ) - - client.batch_get_image.when.called_with( - repositoryName="test_repository" - ).should.throw(ParamValidationError, error_msg) - - @mock_ecr def test_batch_delete_image_by_tag(): client = boto3.client("ecr", region_name="us-east-1") diff --git a/tests/test_elbv2/test_elbv2.py b/tests/test_elbv2/test_elbv2.py index fca063218..5e681ac0e 100644 --- a/tests/test_elbv2/test_elbv2.py +++ b/tests/test_elbv2/test_elbv2.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals import os import boto3 import botocore -from botocore.exceptions import ClientError, ParamValidationError +from botocore.exceptions import ClientError import pytest import sure # noqa @@ -1879,21 +1879,6 @@ def test_fixed_response_action_listener_rule_validates_status_code(): ) load_balancer_arn = response.get("LoadBalancers")[0].get("LoadBalancerArn") - missing_status_code_action = { - "Type": "fixed-response", - "FixedResponseConfig": { - "ContentType": "text/plain", - "MessageBody": "This page does not exist", - }, - } - with pytest.raises(ParamValidationError): - conn.create_listener( - LoadBalancerArn=load_balancer_arn, - Protocol="HTTP", - Port=80, - DefaultActions=[missing_status_code_action], - ) - invalid_status_code_action = { "Type": "fixed-response", "FixedResponseConfig": { @@ -1903,67 +1888,17 @@ def test_fixed_response_action_listener_rule_validates_status_code(): }, } - @mock_elbv2 - @mock_ec2 - def test_fixed_response_action_listener_rule_validates_status_code(): - conn = boto3.client("elbv2", region_name="us-east-1") - ec2 = boto3.resource("ec2", region_name="us-east-1") - - security_group = ec2.create_security_group( - GroupName="a-security-group", Description="First One" - ) - vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default") - subnet1 = ec2.create_subnet( - VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone="us-east-1a" - ) - subnet2 = ec2.create_subnet( - VpcId=vpc.id, CidrBlock="172.28.7.128/26", AvailabilityZone="us-east-1b" + with pytest.raises(ClientError) as invalid_status_code_exception: + conn.create_listener( + LoadBalancerArn=load_balancer_arn, + Protocol="HTTP", + Port=80, + DefaultActions=[invalid_status_code_action], ) - response = conn.create_load_balancer( - Name="my-lb", - Subnets=[subnet1.id, subnet2.id], - SecurityGroups=[security_group.id], - Scheme="internal", - Tags=[{"Key": "key_name", "Value": "a_value"}], - ) - load_balancer_arn = response.get("LoadBalancers")[0].get("LoadBalancerArn") - - missing_status_code_action = { - "Type": "fixed-response", - "FixedResponseConfig": { - "ContentType": "text/plain", - "MessageBody": "This page does not exist", - }, - } - with pytest.raises(ParamValidationError): - conn.create_listener( - LoadBalancerArn=load_balancer_arn, - Protocol="HTTP", - Port=80, - DefaultActions=[missing_status_code_action], - ) - - invalid_status_code_action = { - "Type": "fixed-response", - "FixedResponseConfig": { - "ContentType": "text/plain", - "MessageBody": "This page does not exist", - "StatusCode": "100", - }, - } - - with pytest.raises(ClientError) as invalid_status_code_exception: - conn.create_listener( - LoadBalancerArn=load_balancer_arn, - Protocol="HTTP", - Port=80, - DefaultActions=[invalid_status_code_action], - ) - - invalid_status_code_exception.value.response["Error"]["Code"].should.equal( - "ValidationError" - ) + invalid_status_code_exception.value.response["Error"]["Code"].should.equal( + "ValidationError" + ) @mock_elbv2 diff --git a/tests/test_kms/test_kms_boto3.py b/tests/test_kms/test_kms_boto3.py index 25a8d5942..b65b81959 100644 --- a/tests/test_kms/test_kms_boto3.py +++ b/tests/test_kms/test_kms_boto3.py @@ -395,7 +395,6 @@ def test_generate_data_key_decrypt(): dict(KeySpec="AES_257"), dict(KeySpec="AES_128", NumberOfBytes=16), dict(NumberOfBytes=2048), - dict(NumberOfBytes=0), dict(), ], ) @@ -404,9 +403,7 @@ def test_generate_data_key_invalid_size_params(kwargs): client = boto3.client("kms", region_name="us-east-1") key = client.create_key(Description="generate-data-key-size") - with pytest.raises( - (botocore.exceptions.ClientError, botocore.exceptions.ParamValidationError) - ) as err: + with pytest.raises(botocore.exceptions.ClientError): client.generate_data_key(KeyId=key["KeyMetadata"]["KeyId"], **kwargs) @@ -538,13 +535,7 @@ def test_generate_random(number_of_bytes): @pytest.mark.parametrize( "number_of_bytes,error_type", - [ - (2048, botocore.exceptions.ClientError), - (1025, botocore.exceptions.ClientError), - (0, botocore.exceptions.ParamValidationError), - (-1, botocore.exceptions.ParamValidationError), - (-1024, botocore.exceptions.ParamValidationError), - ], + [(2048, botocore.exceptions.ClientError), (1025, botocore.exceptions.ClientError),], ) @mock_kms def test_generate_random_invalid_number_of_bytes(number_of_bytes, error_type): diff --git a/tests/test_rds2/test_rds2.py b/tests/test_rds2/test_rds2.py index 96ec378db..524589c80 100644 --- a/tests/test_rds2/test_rds2.py +++ b/tests/test_rds2/test_rds2.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals -from botocore.exceptions import ClientError, ParamValidationError +from botocore.exceptions import ClientError import boto3 import sure # noqa from moto import mock_ec2, mock_kms, mock_rds2 @@ -786,16 +786,8 @@ def test_modify_non_existent_option_group(): conn = boto3.client("rds", region_name="us-west-2") conn.modify_option_group.when.called_with( OptionGroupName="non-existent", - OptionsToInclude=[ - ( - "OptionName", - "Port", - "DBSecurityGroupMemberships", - "VpcSecurityGroupMemberships", - "OptionSettings", - ) - ], - ).should.throw(ParamValidationError) + OptionsToInclude=[{"OptionName": "test-option"}], + ).should.throw(ClientError, "Specified OptionGroupName: non-existent not found.") @mock_rds2 diff --git a/tests/test_s3/test_s3.py b/tests/test_s3/test_s3.py index 56fe1698b..d2215d8cd 100644 --- a/tests/test_s3/test_s3.py +++ b/tests/test_s3/test_s3.py @@ -4806,29 +4806,6 @@ def test_encryption(): conn.get_bucket_encryption(Bucket="mybucket") -@mock_s3 -def test_presigned_url_restrict_parameters(): - # Only specific params can be set - # Ensure error is thrown when adding custom metadata this way - bucket = str(uuid.uuid4()) - key = "file.txt" - conn = boto3.resource("s3", region_name="us-east-1") - conn.create_bucket(Bucket=bucket) - s3 = boto3.client("s3", region_name="us-east-1") - - # Create a pre-signed url with some metadata. - with pytest.raises(botocore.exceptions.ParamValidationError) as err: - s3.generate_presigned_url( - ClientMethod="put_object", - Params={"Bucket": bucket, "Key": key, "Unknown": "metadata"}, - ) - assert str(err.value).should.match( - r'Parameter validation failed:\nUnknown parameter in input: "Unknown", must be one of:.*' - ) - - s3.delete_bucket(Bucket=bucket) - - @mock_s3 def test_presigned_put_url_with_approved_headers(): bucket = str(uuid.uuid4())