From 3d9a908d1b675a5ac544bc27898bc32ef8985148 Mon Sep 17 00:00:00 2001 From: Matthias Lohr Date: Fri, 17 May 2019 18:50:43 +0200 Subject: [PATCH 1/2] methods for setting/getting parity operating mode --- web3/parity.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/web3/parity.py b/web3/parity.py index f84e41a33b..21d7c6a3d8 100644 --- a/web3/parity.py +++ b/web3/parity.py @@ -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 getMode(self): + return self.web3.manager.request_blocking( + "parity_mode", + [] + ) From 84d2321682f6ff75e2332d1684f42fd83f8ac6dc Mon Sep 17 00:00:00 2001 From: Keri Date: Thu, 18 Jul 2019 13:07:29 -0600 Subject: [PATCH 2/2] Refactor parity tests into separate classes --- tests/integration/parity/common.py | 14 ++++++-- tests/integration/parity/test_parity_ipc.py | 10 ++++++ tests/integration/parity/test_parity_ws.py | 10 ++++++ web3/_utils/module_testing/__init__.py | 2 ++ web3/_utils/module_testing/parity_module.py | 39 ++++++++++++++++++--- web3/parity.py | 2 +- 6 files changed, 69 insertions(+), 8 deletions(-) diff --git a/tests/integration/parity/common.py b/tests/integration/parity/common.py index e511e0e085..e79cd15052 100644 --- a/tests/integration/parity/common.py +++ b/tests/integration/parity/common.py @@ -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 ( @@ -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 diff --git a/tests/integration/parity/test_parity_ipc.py b/tests/integration/parity/test_parity_ipc.py index 5a204d0469..84c86524fd 100644 --- a/tests/integration/parity/test_parity_ipc.py +++ b/tests/integration/parity/test_parity_ipc.py @@ -14,7 +14,9 @@ from .common import ( CommonParityShhModuleTest, ParityEthModuleTest, + ParityModuleTest, ParityPersonalModuleTest, + ParitySetModuleTest, ParityTraceModuleTest, ParityWeb3ModuleTest, ) @@ -102,5 +104,13 @@ class TestParityTraceModuleTest(ParityTraceModuleTest): pass +class TestParityModuleTest(ParityModuleTest): + pass + + +class TestParitySetModuleTest(ParitySetModuleTest): + pass + + class TestParityShhModuleTest(CommonParityShhModuleTest): pass diff --git a/tests/integration/parity/test_parity_ws.py b/tests/integration/parity/test_parity_ws.py index a0e06f4384..16597294c1 100644 --- a/tests/integration/parity/test_parity_ws.py +++ b/tests/integration/parity/test_parity_ws.py @@ -17,7 +17,9 @@ from .common import ( CommonParityShhModuleTest, ParityEthModuleTest, + ParityModuleTest, ParityPersonalModuleTest, + ParitySetModuleTest, ParityTraceModuleTest, ParityWeb3ModuleTest, ) @@ -107,6 +109,14 @@ class TestParityTraceModuleTest(ParityTraceModuleTest): pass +class TestParityModuleTest(ParityModuleTest): + pass + + +class TestParitySetModuleTest(ParitySetModuleTest): + pass + + class TestMiscWebsocketTest(MiscWebsocketTest): pass diff --git a/web3/_utils/module_testing/__init__.py b/web3/_utils/module_testing/__init__.py index 5525c1b1a6..954983846c 100644 --- a/web3/_utils/module_testing/__init__.py +++ b/web3/_utils/module_testing/__init__.py @@ -19,5 +19,7 @@ VersionModuleTest, ) from .parity_module import ( # noqa: F401 + ParitySetModuleTest, + ParityTraceModuleTest, ParityModuleTest, ) diff --git a/web3/_utils/module_testing/parity_module.py b/web3/_utils/module_testing/parity_module.py index 4acc9aeb7a..02a555cefd 100644 --- a/web3/_utils/module_testing/parity_module.py +++ b/web3/_utils/module_testing/parity_module.py @@ -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']) @@ -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() diff --git a/web3/parity.py b/web3/parity.py index 21d7c6a3d8..4e49c3769f 100644 --- a/web3/parity.py +++ b/web3/parity.py @@ -146,7 +146,7 @@ def setMode(self, mode): [mode] ) - def getMode(self): + def mode(self): return self.web3.manager.request_blocking( "parity_mode", []