Skip to content

Commit

Permalink
Add test for Avro logical type (#24) (#1293)
Browse files Browse the repository at this point in the history
  • Loading branch information
rayokota authored Sep 10, 2024
1 parent d99820f commit ca09491
Showing 1 changed file with 93 additions and 0 deletions.
93 changes: 93 additions & 0 deletions schemaregistry/serde/avrov2/avro_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,39 @@ const (
}
]
}
`
demoSchemaWithLogicalType = `
{
"name": "DemoSchema",
"type": "record",
"fields": [
{
"name": "IntField",
"type": "int"
},
{
"name": "DoubleField",
"type": "double"
},
{
"name": "StringField",
"type": {
"type": "string",
"logicalType": "uuid"
},
"confluent:tags": [ "PII" ]
},
{
"name": "BoolField",
"type": "boolean"
},
{
"name": "BytesField",
"type": "bytes",
"confluent:tags": [ "PII" ]
}
]
}
`
demoSchemaSingleTag = `
{
Expand Down Expand Up @@ -458,6 +491,66 @@ func TestAvroSerdeWithCELCondition(t *testing.T) {
serde.MaybeFail("deserialization", err, serde.Expect(newobj, &obj))
}

func TestAvroSerdeWithCELConditionLogicalType(t *testing.T) {
serde.MaybeFail = serde.InitFailFunc(t)
var err error

conf := schemaregistry.NewConfig("mock://")

client, err := schemaregistry.NewClient(conf)
serde.MaybeFail("Schema Registry configuration", err)

serConfig := NewSerializerConfig()
serConfig.AutoRegisterSchemas = false
serConfig.UseLatestVersion = true
ser, err := NewSerializer(client, serde.ValueSerde, serConfig)
serde.MaybeFail("Serializer configuration", err)

uuid := "550e8400-e29b-41d4-a716-446655440000"

encRule := schemaregistry.Rule{
Name: "test-cel",
Kind: "CONDITION",
Mode: "WRITE",
Type: "CEL",
Expr: "message.StringField == '" + uuid + "'",
}
ruleSet := schemaregistry.RuleSet{
DomainRules: []schemaregistry.Rule{encRule},
}

info := schemaregistry.SchemaInfo{
Schema: demoSchemaWithLogicalType,
SchemaType: "AVRO",
RuleSet: &ruleSet,
}

id, err := client.Register("topic1-value", info, false)
serde.MaybeFail("Schema registration", err)
if id <= 0 {
t.Errorf("Expected valid schema id, found %d", id)
}

obj := DemoSchema{}
obj.IntField = 123
obj.DoubleField = 45.67
obj.StringField = uuid
obj.BoolField = true
obj.BytesField = []byte{1, 2}

bytes, err := ser.Serialize("topic1", &obj)
serde.MaybeFail("serialization", err)

deserConfig := NewDeserializerConfig()
deser, err := NewDeserializer(client, serde.ValueSerde, deserConfig)
serde.MaybeFail("Deserializer configuration", err)
deser.Client = ser.Client
deser.MessageFactory = testMessageFactory

newobj, err := deser.Deserialize("topic1", bytes)
serde.MaybeFail("deserialization", err, serde.Expect(newobj, &obj))
}

func TestAvroSerdeWithCELConditionFail(t *testing.T) {
serde.MaybeFail = serde.InitFailFunc(t)
var err error
Expand Down

0 comments on commit ca09491

Please sign in to comment.