@@ -3646,6 +3646,42 @@ mod tests {
36463646 assert_eq ! ( factory_options. get( "key2" ) , Some ( & "value 2" . to_string( ) ) ) ;
36473647 }
36483648
3649+ #[ cfg( feature = "parquet_encryption" ) ]
3650+ struct ParquetEncryptionKeyRetriever { }
3651+
3652+ #[ cfg( feature = "parquet_encryption" ) ]
3653+ impl parquet:: encryption:: decrypt:: KeyRetriever for ParquetEncryptionKeyRetriever {
3654+ fn retrieve_key ( & self , key_metadata : & [ u8 ] ) -> parquet:: errors:: Result < Vec < u8 > > {
3655+ if !key_metadata. is_empty ( ) {
3656+ Ok ( b"1234567890123450" . to_vec ( ) )
3657+ } else {
3658+ Err ( parquet:: errors:: ParquetError :: General (
3659+ "Key metadata not provided" . to_string ( ) ,
3660+ ) )
3661+ }
3662+ }
3663+ }
3664+
3665+ #[ cfg( feature = "parquet_encryption" ) ]
3666+ #[ test]
3667+ fn conversion_from_key_retriever_to_config_file_decryption_properties ( ) {
3668+ use crate :: Result ;
3669+ use crate :: config:: ConfigFileDecryptionProperties ;
3670+ use crate :: encryption:: FileDecryptionProperties ;
3671+
3672+ let retriever = std:: sync:: Arc :: new ( ParquetEncryptionKeyRetriever { } ) ;
3673+ let decryption_properties =
3674+ FileDecryptionProperties :: with_key_retriever ( retriever)
3675+ . build ( )
3676+ . unwrap ( ) ;
3677+ let config_file_decryption_properties: Result < ConfigFileDecryptionProperties > =
3678+ ( & decryption_properties) . try_into ( ) ;
3679+ assert ! ( config_file_decryption_properties. is_err( ) ) ;
3680+ let err = config_file_decryption_properties. unwrap_err ( ) . to_string ( ) ;
3681+ assert ! ( err. contains( "key retriever" ) ) ;
3682+ assert ! ( err. contains( "Key metadata not provided" ) ) ;
3683+ }
3684+
36493685 #[ cfg( feature = "parquet" ) ]
36503686 #[ test]
36513687 fn parquet_table_options_config_entry ( ) {
0 commit comments