Divide cli lifecycle tests into federated and decentralized in order to keep Ursula cache separated.

pull/2128/head
jMyles 2020-07-09 20:39:57 -07:00
parent ae74bc81e9
commit fb119720b5
3 changed files with 45 additions and 99 deletions

View File

@ -85,6 +85,7 @@ def test_alice_rpc_character_control_create_policy(alice_rpc_test_client, create
assert rpc_response.success is True
assert rpc_response.id == response_id
def test_alice_rpc_character_control_bad_input(alice_rpc_test_client, create_policy_control_request):
alice_rpc_test_client.__class__.MESSAGE_ID = 0
@ -94,6 +95,7 @@ def test_alice_rpc_character_control_bad_input(alice_rpc_test_client, create_pol
response = alice_rpc_test_client.send(request={'bogus': 'input'}, malformed=True)
assert response.error_code == -32600
def test_alice_rpc_character_control_derive_policy_encrypting_key(alice_rpc_test_client):
method_name = 'derive_policy_encrypting_key'
request_data = {'method': method_name, 'params': {'label': 'test'}}

View File

@ -0,0 +1,36 @@
"""
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/>.
"""
import pytest_twisted as pt
from tests.acceptance.cli.lifecycle import run_entire_cli_lifecycle
@pt.inlineCallbacks
def test_decentralized_cli_lifecycle(click_runner,
testerchain,
random_policy_label,
blockchain_ursulas,
custom_filepath,
custom_filepath_2,
agency_local_registry):
yield run_entire_cli_lifecycle(click_runner,
testerchain,
random_policy_label,
blockchain_ursulas,
custom_filepath,
custom_filepath_2,
agency_local_registry.filepath)

View File

@ -14,80 +14,9 @@
You should have received a copy of the GNU Affero General Public License
along with nucypher. If not, see <https://www.gnu.org/licenses/>.
"""
import json
from base64 import b64decode
from collections import namedtuple
from json import JSONDecodeError
import datetime
import maya
import os
import pytest
import pytest_twisted as pt
import shutil
from twisted.internet import threads
from web3 import Web3
from nucypher.cli.main import nucypher_cli
from nucypher.config.characters import AliceConfiguration, BobConfiguration
from nucypher.config.constants import NUCYPHER_ENVVAR_KEYRING_PASSWORD, TEMPORARY_DOMAIN
from nucypher.crypto.kits import UmbralMessageKit
from nucypher.utilities.logging import GlobalLoggerSettings
from tests.constants import INSECURE_DEVELOPMENT_PASSWORD, TEST_PROVIDER_URI
from tests.utils.ursula import start_pytest_ursula_services, MOCK_KNOWN_URSULAS_CACHE
PLAINTEXT = "I'm bereaved, not a sap!"
class MockSideChannel:
PolicyAndLabel = namedtuple('PolicyAndLabel', ['encrypting_key', 'label'])
BobPublicKeys = namedtuple('BobPublicKeys', ['bob_encrypting_key', 'bob_verifying_key'])
class NoMessageKits(Exception):
pass
class NoPolicies(Exception):
pass
def __init__(self):
self.__message_kits = []
self.__policies = []
self.__alice_public_keys = []
self.__bob_public_keys = []
def save_message_kit(self, message_kit: str) -> None:
self.__message_kits.append(message_kit)
def fetch_message_kit(self) -> UmbralMessageKit:
if self.__message_kits:
message_kit = self.__message_kits.pop()
return message_kit
raise self.NoMessageKits
def save_policy(self, policy: PolicyAndLabel):
self.__policies.append(policy)
def fetch_policy(self) -> PolicyAndLabel:
if self.__policies:
policy = self.__policies[0]
return policy
raise self.NoPolicies
def save_alice_pubkey(self, public_key):
self.__alice_public_keys.append(public_key)
def fetch_alice_pubkey(self):
policy = self.__alice_public_keys.pop()
return policy
def save_bob_public_keys(self, public_keys: BobPublicKeys):
self.__bob_public_keys.append(public_keys)
def fetch_bob_public_keys(self) -> BobPublicKeys:
policy = self.__bob_public_keys.pop()
return policy
from tests.acceptance.cli.lifecycle import run_entire_cli_lifecycle
@pt.inlineCallbacks
@ -97,34 +26,13 @@ def test_federated_cli_lifecycle(click_runner,
federated_ursulas,
custom_filepath,
custom_filepath_2):
yield _cli_lifecycle(click_runner,
testerchain,
random_policy_label,
federated_ursulas,
custom_filepath,
custom_filepath_2)
yield run_entire_cli_lifecycle(click_runner,
testerchain,
random_policy_label,
federated_ursulas,
custom_filepath,
custom_filepath_2)
# for port in _ports_to_remove:
# del MOCK_KNOWN_URSULAS_CACHE[port]
# MOCK_KNOWN_URSULAS_CACHE
@pt.inlineCallbacks
def test_decentralized_cli_lifecycle(click_runner,
testerchain,
random_policy_label,
blockchain_ursulas,
custom_filepath,
custom_filepath_2,
agency_local_registry):
yield _cli_lifecycle(click_runner,
testerchain,
random_policy_label,
blockchain_ursulas,
custom_filepath,
custom_filepath_2,
agency_local_registry.filepath)