@@ -624,6 +624,71 @@ def test_utility_methods(self, sea_client):
624
624
assert description [1 ][1 ] == "INT" # type_code
625
625
assert description [1 ][6 ] is False # null_ok
626
626
627
+ def test_filter_session_configuration (self ):
628
+ """Test that _filter_session_configuration converts all values to strings."""
629
+ session_config = {
630
+ "ANSI_MODE" : True ,
631
+ "statement_timeout" : 3600 ,
632
+ "TIMEZONE" : "UTC" ,
633
+ "enable_photon" : False ,
634
+ "MAX_FILE_PARTITION_BYTES" : 128.5 ,
635
+ "unsupported_param" : "value" ,
636
+ "ANOTHER_UNSUPPORTED" : 42 ,
637
+ }
638
+
639
+ result = _filter_session_configuration (session_config )
640
+
641
+ # Verify result is not None
642
+ assert result is not None
643
+
644
+ # Verify all returned values are strings
645
+ for key , value in result .items ():
646
+ assert isinstance (
647
+ value , str
648
+ ), f"Value for key '{ key } ' is not a string: { type (value )} "
649
+
650
+ # Verify specific conversions
651
+ expected_result = {
652
+ "ansi_mode" : "True" , # boolean True -> "True", key lowercased
653
+ "statement_timeout" : "3600" , # int -> "3600", key lowercased
654
+ "timezone" : "UTC" , # string -> "UTC", key lowercased
655
+ "enable_photon" : "False" , # boolean False -> "False", key lowercased
656
+ "max_file_partition_bytes" : "128.5" , # float -> "128.5", key lowercased
657
+ }
658
+
659
+ assert result == expected_result
660
+
661
+ # Test with None input
662
+ assert _filter_session_configuration (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
+
627
692
def test_results_message_to_execute_response_is_staging_operation (self , sea_client ):
628
693
"""Test that is_staging_operation is correctly set from manifest.is_volume_operation."""
629
694
# Test when is_volume_operation is True
0 commit comments