@@ -89,6 +89,17 @@ def test_init_s3_session_manager_with_existing_user_agent(mocked_aws, s3_bucket)
8989 assert "strands-agents" in session_manager .client .meta .config .user_agent_extra
9090
9191
92+ def test_empty_prefix_session_roundtrip (mocked_aws , s3_bucket , sample_session , sample_agent ):
93+ """Test that session data can be written and read back with default empty prefix."""
94+ manager = S3SessionManager (session_id = "test" , bucket = s3_bucket , prefix = "" , region_name = "us-west-2" )
95+ manager .create_session (sample_session )
96+ manager .create_agent (sample_session .session_id , sample_agent )
97+
98+ result = manager .read_agent (sample_session .session_id , sample_agent .agent_id )
99+ assert result is not None
100+ assert result .agent_id == sample_agent .agent_id
101+
102+
92103def test_create_session (s3_manager , sample_session ):
93104 """Test creating a session in S3."""
94105 result = s3_manager .create_session (sample_session )
@@ -369,6 +380,24 @@ def test_update_nonexistent_message(s3_manager, sample_session, sample_agent, sa
369380 s3_manager .update_message (sample_session .session_id , sample_agent .agent_id , sample_message )
370381
371382
383+ @pytest .mark .parametrize (
384+ "prefix, expected_path" ,
385+ [
386+ ("" , "session_test-id/" ),
387+ ("sessions" , "sessions/session_test-id/" ),
388+ ("sessions/" , "sessions/session_test-id/" ),
389+ ("/sessions" , "sessions/session_test-id/" ),
390+ ("/sessions/" , "sessions/session_test-id/" ),
391+ ("a/b/c" , "a/b/c/session_test-id/" ),
392+ ("a/b/c/" , "a/b/c/session_test-id/" ),
393+ ],
394+ )
395+ def test__get_session_path_prefix_normalization (mocked_aws , s3_bucket , prefix , expected_path ):
396+ """Test that _get_session_path normalizes prefix to avoid leading or double slashes."""
397+ manager = S3SessionManager (session_id = "test" , bucket = s3_bucket , prefix = prefix , region_name = "us-west-2" )
398+ assert manager ._get_session_path ("test-id" ) == expected_path
399+
400+
372401@pytest .mark .parametrize (
373402 "session_id" ,
374403 [
0 commit comments