APIGateway: add connection type field to integration model (#5867)

This commit is contained in:
Cesar Alvernaz 2023-01-23 10:48:59 +00:00 committed by GitHub
parent 00ad788975
commit 931bb6d960
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 0 deletions

View File

@ -161,6 +161,7 @@ class Integration(BaseModel):
request_parameters: Optional[Dict[str, Any]] = None, request_parameters: Optional[Dict[str, Any]] = None,
content_handling: Optional[str] = None, content_handling: Optional[str] = None,
credentials: Optional[str] = None, credentials: Optional[str] = None,
connection_type: Optional[str] = None,
): ):
self.integration_type = integration_type self.integration_type = integration_type
self.uri = uri self.uri = uri
@ -174,6 +175,7 @@ class Integration(BaseModel):
self.request_parameters = request_parameters self.request_parameters = request_parameters
self.content_handling = content_handling self.content_handling = content_handling
self.credentials = credentials self.credentials = credentials
self.connection_type = connection_type
self.integration_responses: Optional[Dict[str, IntegrationResponse]] = None self.integration_responses: Optional[Dict[str, IntegrationResponse]] = None
def to_json(self) -> Dict[str, Any]: def to_json(self) -> Dict[str, Any]:
@ -196,6 +198,7 @@ class Integration(BaseModel):
"requestParameters": self.request_parameters, "requestParameters": self.request_parameters,
"contentHandling": self.content_handling, "contentHandling": self.content_handling,
"credentials": self.credentials, "credentials": self.credentials,
"connectionType": self.connection_type,
} }
def create_integration_response( def create_integration_response(
@ -502,6 +505,7 @@ class Resource(CloudFormationModel):
request_parameters: Optional[Dict[str, Any]] = None, request_parameters: Optional[Dict[str, Any]] = None,
content_handling: Optional[str] = None, content_handling: Optional[str] = None,
credentials: Optional[str] = None, credentials: Optional[str] = None,
connection_type: Optional[str] = None,
) -> Integration: ) -> Integration:
integration_method = integration_method or method_type integration_method = integration_method or method_type
integration = Integration( integration = Integration(
@ -516,6 +520,7 @@ class Resource(CloudFormationModel):
request_parameters=request_parameters, request_parameters=request_parameters,
content_handling=content_handling, content_handling=content_handling,
credentials=credentials, credentials=credentials,
connection_type=connection_type,
) )
self.resource_methods[method_type].method_integration = integration self.resource_methods[method_type].method_integration = integration
return integration return integration
@ -1911,6 +1916,7 @@ class APIGatewayBackend(BaseBackend):
timeout_in_millis: Optional[str] = None, timeout_in_millis: Optional[str] = None,
request_parameters: Optional[Dict[str, Any]] = None, request_parameters: Optional[Dict[str, Any]] = None,
content_handling: Optional[str] = None, content_handling: Optional[str] = None,
connection_type: Optional[str] = None,
) -> Integration: ) -> Integration:
resource = self.get_resource(function_id, resource_id) resource = self.get_resource(function_id, resource_id)
if credentials and not re.match( if credentials and not re.match(
@ -1955,6 +1961,7 @@ class APIGatewayBackend(BaseBackend):
request_parameters=request_parameters, request_parameters=request_parameters,
content_handling=content_handling, content_handling=content_handling,
credentials=credentials, credentials=credentials,
connection_type=connection_type,
) )
return integration return integration

View File

@ -470,6 +470,7 @@ class APIGatewayResponse(BaseResponse):
timeout_in_millis = self._get_param("timeoutInMillis") timeout_in_millis = self._get_param("timeoutInMillis")
request_parameters = self._get_param("requestParameters") request_parameters = self._get_param("requestParameters")
content_handling = self._get_param("contentHandling") content_handling = self._get_param("contentHandling")
connection_type = self._get_param("connectionType")
self.backend.get_method(function_id, resource_id, method_type) self.backend.get_method(function_id, resource_id, method_type)
integration_http_method = self._get_param( integration_http_method = self._get_param(
@ -491,6 +492,7 @@ class APIGatewayResponse(BaseResponse):
timeout_in_millis=timeout_in_millis, timeout_in_millis=timeout_in_millis,
request_parameters=request_parameters, request_parameters=request_parameters,
content_handling=content_handling, content_handling=content_handling,
connection_type=connection_type,
) )
return 201, {}, json.dumps(integration_response.to_json()) return 201, {}, json.dumps(integration_response.to_json())
elif self.method == "DELETE": elif self.method == "DELETE":

View File

@ -533,6 +533,7 @@ def test_integrations():
contentHandling="CONVERT_TO_TEXT", contentHandling="CONVERT_TO_TEXT",
credentials=f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:role/apigateway-invoke-lambda-exec-role", credentials=f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:role/apigateway-invoke-lambda-exec-role",
tlsConfig={"insecureSkipVerification": True}, tlsConfig={"insecureSkipVerification": True},
connectionType="INTERNET",
) )
# this is hard to match against, so remove it # this is hard to match against, so remove it
@ -550,6 +551,7 @@ def test_integrations():
"contentHandling": "CONVERT_TO_TEXT", "contentHandling": "CONVERT_TO_TEXT",
"credentials": f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:role/apigateway-invoke-lambda-exec-role", "credentials": f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:role/apigateway-invoke-lambda-exec-role",
"tlsConfig": {"insecureSkipVerification": True}, "tlsConfig": {"insecureSkipVerification": True},
"connectionType": "INTERNET",
} }
) )
@ -571,6 +573,7 @@ def test_integrations():
"contentHandling": "CONVERT_TO_TEXT", "contentHandling": "CONVERT_TO_TEXT",
"credentials": f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:role/apigateway-invoke-lambda-exec-role", "credentials": f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:role/apigateway-invoke-lambda-exec-role",
"tlsConfig": {"insecureSkipVerification": True}, "tlsConfig": {"insecureSkipVerification": True},
"connectionType": "INTERNET",
} }
) )
@ -591,6 +594,7 @@ def test_integrations():
"contentHandling": "CONVERT_TO_TEXT", "contentHandling": "CONVERT_TO_TEXT",
"credentials": f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:role/apigateway-invoke-lambda-exec-role", "credentials": f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:role/apigateway-invoke-lambda-exec-role",
"tlsConfig": {"insecureSkipVerification": True}, "tlsConfig": {"insecureSkipVerification": True},
"connectionType": "INTERNET",
} }
) )