Skip to content
Snippets Groups Projects
Commit a47441ac authored by unknown's avatar unknown
Browse files

Fixing a bug in community

Adding unit tests for community
parent 1fdef747
No related branches found
No related tags found
No related merge requests found
...@@ -5,10 +5,9 @@ from cutecoin.models.community import Community ...@@ -5,10 +5,9 @@ from cutecoin.models.community import Community
from cutecoin.models.community import Node from cutecoin.models.community import Node
@pytest.fixture
def mock_amendment_current_get(): def patch_amendment_current_get(*args, **kwargs):
mock_get = Mock(spec=ucoin.hdc.amendments.Current.__get__) return {
mock_get.return_value = {
"version": "1", "version": "1",
"currency": "beta_brousouf", "currency": "beta_brousouf",
"number": "2", "number": "2",
...@@ -27,69 +26,106 @@ def mock_amendment_current_get(): ...@@ -27,69 +26,106 @@ def mock_amendment_current_get():
], ],
"raw": "Version: 1\r\n...+31A6302161AC8F5938969E85399EB3415C237F93\r\n" "raw": "Version: 1\r\n...+31A6302161AC8F5938969E85399EB3415C237F93\r\n"
} }
return mock_get
@pytest.fixture
def mock_amendments_members_get(): def patch_amendments_members_get(*args, **kwargs):
mock_get = Mock(spec=ucoin.hdc.amendments.Current.__get__) return iter([{
mock_get.return_value = [{
"hash": "2E69197FAB029D8669EF85E82457A1587CA0ED9C", "hash": "2E69197FAB029D8669EF85E82457A1587CA0ED9C",
"value": "2E69197FAB029D8669EF85E82457A1587CA0ED9C" "value": "2E69197FAB029D8669EF85E82457A1587CA0ED9C"
}, },
{ {
"hash": "3F870197FAB029D8669EF85E82457A1587CA0ED9C",
"value": "3F870197FAB029D8669EF85E82457A1587CA0ED9C"
},
{
"hash": "3F69197FAB029D8669EF85E82457A1587CA0ED9C", "hash": "3F69197FAB029D8669EF85E82457A1587CA0ED9C",
"value": "3F69197FAB029D8669EF85E82457A1587CA0ED9C" "value": "3F69197FAB029D8669EF85E82457A1587CA0ED9C"
}] }])
return mock_get
@pytest.fixture
def mock_amendments_voters_get(): def patch_amendments_voters_get(*args, **kwargs):
mock_get = Mock(spec=ucoin.hdc.amendments.Current.__get__) return iter([{
mock_get.return_value = [{
"hash": "2E69197FAB029D8669EF85E82457A1587CA0ED9C", "hash": "2E69197FAB029D8669EF85E82457A1587CA0ED9C",
"value": "2E69197FAB029D8669EF85E82457A1587CA0ED9C" "value": "2E69197FAB029D8669EF85E82457A1587CA0ED9C"
}, },
{ {
"hash": "3F69197FAB029D8669EF85E82457A1587CA0ED9C", "hash": "3F870197FAB029D8669EF85E82457A1587CA0ED9C",
"value": "3F69197FAB029D8669EF85E82457A1587CA0ED9C" "value": "3F870197FAB029D8669EF85E82457A1587CA0ED9C"
}] }])
return mock_get
@pytest.fixture
def mock_node():
def node_use(request):
return request
mock = Mock(spec=Node, trust=True, hoster=True, server = "192.168.100.10", port = 3800)
mock.getText.return_value = "Mock node"
mock.use = node_use
return mock
class Test_Community():
def test_community_create(self, monkeypatch, mock_amendment_current_get):
pass
class Test_Community():
def test_community_create(self, monkeypatch, mock_node):
monkeypatch.setattr(ucoin.hdc.amendments.Current, '__get__', patch_amendment_current_get)
community = Community.create(mock_node)
assert community is not None
def test_community_dividend(self, monkeypatch):
pass
def test_community_dividend(self, monkeypatch, mock_node):
monkeypatch.setattr(ucoin.hdc.amendments.Current, '__get__', patch_amendment_current_get)
community = Community.create(mock_node)
assert community.dividend() == 100
def test_community_coin_minimal_power(self, monkeypatch): def test_community_coin_minimal_power(self, monkeypatch, mock_node):
pass monkeypatch.setattr(ucoin.hdc.amendments.Current, '__get__', patch_amendment_current_get)
community = Community.create(mock_node)
assert community.coin_minimal_power() == 0
def test_community_amendment_id(self, monkeypatch): def test_community_amendment_id(self, monkeypatch):
pass pass
def test_community_amendment_number(self, monkeypatch): def test_community_amendment_number(self, monkeypatch, mock_node):
pass monkeypatch.setattr(ucoin.hdc.amendments.Current, '__get__', patch_amendment_current_get)
community = Community.create(mock_node)
assert community.amendment_number() == 2
def test_community_person_quality(self, monkeypatch): def test_community_person_quality(self, monkeypatch, mock_node):
pass monkeypatch.setattr(ucoin.hdc.amendments.Current, '__get__', patch_amendment_current_get)
monkeypatch.setattr(ucoin.hdc.amendments.view.Members, '__get__', patch_amendments_members_get)
monkeypatch.setattr(ucoin.hdc.amendments.view.Voters, '__get__', patch_amendments_voters_get)
community = Community.create(mock_node)
assert community.person_quality("2E69197FAB029D8669EF85E82457A1587CA0ED9C") == "voter"
assert community.person_quality("3F69197FAB029D8669EF85E82457A1587CA0ED9C") == "member"
assert community.person_quality("3F870197FAB029D8669EF85E82457A1587CA0ED9C") == "voter"
assert community.person_quality("3F871197FAB029D8669EF85E82457A1587CA0ED9C") == "nothing"
def test_community_members_fingerprint(self, monkeypatch): def test_community_members_fingerprint(self, monkeypatch, mock_node):
pass monkeypatch.setattr(ucoin.hdc.amendments.Current, '__get__', patch_amendment_current_get)
monkeypatch.setattr(ucoin.hdc.amendments.view.Members, '__get__', patch_amendments_members_get)
monkeypatch.setattr(ucoin.hdc.amendments.view.Voters, '__get__', patch_amendments_voters_get)
community = Community.create(mock_node)
assert "2E69197FAB029D8669EF85E82457A1587CA0ED9C" in community.members_fingerprints()
assert "3F69197FAB029D8669EF85E82457A1587CA0ED9C" in community.members_fingerprints()
assert "3F870197FAB029D8669EF85E82457A1587CA0ED9C" in community.members_fingerprints()
assert "3F871197FAB029D8669EF85E82457A1587CA0ED9C" not in community.members_fingerprints()
def test_community_voters_fingerprint(self, monkeypatch): def test_community_voters_fingerprint(self, monkeypatch, mock_node):
pass monkeypatch.setattr(ucoin.hdc.amendments.Current, '__get__', patch_amendment_current_get)
monkeypatch.setattr(ucoin.hdc.amendments.view.Members, '__get__', patch_amendments_members_get)
monkeypatch.setattr(ucoin.hdc.amendments.view.Voters, '__get__', patch_amendments_voters_get)
community = Community.create(mock_node)
assert "2E69197FAB029D8669EF85E82457A1587CA0ED9C" in community.voters_fingerprints()
assert "3F870197FAB029D8669EF85E82457A1587CA0ED9C" in community.voters_fingerprints()
assert "3F871197FAB029D8669EF85E82457A1587CA0ED9C" not in community.voters_fingerprints()
def test_community_to_json(self): def test_community_to_json(self):
......
...@@ -3,10 +3,9 @@ import ucoinpy as ucoin ...@@ -3,10 +3,9 @@ import ucoinpy as ucoin
from mock import Mock from mock import Mock
from cutecoin.models.node import Node from cutecoin.models.node import Node
@pytest.fixture
def mock_peers_get(): def patch_peers_get(*args, **kwargs):
mock_get = Mock(spec=ucoin.ucg.peering.Peers.__get__) return iter([{
mock_get.return_value = [{
"version": "1", "version": "1",
"currency": "beta_brousouf", "currency": "beta_brousouf",
"fingerprint": "A70B8E8E16F91909B6A06DFB7EEF1651D9CCF468", "fingerprint": "A70B8E8E16F91909B6A06DFB7EEF1651D9CCF468",
...@@ -25,14 +24,12 @@ def mock_peers_get(): ...@@ -25,14 +24,12 @@ def mock_peers_get():
"ipv6": "", "ipv6": "",
"port": "3801", "port": "3801",
"signature": "-----BEGIN PGP SIGNATURE----- ... -----END PGP SIGNATURE-----" "signature": "-----BEGIN PGP SIGNATURE----- ... -----END PGP SIGNATURE-----"
}] }])
return mock_get
@pytest.fixture def patch_peer_get(*args, **kwargs):
def mock_peer_get(): return {
mock_get = Mock(spec=ucoin.ucg.peering.Peer.__get__)
mock_get.return_value = {
"version": "1", "version": "1",
"currency": "beta_brousouf", "currency": "beta_brousouf",
"fingerprint": "A70B8E8E16F91909B6A06DFB7EEF1651D9CCF468", "fingerprint": "A70B8E8E16F91909B6A06DFB7EEF1651D9CCF468",
...@@ -42,21 +39,20 @@ def mock_peer_get(): ...@@ -42,21 +39,20 @@ def mock_peer_get():
"port": "3800", "port": "3800",
"signature": "-----BEGIN PGP SIGNATURE----- ... -----END PGP SIGNATURE-----" "signature": "-----BEGIN PGP SIGNATURE----- ... -----END PGP SIGNATURE-----"
} }
return mock_get
class Test_Node(): class Test_Node():
def test_peers(self, monkeypatch, mock_peers_get): def test_peers(self, monkeypatch):
monkeypatch.setattr(ucoin.ucg.peering.Peers, '__get__', mock_peers_get) monkeypatch.setattr(ucoin.ucg.peering.Peers, '__get__', patch_peers_get)
node = Node("192.168.100.12", 3800) node = Node("192.168.100.12", 3800)
peers = node.peers()
assert peers[0]["ipv4"] == "192.168.100.10" assert (peer for peer in node.peers() if peer["ipv4"] == "192.168.100.10")
assert peers[1]["ipv4"] == "192.168.100.11" assert (peer for peer in node.peers() if peer["ipv4"] == "192.168.100.11")
def test_peering(self, monkeypatch, mock_peer_get): def test_peering(self, monkeypatch):
monkeypatch.setattr(ucoin.ucg.peering.Peer, '__get__', mock_peer_get) monkeypatch.setattr(ucoin.ucg.peering.Peer, '__get__', patch_peer_get)
node = Node("192.168.100.12", 3800) node = Node("192.168.100.12", 3800)
peering = node.peering() peering = node.peering()
......
import pytest import pytest
import ucoinpy as ucoin import ucoinpy as ucoin
from mock import Mock from mock import Mock, patch
from cutecoin.models.wallet import Wallet from cutecoin.models.wallet import Wallet
from cutecoin.models.community import Community from cutecoin.models.community import Community, CommunityNetwork
@pytest.fixture @pytest.fixture
def mock_coins_list_get(): def mock_community():
mock_get = Mock(spec=ucoin.hdc.coins.List.__get__) def community_request(request):
mock_get.return_value = { if type(request) is ucoin.hdc.coins.List:
return {
"owner": "86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8", "owner": "86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8",
"coins": [{ "coins": [{
"issuer": "86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8", "issuer": "86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8",
...@@ -17,22 +18,11 @@ def mock_coins_list_get(): ...@@ -17,22 +18,11 @@ def mock_coins_list_get():
"ids": ["10-1-2-F-14"] "ids": ["10-1-2-F-14"]
}] }]
} }
return mock_get
@pytest.fixture
def mock_community_request(request, mock_coins_list_get):
if request == ucoin.hdc.coins.List.get:
return mock_coins_list_get()
else: else:
return "Failed !" assert 0
mock_network=Mock(spec=CommunityNetwork, request=community_request)
community = Mock(spec=Community, network=mock_network)
@pytest.fixture
def mock_community(mock_community_request):
community = Mock(spec=Community)
instance = community.return_value
instance.network.request.return_value = mock_community_request
return community return community
...@@ -48,12 +38,9 @@ class Test_Wallet: ...@@ -48,12 +38,9 @@ class Test_Wallet:
def test_wallet_value(self, mock_community): def test_wallet_value(self, mock_community):
wallet = Wallet([], mock_community) wallet = Wallet([], mock_community)
assert wallet.value() == 0
wallet.refresh_coins("86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8")
assert wallet.value() == 640 assert wallet.value() == 640
pass
def test_wallet_refresh_coins(self):
pass pass
......
...@@ -26,6 +26,9 @@ class Community(object): ...@@ -26,6 +26,9 @@ class Community(object):
An account is a member of a community if he is a member of the current amendment. An account is a member of a community if he is a member of the current amendment.
''' '''
self.network = network self.network = network
print(self.network)
print(self.network.request)
print(self.network.request(ucoin.hdc.amendments.Current()))
current_amendment = self.network.request(ucoin.hdc.amendments.Current()) current_amendment = self.network.request(ucoin.hdc.amendments.Current())
self.currency = current_amendment['currency'] self.currency = current_amendment['currency']
...@@ -70,12 +73,12 @@ class Community(object): ...@@ -70,12 +73,12 @@ class Community(object):
def dividend(self): def dividend(self):
current_amendment = self.network.request(ucoin.hdc.amendments.Current()) current_amendment = self.network.request(ucoin.hdc.amendments.Current())
return current_amendment['dividend'] return int(current_amendment['dividend'])
def coin_minimal_power(self): def coin_minimal_power(self):
current_amendment = self.network.request(ucoin.hdc.amendments.Current()) current_amendment = self.network.request(ucoin.hdc.amendments.Current())
if 'coinMinimalPower' in current_amendment.keys(): if 'coinMinimalPower' in current_amendment.keys():
return current_amendment['coinMinimalPower'] return int(current_amendment['coinMinimalPower'])
else: else:
return 0 return 0
...@@ -90,7 +93,7 @@ class Community(object): ...@@ -90,7 +93,7 @@ class Community(object):
def amendment_number(self): def amendment_number(self):
current_amendment = self.network.request(ucoin.hdc.amendments.Current()) current_amendment = self.network.request(ucoin.hdc.amendments.Current())
return current_amendment['number'] return int(current_amendment['number'])
def person_quality(self, fingerprint): def person_quality(self, fingerprint):
if (fingerprint in self.voters_fingerprints()): if (fingerprint in self.voters_fingerprints()):
...@@ -106,7 +109,7 @@ class Community(object): ...@@ -106,7 +109,7 @@ class Community(object):
''' '''
fingerprints = self.network.request( fingerprints = self.network.request(
ucoin.hdc.amendments.view.Members( ucoin.hdc.amendments.view.Members(
self.amendment_id())) amendment_id=self.amendment_id()))
members = [] members = []
for f in fingerprints: for f in fingerprints:
members.append(f['value']) members.append(f['value'])
...@@ -118,7 +121,7 @@ class Community(object): ...@@ -118,7 +121,7 @@ class Community(object):
''' '''
fingerprints = self.network.request( fingerprints = self.network.request(
ucoin.hdc.amendments.view.Voters( ucoin.hdc.amendments.view.Voters(
self.amendment_id())) amendment_id=self.amendment_id()))
voters = [] voters = []
for f in fingerprints: for f in fingerprints:
voters.append(f['value']) voters.append(f['value'])
......
...@@ -22,14 +22,14 @@ class CommunityNetwork(object): ...@@ -22,14 +22,14 @@ class CommunityNetwork(object):
def request(self, request, get_args={}): def request(self, request, get_args={}):
for node in self.trusts(): for node in self.trusts():
logging.debug("Trying to connect to : " + node.getText()) logging.debug("Trying to connect to : " + node.getText())
request = node.use(request) node.use(request)
return request.get(**get_args) return request.get(**get_args)
raise RuntimeError("Cannot connect to any node") raise RuntimeError("Cannot connect to any node")
def post(self, request, get_args={}): def post(self, request, get_args={}):
for node in self.hosters(): for node in self.hosters():
logging.debug("Trying to connect to : " + node.getText()) logging.debug("Trying to connect to : " + node.getText())
request = node.use(request) node.use(request)
return request.post(**get_args) return request.post(**get_args)
raise RuntimeError("Cannot connect to any node") raise RuntimeError("Cannot connect to any node")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment