mirror of https://github.com/nucypher/nucypher.git
Forging a test for auto arrangement pruning with a twisted clock.
parent
6fc18da176
commit
4b82f6261f
|
@ -35,7 +35,7 @@ from cryptography.hazmat.primitives.serialization import Encoding
|
||||||
from cryptography.x509 import load_pem_x509_certificate, Certificate, NameOID
|
from cryptography.x509 import load_pem_x509_certificate, Certificate, NameOID
|
||||||
from eth_utils import to_checksum_address
|
from eth_utils import to_checksum_address
|
||||||
from flask import request, Response
|
from flask import request, Response
|
||||||
from twisted.internet import threads
|
from twisted.internet import threads, reactor
|
||||||
from twisted.internet.task import LoopingCall
|
from twisted.internet.task import LoopingCall
|
||||||
from twisted.logger import Logger
|
from twisted.logger import Logger
|
||||||
|
|
||||||
|
@ -1012,8 +1012,8 @@ class Ursula(Teacher, Character, Worker):
|
||||||
rest_app=rest_app, datastore=datastore,
|
rest_app=rest_app, datastore=datastore,
|
||||||
hosting_power=tls_hosting_power)
|
hosting_power=tls_hosting_power)
|
||||||
|
|
||||||
self.__arrangement_pruning_task = LoopingCall(self.__prune_arrangements)
|
self._arrangement_pruning_task = LoopingCall(f=self.__prune_arrangements)
|
||||||
self.__arrangement_pruning_task.start(interval=self._pruning_interval)
|
self._arrangement_pruning_task.start(interval=self._pruning_interval) # TODO: Move to ursula.run ?
|
||||||
|
|
||||||
#
|
#
|
||||||
# Stranger-Ursula
|
# Stranger-Ursula
|
||||||
|
|
|
@ -147,13 +147,15 @@ class KeyStore(object):
|
||||||
session.query(PolicyArrangement).filter_by(id=arrangement_id).delete()
|
session.query(PolicyArrangement).filter_by(id=arrangement_id).delete()
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
def del_expired_policy_arrangements(self, session=None):
|
def del_expired_policy_arrangements(self, session=None) -> int:
|
||||||
"""
|
"""
|
||||||
Deletes all expired PolicyArrangements from the Keystore.
|
Deletes all expired PolicyArrangements from the Keystore.
|
||||||
"""
|
"""
|
||||||
session = session or self._session_on_init_thread
|
session = session or self._session_on_init_thread
|
||||||
result = session.query(PolicyArrangement).filter(expiration=datetime.now() >= PolicyArrangement.expiration).delete()
|
now = datetime.now()
|
||||||
return result
|
result = session.query(PolicyArrangement).filter_by(expiration=now >= PolicyArrangement.expiration)
|
||||||
|
deleted_records = result.delete()
|
||||||
|
return deleted_records
|
||||||
|
|
||||||
def attach_kfrag_to_saved_arrangement(self, alice, id_as_hex, kfrag, session=None):
|
def attach_kfrag_to_saved_arrangement(self, alice, id_as_hex, kfrag, session=None):
|
||||||
session = session or self._session_on_init_thread
|
session = session or self._session_on_init_thread
|
||||||
|
|
|
@ -5,6 +5,8 @@ import maya
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from constant_sorrow.constants import NO_DECRYPTION_PERFORMED
|
from constant_sorrow.constants import NO_DECRYPTION_PERFORMED
|
||||||
|
from twisted.internet.task import Clock
|
||||||
|
|
||||||
from nucypher.characters.lawful import Bob, Ursula
|
from nucypher.characters.lawful import Bob, Ursula
|
||||||
from nucypher.characters.lawful import Enrico
|
from nucypher.characters.lawful import Enrico
|
||||||
from nucypher.policy.collections import TreasureMap
|
from nucypher.policy.collections import TreasureMap
|
||||||
|
@ -198,3 +200,27 @@ def test_bob_retrieves_with_treasure_map(
|
||||||
treasure_map=bytes(treasure_map))
|
treasure_map=bytes(treasure_map))
|
||||||
|
|
||||||
assert text1[0] == text2[0] == b'Welcome to flippering number 2.'
|
assert text1[0] == text2[0] == b'Welcome to flippering number 2.'
|
||||||
|
|
||||||
|
|
||||||
|
def test_bob_retrieves_too_late(federated_bob, federated_ursulas,
|
||||||
|
enacted_federated_policy, capsule_side_channel):
|
||||||
|
|
||||||
|
clock = Clock()
|
||||||
|
for u in federated_ursulas:
|
||||||
|
u._arrangement_pruning_task.stop()
|
||||||
|
u._arrangement_pruning_task.clock = clock
|
||||||
|
u._arrangement_pruning_task.start(interval=Ursula._pruning_interval)
|
||||||
|
clock.advance(Ursula._pruning_interval*2)
|
||||||
|
|
||||||
|
enrico = capsule_side_channel.enrico
|
||||||
|
message_kit = capsule_side_channel()
|
||||||
|
treasure_map = enacted_federated_policy.treasure_map
|
||||||
|
alice_verifying_key = enacted_federated_policy.alice.stamp
|
||||||
|
|
||||||
|
with pytest.raises(Exception): # FIXME
|
||||||
|
federated_bob.retrieve(
|
||||||
|
message_kit,
|
||||||
|
enrico=enrico,
|
||||||
|
alice_verifying_key=alice_verifying_key,
|
||||||
|
label=enacted_federated_policy.label,
|
||||||
|
treasure_map=treasure_map)
|
||||||
|
|
Loading…
Reference in New Issue