diff --git a/nucypher/characters/control/specifications/bob.py b/nucypher/characters/control/specifications/bob.py index cbf9e2109..5e7e62c2e 100644 --- a/nucypher/characters/control/specifications/bob.py +++ b/nucypher/characters/control/specifications/bob.py @@ -46,6 +46,16 @@ class RetrieveAndDecrypt(BaseSchema): load_only=True, click=options.option_message_kit(required=True) ) + # optional + treasure_map = character_fields.TreasureMap( + required=False, + load_only=True, + click=click.option( + '--treasure-map', + '-t', + help="Treasure Map for retrieve", + type=click.STRING, + required=False)) encrypted_treasure_map = EncryptedTreasureMap(required=True, load_only=True, diff --git a/tests/acceptance/characters/control/test_treasure_map_field_non_federated.py b/tests/acceptance/characters/control/test_treasure_map_field_non_federated.py index e2cfcfe36..05f5b4d51 100644 --- a/tests/acceptance/characters/control/test_treasure_map_field_non_federated.py +++ b/tests/acceptance/characters/control/test_treasure_map_field_non_federated.py @@ -30,9 +30,7 @@ def test_treasure_map(enacted_blockchain_policy): assert serialized == b64encode(bytes(treasure_map)).decode() deserialized = field._deserialize(value=serialized, attr=None, data=None) - assert deserialized == bytes(treasure_map) - - field._validate(value=bytes(treasure_map)) + assert deserialized == treasure_map with pytest.raises(InvalidInputData): - field._validate(value=b"TreasureMap") + field._deserialize(value=b64encode(b"TreasureMap").decode(), attr=None, data=None) diff --git a/tests/acceptance/porter/control/test_porter_rpc_control_blockchain.py b/tests/acceptance/porter/control/test_porter_rpc_control_blockchain.py index 7be0ad520..d884f5e0a 100644 --- a/tests/acceptance/porter/control/test_porter_rpc_control_blockchain.py +++ b/tests/acceptance/porter/control/test_porter_rpc_control_blockchain.py @@ -81,29 +81,21 @@ def test_get_ursulas(blockchain_porter_rpc_controller, blockchain_ursulas): blockchain_porter_rpc_controller.send(request_data) -@pytest.mark.skip("To be fixed in #2768") -def test_exec_work_order(blockchain_porter_rpc_controller, +@pytest.mark.skip("to be fixed with revamped retrieve protocol") +def test_retrieve_cfrags(blockchain_porter_rpc_controller, random_blockchain_policy, blockchain_ursulas, blockchain_bob, blockchain_alice, get_random_checksum_address): - method = 'exec_work_order' + method = 'retrieve_cfrags' # Setup network_middleware = MockRestMiddleware() # enact new random policy since idle_blockchain_policy/enacted_blockchain_policy already modified in previous tests enacted_policy = random_blockchain_policy.enact(network_middleware=network_middleware) - ursula_address, work_order = work_order_setup(enacted_policy, - blockchain_ursulas, - blockchain_bob, - blockchain_alice) - work_order_payload_b64 = b64encode(work_order.payload()).decode() + retrieval_args = retrieval_request_setup(enacted_policy, blockchain_bob, blockchain_alice, encode_for_rest=True) - exec_work_order_params = { - 'ursula': ursula_address, - 'work_order_payload': work_order_payload_b64 - } - request_data = {'method': method, 'params': exec_work_order_params} + request_data = {'method': method, 'params': retrieval_args} response = blockchain_porter_rpc_controller.send(request_data) assert response.success work_order_result = response.content['work_order_result']