python-botocore/tests/functional/test_event_alias.py
2021-10-04 09:33:37 -07:00

640 lines
16 KiB
Python

import pytest
from botocore.session import Session
# The list of services which were available when we switched over from using
# endpoint prefix in event to using service id. These should all accept
# either.
SERVICES = {
"acm": {
"endpoint_prefix": "acm",
"service_id": "acm"
},
"acm-pca": {
"endpoint_prefix": "acm-pca",
"service_id": "acm-pca"
},
"alexaforbusiness": {
"endpoint_prefix": "a4b",
"service_id": "alexa-for-business"
},
"apigateway": {
"endpoint_prefix": "apigateway",
"service_id": "api-gateway"
},
"application-autoscaling": {
"service_id": "application-auto-scaling"
},
"appstream": {
"endpoint_prefix": "appstream2",
"service_id": "appstream"
},
"appsync": {
"endpoint_prefix": "appsync",
"service_id": "appsync"
},
"athena": {
"endpoint_prefix": "athena",
"service_id": "athena"
},
"autoscaling": {
"endpoint_prefix": "autoscaling",
"service_id": "auto-scaling"
},
"autoscaling-plans": {
"service_id": "auto-scaling-plans"
},
"batch": {
"endpoint_prefix": "batch",
"service_id": "batch"
},
"budgets": {
"endpoint_prefix": "budgets",
"service_id": "budgets"
},
"ce": {
"endpoint_prefix": "ce",
"service_id": "cost-explorer"
},
"cloud9": {
"endpoint_prefix": "cloud9",
"service_id": "cloud9"
},
"clouddirectory": {
"endpoint_prefix": "clouddirectory",
"service_id": "clouddirectory"
},
"cloudformation": {
"endpoint_prefix": "cloudformation",
"service_id": "cloudformation"
},
"cloudfront": {
"endpoint_prefix": "cloudfront",
"service_id": "cloudfront"
},
"cloudhsm": {
"endpoint_prefix": "cloudhsm",
"service_id": "cloudhsm"
},
"cloudhsmv2": {
"endpoint_prefix": "cloudhsmv2",
"service_id": "cloudhsm-v2"
},
"cloudsearch": {
"endpoint_prefix": "cloudsearch",
"service_id": "cloudsearch"
},
"cloudsearchdomain": {
"endpoint_prefix": "cloudsearchdomain",
"service_id": "cloudsearch-domain"
},
"cloudtrail": {
"endpoint_prefix": "cloudtrail",
"service_id": "cloudtrail"
},
"cloudwatch": {
"endpoint_prefix": "monitoring",
"service_id": "cloudwatch"
},
"codebuild": {
"endpoint_prefix": "codebuild",
"service_id": "codebuild"
},
"codecommit": {
"endpoint_prefix": "codecommit",
"service_id": "codecommit"
},
"codedeploy": {
"endpoint_prefix": "codedeploy",
"service_id": "codedeploy"
},
"codepipeline": {
"endpoint_prefix": "codepipeline",
"service_id": "codepipeline"
},
"codestar": {
"endpoint_prefix": "codestar",
"service_id": "codestar"
},
"cognito-identity": {
"endpoint_prefix": "cognito-identity",
"service_id": "cognito-identity"
},
"cognito-idp": {
"endpoint_prefix": "cognito-idp",
"service_id": "cognito-identity-provider"
},
"cognito-sync": {
"endpoint_prefix": "cognito-sync",
"service_id": "cognito-sync"
},
"comprehend": {
"endpoint_prefix": "comprehend",
"service_id": "comprehend"
},
"config": {
"endpoint_prefix": "config",
"service_id": "config-service"
},
"connect": {
"endpoint_prefix": "connect",
"service_id": "connect"
},
"cur": {
"endpoint_prefix": "cur",
"service_id": "cost-and-usage-report-service"
},
"datapipeline": {
"endpoint_prefix": "datapipeline",
"service_id": "data-pipeline"
},
"dax": {
"endpoint_prefix": "dax",
"service_id": "dax"
},
"devicefarm": {
"endpoint_prefix": "devicefarm",
"service_id": "device-farm"
},
"directconnect": {
"endpoint_prefix": "directconnect",
"service_id": "direct-connect"
},
"discovery": {
"endpoint_prefix": "discovery",
"service_id": "application-discovery-service"
},
"dlm": {
"endpoint_prefix": "dlm",
"service_id": "dlm"
},
"dms": {
"endpoint_prefix": "dms",
"service_id": "database-migration-service"
},
"ds": {
"endpoint_prefix": "ds",
"service_id": "directory-service"
},
"dynamodb": {
"endpoint_prefix": "dynamodb",
"service_id": "dynamodb"
},
"dynamodbstreams": {
"endpoint_prefix": "streams.dynamodb",
"service_id": "dynamodb-streams"
},
"ec2": {
"endpoint_prefix": "ec2",
"service_id": "ec2"
},
"ecr": {
"endpoint_prefix": "ecr",
"service_id": "ecr"
},
"ecs": {
"endpoint_prefix": "ecs",
"service_id": "ecs"
},
"efs": {
"endpoint_prefix": "elasticfilesystem",
"service_id": "efs"
},
"eks": {
"endpoint_prefix": "eks",
"service_id": "eks"
},
"elasticache": {
"endpoint_prefix": "elasticache",
"service_id": "elasticache"
},
"elasticbeanstalk": {
"endpoint_prefix": "elasticbeanstalk",
"service_id": "elastic-beanstalk"
},
"elastictranscoder": {
"endpoint_prefix": "elastictranscoder",
"service_id": "elastic-transcoder"
},
"elb": {
"endpoint_prefix": "elasticloadbalancing",
"service_id": "elastic-load-balancing"
},
"elbv2": {
"service_id": "elastic-load-balancing-v2"
},
"emr": {
"endpoint_prefix": "elasticmapreduce",
"service_id": "emr"
},
"es": {
"endpoint_prefix": "es",
"service_id": "elasticsearch-service"
},
"events": {
"endpoint_prefix": "events",
"service_id": "cloudwatch-events"
},
"firehose": {
"endpoint_prefix": "firehose",
"service_id": "firehose"
},
"fms": {
"endpoint_prefix": "fms",
"service_id": "fms"
},
"gamelift": {
"endpoint_prefix": "gamelift",
"service_id": "gamelift"
},
"glacier": {
"endpoint_prefix": "glacier",
"service_id": "glacier"
},
"glue": {
"endpoint_prefix": "glue",
"service_id": "glue"
},
"greengrass": {
"endpoint_prefix": "greengrass",
"service_id": "greengrass"
},
"guardduty": {
"endpoint_prefix": "guardduty",
"service_id": "guardduty"
},
"health": {
"endpoint_prefix": "health",
"service_id": "health"
},
"iam": {
"endpoint_prefix": "iam",
"service_id": "iam"
},
"importexport": {
"endpoint_prefix": "importexport",
"service_id": "importexport"
},
"inspector": {
"endpoint_prefix": "inspector",
"service_id": "inspector"
},
"iot": {
"endpoint_prefix": "iot",
"service_id": "iot"
},
"iot-data": {
"endpoint_prefix": "data.iot",
"service_id": "iot-data-plane"
},
"iot-jobs-data": {
"endpoint_prefix": "data.jobs.iot",
"service_id": "iot-jobs-data-plane"
},
"iot1click-devices": {
"endpoint_prefix": "devices.iot1click",
"service_id": "iot-1click-devices-service"
},
"iot1click-projects": {
"endpoint_prefix": "projects.iot1click",
"service_id": "iot-1click-projects"
},
"iotanalytics": {
"endpoint_prefix": "iotanalytics",
"service_id": "iotanalytics"
},
"kinesis": {
"endpoint_prefix": "kinesis",
"service_id": "kinesis"
},
"kinesis-video-archived-media": {
"service_id": "kinesis-video-archived-media"
},
"kinesis-video-media": {
"service_id": "kinesis-video-media"
},
"kinesisanalytics": {
"endpoint_prefix": "kinesisanalytics",
"service_id": "kinesis-analytics"
},
"kinesisvideo": {
"endpoint_prefix": "kinesisvideo",
"service_id": "kinesis-video"
},
"kms": {
"endpoint_prefix": "kms",
"service_id": "kms"
},
"lambda": {
"endpoint_prefix": "lambda",
"service_id": "lambda"
},
"lex-models": {
"endpoint_prefix": "models.lex",
"service_id": "lex-model-building-service"
},
"lex-runtime": {
"endpoint_prefix": "runtime.lex",
"service_id": "lex-runtime-service"
},
"lightsail": {
"endpoint_prefix": "lightsail",
"service_id": "lightsail"
},
"logs": {
"endpoint_prefix": "logs",
"service_id": "cloudwatch-logs"
},
"machinelearning": {
"endpoint_prefix": "machinelearning",
"service_id": "machine-learning"
},
"macie": {
"endpoint_prefix": "macie",
"service_id": "macie"
},
"marketplace-entitlement": {
"endpoint_prefix": "entitlement.marketplace",
"service_id": "marketplace-entitlement-service"
},
"marketplacecommerceanalytics": {
"endpoint_prefix": "marketplacecommerceanalytics",
"service_id": "marketplace-commerce-analytics"
},
"mediaconvert": {
"endpoint_prefix": "mediaconvert",
"service_id": "mediaconvert"
},
"medialive": {
"endpoint_prefix": "medialive",
"service_id": "medialive"
},
"mediapackage": {
"endpoint_prefix": "mediapackage",
"service_id": "mediapackage"
},
"mediastore": {
"endpoint_prefix": "mediastore",
"service_id": "mediastore"
},
"mediastore-data": {
"endpoint_prefix": "data.mediastore",
"service_id": "mediastore-data"
},
"mediatailor": {
"endpoint_prefix": "api.mediatailor",
"service_id": "mediatailor"
},
"meteringmarketplace": {
"endpoint_prefix": "metering.marketplace",
"service_id": "marketplace-metering"
},
"mgh": {
"endpoint_prefix": "mgh",
"service_id": "migration-hub"
},
"mobile": {
"endpoint_prefix": "mobile",
"service_id": "mobile"
},
"mq": {
"endpoint_prefix": "mq",
"service_id": "mq"
},
"mturk": {
"endpoint_prefix": "mturk-requester",
"service_id": "mturk"
},
"neptune": {
"service_id": "neptune"
},
"opsworks": {
"endpoint_prefix": "opsworks",
"service_id": "opsworks"
},
"opsworkscm": {
"endpoint_prefix": "opsworks-cm",
"service_id": "opsworkscm"
},
"organizations": {
"endpoint_prefix": "organizations",
"service_id": "organizations"
},
"pi": {
"endpoint_prefix": "pi",
"service_id": "pi"
},
"pinpoint": {
"endpoint_prefix": "pinpoint",
"service_id": "pinpoint"
},
"polly": {
"endpoint_prefix": "polly",
"service_id": "polly"
},
"pricing": {
"endpoint_prefix": "api.pricing",
"service_id": "pricing"
},
"rds": {
"endpoint_prefix": "rds",
"service_id": "rds"
},
"redshift": {
"endpoint_prefix": "redshift",
"service_id": "redshift"
},
"rekognition": {
"endpoint_prefix": "rekognition",
"service_id": "rekognition"
},
"resource-groups": {
"endpoint_prefix": "resource-groups",
"service_id": "resource-groups"
},
"resourcegroupstaggingapi": {
"endpoint_prefix": "tagging",
"service_id": "resource-groups-tagging-api"
},
"route53": {
"endpoint_prefix": "route53",
"service_id": "route-53"
},
"route53domains": {
"endpoint_prefix": "route53domains",
"service_id": "route-53-domains"
},
"s3": {
"endpoint_prefix": "s3",
"service_id": "s3"
},
"sagemaker": {
"endpoint_prefix": "api.sagemaker",
"service_id": "sagemaker"
},
"sagemaker-runtime": {
"endpoint_prefix": "runtime.sagemaker",
"service_id": "sagemaker-runtime"
},
"sdb": {
"endpoint_prefix": "sdb",
"service_id": "simpledb"
},
"secretsmanager": {
"endpoint_prefix": "secretsmanager",
"service_id": "secrets-manager"
},
"serverlessrepo": {
"endpoint_prefix": "serverlessrepo",
"service_id": "serverlessapplicationrepository"
},
"servicecatalog": {
"endpoint_prefix": "servicecatalog",
"service_id": "service-catalog"
},
"servicediscovery": {
"endpoint_prefix": "servicediscovery",
"service_id": "servicediscovery"
},
"ses": {
"endpoint_prefix": "email",
"service_id": "ses"
},
"shield": {
"endpoint_prefix": "shield",
"service_id": "shield"
},
"sms": {
"endpoint_prefix": "sms",
"service_id": "sms"
},
"snowball": {
"endpoint_prefix": "snowball",
"service_id": "snowball"
},
"sns": {
"endpoint_prefix": "sns",
"service_id": "sns"
},
"sqs": {
"endpoint_prefix": "sqs",
"service_id": "sqs"
},
"ssm": {
"endpoint_prefix": "ssm",
"service_id": "ssm"
},
"stepfunctions": {
"endpoint_prefix": "states",
"service_id": "sfn"
},
"storagegateway": {
"endpoint_prefix": "storagegateway",
"service_id": "storage-gateway"
},
"sts": {
"endpoint_prefix": "sts",
"service_id": "sts"
},
"support": {
"endpoint_prefix": "support",
"service_id": "support"
},
"swf": {
"endpoint_prefix": "swf",
"service_id": "swf"
},
"transcribe": {
"endpoint_prefix": "transcribe",
"service_id": "transcribe"
},
"translate": {
"endpoint_prefix": "translate",
"service_id": "translate"
},
"waf": {
"endpoint_prefix": "waf",
"service_id": "waf"
},
"waf-regional": {
"endpoint_prefix": "waf-regional",
"service_id": "waf-regional"
},
"workdocs": {
"endpoint_prefix": "workdocs",
"service_id": "workdocs"
},
"workmail": {
"endpoint_prefix": "workmail",
"service_id": "workmail"
},
"workspaces": {
"endpoint_prefix": "workspaces",
"service_id": "workspaces"
},
"xray": {
"endpoint_prefix": "xray",
"service_id": "xray"
}
}
def _event_aliases():
for client_name in SERVICES.keys():
endpoint_prefix = SERVICES[client_name].get('endpoint_prefix')
service_id = SERVICES[client_name]['service_id']
yield client_name, service_id
def _event_aliases_with_endpoint_prefix():
for client_name in SERVICES.keys():
endpoint_prefix = SERVICES[client_name].get('endpoint_prefix')
service_id = SERVICES[client_name]['service_id']
if endpoint_prefix is not None:
yield client_name, endpoint_prefix
@pytest.mark.parametrize(
"client_name, endpoint_prefix",
_event_aliases_with_endpoint_prefix()
)
def test_event_alias_by_endpoint_prefix(client_name, endpoint_prefix):
_assert_handler_called(client_name, endpoint_prefix)
@pytest.mark.parametrize(
"client_name, service_id",
_event_aliases()
)
def test_event_alias_by_service_id(client_name, service_id):
_assert_handler_called(client_name, service_id)
@pytest.mark.parametrize(
"client_name, service_id",
_event_aliases()
)
def test_event_alias_by_client_name(client_name, service_id):
_assert_handler_called(client_name, client_name)
def _assert_handler_called(client_name, event_part):
hook_calls = []
def _hook(**kwargs):
hook_calls.append(kwargs['event_name'])
session = _get_session()
session.register('creating-client-class.%s' % event_part, _hook)
session.create_client(client_name)
assert len(hook_calls) == 1
def _get_session():
session = Session()
session.set_credentials('foo', 'bar')
session.set_config_variable('region', 'us-west-2')
session.config_filename = 'no-exist-foo'
return session