Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions lambdas/handlers/edge_presign_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ def lambda_handler(event, context):
logger.info("Edge received S3 request")
logger.info(f"Request: {request}")

if request['method'] == 'OPTIONS':
logger.info("Edge received OPTIONS request, forwarding without modification")
return request

environment = context.function_name.split(".")[-1].split("_")[0]

edge_presign_service = EdgePresignService(environment)
Expand Down
1 change: 1 addition & 0 deletions lambdas/tests/unit/enums/test_edge_presign_values.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
{
"cf": {
"request": {
"method": "GET",
"headers": MOCKED_HEADERS,
"querystring": "",
"uri": "/some/path",
Expand Down
14 changes: 12 additions & 2 deletions lambdas/tests/unit/handlers/test_edge_presign_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def mock_edge_presign_service(mocker):
return mock_edge_service_instance


def test_lambda_handler_success(valid_event, context, mock_edge_presign_service):
def test_lambda_handler_get_success(valid_event, context, mock_edge_presign_service):
request_body = valid_event["Records"][0]["cf"]["request"]
modified_request = copy.deepcopy(request_body)
modified_request["uri"] = "/path/to/resource"
Expand All @@ -41,7 +41,7 @@ def test_lambda_handler_success(valid_event, context, mock_edge_presign_service)
assert response["querystring"] == "key=value"


def test_lambda_handler_exception(valid_event, context, mock_edge_presign_service):
def test_lambda_handler_get_exception(valid_event, context, mock_edge_presign_service):
mock_edge_presign_service.use_presigned.side_effect = CloudFrontEdgeException(
400, LambdaError.MockError
)
Expand All @@ -54,3 +54,13 @@ def test_lambda_handler_exception(valid_event, context, mock_edge_presign_servic
assert actual_status == 400
assert actual_response["message"] == "Client error"
assert actual_response["err_code"] == "AB_XXXX"

def test_lambda_handler_options_success(valid_event, context, mock_edge_presign_service):
valid_event["Records"][0]["cf"]["request"]["method"] = "OPTIONS"

response = lambda_handler(valid_event, context)

mock_edge_presign_service.use_presigned.assert_not_called()
mock_edge_presign_service.update_s3_headers.assert_not_called()

assert response == valid_event["Records"][0]["cf"]["request"]
Loading