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 eth_utils import to_checksum_address
|
||||
from flask import request, Response
|
||||
from twisted.internet import threads
|
||||
from twisted.internet import threads, reactor
|
||||
from twisted.internet.task import LoopingCall
|
||||
from twisted.logger import Logger
|
||||
|
||||
|
@ -1012,8 +1012,8 @@ class Ursula(Teacher, Character, Worker):
|
|||
rest_app=rest_app, datastore=datastore,
|
||||
hosting_power=tls_hosting_power)
|
||||
|
||||
self.__arrangement_pruning_task = LoopingCall(self.__prune_arrangements)
|
||||
self.__arrangement_pruning_task.start(interval=self._pruning_interval)
|
||||
self._arrangement_pruning_task = LoopingCall(f=self.__prune_arrangements)
|
||||
self._arrangement_pruning_task.start(interval=self._pruning_interval) # TODO: Move to ursula.run ?
|
||||
|
||||
#
|
||||
# Stranger-Ursula
|
||||
|
|
|
@ -147,13 +147,15 @@ class KeyStore(object):
|
|||
session.query(PolicyArrangement).filter_by(id=arrangement_id).delete()
|
||||
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.
|
||||
"""
|
||||
session = session or self._session_on_init_thread
|
||||
result = session.query(PolicyArrangement).filter(expiration=datetime.now() >= PolicyArrangement.expiration).delete()
|
||||
return result
|
||||
now = datetime.now()
|
||||
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):
|
||||
session = session or self._session_on_init_thread
|
||||
|
|
|
@ -5,6 +5,8 @@ import maya
|
|||
import pytest
|
||||
|
||||
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 Enrico
|
||||
from nucypher.policy.collections import TreasureMap
|
||||
|
@ -198,3 +200,27 @@ def test_bob_retrieves_with_treasure_map(
|
|||
treasure_map=bytes(treasure_map))
|
||||
|
||||
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