Add enrico_control fixture and test_enrico_character_control_encrypt_message

pull/743/head
tuxxy 2019-02-11 14:55:14 -07:00
parent d510819c4f
commit 01a6493ef7
2 changed files with 37 additions and 0 deletions

View File

@ -39,6 +39,7 @@ from nucypher.keystore.db import Base
from nucypher.keystore.keypairs import SigningKeypair
from nucypher.network.character_control.alice_control import make_alice_control
from nucypher.network.character_control.bob_control import make_bob_control
from nucypher.network.character_control.enrico_control import make_enrico_control
from nucypher.utilities.sandbox.blockchain import TesterBlockchain, token_airdrop
from nucypher.utilities.sandbox.constants import (NUMBER_OF_URSULAS_IN_DEVELOPMENT_NETWORK,
DEVELOPMENT_TOKEN_AIRDROP_AMOUNT, MOCK_URSULA_STARTING_PORT,
@ -343,6 +344,15 @@ def bob_control(federated_bob, federated_ursulas):
yield bob_control.test_client()
@pytest.fixture(scope='module')
def enrico_control(capsule_side_channel):
_, data_source = capsule_side_channel
enrico_control = make_enrico_control(data_source)
enrico_control.config['DEBUG'] = True
enrico_control.config['TESTING'] = True
yield enrico_control.test_client()
#
# Blockchain
#

View File

@ -4,6 +4,7 @@ import maya
from base64 import b64encode, b64decode
from nucypher.crypto.kits import UmbralMessageKit
from nucypher.crypto.powers import DecryptingPower
from nucypher.policy.models import TreasureMap
@ -99,3 +100,29 @@ def test_bob_character_control_retrieve(bob_control, enacted_federated_policy, c
del(request_data['alice_signing_pubkey'])
response = bob_control.put('/retrieve', data=json.dumps(request_data))
def test_enrico_character_control_encrypt_message(enrico_control):
request_data = {
'message': b64encode(b"The admiration I had for your work has completely evaporated!").decode(),
}
response = enrico_control.post('/encrypt_message', data=json.dumps(request_data))
assert response.status_code == 200
response_data = json.loads(response.data)
assert 'message_kit' in response_data['result']
assert 'signature' in response_data['result']
# Check that it serializes correctly.
message_kit = UmbralMessageKit.from_bytes(
b64decode(response_data['result']['message_kit']))
# Send bad data to assert error return
response = enrico_control.post('/encrypt_message', data='bad')
assert response.status_code == 400
del(request_data['message'])
response = enrico_control.post('/encrypt_message', data=request_data)
assert response.status_code == 400