@@ -621,6 +621,74 @@ def test_utility_methods(self, sea_client):
621621 assert description [1 ][1 ] == "INT" # type_code
622622 assert description [1 ][6 ] is False # null_ok
623623
624+ def test_filter_session_configuration_string_values (self ):
625+ """Test that _filter_session_configuration converts all values to strings."""
626+ session_config = {
627+ "ANSI_MODE" : True ,
628+ "statement_timeout" : 3600 ,
629+ "TIMEZONE" : "UTC" ,
630+ "enable_photon" : False ,
631+ "MAX_FILE_PARTITION_BYTES" : 128.5 ,
632+ "unsupported_param" : "value" ,
633+ "ANOTHER_UNSUPPORTED" : 42 ,
634+ }
635+
636+ result = _filter_session_configuration (session_config )
637+
638+ # Verify result is not None
639+ assert result is not None
640+
641+ # Verify all returned values are strings
642+ for key , value in result .items ():
643+ assert isinstance (
644+ value , str
645+ ), f"Value for key '{ key } ' is not a string: { type (value )} "
646+
647+ # Verify specific conversions
648+ expected_result = {
649+ "ansi_mode" : "True" , # boolean True -> "True", key lowercased
650+ "statement_timeout" : "3600" , # int -> "3600", key lowercased
651+ "timezone" : "UTC" , # string -> "UTC", key lowercased
652+ "enable_photon" : "False" , # boolean False -> "False", key lowercased
653+ "max_file_partition_bytes" : "128.5" , # float -> "128.5", key lowercased
654+ }
655+
656+ assert result == expected_result
657+
658+ # Test with None input
659+ assert _filter_session_configuration (None ) is None
660+
661+ # Test with empty dict
662+ assert _filter_session_configuration ({}) is None
663+
664+ # Test with only unsupported parameters
665+ unsupported_config = {
666+ "unsupported_param1" : "value1" ,
667+ "unsupported_param2" : 123 ,
668+ }
669+ result = _filter_session_configuration (unsupported_config )
670+ assert result == {}
671+
672+ # Test case insensitivity for keys
673+ case_insensitive_config = {
674+ "ansi_mode" : "false" , # lowercase key
675+ "STATEMENT_TIMEOUT" : 7200 , # uppercase key
676+ "TiMeZoNe" : "America/New_York" , # mixed case key
677+ }
678+ result = _filter_session_configuration (case_insensitive_config )
679+ expected_case_result = {
680+ "ansi_mode" : "false" ,
681+ "statement_timeout" : "7200" ,
682+ "timezone" : "America/New_York" ,
683+ }
684+ assert result == expected_case_result
685+
686+ # Verify all values are strings in case insensitive test
687+ for key , value in result .items ():
688+ assert isinstance (
689+ value , str
690+ ), f"Value for key '{ key } ' is not a string: { type (value )} "
691+
624692 def test_results_message_to_execute_response_is_staging_operation (self , sea_client ):
625693 """Test that is_staging_operation is correctly set from manifest.is_volume_operation."""
626694 # Test when is_volume_operation is True
0 commit comments