mirror of https://github.com/nucypher/nucypher.git
Passing RPCController tests
parent
38f2ef0e46
commit
71a7fc7a1c
|
@ -13,6 +13,7 @@ from twisted.logger import Logger
|
|||
|
||||
from nucypher.characters.control.emitters import StdoutEmitter, WebEmitter, JSONRPCStdoutEmitter
|
||||
from nucypher.characters.control.interfaces import CharacterPublicInterface
|
||||
from nucypher.characters.control.specifications.exceptions import MissingField, InvalidInputField, SpecificationError
|
||||
from nucypher.cli.processes import JSONRPCLineReceiver
|
||||
from nucypher.utilities.controllers import JSONRPCTestClient
|
||||
|
||||
|
@ -301,8 +302,8 @@ class WebController(CharacterControlServer):
|
|||
|
||||
interface_name = interface.__name__
|
||||
|
||||
_400_exceptions = (CommandSpecification.MissingField,
|
||||
CommandSpecification.InvalidInputField,
|
||||
_400_exceptions = (MissingField,
|
||||
InvalidInputField,
|
||||
)
|
||||
try:
|
||||
response = interface(request=control_request.data, *args, **kwargs) # < ------- INLET
|
||||
|
@ -321,7 +322,7 @@ class WebController(CharacterControlServer):
|
|||
#
|
||||
# Server Errors
|
||||
#
|
||||
except CommandSpecification.SpecificationError as e:
|
||||
except SpecificationError as e:
|
||||
__exception_code = 500
|
||||
if self.crash_on_error:
|
||||
raise
|
||||
|
|
|
@ -354,21 +354,12 @@ class Alice(Character, BlockchainPolicyAuthor):
|
|||
)]
|
||||
return cleartexts
|
||||
|
||||
# def make_rpc_controller(drone_alice, crash_on_error: bool = False):
|
||||
# app_name = bytes(drone_alice.stamp).hex()[:6]
|
||||
# controller = JSONRPCController(app_name=app_name,
|
||||
# character_controller=drone_alice.controller,
|
||||
# crash_on_error=crash_on_error)
|
||||
#
|
||||
# drone_alice.controller = controller
|
||||
# alice_rpc_control = controller.make_control_transport(rpc_controller=controller)
|
||||
# return controller
|
||||
|
||||
def make_web_controller(drone_alice, crash_on_error: bool = False):
|
||||
app_name = bytes(drone_alice.stamp).hex()[:6]
|
||||
controller = WebController(app_name=app_name,
|
||||
character_controller=drone_alice.controller,
|
||||
crash_on_error=crash_on_error)
|
||||
crash_on_error=crash_on_error,
|
||||
interface=drone_alice._interface_class(character=drone_alice))
|
||||
drone_alice.controller = controller
|
||||
|
||||
# Register Flask Decorator
|
||||
|
@ -1317,7 +1308,7 @@ class Enrico(Character):
|
|||
super().__init__(*args, **kwargs)
|
||||
|
||||
if controller:
|
||||
self.controller = self._interface_class(enrico=self)
|
||||
self.controller = self._interface_class(character=self)
|
||||
|
||||
self.log = Logger(f'{self.__class__.__name__}-{bytes(policy_encrypting_key).hex()[:6]}')
|
||||
self.log.info(self.banner.format(policy_encrypting_key))
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
import pytest
|
||||
|
||||
|
||||
def validate_json_rpc_response_data(response, method_name, specification):
|
||||
_input_fields, _optional, required_output_fileds = specification.get_specifications(interface_name=method_name)
|
||||
assert 'jsonrpc' in response.data
|
||||
for output_field in required_output_fileds:
|
||||
assert output_field in response.content
|
||||
return True
|
||||
|
||||
|
||||
def test_alice_rpc_character_control_create_policy(alice_rpc_test_client, create_policy_control_request):
|
||||
alice_rpc_test_client.__class__.MESSAGE_ID = 0
|
||||
method_name, params = create_policy_control_request
|
||||
|
@ -17,12 +9,6 @@ def test_alice_rpc_character_control_create_policy(alice_rpc_test_client, create
|
|||
assert rpc_response.success is True
|
||||
assert rpc_response.id == 1
|
||||
|
||||
# _input_fields, _optional, required_output_fileds = alice_specification.get_specifications(interface_name=method_name)
|
||||
#
|
||||
# assert 'jsonrpc' in rpc_response.data
|
||||
# for output_field in required_output_fileds:
|
||||
# assert output_field in rpc_response.content
|
||||
|
||||
try:
|
||||
bytes.fromhex(rpc_response.content['policy_encrypting_key'])
|
||||
except (KeyError, ValueError):
|
||||
|
@ -56,18 +42,14 @@ def test_alice_rpc_character_control_derive_policy_encrypting_key(alice_rpc_test
|
|||
request_data = {'method': method_name, 'params': {'label': 'test'}}
|
||||
response = alice_rpc_test_client.send(request_data)
|
||||
assert response.success is True
|
||||
assert validate_json_rpc_response_data(response=response,
|
||||
method_name=method_name,
|
||||
specification=alice_specification)
|
||||
assert 'jsonrpc' in response.data
|
||||
|
||||
|
||||
def test_alice_rpc_character_control_grant(alice_rpc_test_client, grant_control_request):
|
||||
method_name, params = grant_control_request
|
||||
request_data = {'method': method_name, 'params': params}
|
||||
response = alice_rpc_test_client.send(request_data)
|
||||
assert validate_json_rpc_response_data(response=response,
|
||||
method_name=method_name,
|
||||
specification=alice_specification)
|
||||
assert 'jsonrpc' in response.data
|
||||
|
||||
|
||||
def test_bob_rpc_character_control_join_policy(bob_rpc_controller, join_control_request, enacted_federated_policy):
|
||||
|
@ -78,24 +60,19 @@ def test_bob_rpc_character_control_join_policy(bob_rpc_controller, join_control_
|
|||
method_name, params = join_control_request
|
||||
request_data = {'method': method_name, 'params': params}
|
||||
response = bob_rpc_controller.send(request_data)
|
||||
assert validate_json_rpc_response_data(response=response,
|
||||
method_name=method_name,
|
||||
specification=bob_specification)
|
||||
assert 'jsonrpc' in response.data
|
||||
|
||||
|
||||
def test_enrico_rpc_character_control_encrypt_message(enrico_rpc_controller_test_client, encrypt_control_request):
|
||||
method_name, params = encrypt_control_request
|
||||
request_data = {'method': method_name, 'params': params}
|
||||
response = enrico_rpc_controller_test_client.send(request_data)
|
||||
assert validate_json_rpc_response_data(response=response,
|
||||
method_name=method_name,
|
||||
specification=enrico_specification)
|
||||
assert 'jsonrpc' in response.data
|
||||
|
||||
|
||||
def test_bob_rpc_character_control_retrieve(bob_rpc_controller, retrieve_control_request):
|
||||
method_name, params = retrieve_control_request
|
||||
request_data = {'method': method_name, 'params': params}
|
||||
response = bob_rpc_controller.send(request_data)
|
||||
assert validate_json_rpc_response_data(response=response,
|
||||
method_name=method_name,
|
||||
specification=bob_specification)
|
||||
assert 'jsonrpc' in response.data
|
||||
|
||||
|
|
Loading…
Reference in New Issue