mirror of https://github.com/nucypher/nucypher.git
Moving federated tests into their own module to keep the cache cleaner.
parent
31856340ad
commit
8c6cdf5145
|
@ -111,60 +111,3 @@ def test_alice_rpc_character_control_grant(alice_rpc_test_client, grant_control_
|
|||
assert validate_json_rpc_response_data(response=response,
|
||||
method_name=method_name,
|
||||
interface=AliceInterface)
|
||||
|
||||
|
||||
def test_bob_rpc_character_control_join_policy(bob_rpc_controller, join_control_request, enacted_federated_policy):
|
||||
|
||||
# Simulate passing in a teacher-uri
|
||||
enacted_federated_policy.bob.remember_node(list(enacted_federated_policy.accepted_ursulas)[0])
|
||||
|
||||
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,
|
||||
interface=BobInterface)
|
||||
|
||||
|
||||
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,
|
||||
interface=EnricoInterface)
|
||||
|
||||
|
||||
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,
|
||||
interface=BobInterface)
|
||||
|
||||
|
||||
def test_bob_rpc_character_control_retrieve_with_tmap(
|
||||
enacted_blockchain_policy, blockchain_bob, blockchain_alice,
|
||||
bob_rpc_controller, retrieve_control_request):
|
||||
tmap_64 = b64encode(bytes(enacted_blockchain_policy.treasure_map)).decode()
|
||||
method_name, params = retrieve_control_request
|
||||
params['treasure_map'] = tmap_64
|
||||
request_data = {'method': method_name, 'params': params}
|
||||
response = bob_rpc_controller.send(request_data)
|
||||
assert response.data['result']['cleartexts'][0] == 'Welcome to flippering number 1.'
|
||||
|
||||
# Make a wrong (empty) treasure map
|
||||
|
||||
wrong_tmap = DecentralizedTreasureMap(m=0)
|
||||
wrong_tmap.prepare_for_publication(
|
||||
blockchain_bob.public_keys(DecryptingPower),
|
||||
blockchain_bob.public_keys(SigningPower),
|
||||
blockchain_alice.stamp,
|
||||
b'Wrong!')
|
||||
wrong_tmap._blockchain_signature = b"this is not a signature, but we don't need one for this test....." # ...because it only matters when Ursula looks at it.
|
||||
tmap_bytes = bytes(wrong_tmap)
|
||||
tmap_64 = b64encode(tmap_bytes).decode()
|
||||
request_data['params']['treasure_map'] = tmap_64
|
||||
with pytest.raises(DecentralizedTreasureMap.IsDisorienting):
|
||||
bob_rpc_controller.send(request_data)
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
"""
|
||||
This file is part of nucypher.
|
||||
|
||||
nucypher is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
nucypher is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with nucypher. If not, see <https://www.gnu.org/licenses/>.
|
||||
"""
|
||||
|
||||
from base64 import b64encode
|
||||
|
||||
import pytest
|
||||
|
||||
from nucypher.characters.control.interfaces import BobInterface, EnricoInterface
|
||||
from nucypher.crypto.powers import DecryptingPower, SigningPower
|
||||
from nucypher.policy.collections import DecentralizedTreasureMap
|
||||
from tests.acceptance.characters.control.test_rpc_control_blockchain import validate_json_rpc_response_data
|
||||
|
||||
|
||||
def test_bob_rpc_character_control_join_policy(bob_rpc_controller, join_control_request, enacted_blockchain_policy):
|
||||
# Simulate passing in a teacher-uri
|
||||
enacted_blockchain_policy.bob.remember_node(list(enacted_blockchain_policy.accepted_ursulas)[0])
|
||||
|
||||
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,
|
||||
interface=BobInterface)
|
||||
|
||||
|
||||
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,
|
||||
interface=EnricoInterface)
|
||||
|
||||
|
||||
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,
|
||||
interface=BobInterface)
|
||||
|
||||
|
||||
def test_bob_rpc_character_control_retrieve_with_tmap(
|
||||
enacted_blockchain_policy, blockchain_bob, blockchain_alice,
|
||||
bob_rpc_controller, retrieve_control_request):
|
||||
tmap_64 = b64encode(bytes(enacted_blockchain_policy.treasure_map)).decode()
|
||||
method_name, params = retrieve_control_request
|
||||
params['treasure_map'] = tmap_64
|
||||
request_data = {'method': method_name, 'params': params}
|
||||
response = bob_rpc_controller.send(request_data)
|
||||
assert response.data['result']['cleartexts'][0] == 'Welcome to flippering number 1.'
|
||||
|
||||
# Make a wrong (empty) treasure map
|
||||
|
||||
wrong_tmap = DecentralizedTreasureMap(m=0)
|
||||
wrong_tmap.prepare_for_publication(
|
||||
blockchain_bob.public_keys(DecryptingPower),
|
||||
blockchain_bob.public_keys(SigningPower),
|
||||
blockchain_alice.stamp,
|
||||
b'Wrong!')
|
||||
wrong_tmap._blockchain_signature = b"this is not a signature, but we don't need one for this test....." # ...because it only matters when Ursula looks at it.
|
||||
tmap_bytes = bytes(wrong_tmap)
|
||||
tmap_64 = b64encode(tmap_bytes).decode()
|
||||
request_data['params']['treasure_map'] = tmap_64
|
||||
with pytest.raises(DecentralizedTreasureMap.IsDisorienting):
|
||||
bob_rpc_controller.send(request_data)
|
|
@ -29,6 +29,7 @@ from tests.utils.middleware import NodeIsDownMiddleware
|
|||
from tests.utils.ursula import make_decentralized_ursulas
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("blockchain_ursulas")
|
||||
def test_stakers_bond_to_ursulas(testerchain, test_registry, stakers, ursula_decentralized_test_config):
|
||||
ursulas = make_decentralized_ursulas(ursula_config=ursula_decentralized_test_config,
|
||||
stakers_addresses=testerchain.stakers_accounts,
|
||||
|
|
|
@ -190,6 +190,8 @@ def ursula_decentralized_test_config(test_registry):
|
|||
rest_port=MOCK_URSULA_STARTING_PORT)
|
||||
yield config
|
||||
config.cleanup()
|
||||
for k in list(MOCK_KNOWN_URSULAS_CACHE.keys()):
|
||||
del MOCK_KNOWN_URSULAS_CACHE[k]
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
|
@ -678,10 +680,11 @@ def blockchain_ursulas(testerchain, stakers, ursula_decentralized_test_config):
|
|||
for ursula_to_learn_about in _ursulas:
|
||||
ursula_to_teach.remember_node(ursula_to_learn_about)
|
||||
|
||||
_ports_to_remove = [ursula.rest_interface.port for ursula in _ursulas]
|
||||
yield _ursulas
|
||||
|
||||
for ursula in _ursulas:
|
||||
del MOCK_KNOWN_URSULAS_CACHE[ursula.rest_interface.port]
|
||||
for port in _ports_to_remove:
|
||||
del MOCK_KNOWN_URSULAS_CACHE[port]
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
|
|
|
@ -28,8 +28,7 @@ from tests.utils.middleware import MockRestMiddleware
|
|||
|
||||
|
||||
def test_emit_warning_upon_new_version(lonely_ursula_maker, caplog):
|
||||
nodes = lonely_ursula_maker(quantity=3)
|
||||
teacher, learner, new_node = nodes
|
||||
teacher, learner, new_node = lonely_ursula_maker(quantity=3)
|
||||
|
||||
learner.remember_node(teacher)
|
||||
teacher.remember_node(learner)
|
||||
|
|
Loading…
Reference in New Issue