def test_get_balance_serialization(): """Test the serialization for 'get_balance' speech-act works.""" msg = LedgerApiMessage( performative=LedgerApiMessage.Performative.GET_BALANCE, ledger_id="some_ledger_id", address="some_address", ) msg.to = "receiver" envelope = Envelope( to=msg.to, sender="sender", protocol_id=LedgerApiMessage.protocol_id, message=msg, ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) expected_envelope = envelope assert expected_envelope.to == actual_envelope.to assert expected_envelope.sender == actual_envelope.sender assert expected_envelope.protocol_id == actual_envelope.protocol_id assert expected_envelope.message != actual_envelope.message actual_msg = LedgerApiMessage.serializer.decode(actual_envelope.message) actual_msg.to = actual_envelope.to actual_msg.sender = actual_envelope.sender expected_msg = msg assert expected_msg == actual_msg
async def test_no_raw_tx(): """Test no raw tx returned.""" dispatcher = LedgerApiRequestDispatcher(AsyncState()) mock_api = Mock() message = LedgerApiMessage( performative=LedgerApiMessage.Performative.GET_RAW_TRANSACTION, dialogue_reference=dispatcher.dialogues. new_self_initiated_dialogue_reference(), terms=Terms( ledger_id=ETHEREUM, sender_address="1111", counterparty_address="22222", amount_by_currency_id={"ETH": -1}, quantities_by_good_id={"some_service_id": 1}, is_sender_payable_tx_fee=True, nonce="", fee_by_currency_id={"ETH": 10}, chain_id=3, ), ) message.to = dispatcher.dialogues.self_address message.sender = "test" dialogue = dispatcher.dialogues.update(message) assert dialogue is not None mock_api.get_transfer_transaction.return_value = None msg = dispatcher.get_raw_transaction(mock_api, message, dialogue) assert msg.performative == LedgerApiMessage.Performative.ERROR
def test_error_serialization(): """Test the serialization for 'error' speech-act works.""" msg = LedgerApiMessage( performative=LedgerApiMessage.Performative.ERROR, code=7, message="some_error_message", data=b"some_error_data", ) msg.to = "receiver" envelope = Envelope( to=msg.to, sender="sender", protocol_id=LedgerApiMessage.protocol_id, message=msg, ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) expected_envelope = envelope assert expected_envelope.to == actual_envelope.to assert expected_envelope.sender == actual_envelope.sender assert expected_envelope.protocol_id == actual_envelope.protocol_id assert expected_envelope.message != actual_envelope.message actual_msg = LedgerApiMessage.serializer.decode(actual_envelope.message) actual_msg.to = actual_envelope.to actual_msg.sender = actual_envelope.sender expected_msg = msg assert expected_msg == actual_msg
def test_transaction_receipt_serialization(): """Test the serialization for 'transaction_receipt' speech-act works.""" msg = LedgerApiMessage( message_id=2, target=1, performative=LedgerApiMessage.Performative.TRANSACTION_RECEIPT, transaction_receipt=LedgerApiMessage.TransactionReceipt( "some_ledger_id", b"some_receit", b"some_transaction"), ) msg.to = "receiver" envelope = Envelope( to=msg.to, sender="sender", protocol_id=LedgerApiMessage.protocol_id, message=msg, ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) expected_envelope = envelope assert expected_envelope.to == actual_envelope.to assert expected_envelope.sender == actual_envelope.sender assert expected_envelope.protocol_id == actual_envelope.protocol_id assert expected_envelope.message != actual_envelope.message actual_msg = LedgerApiMessage.serializer.decode(actual_envelope.message) actual_msg.to = actual_envelope.to actual_msg.sender = actual_envelope.sender expected_msg = msg assert expected_msg == actual_msg
def test_send_signed_transaction_serialization(): """Test the serialization for 'send_signed_transaction' speech-act works.""" msg = LedgerApiMessage( message_id=2, target=1, performative=LedgerApiMessage.Performative.SEND_SIGNED_TRANSACTION, signed_transaction=LedgerApiMessage.SignedTransaction( "some_ledger_id", b"some_body"), ) msg.to = "receiver" envelope = Envelope( to=msg.to, sender="sender", protocol_id=LedgerApiMessage.protocol_id, message=msg, ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) expected_envelope = envelope assert expected_envelope.to == actual_envelope.to assert expected_envelope.sender == actual_envelope.sender assert expected_envelope.protocol_id == actual_envelope.protocol_id assert expected_envelope.message != actual_envelope.message actual_msg = LedgerApiMessage.serializer.decode(actual_envelope.message) actual_msg.to = actual_envelope.to actual_msg.sender = actual_envelope.sender expected_msg = msg assert expected_msg == actual_msg
async def test_no_balance(): """Test no balance.""" dispatcher = LedgerApiRequestDispatcher(AsyncState()) mock_api = Mock() message = LedgerApiMessage( performative=LedgerApiMessage.Performative.GET_BALANCE, dialogue_reference=dispatcher.dialogues. new_self_initiated_dialogue_reference(), ledger_id=ETHEREUM, address="test", ) message.to = dispatcher.dialogues.self_address message.sender = "test" dialogue = dispatcher.dialogues.update(message) assert dialogue is not None mock_api.get_balance.return_value = None msg = dispatcher.get_balance(mock_api, message, dialogue) assert msg.performative == LedgerApiMessage.Performative.ERROR
def test_get_raw_transaction_serialization(): """Test the serialization for 'get_raw_transaction' speech-act works.""" terms_arg = LedgerApiMessage.Terms( ledger_id="some_ledger_id", sender_address="some_sender_address", counterparty_address="some_counterparty_address", amount_by_currency_id={"currency_id_1": 1}, quantities_by_good_id={ "good_id_1": -1, "good_id_2": -2 }, nonce="some_nonce", is_sender_payable_tx_fee=False, fee_by_currency_id={"currency_id_1": 1}, is_strict=True, ) msg = LedgerApiMessage( message_id=2, target=1, performative=LedgerApiMessage.Performative.GET_RAW_TRANSACTION, terms=terms_arg, ) msg.to = "receiver" envelope = Envelope( to=msg.to, sender="sender", protocol_id=LedgerApiMessage.protocol_id, message=msg, ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) expected_envelope = envelope assert expected_envelope.to == actual_envelope.to assert expected_envelope.sender == actual_envelope.sender assert expected_envelope.protocol_id == actual_envelope.protocol_id assert expected_envelope.message != actual_envelope.message actual_msg = LedgerApiMessage.serializer.decode(actual_envelope.message) actual_msg.to = actual_envelope.to actual_msg.sender = actual_envelope.sender expected_msg = msg assert expected_msg == actual_msg
async def test_attempts_get_transaction_receipt(): """Test retry and sleep.""" dispatcher = LedgerApiRequestDispatcher( AsyncState(ConnectionStates.connected)) mock_api = Mock() message = LedgerApiMessage( performative=LedgerApiMessage.Performative.GET_TRANSACTION_RECEIPT, dialogue_reference=dispatcher.dialogues. new_self_initiated_dialogue_reference(), transaction_digest=TransactionDigest("asdad", "sdfdsf"), ) message.to = dispatcher.dialogues.self_address message.sender = "test" dialogue = dispatcher.dialogues.update(message) assert dialogue is not None mock_api.get_transaction.return_value = None mock_api.is_transaction_settled.return_value = True with patch.object(dispatcher, "MAX_ATTEMPTS", 2): with patch.object(dispatcher, "TIMEOUT", 0.001): msg = dispatcher.get_transaction_receipt(mock_api, message, dialogue) assert msg.performative == LedgerApiMessage.Performative.ERROR