From 70952329c36de99cff80cc9ca569e68468f88170 Mon Sep 17 00:00:00 2001 From: jMyles Date: Mon, 19 Aug 2019 11:50:44 +0200 Subject: [PATCH] Unpacking message kits into retrieve(). --- nucypher/characters/lawful.py | 2 +- tests/characters/test_bob_handles_frags.py | 32 ++++++++++++---------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/nucypher/characters/lawful.py b/nucypher/characters/lawful.py index bc1db4de2..7a6453e2e 100644 --- a/nucypher/characters/lawful.py +++ b/nucypher/characters/lawful.py @@ -658,7 +658,7 @@ class Bob(Character): self.follow_treasure_map(treasure_map=treasure_map, block=block) def retrieve(self, - message_kits: UmbralMessageKit, + *message_kits: UmbralMessageKit, alice_verifying_key: UmbralPublicKey, label: bytes, enrico: "Enrico" = None, diff --git a/tests/characters/test_bob_handles_frags.py b/tests/characters/test_bob_handles_frags.py index 913577154..4d3fc490c 100644 --- a/tests/characters/test_bob_handles_frags.py +++ b/tests/characters/test_bob_handles_frags.py @@ -362,7 +362,7 @@ def test_federated_bob_retrieves_a_single_message(federated_bob, alices_verifying_key = federated_alice.stamp.as_umbral_pubkey() - delivered_cleartexts = federated_bob.retrieve(message_kits=(the_message_kit,), + delivered_cleartexts = federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label) @@ -385,7 +385,7 @@ def test_federated_bob_retrieves_multiple_messages_from_same_enrico(federated_bo alices_verifying_key = federated_alice.stamp.as_umbral_pubkey() - delivered_cleartexts = federated_bob.retrieve(message_kits=three_message_kits, + delivered_cleartexts = federated_bob.retrieve(*three_message_kits, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label) @@ -412,7 +412,9 @@ def test_federated_bob_retrieves_multiple_messages_from_different_enricos(federa message2.sender = enrico2 message3.sender = enrico3 - delivered_cleartexts = federated_bob.retrieve(message_kits=(message1, message2, message3), + delivered_cleartexts = federated_bob.retrieve(message1, + message2, + message3, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label) @@ -434,7 +436,7 @@ def test_federated_bob_retrieves_twice_without_retaining_cfrags(federated_bob, alices_verifying_key = federated_alice.stamp.as_umbral_pubkey() - delivered_cleartexts = federated_bob.retrieve(message_kits=(the_message_kit,), + delivered_cleartexts = federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label) @@ -442,7 +444,7 @@ def test_federated_bob_retrieves_twice_without_retaining_cfrags(federated_bob, # We show that indeed this is the passage originally encrypted by the Enrico. assert b"Welcome to flippering number 1." == delivered_cleartexts[0] - delivered_cleartexts = federated_bob.retrieve(message_kits=(the_message_kit,), + delivered_cleartexts = federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label, @@ -461,7 +463,7 @@ def test_federated_bob_retrieves_twice_by_retaining_cfrags(federated_bob, the_message_kit = capsule_side_channel() alices_verifying_key = federated_alice.stamp.as_umbral_pubkey() - delivered_cleartexts = federated_bob.retrieve(message_kits=(the_message_kit,), + delivered_cleartexts = federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label, @@ -471,13 +473,13 @@ def test_federated_bob_retrieves_twice_by_retaining_cfrags(federated_bob, # Can't retrieve this message again. # Bob needs to either instantiate the message_kit again or use use_attached_cfrags=True. with pytest.raises(TypeError): - federated_bob.retrieve(message_kits=(the_message_kit,), + federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label, ) - delivered_cleartexts = federated_bob.retrieve(message_kits=(the_message_kit,), + delivered_cleartexts = federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label, @@ -521,7 +523,7 @@ def test_federated_bob_cannot_resume_retrieval_without_caching(federated_bob, # Since 8 Ursulas are down, Bob can only get 2 CFrags; not enough to complete retrieval. with pytest.raises(ursula1.NotEnoughUrsulas): - federated_bob.retrieve(message_kits=(the_message_kit,), + federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label) @@ -539,7 +541,7 @@ def test_federated_bob_cannot_resume_retrieval_without_caching(federated_bob, federated_bob.network_middleware.node_is_up(ursula4) with pytest.raises(ursula1.NotEnoughUrsulas): - federated_bob.retrieve(message_kits=(the_message_kit,), + federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label) @@ -579,7 +581,7 @@ def test_federated_retrieves_partially_then_finishes(federated_bob, # Bob can't retrieve; there aren't enough Ursulas up. with pytest.raises(ursula1.NotEnoughUrsulas): - federated_bob.retrieve(message_kits=(the_message_kit,), + federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label, @@ -599,14 +601,14 @@ def test_federated_retrieves_partially_then_finishes(federated_bob, # We're not allowed to try again with a Capsule with cached CFrags if we set cache to False. with pytest.raises(TypeError): - federated_bob.retrieve(message_kits=(the_message_kit,), + federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label, retain_cfrags=False) # But now, with just one Ursula up, we can use the cached CFrags to get the message. - delivered_cleartexts = federated_bob.retrieve(message_kits=(the_message_kit,), + delivered_cleartexts = federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label, @@ -620,7 +622,7 @@ def test_federated_retrieves_partially_then_finishes(federated_bob, for ursula in federated_ursulas: federated_bob.network_middleware.node_is_down(ursula) - delivered_cleartexts = federated_bob.retrieve(message_kits=(the_message_kit,), + delivered_cleartexts = federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label, @@ -633,7 +635,7 @@ def test_federated_retrieves_partially_then_finishes(federated_bob, the_message_kit.capsule.clear_cfrags() # ...we can still get the message with the network being down because Bob has the properly completed WorkOrders cached in state. - delivered_cleartexts = federated_bob.retrieve(message_kits=(the_message_kit,), + delivered_cleartexts = federated_bob.retrieve(the_message_kit, enrico=capsule_side_channel.enrico, alice_verifying_key=alices_verifying_key, label=enacted_federated_policy.label,