@@ -56,6 +56,24 @@ def test_error_message_contains_invalid_key_names(self):
5656 with pytest .raises (ValueError , match = "fake.property" ):
5757 IcebergProperties (properties = {"fake.property" : "value" })
5858
59+ def test_duplicate_keys_raises_error (self ):
60+ """Test that duplicate property keys raise ValueError."""
61+ config = IcebergProperties (properties = {"write.target-file-size-bytes" : "536870912" })
62+ mock_props = MagicMock ()
63+ mock_props .keys .return_value = [
64+ "write.target-file-size-bytes" ,
65+ "write.target-file-size-bytes" ,
66+ ]
67+ object .__setattr__ (config , "properties" , mock_props )
68+ with pytest .raises (ValueError , match = "Invalid duplicate properties" ):
69+ config .validate_property_keys ()
70+
71+ def test_no_duplicate_keys_passes (self ):
72+ """Test that unique approved keys pass duplicate validation."""
73+ config = IcebergProperties (properties = {"write.target-file-size-bytes" : "536870912" })
74+ result = config .validate_property_keys ()
75+ assert result is config
76+
5977
6078class TestGetIcebergProperties :
6179 """Tests for get_iceberg_properties method."""
@@ -278,6 +296,20 @@ def test_raises_runtime_error_on_update_table_client_error(self):
278296 with pytest .raises (RuntimeError , match = "Failed to update Iceberg properties" ):
279297 self .fg ._update_iceberg_properties (iceberg_properties = props )
280298
299+ def test_raises_error_on_duplicate_keys (self ):
300+ """Test ValueError when iceberg_properties has duplicate keys."""
301+ props = IcebergProperties (properties = {"write.target-file-size-bytes" : "536870912" })
302+ mock_props = MagicMock ()
303+ mock_props .keys .return_value = [
304+ "write.target-file-size-bytes" ,
305+ "write.target-file-size-bytes" ,
306+ ]
307+ mock_props .__bool__ = lambda self : True
308+ object .__setattr__ (props , "properties" , mock_props )
309+
310+ with pytest .raises (ValueError , match = "Invalid duplicate properties" ):
311+ self .fg ._update_iceberg_properties (iceberg_properties = props )
312+
281313
282314class TestCreateWithIcebergProperties :
283315 """Tests for create() method with iceberg_properties parameter."""
0 commit comments