diff --git a/src/cutecoin/tests/core/account.py b/src/cutecoin/tests/core/account.py new file mode 100644 index 0000000000000000000000000000000000000000..4fbbf67e28065fb333b3dc592c124d79e06d0bd7 --- /dev/null +++ b/src/cutecoin/tests/core/account.py @@ -0,0 +1,40 @@ +import sys +import unittest +import asyncio +import quamash +import logging +from PyQt5.QtCore import QLocale +from cutecoin.core.registry.identities import IdentitiesRegistry +from cutecoin.core import Account +from cutecoin.tests import get_application + + +class TestAccount(unittest.TestCase): + def setUp(self): + self.qapplication = get_application() + QLocale.setDefault(QLocale("en_GB")) + self.lp = quamash.QEventLoop(self.qapplication) + asyncio.set_event_loop(self.lp) + self.identities_registry = IdentitiesRegistry() + + def tearDown(self): + try: + self.lp.close() + finally: + asyncio.set_event_loop(None) + + def test_load_save_account(self): + account = Account("test_salt", "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk", + "test_uid", [], [], [], self.identities_registry) + json_data = account.jsonify() + account_from_json = Account.load(json_data, self.identities_registry) + + self.assertEqual(account.name, account_from_json.name) + self.assertEqual(account.pubkey, account_from_json.pubkey) + self.assertEqual(len(account.communities), len(account_from_json.communities)) + self.assertEqual(len(account.wallets), len(account.wallets)) + +if __name__ == '__main__': + logging.basicConfig(stream=sys.stderr) + logging.getLogger().setLevel(logging.DEBUG) + unittest.main() diff --git a/src/cutecoin/tests/core/community.py b/src/cutecoin/tests/core/community.py new file mode 100644 index 0000000000000000000000000000000000000000..97ff383eac06a9366ce2c426e87e55ca5ac10260 --- /dev/null +++ b/src/cutecoin/tests/core/community.py @@ -0,0 +1,40 @@ +import sys +import unittest +import asyncio +import quamash +import logging +from PyQt5.QtCore import QLocale +from cutecoin.core.registry.identities import IdentitiesRegistry +from cutecoin.core.net.api.bma.access import BmaAccess +from cutecoin.core.net.network import Network +from cutecoin.core import Community +from cutecoin.tests import get_application + + +class TestCommunity(unittest.TestCase): + def setUp(self): + self.qapplication = get_application() + QLocale.setDefault(QLocale("en_GB")) + self.lp = quamash.QEventLoop(self.qapplication) + asyncio.set_event_loop(self.lp) + + def tearDown(self): + try: + self.lp.close() + finally: + asyncio.set_event_loop(None) + + def test_load_save_community(self): + network = Network("test_currency", []) + bma_access = BmaAccess([], network) + community = Community("test_currency", network, bma_access) + + json_data = community.jsonify() + community_from_json = Community.load(json_data) + self.assertEqual(community.name, community_from_json.name) + self.assertEqual(len(community.network._nodes), len(community_from_json.network._nodes)) + +if __name__ == '__main__': + logging.basicConfig(stream=sys.stderr) + logging.getLogger().setLevel(logging.DEBUG) + unittest.main() diff --git a/src/cutecoin/tests/core/wallet.py b/src/cutecoin/tests/core/wallet.py new file mode 100644 index 0000000000000000000000000000000000000000..05db39febcabe72f3ce9f9c653055a1e117123e9 --- /dev/null +++ b/src/cutecoin/tests/core/wallet.py @@ -0,0 +1,40 @@ +import sys +import unittest +import asyncio +import quamash +import logging +from PyQt5.QtCore import QLocale +from cutecoin.core.registry.identities import IdentitiesRegistry +from cutecoin.core import Wallet +from cutecoin.tests import get_application + + +class TestWallet(unittest.TestCase): + def setUp(self): + self.qapplication = get_application() + QLocale.setDefault(QLocale("en_GB")) + self.lp = quamash.QEventLoop(self.qapplication) + asyncio.set_event_loop(self.lp) + self.identities_registry = IdentitiesRegistry({}) + + def tearDown(self): + try: + self.lp.close() + finally: + asyncio.set_event_loop(None) + + def test_load_save_wallet(self): + wallet = Wallet(0, "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ", + "Wallet 1", self.identities_registry) + + json_data = wallet.jsonify() + wallet_from_json = Wallet.load(json_data, self.identities_registry) + self.assertEqual(wallet.walletid, wallet_from_json.walletid) + self.assertEqual(wallet.pubkey, wallet_from_json.pubkey) + self.assertEqual(wallet.name, wallet_from_json.name) + self.assertEqual(wallet._identities_registry, wallet_from_json._identities_registry) + +if __name__ == '__main__': + logging.basicConfig(stream=sys.stderr) + logging.getLogger().setLevel(logging.DEBUG) + unittest.main() diff --git a/src/cutecoin/tests/gui/main_window/test_main_window_dialogs.py b/src/cutecoin/tests/gui/main_window/test_main_window_dialogs.py index 29051bf66c720677fe840c8abcf03f7ceb621ea9..a3f55041ebca13c621bb9cdeab2c31f4a6cf5b51 100644 --- a/src/cutecoin/tests/gui/main_window/test_main_window_dialogs.py +++ b/src/cutecoin/tests/gui/main_window/test_main_window_dialogs.py @@ -7,8 +7,7 @@ from PyQt5.QtNetwork import QNetworkAccessManager from cutecoin.gui.mainwindow import MainWindow from cutecoin.core.app import Application from cutecoin.tests import get_application - -from cutecoin.tests.stubs.core.registry import IdentitiesRegistry +from cutecoin.core.registry.identities import IdentitiesRegistry # Qapplication cause a core dumped when re-run in setup # set it as global var diff --git a/src/cutecoin/tests/stubs/__init__.py b/src/cutecoin/tests/stubs/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/cutecoin/tests/stubs/core/__init__.py b/src/cutecoin/tests/stubs/core/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/cutecoin/tests/stubs/core/net/__init__.py b/src/cutecoin/tests/stubs/core/net/__init__.py deleted file mode 100644 index 8779e25f1cc4a979a682c0b5fb9e2833540fe6df..0000000000000000000000000000000000000000 --- a/src/cutecoin/tests/stubs/core/net/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .network import Network \ No newline at end of file diff --git a/src/cutecoin/tests/stubs/core/net/network.py b/src/cutecoin/tests/stubs/core/net/network.py deleted file mode 100644 index d37d8adf2faadc326bd319108644beb880efa4af..0000000000000000000000000000000000000000 --- a/src/cutecoin/tests/stubs/core/net/network.py +++ /dev/null @@ -1,97 +0,0 @@ -""" -Created on 24 févr. 2015 - -@author: inso -""" -import asyncio - -from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject - - -class Network(QObject): - """ - A network is managing nodes polling and crawling of a - given community. - """ - nodes_changed = pyqtSignal() - new_block_mined = pyqtSignal(int) - - def __init__(self, currency, nodes): - """ - Constructor of a network - - :param str currency: The currency name of the community - :param list nodes: The root nodes of the network - """ - super().__init__() - self.currency = currency - - @classmethod - def create(cls, node): - nodes = [node] - network = cls(node.currency, nodes) - return network - - def merge_with_json(self, json_data): - pass - - @classmethod - def from_json(cls, currency, json_data): - nodes = [] - network = cls(currency, nodes) - return network - - def jsonify(self): - data = [] - return data - - @property - def quality(self): - return 0.33 - - def stop_coroutines(self): - pass - - def continue_crawling(self): - return False - - @property - def synced_nodes(self): - return self.nodes - - @property - def online_nodes(self): - return self.nodes - - @property - def nodes(self): - """ - Get all knew nodes. - """ - return self._nodes - - @property - def root_nodes(self): - return self._root_nodes - - @property - def latest_block(self): - return 20000 - - def add_node(self, node): - pass - - def add_root_node(self, node): - pass - - def remove_root_node(self, index):pass - - def is_root_node(self, node): - return True - - def root_node_index(self, index): - return self.nodes[0] - - @asyncio.coroutine - def discover_network(self): - pass diff --git a/src/cutecoin/tests/stubs/core/registry/__init__.py b/src/cutecoin/tests/stubs/core/registry/__init__.py deleted file mode 100644 index 4ab046a19ff274331c3bc1ffd25e16bd19985478..0000000000000000000000000000000000000000 --- a/src/cutecoin/tests/stubs/core/registry/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .identities import IdentitiesRegistry -from .identity import Identity \ No newline at end of file diff --git a/src/cutecoin/tests/stubs/core/registry/identities.py b/src/cutecoin/tests/stubs/core/registry/identities.py deleted file mode 100644 index 1a2a90dd30fad8327cba72457bc27e3626e453d6..0000000000000000000000000000000000000000 --- a/src/cutecoin/tests/stubs/core/registry/identities.py +++ /dev/null @@ -1,29 +0,0 @@ -from PyQt5.QtCore import QObject, pyqtSlot, pyqtSignal, QTimer -from ucoinpy.api import bma -from .identity import Identity - -import asyncio - - -class IdentitiesRegistry: - def __init__(self, instances={}): - pass - - def load_json(self, json_data): - pass - - def jsonify(self): - return {'registry': []} - - def lookup(self, pubkey, community): - identity = Identity.empty(pubkey) - return identity - - @asyncio.coroutine - def future_find(self, pubkey, community): - identity = Identity.empty(pubkey) - yield from asyncio.sleep(1) - return identity - - def from_metadata(self, metadata): - return Identity() diff --git a/src/cutecoin/tests/stubs/core/registry/identity.py b/src/cutecoin/tests/stubs/core/registry/identity.py deleted file mode 100644 index 9c3faee1db54e537a7444f72f4e74db71b6255c9..0000000000000000000000000000000000000000 --- a/src/cutecoin/tests/stubs/core/registry/identity.py +++ /dev/null @@ -1,114 +0,0 @@ -""" -Created on 11 févr. 2014 - -@author: inso -""" - -import logging -import time -import asyncio - -from ucoinpy.documents.certification import SelfCertification -from cutecoin.tools.exceptions import Error, NoPeerAvailable,\ - MembershipNotFoundError -from ucoinpy.api import bma -from ucoinpy.api.bma import PROTOCOL_VERSION -from PyQt5.QtCore import QObject, pyqtSignal - - -class Identity(QObject): - """ - A person with a uid and a pubkey - """ - FOUND = 1 - NOT_FOUND = 0 - - inner_data_changed = pyqtSignal(str) - - def __init__(self, uid, pubkey, status): - """ - Initializing a person object. - - :param str uid: The person uid, also known as its uid on the network - :param str pubkey: The person pubkey - :param int status: The local status of the identity - """ - super().__init__() - assert(status in (Identity.FOUND, Identity.NOT_FOUND)) - self.uid = uid - self.pubkey = pubkey - self.status = status - - @classmethod - def empty(cls, pubkey): - return cls("", pubkey, Identity.NOT_FOUND) - - @classmethod - def from_metadata(cls, metadata): - return cls(metadata["text"], metadata["id"], Identity.NOT_FOUND) - - @classmethod - def from_json(cls, json_data): - """ - Create a person from json data - - :param dict json_data: The person as a dict in json format - :return: A new person if pubkey wasn't known, else a new person instance. - """ - pubkey = json_data['pubkey'] - uid = json_data['uid'] - status = json_data['status'] - - return cls(uid, pubkey, status) - - @asyncio.coroutine - def selfcert(self, community): - yield from asyncio.sleep(1) - return None - - def get_join_date(self, community): - return time.time() + 100000000 - - def get_expiration_date(self, community): - return time.time() + 1000000000 - - def membership(self, community): - raise MembershipNotFoundError() - - def published_uid(self, community): - return False - - def is_member(self, community): - return False - - def certifiers_of(self, community): - return list() - - def unique_valid_certifiers_of(self, community): - return list() - - def certified_by(self, community): - return list() - - def unique_valid_certified_by(self, community): - return list() - - def membership_expiration_time(self, community): - current_time = time.time() - return current_time+1000000 - - def jsonify(self): - """ - Get the community as dict in json format. - :return: The community as a dict in json format - """ - data = {'uid': self.uid, - 'pubkey': self.pubkey, - 'status': self.status} - return data - - def __str__(self): - status_str = ("NOT_FOUND", "FOUND") - return "{0} - {1} - {2}".format(self.uid, - self.pubkey, - status_str[self.status]) \ No newline at end of file