From eb18a6b22eec7362fa072900b3ae8dc6f0881292 Mon Sep 17 00:00:00 2001 From: Ben Pope Date: Wed, 16 Nov 2022 16:44:30 +0000 Subject: [PATCH] schema_registry: Support JSON custom attributes on fields Signed-off-by: Ben Pope --- .../test/compatibility_avro.cc | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/v/pandaproxy/schema_registry/test/compatibility_avro.cc b/src/v/pandaproxy/schema_registry/test/compatibility_avro.cc index 95dae3832b77..9c6ff1577aa2 100644 --- a/src/v/pandaproxy/schema_registry/test/compatibility_avro.cc +++ b/src/v/pandaproxy/schema_registry/test/compatibility_avro.cc @@ -250,3 +250,28 @@ SEASTAR_THREAD_TEST_CASE(test_avro_schema_definition) { pps::canonical_schema_definition avro_conversion{valid}; BOOST_CHECK_EQUAL(expected, avro_conversion); } + +SEASTAR_THREAD_TEST_CASE(test_avro_schema_definition_custom_attributes) { + // https://github.com/redpanda-data/redpanda/issues/7274 + // custom attributes supported only at field level + const auto avro_metadata_schema + = pps::sanitize_avro_schema_definition( + {R"({"type":"record","name":"foo","ignored_attr":true,"fields":[{"name":"bar","type":"float","extra_attr":true}]})", + pps::schema_type::avro}) + .value(); + pps::canonical_schema_definition expected{ + R"({"type":"record","name":"foo","fields":[{"name":"bar","type":"float","extra_attr":true}]})", + pps::schema_type::avro}; + pps::sharded_store s; + auto valid = pps::make_avro_schema_definition( + s, + {pps::subject("s2"), + {avro_metadata_schema.raw(), pps::schema_type::avro}}) + .get(); + static_assert( + std:: + is_same_v, pps::avro_schema_definition>, + "schema2 is an avro_schema_definition"); + pps::canonical_schema_definition avro_conversion{valid}; + BOOST_CHECK_EQUAL(expected, avro_conversion); +}