2626 S3StorageDriver ,
2727 S3StorageDriverClient ,
2828)
29+ from temporalio .contrib .aws .s3driver ._driver import _format_client_context
30+ from temporalio .contrib .aws .s3driver .aioboto3 import _Aioboto3StorageDriverClient
2931from temporalio .converter import (
3032 JSONPlainPayloadConverter ,
3133 StorageDriverActivityInfo ,
3436 StorageDriverStoreContext ,
3537 StorageDriverWorkflowInfo ,
3638)
37- from tests .contrib .aws .s3driver .conftest import BUCKET
39+ from tests .contrib .aws .s3driver .conftest import BUCKET , REGION
3840
3941_CONVERTER = JSONPlainPayloadConverter ()
4042
@@ -618,7 +620,7 @@ async def test_store_nonexistent_bucket_raises(
618620 await driver .store (make_store_context (), [payload ])
619621 assert (
620622 str (exc_info .value )
621- == f"S3StorageDriver store failed [bucket={ bucket } , key={ expected_key } ]"
623+ == f"S3StorageDriver store failed [bucket={ bucket } , key={ expected_key } , region= { REGION } ]"
622624 )
623625 assert isinstance (exc_info .value .__cause__ , ClientError )
624626 assert (
@@ -636,7 +638,7 @@ async def test_retrieve_nonexistent_key_raises(
636638 await driver .retrieve (StorageDriverRetrieveContext (), [claim ])
637639 assert (
638640 str (exc_info .value )
639- == f"S3StorageDriver retrieve failed [bucket={ BUCKET } , key={ key } ]"
641+ == f"S3StorageDriver retrieve failed [bucket={ BUCKET } , key={ key } , region= { REGION } ]"
640642 )
641643 assert isinstance (exc_info .value .__cause__ , ClientError )
642644 assert (
@@ -655,7 +657,7 @@ async def test_retrieve_nonexistent_bucket_raises(
655657 await driver .retrieve (StorageDriverRetrieveContext (), [claim ])
656658 assert (
657659 str (exc_info .value )
658- == f"S3StorageDriver retrieve failed [bucket={ bucket } , key={ key } ]"
660+ == f"S3StorageDriver retrieve failed [bucket={ bucket } , key={ key } , region= { REGION } ]"
659661 )
660662 assert isinstance (exc_info .value .__cause__ , ClientError )
661663 assert (
@@ -839,3 +841,49 @@ async def test_retrieve_cancels_remaining_on_failure(
839841 assert (
840842 len (faulty_client .cancelled ) == 2
841843 ), "Expected 2 remaining tasks to be cancelled"
844+
845+
846+ # ---------------------------------------------------------------------------
847+ # TestAioboto3StorageDriverClientDescribe
848+ # ---------------------------------------------------------------------------
849+
850+
851+ class TestAioboto3StorageDriverClientDescribe :
852+ def _make_client (self , region : str | None ) -> _Aioboto3StorageDriverClient :
853+ mock_s3 = MagicMock ()
854+ mock_s3 .meta .region_name = region
855+ return _Aioboto3StorageDriverClient (mock_s3 )
856+
857+ def test_returns_region (self ) -> None :
858+ client = self ._make_client (region = "ap-southeast-1" )
859+ assert client .describe () == {"region" : "ap-southeast-1" }
860+
861+ def test_omits_region_when_none (self ) -> None :
862+ client = self ._make_client (region = None )
863+ assert client .describe () == {}
864+
865+ def test_omits_region_when_empty_string (self ) -> None :
866+ client = self ._make_client (region = "" )
867+ assert client .describe () == {}
868+
869+
870+ # ---------------------------------------------------------------------------
871+ # TestFormatClientContext
872+ # ---------------------------------------------------------------------------
873+
874+
875+ class TestFormatClientContext :
876+ def test_formats_entry (self ) -> None :
877+ client = MagicMock (spec = S3StorageDriverClient )
878+ client .describe .return_value = {"region" : "us-east-1" }
879+ assert _format_client_context (client ) == ", region=us-east-1"
880+
881+ def test_returns_empty_string_for_empty_describe (self ) -> None :
882+ client = MagicMock (spec = S3StorageDriverClient )
883+ client .describe .return_value = {}
884+ assert _format_client_context (client ) == ""
885+
886+ def test_returns_empty_string_when_describe_raises (self ) -> None :
887+ client = MagicMock (spec = S3StorageDriverClient )
888+ client .describe .side_effect = RuntimeError ("oops" )
889+ assert _format_client_context (client ) == ""
0 commit comments