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)
Example #3
0
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)
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
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
Example #9
0
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