async def test_p2p_receive(): """Test receive from p2p connection.""" address = "127.0.0.1" port = 8000 m_fet_key = "6d56fd47e98465824aa85dfe620ad3dbf092b772abc6c6a182e458b5c56ad13b" ent = entity.Entity.from_hex(m_fet_key) p2p_connection = PeerToPeerClientConnection( address=ent.public_key_hex, provider_addr=address, provider_port=port, connection_id=P2P_CLIENT_CONNECTION_PUBLIC_ID, ) p2p_connection.loop = asyncio.get_event_loop() fake_get_messages_empty = MagicMock(return_value=[]) s_msg = { "FROM": { "NODE_ADDRESS": "node_address", "SENDER_ADDRESS": "sender_address" }, "TO": { "NODE_ADDRESS": "node_address", "RECEIVER_ADDRESS": "receiver_address" }, "PROTOCOL": "author/protocol_name:0.1.0", "CONTEXT": "context", "PAYLOAD": "payload", } messages = [s_msg] with mock.patch.object(fetch.p2p.api.http_calls.HTTPCalls, "get_messages", return_value=[]): with mock.patch.object( fetch.p2p.api.http_calls.HTTPCalls, "register", return_value={"status": "OK"}, ): await p2p_connection.connect() assert p2p_connection.connection_status.is_connected is True with mock.patch.object(fetch.p2p.api.http_calls.HTTPCalls, "get_messages", return_value=messages) as mock_receive: p2p_connection.channel._httpCall.get_messages = mock_receive await asyncio.sleep(2.0) envelope = await p2p_connection.receive() assert envelope is not None with mock.patch.object(fetch.p2p.api.http_calls.HTTPCalls, "unregister", return_value={"status": "OK"}): p2p_connection.channel._httpCall.get_messages = fake_get_messages_empty await p2p_connection.disconnect() assert p2p_connection.connection_status.is_connected is False
async def test_p2p_send(): """Test the send functionality of the p2p connection.""" address = "127.0.0.1" port = 8000 m_fet_key = "6d56fd47e98465824aa85dfe620ad3dbf092b772abc6c6a182e458b5c56ad13b" ent = entity.Entity.from_hex(m_fet_key) p2p_client_connection = PeerToPeerClientConnection( address=ent.public_key_hex, provider_addr=address, provider_port=port, connection_id=P2P_CLIENT_CONNECTION_PUBLIC_ID, ) p2p_client_connection.loop = asyncio.get_event_loop() envelope = Envelope( to="receiver", sender="sender", protocol_id=UNKNOWN_PROTOCOL_PUBLIC_ID, message=b"Hello", ) with mock.patch.object(fetch.p2p.api.http_calls.HTTPCalls, "get_messages", return_value=[]): with mock.patch.object( fetch.p2p.api.http_calls.HTTPCalls, "register", return_value={"status": "OK"}, ): await p2p_client_connection.connect() assert p2p_client_connection.connection_status.is_connected is True with mock.patch.object(fetch.p2p.api.http_calls.HTTPCalls, "get_messages", return_value=[]): with mock.patch.object( fetch.p2p.api.http_calls.HTTPCalls, "send_message", return_value={"status": "OK"}, ): await p2p_client_connection.send(envelope=envelope) # TODO: Consider returning the response from the server in order to be able to assert that the message send! assert True with mock.patch.object( fetch.p2p.api.http_calls.HTTPCalls, "unregister", return_value={"status": "OK"}, ): await p2p_client_connection.disconnect() assert p2p_client_connection.connection_status.is_connected is False