예제 #1
0
def test_deserialize_messages_that_is_too_big(request_monitoring_message, capsys):

    data = str(b"/0" * 1000000)
    assert sys.getsizeof(data) >= 1000000

    deserialize_messages(
        data=data,
        peer_address=request_monitoring_message.sender,
        rate_limiter=RateLimiter(allowed_bytes=1000000, reset_interval=timedelta(minutes=1)),
    )
    captured = capsys.readouterr()

    assert "Sender is rate limited" in captured.out
예제 #2
0
def test_deserialize_messages_valid_messages(request_monitoring_message):
    message = MessageSerializer.serialize(request_monitoring_message)
    raw_string = message + "\n" + message

    messages = deserialize_messages(
        data=raw_string, peer_address=request_monitoring_message.sender)
    assert len(messages) == 2
예제 #3
0
def test_deserialize_messages_valid_message(request_monitoring_message):
    message_json = request_monitoring_message.to_dict()

    messages = deserialize_messages(
        data=json.dumps(message_json),
        peer_address=request_monitoring_message.sender)
    assert len(messages) == 1
예제 #4
0
def test_deserialize_messages_invalid_message_type(request_monitoring_message):
    message_json = request_monitoring_message.to_dict()
    message_json["type"] = "SomeNonexistantMessage"

    messages = deserialize_messages(data=json.dumps(message_json),
                                    peer_address=INVALID_PEER_ADDRESS)
    assert len(messages) == 0
예제 #5
0
def test_deserialize_messages_valid_messages(request_monitoring_message):
    message_json = request_monitoring_message.to_dict()
    raw_string = json.dumps(message_json) + "\n" + json.dumps(message_json)

    messages = deserialize_messages(
        data=raw_string, peer_address=request_monitoring_message.sender)
    assert len(messages) == 2
예제 #6
0
def test_deserialize_messages_invalid_message_class(
        request_monitoring_message):
    message_json = request_monitoring_message.to_dict()

    with patch("raiden_libs.matrix.message_from_dict", new=Mock()):
        messages = deserialize_messages(data=json.dumps(message_json),
                                        peer_address=INVALID_PEER_ADDRESS)
        assert len(messages) == 0
예제 #7
0
def test_deserialize_checks_datetimes_in_messages():
    invalid_fee_update = get_fee_update_message(
        updating_participant=PRIVATE_KEY_1_ADDRESS,
        privkey_signer=PRIVATE_KEY_1,
        timestamp=datetime.now(timezone.utc),
    )
    message = MessageSerializer.serialize(invalid_fee_update)

    messages = deserialize_messages(data=message, peer_address=PRIVATE_KEY_1_ADDRESS)
    assert len(messages) == 0

    valid_fee_update = get_fee_update_message(
        updating_participant=PRIVATE_KEY_1_ADDRESS,
        privkey_signer=PRIVATE_KEY_1,
        timestamp=datetime.utcnow(),
    )
    message = MessageSerializer.serialize(valid_fee_update)

    messages = deserialize_messages(data=message, peer_address=PRIVATE_KEY_1_ADDRESS)
    assert len(messages) == 1
예제 #8
0
def test_deserialize_messages_with_missing_fields(request_monitoring_message):
    message_dict = DictSerializer.serialize(request_monitoring_message)
    list_of_key_words = list(message_dict.keys())

    # non closing signature is not required by this message type
    list_of_key_words.remove("non_closing_signature")

    for key in list_of_key_words:
        message_json_broken = deepcopy(message_dict)
        del message_json_broken[key]
        messages = deserialize_messages(
            data=json.dumps(message_json_broken),
            peer_address=request_monitoring_message.sender)
        assert len(messages) == 0
예제 #9
0
def test_deserialize_messages_invalid_sender(request_monitoring_message):
    message = MessageSerializer.serialize(request_monitoring_message)

    messages = deserialize_messages(data=message,
                                    peer_address=INVALID_PEER_ADDRESS)
    assert len(messages) == 0
예제 #10
0
def test_deserialize_messages(message_data):
    messages = deserialize_messages(data=message_data,
                                    peer_address=INVALID_PEER_ADDRESS)
    assert len(messages) == 0
예제 #11
0
def test_deserialize_messages_valid_message(request_monitoring_message):
    message = MessageSerializer.serialize(request_monitoring_message)

    messages = deserialize_messages(
        data=message, peer_address=request_monitoring_message.sender)
    assert len(messages) == 1
예제 #12
0
def test_deserialize_messages_invalid_sender(request_monitoring_message):
    message_json = request_monitoring_message.to_dict()

    messages = deserialize_messages(data=json.dumps(message_json),
                                    peer_address=INVALID_PEER_ADDRESS)
    assert len(messages) == 0