def test_nested_schema_with_register_codec(client): nested_schema = schema.AvroSchema(data_gen.NESTED_SCHENA) order_schema = schema.AvroSchema(data_gen.ORDER_SCHENA) customer_serializer = serializer.FaustSerializer(client, "test-nested-schema", nested_schema) order_serializer = serializer.FaustSerializer(client, "test-order-schema", order_schema) faust.serializers.codecs.register("customer_serializer", customer_serializer) faust.serializers.codecs.register("order_serializer", order_serializer) class Order(faust.Record, serializer="order_serializer"): uid: int class Customer(faust.Record, serializer="customer_serializer"): name: str uid: int order: Order payload = data_gen.create_nested_schema() customer = Customer(**payload) message_encoded = customer.dumps() assert message_encoded assert len(message_encoded) > 5 assert isinstance(message_encoded, bytes) message_decoded = Customer.loads(message_encoded) assert message_decoded == customer
def test_map_of_records(client, country_schema): schema_subject = "test-country" faust_serializer = serializer.FaustSerializer(client, schema_subject, country_schema) result = { "__faust": { "ns": "tests.serializer.test_faust_serializer_clean_payload.DummyRecord" }, "item": { "key1": { "__faust": { "ns": "tests.serializer.test_faust_serializer_clean_payload.DummyRecord" }, "item": "test", }, "key2": { "__faust": { "ns": "tests.serializer.test_faust_serializer_clean_payload.DummyRecord" }, "item": "test", }, }, } dummy = DummyRecord({ "key1": DummyRecord("test"), "key2": DummyRecord("test") }) assert result == faust_serializer.clean_payload(dummy)
def test_create_faust_serializer(client, country_schema): schema_subject = "test-country" faust_serializer = serializer.FaustSerializer(client, schema_subject, country_schema) assert faust_serializer.schema_registry_client == client assert faust_serializer.schema_subject == schema_subject assert faust_serializer.schema == country_schema
def test_list_of_records(client, country_schema): schema_subject = "test-country" faust_serializer = serializer.FaustSerializer(client, schema_subject, country_schema) result = { "__faust": { "ns": "tests.serializer.test_faust_serializer_clean_payload.DummyRecord" }, "item": [ { "__faust": { "ns": "tests.serializer.test_faust_serializer_clean_payload.DummyRecord" }, "item": "test" }, { "__faust": { "ns": "tests.serializer.test_faust_serializer_clean_payload.DummyRecord" }, "item": "test" }, ], } dummy = DummyRecord([DummyRecord("test"), DummyRecord("test")]) assert result == faust_serializer.clean_payload(dummy)
def test_dumps_load_message(client, country_schema): faust_serializer = serializer.FaustSerializer(client, "test-country", country_schema) record = {"country": "Argentina"} message_encoded = faust_serializer._dumps(record) assert message_encoded assert len(message_encoded) > 5 assert isinstance(message_encoded, bytes) message_decoded = faust_serializer._loads(message_encoded) assert message_decoded == record
def test_nested_schema(client): nested_schema = schema.AvroSchema(data_gen.NESTED_SCHENA) faust_serializer = serializer.FaustSerializer(client, "test-nested-schema", nested_schema) record = data_gen.create_nested_schema() message_encoded = faust_serializer._dumps(record) assert message_encoded assert len(message_encoded) > 5 assert isinstance(message_encoded, bytes) message_decoded = faust_serializer._loads(message_encoded) assert message_decoded == record
def test_dumps_load_with_register_codec(client, country_schema): payload = {"country": "Argenntina"} country_serializer = serializer.FaustSerializer(client, "test-country", country_schema) faust.serializers.codecs.register("country_serializer", country_serializer) class CountryRecord(faust.Record, serializer="country_serializer"): country: str country_record = CountryRecord(**payload) message_encoded = country_record.dumps() assert message_encoded assert len(message_encoded) > 5 assert isinstance(message_encoded, bytes) message_decoded = CountryRecord.loads(message_encoded) assert message_decoded == country_record
def test_dumps_load_message_dataclasses_avro_schema(client): class AdvanceUserModel(faust.Record, AvroModel): first_name: str last_name: str age: int faust_serializer = serializer.FaustSerializer(client, "test-dataclasses-avroschema", AdvanceUserModel.avro_schema()) record = { "first_name": "Juan", "last_name": "Perez", "age": 20, } message_encoded = faust_serializer._dumps(record) assert message_encoded assert len(message_encoded) > 5 assert isinstance(message_encoded, bytes) message_decoded = faust_serializer._loads(message_encoded) assert message_decoded == record
def test_dumps_load_message_union_avro_schema(client): class FirstMemberRecord(faust.Record, AvroModel): name: str = "" class SecondMemberRecord(faust.Record, AvroModel): name: str = "" class UnionFieldAvroModel(faust.Record, AvroModel): a_name: typing.Union[FirstMemberRecord, SecondMemberRecord, None] avro_name = "test-union-field-avroschema" avro_schema = UnionFieldAvroModel.avro_schema() faust_serializer = serializer.FaustSerializer(client, avro_name, avro_schema, return_record_name=True) record = {"a_name": ("a_name_secondmemberrecord_record", {"name": "jj"})} message_encoded = faust_serializer._dumps(record) assert message_encoded message_decoded = faust_serializer._loads(message_encoded) assert message_decoded == record