Esempio n. 1
0
def test_fail_to_deserialize_event_data_with_invalid_timestamp():
    data = build_event_data(timestamp='2020-05-15TFOOBAR')

    with pytest.raises(SchemaError) as e:
        EventSchema().load(data)

    assert "{'timestamp': ['Not a valid datetime.']}" in str(e.value)
Esempio n. 2
0
def test_fail_to_deserialize_event_data_with_invalid_version():
    data = build_event_data(version='foobar')

    with pytest.raises(SchemaError) as e:
        EventSchema().load(data)

    assert "{'version': ['Not a valid integer.']}" in str(e.value)
Esempio n. 3
0
def test_deserialize_event_data_with_timezone_aware_timestamp():
    timestamp = '2020-05-15T20:35:45.000+05:00'
    data = build_event_data(timestamp=timestamp)

    event = EventSchema().load(data)

    assert event.timestamp == dateutil.parser.parse(timestamp)
    assert event.timestamp.utcoffset() == timedelta(hours=5)
Esempio n. 4
0
def test_deserialize_event_data_ignoring_unknown_attributes():
    data = build_event_data()
    data['foo'] = 'bar'
    data['one'] = 1

    payload = EventSchema().load(data)

    assert payload is not None
    assert isinstance(payload, Event)
Esempio n. 5
0
def test_fail_to_deserialize_event_data_with_required_attribute_set_to_null(attribute_key):
    data = build_event_data()
    data[attribute_key] = None

    with pytest.raises(SchemaError) as e:
        EventSchema().load(data)

    assert str(e.value) == (
        "Invalid MEGA payload. There is an error in the 'event' section: "
        "{{'{0}': ['Field may not be null.']}}".format(attribute_key)
    )
Esempio n. 6
0
def test_fail_to_deserialize_event_data_without_required_attribute(attribute_key):
    data = build_event_data()
    del data[attribute_key]

    with pytest.raises(SchemaError) as e:
        EventSchema().load(data)

    assert str(e.value) == (
        "Invalid MEGA payload. There is an error in the 'event' section: "
        "{{'{0}': ['Missing data for required field.']}}".format(attribute_key)
    )
Esempio n. 7
0
def test_fail_to_deserialize_event_data_with_invalid_attribute_key():
    data = build_event_data(
        attributes={
            'foo': 'bar',
            666: 'bogus'
        }
    )

    with pytest.raises(SchemaError) as e:
        EventSchema().load(data)

    assert "{'attributes': defaultdict(<class 'dict'>, {666: {'key': ['Not a valid string.']}})}" in str(e.value)
Esempio n. 8
0
def test_deserialize_full_event_data():
    data = build_event_data()

    event = EventSchema().load(data)

    assert event.name == data['name']
    assert event.version == data['version']
    assert event.domain == data['domain']
    assert event.subject == data['subject']
    assert event.publisher == data['publisher']
    assert event.attributes == data['attributes']

    assert event.timestamp == dateutil.parser.parse(data['timestamp'])
    assert event.timestamp.utcoffset() is None
    assert event.timestamp.tzinfo is None
Esempio n. 9
0
def test_deserialize_event_data_with_optional_attribute_set_to_null(attribute_key, expected_value):
    data = build_event_data()
    data[attribute_key] = None
    event = EventSchema().load(data)
    assert getattr(event, attribute_key) == expected_value
Esempio n. 10
0
def test_deserialize_event_data_without_optional_attribute(attribute_key, expected_value):
    data = build_event_data()
    del data[attribute_key]
    event = EventSchema().load(data)
    assert getattr(event, attribute_key) == expected_value