Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

methods for setting/getting parity operating mode #1355

Merged
merged 2 commits into from
Jul 18, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions tests/integration/parity/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@

from web3._utils.module_testing import ( # noqa: F401
EthModuleTest,
ParityModuleTest as TraceModuleTest,
ParityModuleTest,
ParityPersonalModuleTest,
ParitySetModuleTest,
ParityTraceModuleTest,
Web3ModuleTest,
)
from web3._utils.module_testing.eth_module import (
Expand Down Expand Up @@ -178,7 +180,15 @@ def test_invalid_eth_signTypedData(self,
)


class ParityTraceModuleTest(TraceModuleTest):
class ParityTraceModuleTest(ParityTraceModuleTest):
pass


class ParitySetModuleTest(ParitySetModuleTest):
pass


class ParityModuleTest(ParityModuleTest):
pass


Expand Down
10 changes: 10 additions & 0 deletions tests/integration/parity/test_parity_ipc.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
from .common import (
CommonParityShhModuleTest,
ParityEthModuleTest,
ParityModuleTest,
ParityPersonalModuleTest,
ParitySetModuleTest,
ParityTraceModuleTest,
ParityWeb3ModuleTest,
)
Expand Down Expand Up @@ -102,5 +104,13 @@ class TestParityTraceModuleTest(ParityTraceModuleTest):
pass


class TestParityModuleTest(ParityModuleTest):
pass


class TestParitySetModuleTest(ParitySetModuleTest):
pass


class TestParityShhModuleTest(CommonParityShhModuleTest):
pass
10 changes: 10 additions & 0 deletions tests/integration/parity/test_parity_ws.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
from .common import (
CommonParityShhModuleTest,
ParityEthModuleTest,
ParityModuleTest,
ParityPersonalModuleTest,
ParitySetModuleTest,
ParityTraceModuleTest,
ParityWeb3ModuleTest,
)
Expand Down Expand Up @@ -107,6 +109,14 @@ class TestParityTraceModuleTest(ParityTraceModuleTest):
pass


class TestParityModuleTest(ParityModuleTest):
pass


class TestParitySetModuleTest(ParitySetModuleTest):
pass


class TestMiscWebsocketTest(MiscWebsocketTest):
pass

Expand Down
2 changes: 2 additions & 0 deletions web3/_utils/module_testing/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,7 @@
VersionModuleTest,
)
from .parity_module import ( # noqa: F401
ParitySetModuleTest,
ParityTraceModuleTest,
ParityModuleTest,
)
39 changes: 34 additions & 5 deletions web3/_utils/module_testing/parity_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@
)


class ParityModuleTest:

def test_list_storage_keys_no_support(self, web3, emitter_contract_address):
keys = web3.parity.listStorageKeys(emitter_contract_address, 10, None)
assert keys is None
class ParityTraceModuleTest:

def test_trace_replay_transaction(self, web3, parity_fixture_data):
trace = web3.parity.traceReplayTransaction(parity_fixture_data['mined_txn_hash'])
Expand Down Expand Up @@ -92,6 +88,39 @@ def test_trace_filter(self, web3, txn_filter_params, parity_fixture_data):
assert isinstance(trace, list)
assert trace[0]['action']['from'] == add_0x_prefix(parity_fixture_data['coinbase'])


class ParityModuleTest:

def test_add_reserved_peer(self, web3):
peer_addr = 'enode://f1a6b0bdbf014355587c3018454d070ac57801f05d3b39fe85da574f002a32e929f683d72aa5a8318382e4d3c7a05c9b91687b0d997a39619fb8a6e7ad88e512@1.1.1.1:30300' # noqa: E501
assert web3.parity.addReservedPeer(peer_addr)

def test_list_storage_keys_no_support(self, web3, emitter_contract_address):
keys = web3.parity.listStorageKeys(emitter_contract_address, 10, None)
assert keys is None

def test_mode(self, web3):
assert web3.parity.mode() is not None


class ParitySetModuleTest:

@pytest.mark.parametrize(
'mode',
[
('dark'),
('offline'),
('active'),
('passive'),
]
)
def test_set_mode(self, web3, mode):
assert web3.parity.setMode(mode) is True

def test_set_mode_with_bad_string(self, web3):
with pytest.raises(ValueError, match="Couldn't parse parameters: mode"):
web3.parity.setMode('not a mode')

def test_set_mode_with_no_argument(self, web3):
with pytest.raises(TypeError, match='missing 1 required positional argument'):
web3.parity.setMode()
12 changes: 12 additions & 0 deletions web3/parity.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,3 +139,15 @@ def traceRawTransaction(self, raw_transaction, mode=['trace']):
"trace_rawTransaction",
[raw_transaction, mode],
)

def setMode(self, mode):
return self.web3.manager.request_blocking(
"parity_setMode",
[mode]
)

def mode(self):
return self.web3.manager.request_blocking(
"parity_mode",
[]
)