APIGateway: Use new OpenAPISpecValidator API (#6951)
This commit is contained in:
parent
6427320c76
commit
51672fb6f5
@ -9,7 +9,13 @@ from urllib.parse import urlparse
|
|||||||
import requests
|
import requests
|
||||||
import responses
|
import responses
|
||||||
|
|
||||||
from openapi_spec_validator import validate_spec
|
try:
|
||||||
|
# Recommended as of 0.7.x
|
||||||
|
from openapi_spec_validator import validate # type: ignore
|
||||||
|
except ImportError:
|
||||||
|
# Only used in < 0.7.x
|
||||||
|
# (Also exists in 0.7.0, but throws a warning)
|
||||||
|
from openapi_spec_validator import validate_spec as validate # type: ignore
|
||||||
from openapi_spec_validator.validation.exceptions import OpenAPIValidationError
|
from openapi_spec_validator.validation.exceptions import OpenAPIValidationError
|
||||||
from moto.core import BaseBackend, BackendDict, BaseModel, CloudFormationModel
|
from moto.core import BaseBackend, BackendDict, BaseModel, CloudFormationModel
|
||||||
from .utils import create_id, to_path
|
from .utils import create_id, to_path
|
||||||
@ -1567,7 +1573,7 @@ class APIGatewayBackend(BaseBackend):
|
|||||||
"""
|
"""
|
||||||
if fail_on_warnings:
|
if fail_on_warnings:
|
||||||
try:
|
try:
|
||||||
validate_spec(api_doc) # type: ignore[arg-type]
|
validate(api_doc) # type: ignore[arg-type]
|
||||||
except OpenAPIValidationError as e:
|
except OpenAPIValidationError as e:
|
||||||
raise InvalidOpenAPIDocumentException(e)
|
raise InvalidOpenAPIDocumentException(e)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
@ -1642,7 +1648,7 @@ class APIGatewayBackend(BaseBackend):
|
|||||||
|
|
||||||
if fail_on_warnings:
|
if fail_on_warnings:
|
||||||
try:
|
try:
|
||||||
validate_spec(api_doc) # type: ignore[arg-type]
|
validate(api_doc) # type: ignore[arg-type]
|
||||||
except OpenAPIValidationError as e:
|
except OpenAPIValidationError as e:
|
||||||
raise InvalidOpenAPIDocumentException(e)
|
raise InvalidOpenAPIDocumentException(e)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
@ -3413,11 +3413,10 @@ def test_delete_objects_with_empty_keyname():
|
|||||||
assert "Contents" not in client.list_objects(Bucket=bucket_name)
|
assert "Contents" not in client.list_objects(Bucket=bucket_name)
|
||||||
|
|
||||||
|
|
||||||
@mock_s3
|
@pytest.mark.aws_verified
|
||||||
def test_delete_objects_percent_encoded():
|
@s3_aws_verified
|
||||||
|
def test_delete_objects_percent_encoded(bucket_name=None):
|
||||||
client = boto3.client("s3", region_name=DEFAULT_REGION_NAME)
|
client = boto3.client("s3", region_name=DEFAULT_REGION_NAME)
|
||||||
bucket_name = "testbucket-encoded"
|
|
||||||
client.create_bucket(Bucket=bucket_name)
|
|
||||||
|
|
||||||
object_key_1 = "a%2Fb"
|
object_key_1 = "a%2Fb"
|
||||||
object_key_2 = "a/%F0%9F%98%80"
|
object_key_2 = "a/%F0%9F%98%80"
|
||||||
@ -3427,8 +3426,9 @@ def test_delete_objects_percent_encoded():
|
|||||||
)
|
)
|
||||||
list_objs = client.list_objects(Bucket=bucket_name)
|
list_objs = client.list_objects(Bucket=bucket_name)
|
||||||
assert len(list_objs["Contents"]) == 2
|
assert len(list_objs["Contents"]) == 2
|
||||||
assert list_objs["Contents"][0]["Key"] == object_key_1
|
keys = [o["Key"] for o in list_objs["Contents"]]
|
||||||
assert list_objs["Contents"][1]["Key"] == object_key_2
|
assert object_key_1 in keys
|
||||||
|
assert object_key_2 in keys
|
||||||
|
|
||||||
delete_objects = client.delete_objects(
|
delete_objects = client.delete_objects(
|
||||||
Bucket=bucket_name,
|
Bucket=bucket_name,
|
||||||
@ -3439,8 +3439,10 @@ def test_delete_objects_percent_encoded():
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert delete_objects["Deleted"][0] == {"Key": object_key_1}
|
assert len(delete_objects["Deleted"]) == 2
|
||||||
assert delete_objects["Deleted"][1] == {"Key": object_key_2}
|
deleted_keys = [o for o in delete_objects["Deleted"]]
|
||||||
|
assert {"Key": object_key_1} in deleted_keys
|
||||||
|
assert {"Key": object_key_2} in deleted_keys
|
||||||
assert "Contents" not in client.list_objects(Bucket=bucket_name)
|
assert "Contents" not in client.list_objects(Bucket=bucket_name)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user