diff --git a/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py b/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py index eecc425e527..5326a344ed0 100644 --- a/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py +++ b/aws_lambda_powertools/utilities/data_classes/transfer_family_event.py @@ -1,5 +1,6 @@ from __future__ import annotations +import json from typing import Any, Literal from aws_lambda_powertools.utilities.data_classes.common import ( @@ -44,7 +45,7 @@ def _build_authentication_response( role_arn: str, policy: str | None = None, home_directory: str | None = None, - home_directory_details: dict | None = None, + home_directory_details: list[dict] | None = None, home_directory_type: Literal["LOGICAL", "PATH"] = "PATH", user_gid: int | None = None, user_uid: int | None = None, @@ -62,7 +63,7 @@ def _build_authentication_response( if not home_directory_details: raise ValueError("home_directory_details must be set when home_directory_type is LOGICAL") - response["HomeDirectoryDetails"] = [home_directory_details] + response["HomeDirectoryDetails"] = json.dumps(home_directory_details) else: raise ValueError(f"Invalid home_directory_type: {home_directory_type}") @@ -88,7 +89,7 @@ def build_authentication_response_efs( user_uid: int, policy: str | None = None, home_directory: str | None = None, - home_directory_details: dict | None = None, + home_directory_details: list[dict] | None = None, home_directory_type: Literal["LOGICAL", "PATH"] = "PATH", public_keys: str | None = None, ) -> dict[str, Any]: @@ -143,7 +144,7 @@ def build_authentication_response_s3( role_arn: str, policy: str | None = None, home_directory: str | None = None, - home_directory_details: dict | None = None, + home_directory_details: list[dict] | None = None, home_directory_type: Literal["LOGICAL", "PATH"] = "PATH", public_keys: str | None = None, ) -> dict[str, Any]: diff --git a/tests/unit/data_classes/required_dependencies/test_transfer_family_event.py b/tests/unit/data_classes/required_dependencies/test_transfer_family_event.py index 9a74c0398f9..2adcad63c46 100644 --- a/tests/unit/data_classes/required_dependencies/test_transfer_family_event.py +++ b/tests/unit/data_classes/required_dependencies/test_transfer_family_event.py @@ -28,7 +28,7 @@ def test_build_authentication_response_s3(home_directory_type): policy = '{"Version": "2012-10-17", "Statement": [{"Effect": "Allow", "Action": "s3:*", "Resource": "*"}]}' home_directory = "/bucket/user" if home_directory_type == "PATH" else None home_directory_details = ( - {"Entry": "/", "Target": "/bucket/${transfer:UserName}"} if home_directory_type == "LOGICAL" else None + [{"Entry": "/", "Target": "/bucket/${transfer:UserName}"}] if home_directory_type == "LOGICAL" else None ) public_keys = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0g+Z" @@ -52,7 +52,7 @@ def test_build_authentication_response_s3(home_directory_type): assert response.get("HomeDirectory") == home_directory assert "HomeDirectoryDetails" not in response else: - assert response.get("HomeDirectoryDetails") == [home_directory_details] + assert response.get("HomeDirectoryDetails") == '[{"Entry": "/", "Target": "/bucket/${transfer:UserName}"}]' assert "HomeDirectory" not in response @@ -65,7 +65,7 @@ def test_build_authentication_response_efs(home_directory_type): role_arn = "arn:aws:iam::123456789012:role/S3Access" home_directory = "/bucket/user" if home_directory_type == "PATH" else None home_directory_details = ( - {"Entry": "/", "Target": "/bucket/${transfer:UserName}"} if home_directory_type == "LOGICAL" else None + [{"Entry": "/", "Target": "/bucket/${transfer:UserName}"}] if home_directory_type == "LOGICAL" else None ) # WHEN building an authentication response for EFS with different home directory types @@ -86,7 +86,7 @@ def test_build_authentication_response_efs(home_directory_type): assert response.get("HomeDirectory") == home_directory assert "HomeDirectoryDetails" not in response else: - assert response.get("HomeDirectoryDetails") == [home_directory_details] + assert response.get("HomeDirectoryDetails") == '[{"Entry": "/", "Target": "/bucket/${transfer:UserName}"}]' assert "HomeDirectory" not in response @@ -97,7 +97,7 @@ def test_build_authentication_missing_home_directory(): # WHEN home_directory_details is empty and type is LOGICAL role_arn = "arn:aws:iam::123456789012:role/S3Access" - home_directory_details = {} + home_directory_details = [] home_directory_type = "LOGICAL" # THEN must raise an exception