@@ -696,12 +696,12 @@ public void GenericRecordCELCondition()
696
696
schema . RuleSet = new RuleSet ( new List < Rule > ( ) ,
697
697
new List < Rule >
698
698
{
699
- new Rule ( "testCEL" , RuleKind . Condition , RuleMode . Write , "CEL" , null , null ,
699
+ new Rule ( "testCEL" , RuleKind . Condition , RuleMode . Write , "CEL" , null , null ,
700
700
"message.name == 'awesome'" , null , null , false )
701
701
}
702
702
) ;
703
703
store [ schemaStr ] = 1 ;
704
- subjectStore [ "topic-value" ] = new List < RegisteredSchema > { schema } ;
704
+ subjectStore [ "topic-value" ] = new List < RegisteredSchema > { schema } ;
705
705
var config = new AvroSerializerConfig
706
706
{
707
707
AutoRegisterSchemas = false ,
@@ -724,6 +724,47 @@ public void GenericRecordCELCondition()
724
724
Assert . Equal ( user [ "favorite_number" ] , result [ "favorite_number" ] ) ;
725
725
}
726
726
727
+ [ Fact ]
728
+ public void GenericRecordCELConditionLogicalType ( )
729
+ {
730
+ var uuid = "550e8400-e29b-41d4-a716-446655440000" ;
731
+ var schemaStr = "{\" type\" :\" record\" ,\" name\" :\" UserWithPic\" ,\" namespace\" :\" Confluent.Kafka.Examples.AvroSpecific" +
732
+ "\" ,\" fields\" :[{\" name\" :\" name\" ,\" type\" :{\" type\" :\" string\" ,\" logicalType\" :\" uuid\" }},{\" name\" :\" favorite_number\" ," +
733
+ "\" type\" :[\" int\" ,\" null\" ]},{\" name\" :\" favorite_color\" ,\" type\" :[\" string\" ,\" null\" ]}," +
734
+ "{\" name\" :\" picture\" ,\" type\" :[\" null\" ,\" bytes\" ],\" default\" :null}]}" ;
735
+
736
+ var schema = new RegisteredSchema ( "topic-value" , 1 , 1 , schemaStr , SchemaType . Avro , null ) ;
737
+ schema . RuleSet = new RuleSet ( new List < Rule > ( ) ,
738
+ new List < Rule >
739
+ {
740
+ new Rule ( "testCEL" , RuleKind . Condition , RuleMode . Write , "CEL" , null , null ,
741
+ "message.name == '" + uuid + "'" , null , null , false )
742
+ }
743
+ ) ;
744
+ store [ schemaStr ] = 1 ;
745
+ subjectStore [ "topic-value" ] = new List < RegisteredSchema > { schema } ;
746
+ var config = new AvroSerializerConfig
747
+ {
748
+ AutoRegisterSchemas = false ,
749
+ UseLatestVersion = true
750
+ } ;
751
+ var serializer = new AvroSerializer < GenericRecord > ( schemaRegistryClient , config ) ;
752
+ var deserializer = new AvroDeserializer < GenericRecord > ( schemaRegistryClient , null ) ;
753
+
754
+ var user = new GenericRecord ( ( RecordSchema ) Avro . Schema . Parse ( schemaStr ) ) ;
755
+ user . Add ( "name" , uuid ) ;
756
+ user . Add ( "favorite_number" , 100 ) ;
757
+ user . Add ( "favorite_color" , "blue" ) ;
758
+
759
+ Headers headers = new Headers ( ) ;
760
+ var bytes = serializer . SerializeAsync ( user , new SerializationContext ( MessageComponentType . Value , testTopic , headers ) ) . Result ;
761
+ var result = deserializer . DeserializeAsync ( bytes , false , new SerializationContext ( MessageComponentType . Value , testTopic , headers ) ) . Result ;
762
+
763
+ Assert . Equal ( new Guid ( uuid ) , result [ "name" ] ) ;
764
+ Assert . Equal ( user [ "favorite_color" ] , result [ "favorite_color" ] ) ;
765
+ Assert . Equal ( user [ "favorite_number" ] , result [ "favorite_number" ] ) ;
766
+ }
767
+
727
768
[ Fact ]
728
769
public void GenericRecordCELConditionFail ( )
729
770
{
0 commit comments