diff --git a/src/sakia/app.py b/src/sakia/app.py index 0c753b25099c200f150bf2e94af426f161da87e6..a29efd7d2c7f1836dfc2e352012e8e4486f06f4d 100644 --- a/src/sakia/app.py +++ b/src/sakia/app.py @@ -211,7 +211,7 @@ class Application(QObject): logging.debug("Found version : {0}".format(latest_version)) logging.debug("Current version : {0}".format(__version__)) self.available_version = version - except (aiohttp.errors.ClientError, aiohttp.errors.TimeoutError) as e: + except (aiohttp.ClientError, asyncio.TimeoutError) as e: self._logger.debug("Could not connect to github : {0}".format(str(e))) def save_parameters(self, parameters): diff --git a/src/sakia/data/connectors/bma.py b/src/sakia/data/connectors/bma.py index e6721bb87bf707147b6a85cad4e976b4763541b5..a5c6bef9150ce57998da2b9640e41dc246c7780b 100644 --- a/src/sakia/data/connectors/bma.py +++ b/src/sakia/data/connectors/bma.py @@ -1,6 +1,6 @@ import logging import aiohttp -from aiohttp.errors import ClientError, ServerDisconnectedError +from aiohttp import ClientError from duniterpy.api import bma, errors from duniterpy.documents import BMAEndpoint, SecuredBMAEndpoint from sakia.errors import NoPeerAvailable @@ -242,8 +242,8 @@ class BmaConnector: tries += 1 else: raise - except (ClientError, ServerDisconnectedError, gaierror, - asyncio.TimeoutError, ValueError, jsonschema.ValidationError) as e: + except (ClientError, gaierror, asyncio.TimeoutError, + ValueError, jsonschema.ValidationError) as e: self._logger.debug(str(e)) tries += 1 raise NoPeerAvailable("", len(endpoints)) diff --git a/src/sakia/data/connectors/node.py b/src/sakia/data/connectors/node.py index 039b6428e795aba433a39ea9e1bf85adb0bd9c19..b191be7ebbf96c1fb14ab5554df9d39d369c6385 100644 --- a/src/sakia/data/connectors/node.py +++ b/src/sakia/data/connectors/node.py @@ -7,8 +7,7 @@ from socket import gaierror import aiohttp import jsonschema from PyQt5.QtCore import QObject, pyqtSignal -from aiohttp.errors import ClientError, DisconnectedError -from aiohttp.errors import WSServerHandshakeError, ClientResponseError +from aiohttp import ClientError from duniterpy.api import bma, errors from duniterpy.documents import BlockUID, MalformedDocumentError, BMAEndpoint @@ -98,7 +97,7 @@ class NodeConnector(QObject): conn_handler = next(endpoint.conn_handler(self.session, proxy=proxy)) data = await request(conn_handler, **req_args) return data - except (ClientError, gaierror, TimeoutError, ConnectionRefusedError, DisconnectedError, ValueError) as e: + except (ClientError, gaierror, TimeoutError, ConnectionRefusedError, ValueError) as e: self._logger.debug("{0} : {1}".format(str(e), self.node.pubkey[:5])) self.change_state_and_emit(Node.OFFLINE) except jsonschema.ValidationError as e: @@ -114,7 +113,6 @@ class NodeConnector(QObject): for ws in self._ws_tasks.values(): if ws: ws.cancel() - await asyncio.sleep(0) closed = False while not closed: for ws in self._ws_tasks.values(): @@ -156,20 +154,19 @@ class NodeConnector(QObject): self._logger.debug("Connected successfully to block ws : {0}" .format(self.node.pubkey[:5])) async for msg in ws: - if msg.tp == aiohttp.MsgType.text: + if msg.tp == aiohttp.WSMsgType.TEXT: self._logger.debug("Received a block : {0}".format(self.node.pubkey[:5])) block_data = bma.parse_text(msg.data, bma.ws.WS_BLOCk_SCHEMA) await self.refresh_block(block_data) - elif msg.tp == aiohttp.MsgType.closed: + elif msg.tp == aiohttp.WSMsgType.CLOSED: break - elif msg.tp == aiohttp.MsgType.error: + elif msg.tp == aiohttp.WSMsgType.ERROR: break - except (WSServerHandshakeError, - ClientResponseError, ValueError) as e: + except (aiohttp.WSServerHandshakeError, ValueError) as e: self._logger.debug("Websocket block {0} : {1} - {2}" .format(type(e).__name__, str(e), self.node.pubkey[:5])) await self.request_current_block() - except (ClientError, gaierror, TimeoutError, DisconnectedError) as e: + except (ClientError, gaierror, TimeoutError) as e: self._logger.debug("{0} : {1}".format(str(e), self.node.pubkey[:5])) self.change_state_and_emit(Node.OFFLINE) except jsonschema.ValidationError as e: @@ -283,20 +280,19 @@ class NodeConnector(QObject): self._connected['peer'] = True self._logger.debug("Connected successfully to peer ws : {0}".format(self.node.pubkey[:5])) async for msg in ws: - if msg.tp == aiohttp.MsgType.text: + if msg.tp == aiohttp.WSMsgType.TEXT: self._logger.debug("Received a peer : {0}".format(self.node.pubkey[:5])) peer_data = bma.parse_text(msg.data, bma.ws.WS_PEER_SCHEMA) self.refresh_peer_data(peer_data) - elif msg.tp == aiohttp.MsgType.closed: + elif msg.tp == aiohttp.WSMsgType.CLOSED: break - elif msg.tp == aiohttp.MsgType.error: + elif msg.tp == aiohttp.WSMsgType.ERROR: break - except (WSServerHandshakeError, - ClientResponseError, ValueError) as e: + except (aiohttp.WSServerHandshakeError, ValueError) as e: self._logger.debug("Websocket peer {0} : {1} - {2}" .format(type(e).__name__, str(e), self.node.pubkey[:5])) await self.request_peers() - except (ClientError, gaierror, TimeoutError, DisconnectedError) as e: + except (ClientError, gaierror, TimeoutError) as e: self._logger.debug("{0} : {1}".format(str(e), self.node.pubkey[:5])) self.change_state_and_emit(Node.OFFLINE) except jsonschema.ValidationError as e: diff --git a/src/sakia/data/processors/identities.py b/src/sakia/data/processors/identities.py index e2166973b2ca18fc908fa95e20264bede0027fff..0db946262197fb80e23782dbec8c4a0e24db6b4c 100644 --- a/src/sakia/data/processors/identities.py +++ b/src/sakia/data/processors/identities.py @@ -9,7 +9,7 @@ from duniterpy.api import bma, errors from duniterpy.key import SigningKey from duniterpy.documents import BlockUID, block_uid from duniterpy.documents import Identity as IdentityDoc -from aiohttp.errors import ClientError +from aiohttp import ClientError from sakia.errors import NoPeerAvailable diff --git a/src/sakia/gui/dialogs/connection_cfg/controller.py b/src/sakia/gui/dialogs/connection_cfg/controller.py index d1476b07a47e092bc7a6a8f8627c1335e0987545..30815bace597582579cf3aea8ea8d86607771749 100644 --- a/src/sakia/gui/dialogs/connection_cfg/controller.py +++ b/src/sakia/gui/dialogs/connection_cfg/controller.py @@ -2,7 +2,8 @@ import asyncio import logging from PyQt5.QtCore import QObject -from aiohttp.errors import DisconnectedError, ClientError, TimeoutError +from aiohttp import ClientError +from asyncio import TimeoutError from duniterpy.api.errors import DuniterError from duniterpy.documents import MalformedDocumentError @@ -118,7 +119,7 @@ class ConnectionConfigController(QObject): self.view.button_connect.setEnabled(False) self.view.button_register.setEnabled(False) await self.model.create_connection() - except (DisconnectedError, ClientError, MalformedDocumentError, ValueError, TimeoutError) as e: + except (ClientError, MalformedDocumentError, ValueError, TimeoutError) as e: self._logger.debug(str(e)) self.view.display_info(self.tr("Could not connect. Check hostname, ip address or port : <br/>" + str(e))) diff --git a/src/sakia/gui/dialogs/revocation/model.py b/src/sakia/gui/dialogs/revocation/model.py index f3a316e30b1df2d93b2c6b02702596b43a24d100..a3f64118bb95e0d8c99e2ff4072dfff43ad6b6a9 100644 --- a/src/sakia/gui/dialogs/revocation/model.py +++ b/src/sakia/gui/dialogs/revocation/model.py @@ -4,8 +4,7 @@ from sakia.data.connectors import NodeConnector from asyncio import TimeoutError from socket import gaierror import jsonschema -from aiohttp.errors import ClientError, DisconnectedError -from aiohttp.errors import ClientResponseError +from aiohttp import ClientError from PyQt5.QtCore import QObject import logging @@ -58,7 +57,7 @@ class RevocationModel(QObject): except errors.DuniterError as e: return False, e.message except (jsonschema.ValidationError, ClientError, gaierror, - TimeoutError, ConnectionRefusedError, DisconnectedError, ValueError) as e: + TimeoutError, ConnectionRefusedError, ValueError) as e: return False, str(e) finally: node_connector.session.close() diff --git a/src/sakia/gui/sub/search_user/controller.py b/src/sakia/gui/sub/search_user/controller.py index 027804e876c8111748f4e5eb1daf4801958e05bc..666769b874db83d28c00902dbbf4f7c7995f5e85 100644 --- a/src/sakia/gui/sub/search_user/controller.py +++ b/src/sakia/gui/sub/search_user/controller.py @@ -57,6 +57,6 @@ class SearchUserController(QObject): """ Select node in graph when item is selected in combobox """ - self.model.select_identity(index) - self.identity_selected.emit(self.model.identity()) + if self.model.select_identity(index): + self.identity_selected.emit(self.model.identity()) diff --git a/src/sakia/gui/sub/search_user/model.py b/src/sakia/gui/sub/search_user/model.py index 7b912bb569922590e65eabde255271f297ba1fce..8839788c3d2fcd81db68ca02b0b77ebd291af558 100644 --- a/src/sakia/gui/sub/search_user/model.py +++ b/src/sakia/gui/sub/search_user/model.py @@ -68,4 +68,5 @@ class SearchUserModel(QObject): if index < 0 or index >= len(self._nodes): self._current_identity = None return False - self._current_identity = self._nodes[index] \ No newline at end of file + self._current_identity = self._nodes[index] + return True \ No newline at end of file diff --git a/tests/conftest.py b/tests/conftest.py index 181b21d807576e5d0f50f8f614dd9add4b5a0f8a..4a82164b4d090507e95ea4297088455f17cb33f7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -10,6 +10,7 @@ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 's from sakia.constants import ROOT_SERVERS from duniterpy.documents import BlockUID +from duniterpy.key import ScryptParams from sakia.app import Application from sakia.options import SakiaOptions from sakia.data.files import * @@ -85,6 +86,11 @@ def application(event_loop, meta_repo, sakia_options, app_data, user_parameters, return app +@pytest.fixture() +def simple_forge(): + return mirage.BlockForge.start("test_currency", "12356", "123456", ScryptParams(2 ** 12, 16, 1)) + + @pytest.fixture def fake_server(application, event_loop): server = event_loop.run_until_complete(mirage.Node.start(None, "test_currency", "12356", "123456", event_loop)) @@ -114,10 +120,10 @@ def bob(): @pytest.fixture -def john(simple_fake_server): +def john(simple_blockchain_forge): # John is not written in the blockchain return mirage.User.create("test_currency", "john", "johnsalt", "johnpassword", - simple_fake_server.forge.blocks[-1].blockUID) + simple_blockchain_forge.blocks[-1].blockUID) @pytest.fixture @@ -131,35 +137,41 @@ def wrong_bob_pubkey(): @pytest.fixture -def simple_fake_server(fake_server, alice, bob): - fake_server.forge.push(alice.identity()) - fake_server.forge.push(bob.identity()) - fake_server.forge.push(alice.join(BlockUID.empty())) - fake_server.forge.push(bob.join(BlockUID.empty())) - fake_server.forge.push(alice.certify(bob, BlockUID.empty())) - fake_server.forge.push(bob.certify(alice, BlockUID.empty())) - fake_server.forge.forge_block() - fake_server.forge.set_member(alice.key.pubkey, True) - fake_server.forge.set_member(bob.key.pubkey, True) +def simple_blockchain_forge(simple_forge, alice, bob): + simple_forge.push(alice.identity()) + simple_forge.push(bob.identity()) + simple_forge.push(alice.join(BlockUID.empty())) + simple_forge.push(bob.join(BlockUID.empty())) + simple_forge.push(alice.certify(bob, BlockUID.empty())) + simple_forge.push(bob.certify(alice, BlockUID.empty())) + simple_forge.forge_block() + simple_forge.set_member(alice.key.pubkey, True) + simple_forge.set_member(bob.key.pubkey, True) for i in range(0, 10): new_user = mirage.User.create("test_currency", "user{0}".format(i), "salt{0}".format(i), "password{0}".format(i), - fake_server.forge.blocks[-1].blockUID) - fake_server.forge.push(new_user.identity()) - fake_server.forge.push(new_user.join(fake_server.forge.blocks[-1].blockUID)) - fake_server.forge.forge_block() - fake_server.forge.set_member(new_user.key.pubkey, True) - fake_server.forge.generate_dividend() - fake_server.forge.forge_block() + simple_forge.blocks[-1].blockUID) + simple_forge.push(new_user.identity()) + simple_forge.push(new_user.join(simple_forge.blocks[-1].blockUID)) + simple_forge.forge_block() + simple_forge.set_member(new_user.key.pubkey, True) + simple_forge.generate_dividend() + simple_forge.forge_block() + return simple_forge + + +@pytest.fixture +def fake_server_with_blockchain(fake_server, simple_blockchain_forge): + fake_server.forge = simple_blockchain_forge return fake_server @pytest.fixture -def application_with_one_connection(application, simple_fake_server, bob): - current_block = simple_fake_server.forge.blocks[-1] - last_ud_block = [b for b in simple_fake_server.forge.blocks if b.ud][-1] - previous_ud_block = [b for b in simple_fake_server.forge.blocks if b.ud][-2] - origin_block = simple_fake_server.forge.blocks[0] +def application_with_one_connection(application, simple_blockchain_forge, bob): + current_block = simple_blockchain_forge.blocks[-1] + last_ud_block = [b for b in simple_blockchain_forge.blocks if b.ud][-1] + previous_ud_block = [b for b in simple_blockchain_forge.blocks if b.ud][-2] + origin_block = simple_blockchain_forge.blocks[0] connection = Connection(currency="test_currency", pubkey=bob.key.pubkey, uid=bob.uid, scrypt_N=mirage.User.SCRYPT_PARAMS.N, @@ -173,43 +185,43 @@ def application_with_one_connection(application, simple_fake_server, bob): blockchain = Blockchain(parameters=blockchain_parameters, current_buid=current_block.blockUID, current_members_count=current_block.members_count, - current_mass=simple_fake_server.forge.monetary_mass(current_block.number), + current_mass=simple_blockchain_forge.monetary_mass(current_block.number), median_time=current_block.mediantime, last_members_count=previous_ud_block.members_count, last_ud=last_ud_block.ud, last_ud_base=last_ud_block.unit_base, last_ud_time=last_ud_block.mediantime, - previous_mass=simple_fake_server.forge.monetary_mass(previous_ud_block.number), + previous_mass=simple_blockchain_forge.monetary_mass(previous_ud_block.number), previous_members_count=previous_ud_block.members_count, previous_ud=previous_ud_block.ud, previous_ud_base=previous_ud_block.unit_base, previous_ud_time=previous_ud_block.mediantime, - currency=simple_fake_server.forge.currency) + currency=simple_blockchain_forge.currency) application.db.blockchains_repo.insert(blockchain) - for s in simple_fake_server.forge.user_identities[bob.key.pubkey].sources: - application.db.sources_repo.insert(Source(currency=simple_fake_server.forge.currency, + for s in simple_blockchain_forge.user_identities[bob.key.pubkey].sources: + application.db.sources_repo.insert(Source(currency=simple_blockchain_forge.currency, pubkey=bob.key.pubkey, identifier=s.origin_id, noffset=s.index, type=s.source, amount=s.amount, base=s.base)) - bob_blockstamp = simple_fake_server.forge.user_identities[bob.key.pubkey].blockstamp - bob_user_identity = simple_fake_server.forge.user_identities[bob.key.pubkey] + bob_blockstamp = simple_blockchain_forge.user_identities[bob.key.pubkey].blockstamp + bob_user_identity = simple_blockchain_forge.user_identities[bob.key.pubkey] bob_ms = bob_user_identity.memberships[-1] - bob_identity = Identity(currency=simple_fake_server.forge.currency, + bob_identity = Identity(currency=simple_blockchain_forge.currency, pubkey=bob.key.pubkey, uid=bob.uid, blockstamp=bob_blockstamp, signature=bob_user_identity.signature, - timestamp=simple_fake_server.forge.blocks[bob_blockstamp.number].mediantime, + timestamp=simple_blockchain_forge.blocks[bob_blockstamp.number].mediantime, written=True, revoked_on=0, member=bob_user_identity.member, membership_buid=bob_ms.blockstamp, - membership_timestamp=simple_fake_server.forge.blocks[bob_ms.blockstamp.number].mediantime, + membership_timestamp=simple_blockchain_forge.blocks[bob_ms.blockstamp.number].mediantime, membership_type=bob_ms.type, - membership_written_on=simple_fake_server.forge.blocks[bob_ms.written_on].number) + membership_written_on=simple_blockchain_forge.blocks[bob_ms.written_on].number) application.db.identities_repo.insert(bob_identity) application.switch_language() diff --git a/tests/functional/test_certification_dialog.py b/tests/functional/test_certification_dialog.py index 75e1a3de075b3ed562a44d7a9a9e1720121e5694..3dde68236ade9aae233b68b71497f3c6f248f42e 100644 --- a/tests/functional/test_certification_dialog.py +++ b/tests/functional/test_certification_dialog.py @@ -9,7 +9,7 @@ from ..helpers import click_on_top_message_box @pytest.mark.asyncio -async def test_certification_init_community(application_with_one_connection, fake_server, bob, alice): +async def test_certification_init_community(application_with_one_connection, fake_server_with_blockchain, bob, alice): certification_dialog = CertificationController.create(None, application_with_one_connection) def close_dialog(): @@ -42,9 +42,9 @@ async def test_certification_init_community(application_with_one_connection, fak await asyncio.sleep(0.1) click_on_top_message_box() await asyncio.sleep(0.2) - assert isinstance(fake_server.forge.pool[0], Certification) + assert isinstance(fake_server_with_blockchain.forge.pool[0], Certification) application_with_one_connection.loop.call_later(10, close_dialog) asyncio.ensure_future(exec_test()) await certification_dialog.async_exec() - await fake_server.close() + await fake_server_with_blockchain.close() diff --git a/tests/functional/test_connection_cfg_dialog.py b/tests/functional/test_connection_cfg_dialog.py index 09e3b610a4eafe7af9e1395eb3a406dca18ffced..792397f74e5654c11c3a382fa022ae33ed28ab19 100644 --- a/tests/functional/test_connection_cfg_dialog.py +++ b/tests/functional/test_connection_cfg_dialog.py @@ -5,7 +5,7 @@ from PyQt5.QtCore import Qt from PyQt5.QtTest import QTest from sakia.data.processors import ConnectionsProcessor from sakia.gui.dialogs.connection_cfg import ConnectionConfigController -from ..helpers import click_on_top_message_box +from tests.helpers import click_on_top_message_box def assert_key_parameters_behaviour(connection_config_dialog, user): @@ -64,7 +64,7 @@ async def test_register_empty_blockchain(application, fake_server, bob): @pytest.mark.asyncio -async def test_connect(application, simple_fake_server, bob): +async def test_connect(application, fake_server_with_blockchain, bob): connection_config_dialog = ConnectionConfigController.create_connection(None, application) def close_dialog(): @@ -89,11 +89,11 @@ async def test_connect(application, simple_fake_server, bob): application.loop.call_later(10, close_dialog) asyncio.ensure_future(exec_test()) await connection_config_dialog.async_exec() - await simple_fake_server.close() + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_connect_wrong_uid(application, simple_fake_server, wrong_bob_uid, bob): +async def test_connect_wrong_uid(application, fake_server_with_blockchain, wrong_bob_uid, bob): connection_config_dialog = ConnectionConfigController.create_connection(None, application) def close_dialog(): @@ -115,11 +115,11 @@ Yours : {0}, the network : {1}""".format(wrong_bob_uid.uid, bob.uid) application.loop.call_later(10, close_dialog) asyncio.ensure_future(exec_test()) await connection_config_dialog.async_exec() - await simple_fake_server.close() + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_connect_wrong_pubkey(application, simple_fake_server, wrong_bob_pubkey, bob): +async def test_connect_wrong_pubkey(application, fake_server_with_blockchain, wrong_bob_pubkey, bob): connection_config_dialog = ConnectionConfigController.create_connection(None, application) def close_dialog(): @@ -141,12 +141,12 @@ Yours : {0}, the network : {1}""".format(wrong_bob_pubkey.pubkey, bob.pubkey) application.loop.call_later(10, close_dialog) asyncio.ensure_future(exec_test()) await connection_config_dialog.async_exec() - await simple_fake_server.close() + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_connect_pubkey_wrong_uid(application, simple_fake_server, wrong_bob_uid, bob): +async def test_connect_pubkey_wrong_uid(application, fake_server_with_blockchain, wrong_bob_uid, bob): connection_config_dialog = ConnectionConfigController.create_connection(None, application) def close_dialog(): @@ -169,4 +169,4 @@ Yours : {0}, the network : {1}""".format(wrong_bob_uid.uid, bob.uid) application.loop.call_later(10, close_dialog) asyncio.ensure_future(exec_test()) await connection_config_dialog.async_exec() - await simple_fake_server.close() + await fake_server_with_blockchain.close() diff --git a/tests/functional/test_contacts_dialog.py b/tests/functional/test_contacts_dialog.py index 204628b7fb553127d6e14b848385a9b4190d6fb6..272783d07711349f07df362fbee9c813423f62a1 100644 --- a/tests/functional/test_contacts_dialog.py +++ b/tests/functional/test_contacts_dialog.py @@ -5,11 +5,10 @@ from PyQt5.QtCore import QLocale, Qt, QEvent, QModelIndex from PyQt5.QtTest import QTest from PyQt5.QtWidgets import QDialogButtonBox from sakia.gui.dialogs.contact.controller import ContactController -from ..helpers import click_on_top_message_box @pytest.mark.asyncio -async def test_add_contact(application_with_one_connection, fake_server): +async def test_add_contact(application_with_one_connection, fake_server_with_blockchain): contact_dialog = ContactController.create(None, application_with_one_connection) def close_dialog(): @@ -26,11 +25,11 @@ async def test_add_contact(application_with_one_connection, fake_server): application_with_one_connection.loop.call_later(10, close_dialog) asyncio.ensure_future(exec_test()) await contact_dialog.async_exec() - await fake_server.close() + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_edit_contact(application_with_one_connection, fake_server): +async def test_edit_contact(application_with_one_connection, fake_server_with_blockchain): contacts_repo = application_with_one_connection.db.contacts_repo contacts_repo.insert(Contact(currency="test_currency", pubkey="7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ", @@ -55,11 +54,11 @@ async def test_edit_contact(application_with_one_connection, fake_server): application_with_one_connection.loop.call_later(10, close_dialog) asyncio.ensure_future(exec_test()) await contact_dialog.async_exec() - await fake_server.close() + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_remove_contact(application_with_one_connection, fake_server): +async def test_remove_contact(application_with_one_connection, fake_server_with_blockchain): contacts_repo = application_with_one_connection.db.contacts_repo contacts_repo.insert(Contact(currency="test_currency", pubkey="7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ", @@ -83,11 +82,11 @@ async def test_remove_contact(application_with_one_connection, fake_server): application_with_one_connection.loop.call_later(10, close_dialog) asyncio.ensure_future(exec_test()) await contact_dialog.async_exec() - await fake_server.close() + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_clear_selection(application_with_one_connection, fake_server): +async def test_clear_selection(application_with_one_connection, fake_server_with_blockchain): contacts_repo = application_with_one_connection.db.contacts_repo contacts_repo.insert(Contact(currency="test_currency", pubkey="7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ", @@ -117,4 +116,4 @@ async def test_clear_selection(application_with_one_connection, fake_server): application_with_one_connection.loop.call_later(10, close_dialog) asyncio.ensure_future(exec_test()) await contact_dialog.async_exec() - await fake_server.close() + await fake_server_with_blockchain.close() diff --git a/tests/functional/test_transfer_dialog.py b/tests/functional/test_transfer_dialog.py index f89e4024557fea531eaa6a575780d63c41745a47..d6f5a6de5d50ae24178bad74e9001e630100aed8 100644 --- a/tests/functional/test_transfer_dialog.py +++ b/tests/functional/test_transfer_dialog.py @@ -8,7 +8,7 @@ from duniterpy.documents import Transaction @pytest.mark.asyncio -async def test_transfer(application_with_one_connection, simple_fake_server, bob, alice): +async def test_transfer(application_with_one_connection, fake_server_with_blockchain, bob, alice): transfer_dialog = TransferController.create(None, application_with_one_connection) def close_dialog(): @@ -27,9 +27,9 @@ async def test_transfer(application_with_one_connection, simple_fake_server, bob assert transfer_dialog.view.button_box.button(QDialogButtonBox.Ok).isEnabled() QTest.mouseClick(transfer_dialog.view.button_box.button(QDialogButtonBox.Ok), Qt.LeftButton) await asyncio.sleep(0.2) - assert isinstance(simple_fake_server.forge.pool[0], Transaction) + assert isinstance(fake_server_with_blockchain.forge.pool[0], Transaction) application_with_one_connection.loop.call_later(10, close_dialog) asyncio.ensure_future(exec_test()) await transfer_dialog.async_exec() - await simple_fake_server.close() + await fake_server_with_blockchain.close() diff --git a/tests/technical/test_blockchain_service.py b/tests/technical/test_blockchain_service.py index 22216985ba44a17bed2b4126a1582efc6addc4f3..ba8a872a117e4e42d9be60ddaade91a79ea60431 100644 --- a/tests/technical/test_blockchain_service.py +++ b/tests/technical/test_blockchain_service.py @@ -4,16 +4,16 @@ import pytest @pytest.mark.asyncio -async def test_new_block_with_ud(application_with_one_connection, fake_server): +async def test_new_block_with_ud(application_with_one_connection, fake_server_with_blockchain): previous_ud = application_with_one_connection.blockchain_service.previous_ud() - fake_server.forge.forge_block() - fake_server.forge.generate_dividend() - fake_server.forge.forge_block() - fake_server.forge.generate_dividend() - fake_server.forge.forge_block() - new_blocks = fake_server.forge.blocks[-3:] + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.generate_dividend() + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.generate_dividend() + fake_server_with_blockchain.forge.forge_block() + new_blocks = fake_server_with_blockchain.forge.blocks[-3:] application_with_one_connection.blockchain_service.handle_new_blocks( new_blocks) previous_ud_after_parse = application_with_one_connection.blockchain_service.previous_ud() assert previous_ud_after_parse > previous_ud - await fake_server.close() \ No newline at end of file + await fake_server_with_blockchain.close() \ No newline at end of file diff --git a/tests/technical/test_documents_service.py b/tests/technical/test_documents_service.py index 67e0ca445f4344b8c6904cacf9b63722baaa113a..1ea541d63ddb66aa317ef9aed060ce57e8817f75 100644 --- a/tests/technical/test_documents_service.py +++ b/tests/technical/test_documents_service.py @@ -3,12 +3,12 @@ from sakia.data.entities import Transaction @pytest.mark.asyncio -async def test_send_more_than_40_sources(application_with_one_connection, fake_server, bob, alice): +async def test_send_more_than_40_sources(application_with_one_connection, fake_server_with_blockchain, bob, alice): for i in range(0, 60): - fake_server.forge.generate_dividend() - fake_server.forge.forge_block() + fake_server_with_blockchain.forge.generate_dividend() + fake_server_with_blockchain.forge.forge_block() - new_blocks = fake_server.forge.blocks[-60:] + new_blocks = fake_server_with_blockchain.forge.blocks[-60:] changed_tx, new_tx, new_ud = await application_with_one_connection.transactions_service.handle_new_blocks(new_blocks) await application_with_one_connection.sources_service.refresh_sources_of_pubkey(bob.key.pubkey, new_tx, new_ud, None) @@ -27,4 +27,4 @@ async def test_send_more_than_40_sources(application_with_one_connection, fake_s amount_after_send = application_with_one_connection.sources_service.amount(bob.key.pubkey) assert amount_after_send == 0 - await fake_server.close() + await fake_server_with_blockchain.close() diff --git a/tests/technical/test_identities_service.py b/tests/technical/test_identities_service.py index f450785a499d836d1743b424db745d6b4690c87b..f9842c6bfe1133e976343a87c46e050c80bd0fda 100644 --- a/tests/technical/test_identities_service.py +++ b/tests/technical/test_identities_service.py @@ -5,11 +5,11 @@ import pytest @pytest.mark.asyncio -async def test_new_block_with_certs(application_with_one_connection, fake_server, bob, alice): +async def test_new_block_with_certs(application_with_one_connection, fake_server_with_blockchain, bob, alice): certs_before_send = application_with_one_connection.identities_service.certifications_sent( bob.key.pubkey) - alice_user_identity = fake_server.forge.user_identities[bob.key.pubkey] - alice_identity = Identity(currency=fake_server.forge.currency, + alice_user_identity = fake_server_with_blockchain.forge.user_identities[bob.key.pubkey] + alice_identity = Identity(currency=fake_server_with_blockchain.forge.currency, pubkey=alice.key.pubkey, uid=alice.uid, blockstamp=alice_user_identity.blockstamp, @@ -22,23 +22,23 @@ async def test_new_block_with_certs(application_with_one_connection, fake_server bob.key.pubkey) assert len(certs_after_send) == len(certs_before_send) + 1 assert certs_after_send[0].written_on == -1 - assert isinstance(fake_server.forge.pool[0], Certification) - fake_server.forge.forge_block() - fake_server.forge.forge_block() - fake_server.forge.forge_block() - new_blocks = fake_server.forge.blocks[-3:] + assert isinstance(fake_server_with_blockchain.forge.pool[0], Certification) + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + new_blocks = fake_server_with_blockchain.forge.blocks[-3:] await application_with_one_connection.identities_service.handle_new_blocks( new_blocks) certs_after_parse = application_with_one_connection.identities_service.certifications_sent( bob.key.pubkey) assert len(certs_after_parse) == len(certs_after_send) - assert certs_after_parse[0].written_on == fake_server.forge.blocks[-3].number - await fake_server.close() + assert certs_after_parse[0].written_on == fake_server_with_blockchain.forge.blocks[-3].number + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_new_block_with_idty(application_with_one_connection, john, simple_fake_server): - john_identity = Identity(currency=simple_fake_server.forge.currency, +async def test_new_block_with_idty(application_with_one_connection, john, fake_server_with_blockchain): + john_identity = Identity(currency=fake_server_with_blockchain.forge.currency, pubkey=john.key.pubkey, uid=john.uid, blockstamp=john.blockstamp, @@ -53,14 +53,14 @@ async def test_new_block_with_idty(application_with_one_connection, john, simple john_found = application_with_one_connection.db.identities_repo.get_one(pubkey=john_identity.pubkey) assert john_found.written is False - simple_fake_server.forge.forge_block() - simple_fake_server.forge.push(john.identity()) - simple_fake_server.forge.push(john.join(BlockUID.empty())) - simple_fake_server.forge.forge_block() - simple_fake_server.forge.forge_block() - new_blocks = simple_fake_server.forge.blocks[-3:] + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.push(john.identity()) + fake_server_with_blockchain.forge.push(john.join(BlockUID.empty())) + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + new_blocks = fake_server_with_blockchain.forge.blocks[-3:] await application_with_one_connection.identities_service.handle_new_blocks( new_blocks) john_found = application_with_one_connection.db.identities_repo.get_one(pubkey=john_identity.pubkey) assert john_found.written is True - await simple_fake_server.close() + await fake_server_with_blockchain.close() diff --git a/tests/technical/test_sources_service.py b/tests/technical/test_sources_service.py index bb65798ccc55ef9bb70c2d3645993329a6337c3f..8517560626e4e6391cec0cce6e1c8f5a53defa62 100644 --- a/tests/technical/test_sources_service.py +++ b/tests/technical/test_sources_service.py @@ -4,58 +4,58 @@ from sakia.data.processors import TransactionsProcessor @pytest.mark.asyncio -async def test_receive_source(application_with_one_connection, fake_server, bob, alice): +async def test_receive_source(application_with_one_connection, fake_server_with_blockchain, bob, alice): amount = application_with_one_connection.sources_service.amount(bob.key.pubkey) - fake_server.forge.push(alice.send_money(150, fake_server.forge.user_identities[alice.key.pubkey].sources, bob, - fake_server.forge.blocks[-1].blockUID, "Test receive")) - fake_server.forge.forge_block() - fake_server.forge.forge_block() - fake_server.forge.forge_block() - new_blocks = fake_server.forge.blocks[-3:] + fake_server_with_blockchain.forge.push(alice.send_money(150, fake_server_with_blockchain.forge.user_identities[alice.key.pubkey].sources, bob, + fake_server_with_blockchain.forge.blocks[-1].blockUID, "Test receive")) + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + new_blocks = fake_server_with_blockchain.forge.blocks[-3:] changed_tx, new_tx, new_ud = await application_with_one_connection.transactions_service.handle_new_blocks(new_blocks) await application_with_one_connection.sources_service.refresh_sources(new_tx, new_ud) assert amount + 150 == application_with_one_connection.sources_service.amount(bob.key.pubkey) - await fake_server.close() + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_send_source(application_with_one_connection, fake_server, bob, alice): +async def test_send_source(application_with_one_connection, fake_server_with_blockchain, bob, alice): amount = application_with_one_connection.sources_service.amount(bob.key.pubkey) - fake_server.forge.push(bob.send_money(150, fake_server.forge.user_identities[bob.key.pubkey].sources, alice, - fake_server.forge.blocks[-1].blockUID, "Test receive")) - fake_server.forge.forge_block() - fake_server.forge.forge_block() - fake_server.forge.forge_block() - new_blocks = fake_server.forge.blocks[-3:] + fake_server_with_blockchain.forge.push(bob.send_money(150, fake_server_with_blockchain.forge.user_identities[bob.key.pubkey].sources, alice, + fake_server_with_blockchain.forge.blocks[-1].blockUID, "Test receive")) + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + new_blocks = fake_server_with_blockchain.forge.blocks[-3:] changed_tx, new_tx, new_ud = await application_with_one_connection.transactions_service.handle_new_blocks(new_blocks) await application_with_one_connection.sources_service.refresh_sources(new_tx, new_ud) assert amount - 150 == application_with_one_connection.sources_service.amount(bob.key.pubkey) - await fake_server.close() + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_destruction(application_with_one_connection, fake_server, bob, alice): +async def test_destruction(application_with_one_connection, fake_server_with_blockchain, bob, alice): amount = application_with_one_connection.sources_service.amount(bob.key.pubkey) - fake_server.forge.push(bob.send_money(amount - 80, fake_server.forge.user_identities[bob.key.pubkey].sources, alice, - fake_server.forge.blocks[-1].blockUID, "Test receive")) - fake_server.forge.forge_block() - fake_server.forge.forge_block() - fake_server.forge.forge_block() - new_blocks = fake_server.forge.blocks[-3:] + fake_server_with_blockchain.forge.push(bob.send_money(amount - 80, fake_server_with_blockchain.forge.user_identities[bob.key.pubkey].sources, alice, + fake_server_with_blockchain.forge.blocks[-1].blockUID, "Test receive")) + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + new_blocks = fake_server_with_blockchain.forge.blocks[-3:] changed_tx, new_tx, new_ud = await application_with_one_connection.transactions_service.handle_new_blocks(new_blocks) await application_with_one_connection.sources_service.refresh_sources(new_tx, new_ud) assert 0 == application_with_one_connection.sources_service.amount(bob.key.pubkey) tx_after_parse = application_with_one_connection.transactions_service.transfers(bob.key.pubkey) assert tx_after_parse[-1].comment == "Too low balance" - await fake_server.close() + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_send_tx_then_cancel(application_with_one_connection, fake_server, bob, alice): +async def test_send_tx_then_cancel(application_with_one_connection, fake_server_with_blockchain, bob, alice): tx_before_send = application_with_one_connection.transactions_service.transfers(bob.key.pubkey) sources_before_send = application_with_one_connection.sources_service.amount(bob.key.pubkey) bob_connection = application_with_one_connection.db.connections_repo.get_one(pubkey=bob.key.pubkey) - fake_server.reject_next_post = True + fake_server_with_blockchain.reject_next_post = True await application_with_one_connection.documents_service.send_money(bob_connection, bob.salt, bob.password, @@ -78,4 +78,4 @@ async def test_send_tx_then_cancel(application_with_one_connection, fake_server, assert len(tx_before_send) + 1 == len(tx_after_cancel) assert sources_before_send == sources_after_cancel - await fake_server.close() \ No newline at end of file + await fake_server_with_blockchain.close() \ No newline at end of file diff --git a/tests/technical/test_transactions_service.py b/tests/technical/test_transactions_service.py index 2d45e07737402b50c3839722545f1d8e59db6275..12281a5e3f4efbff13005c648e608cdd7df302d5 100644 --- a/tests/technical/test_transactions_service.py +++ b/tests/technical/test_transactions_service.py @@ -3,7 +3,7 @@ from sakia.data.entities import Transaction @pytest.mark.asyncio -async def test_send_tx_then_validate(application_with_one_connection, fake_server, bob, alice): +async def test_send_tx_then_validate(application_with_one_connection, fake_server_with_blockchain, bob, alice): tx_before_send = application_with_one_connection.transactions_service.transfers(bob.key.pubkey) bob_connection = application_with_one_connection.db.connections_repo.get_one(pubkey=bob.key.pubkey) await application_with_one_connection.documents_service.send_money(bob_connection, @@ -14,45 +14,45 @@ async def test_send_tx_then_validate(application_with_one_connection, fake_serve assert len(tx_before_send) + 1 == len(tx_after_send) assert tx_after_send[-1].state is Transaction.AWAITING assert tx_after_send[-1].written_block == 0 - fake_server.forge.forge_block() - fake_server.forge.forge_block() - fake_server.forge.forge_block() - new_blocks = fake_server.forge.blocks[-3:] + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + new_blocks = fake_server_with_blockchain.forge.blocks[-3:] await application_with_one_connection.transactions_service.handle_new_blocks(new_blocks) tx_after_parse = application_with_one_connection.transactions_service.transfers(bob.key.pubkey) assert tx_after_parse[-1].state is Transaction.VALIDATED - assert tx_after_parse[-1].written_block == fake_server.forge.blocks[-3].number - await fake_server.close() + assert tx_after_parse[-1].written_block == fake_server_with_blockchain.forge.blocks[-3].number + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_receive_tx(application_with_one_connection, fake_server, bob, alice): +async def test_receive_tx(application_with_one_connection, fake_server_with_blockchain, bob, alice): tx_before_send = application_with_one_connection.transactions_service.transfers(bob.key.pubkey) - fake_server.forge.push(alice.send_money(10, fake_server.forge.user_identities[alice.key.pubkey].sources, bob, - fake_server.forge.blocks[-1].blockUID, "Test receive")) - fake_server.forge.forge_block() - fake_server.forge.forge_block() - fake_server.forge.forge_block() - new_blocks = fake_server.forge.blocks[-3:] + fake_server_with_blockchain.forge.push(alice.send_money(10, fake_server_with_blockchain.forge.user_identities[alice.key.pubkey].sources, bob, + fake_server_with_blockchain.forge.blocks[-1].blockUID, "Test receive")) + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + new_blocks = fake_server_with_blockchain.forge.blocks[-3:] await application_with_one_connection.transactions_service.handle_new_blocks(new_blocks) tx_after_parse = application_with_one_connection.transactions_service.transfers(bob.key.pubkey) assert tx_after_parse[-1].state is Transaction.VALIDATED assert len(tx_before_send) + 1 == len(tx_after_parse) - await fake_server.close() + await fake_server_with_blockchain.close() @pytest.mark.asyncio -async def test_issue_dividend(application_with_one_connection, fake_server, bob): +async def test_issue_dividend(application_with_one_connection, fake_server_with_blockchain, bob): dividends_before_send = application_with_one_connection.transactions_service.dividends(bob.key.pubkey) - fake_server.forge.forge_block() - fake_server.forge.generate_dividend() - fake_server.forge.forge_block() - fake_server.forge.forge_block() - fake_server.forge.generate_dividend() - fake_server.forge.forge_block() - fake_server.forge.forge_block() - new_blocks = fake_server.forge.blocks[-5:] + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.generate_dividend() + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.generate_dividend() + fake_server_with_blockchain.forge.forge_block() + fake_server_with_blockchain.forge.forge_block() + new_blocks = fake_server_with_blockchain.forge.blocks[-5:] await application_with_one_connection.transactions_service.handle_new_blocks(new_blocks) dividends_after_parse = application_with_one_connection.transactions_service.dividends(bob.key.pubkey) assert len(dividends_before_send) + 2 == len(dividends_after_parse) - await fake_server.close() + await fake_server_with_blockchain.close() diff --git a/tests/unit/money/test_relative_zsum.py b/tests/unit/money/test_relative_zsum.py index 7aad08cf085e0549b70ba2dd5becbb14206133db..e9f11b1f07fb5f8266cf116599a6c117f6b2207f 100644 --- a/tests/unit/money/test_relative_zsum.py +++ b/tests/unit/money/test_relative_zsum.py @@ -14,7 +14,7 @@ def test_differential(application_with_one_connection, bob): assert value == approx(-3.521619496) -def test_localized_no_si(application_with_one_connection, fake_server, bob): +def test_localized_no_si(application_with_one_connection, bob): referential = RelativeZSum(110, bob.currency, application_with_one_connection, None) value = referential.localized(units=True) assert value == "-3.53 R0 UD"