Passing RPCController tests

pull/1555/head
Kieran R. Prasch 2020-01-08 18:03:54 -08:00 committed by damon
parent 38f2ef0e46
commit 71a7fc7a1c
3 changed files with 13 additions and 44 deletions

View File

@ -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

View File

@ -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))

View File

@ -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